在Linux终端应用程序中接收按键和键释放事件?

20 linux terminal ncurses keypress tty

我想写一个简单的C程序,它将根据"key down"和"key up"事件执行不同的操作.该程序将从rxvt内部运行.

我应该使用什么库或机制来访问按键和释放?阅读/dev/tty只会提供关键版本吗?对于termcap,terminfo,ncurses和俚语,这也是如此吗?有没有办法在终端应用程序中实现这一目标?

And*_*mbe 9

以下链接可能对使用键盘原始模式有一些帮助,这将使您可以访问键盘事件而不仅仅是键发布.

  1. 这篇Linux Journal 文章
  2. 文章在SourceForge
  3. 当这一切都变坏时,这个HOWTO

原始模式的缺点是您必须自己从扫描代码转换为字符.

  • 请注意,这些仅在您连接到实际控制台时才起作用 - 如果您使用伪终端(例如终端窗口),它们将不起作用。 (3认同)
  • +1感谢您的回答,我需要在终端程序中进行原始键盘访问,这就是解决方案!但是应该记住,使用原始键盘访问,您的程序不像传统的终端程序那样"行为".例如,在远程计算机上运行它时,您无法注册关键事件.请记住这一点. (2认同)

And*_*oss 5

这在一般情况下不起作用.ANSI终端(所有模拟器从中下降)仅表示关键的"按下"事件.他们不会独立记录下来/上升事件.

如果您需要低级键盘事件访问,适当的环境实际上是一个GUI程序.即使是Web应用程序也可以比终端更清晰地访问关键事件.


小智 3

我认为ncurses不会起作用。Basilevs 提供的链接讨论了“向上箭头”键和“向下箭头”键,而不是按键按下和释放。