如何在Linux/g++中读取Shift+Inserted(pasted)字符串

How could I read a Shift+Inserted (pasted) string In Linux / g++?

本文关键字:Shift+Inserted pasted 字符串 读取 Linux g++      更新时间:2023-10-16

我知道如何在Linux中不停地阅读键盘(就像Windows下的kbhit()行为)。所以,每当它返回时,我知道有一个按键活动。

然后我将尝试通过getch()功能读取密钥。

我的问题是,在敲击键盘后,我怎么知道按下了Shift+Insert组合键(在Windows中粘贴快捷键为Ctrl+V)?

如前所述,没有全局可移植的方式来实现这一点,因为:

  • 除了Linux特定程序使用特殊调用来检测按键的特殊情况外,您的程序只能看到粘贴的文本—没有线索表明它是如何到达那里的
  • 同样,粘贴何时结束也没有线索(粘贴不需要以换行符结束,它们可以是单词、空格等)

相反,一个可行的解决方案是使用POSIX termios使程序的输入流以原始模式工作,并设置读取超时。然后,程序可以读取字符,只要它们"足够快"(你决定多快)。

这些相关问题展示了POSIX termios的一些例子,包括超时的使用:

  • 如何在读取函数调用中实现超时
  • 如何模拟"按任意键继续?">

或者,还有select调用:

  • C select()timeout STDIN single char(no ENTER)