在 Linux 终端应用程序中接收按键和按键释放事件?
Posted
技术标签:
【中文标题】在 Linux 终端应用程序中接收按键和按键释放事件?【英文标题】:Receiving key press and key release events in Linux terminal applications? 【发布时间】:2010-11-27 09:50:09 【问题描述】:我想编写一个简单的 C 程序,该程序将根据“key down”和“key up”事件执行不同的操作。该程序将从rxvt内部运行。
我应该使用什么库或机制来访问按键和释放?阅读/dev/tty
是否只会提供关键版本?这对于 termcap、terminfo、ncurses 和 slang 也是如此吗?有没有办法在终端应用程序中实现这一点?
【问题讨论】:
【参考方案1】:以下链接可能对使用键盘原始模式有所帮助,这将使您能够访问键盘事件而不仅仅是按键释放。
-
此 Linux 日志article
SourceForge 上的 article
还有这个HOWTO,当一切都变糟时
Raw 模式确实有一个缺点,就是您必须自己进行从扫描码到字符的转换。
【讨论】:
+1 感谢您的回答,我需要在终端程序中访问原始键盘,这就是解决方案!但是应该记住,使用原始键盘访问,您的程序不会像经典终端程序那样“表现”。例如,在远程机器上运行它时,您不能注册关键事件。请记住这一点。 请注意,这些仅在您连接到实际控制台时才有效——如果您使用的是伪终端(例如终端窗口),它们将不起作用。【参考方案2】:这在一般情况下不起作用。 ANSI 终端(所有仿真器都来自它)仅表示按键“按下”事件。他们不会独立记录向下/向上事件。
如果您需要低级别的键盘事件访问,那么合适的环境实际上是一个 GUI 程序。即使是 Web 应用程序也比终端更容易访问关键事件。
【讨论】:
【参考方案3】:我认为 ncurses 不会起作用。 Basilevs 提供的链接讨论了“向上箭头”键和“向下箭头”键,而不是按键和释放。
【讨论】:
以上是关于在 Linux 终端应用程序中接收按键和按键释放事件?的主要内容,如果未能解决你的问题,请参考以下文章