如何在Linux/g++中读取Shift+Inserted(pasted)字符串
How could I read a Shift+Inserted (pasted) string In Linux / g++?
我知道如何在Linux中不停地阅读键盘(就像Windows下的kbhit()
行为)。所以,每当它返回时,我知道有一个按键活动。
然后我将尝试通过getch()
功能读取密钥。
我的问题是,在敲击键盘后,我怎么知道按下了Shift+Insert组合键(在Windows中粘贴快捷键为Ctrl+V)?
如前所述,没有全局可移植的方式来实现这一点,因为:
- 除了Linux特定程序使用特殊调用来检测按键的特殊情况外,您的程序只能看到粘贴的文本—没有线索表明它是如何到达那里的
- 同样,粘贴何时结束也没有线索(粘贴不需要以换行符结束,它们可以是单词、空格等)
相反,一个可行的解决方案是使用POSIX termios使程序的输入流以原始模式工作,并设置读取超时。然后,程序可以读取字符,只要它们"足够快"(你决定多快)。
这些相关问题展示了POSIX termios的一些例子,包括超时的使用:
- 如何在读取函数调用中实现超时
- 如何模拟"按任意键继续?">
或者,还有select
调用:
- C select()timeout STDIN single char(no ENTER)
相关文章:
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- 如何使用键盘的特殊键,如Command、Shift、Alt、Tab或C/C++程序中的功能键
- Qt 键按事件处理程序仅在按下 ctrl、alt 或 shift 键时做出反应
- 检测是否按住 SHIFT
- C++ 上的 SendInput 不接受 Ctrl 和 Shift 帐户
- 通过TranslateAccelerator检测快捷方式时,忽略Shift键的状态
- 如何在QT中检查[Shift Tab]是否被按下
- 按下Shift键(C++和Qt 5.8)时,垂直/水平直线完美
- WXGRIDSIZER/WXPANEL:使左/右导航键的行为像Shift-Tab/Tab一样
- RAWKEYBOARD 标志,检查哪些标志打开,还有 SHIFT、CTRL 和 ALT
- 当按下shift时,对编辑文本控件进行子类处理以接受小写字符
- WideCharToMultiByte - Shift-JIS 代码页所需的大小和写入的字节数不同
- 如何在Linux/g++中读取Shift+Inserted(pasted)字符串
- 禁用杂散"warning: left shift count >= width of type"
- Visual Studio - 停止调试时终止特定进程 (shift+F5)
- 通过按住 Shift 按钮绘制直线的算法
- 阻止 alt+shift 事件或禁用在编程方式中更改语言
- 是否可以使用不涉及 Alt 或 Ctrl 或 Shift 的两个键的快捷方式?
- 在Visual C++2013中使用wifstrem进行Shift JIS解码失败
- 当我在yacc中引入一个动作时,Shift/减少冲突