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

时间:2009-09-11 06:02:40

标签: linux terminal keypress ncurses tty

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

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

3 个答案:

答案 0 :(得分:9)

以下链接可能对使用键盘原始模式有所帮助,这将使您可以访问键盘事件而不仅仅是关键版本。

  1. 此Linux Journal article
  2. SourceForge上的article
  3. 当这一切都变得糟糕的时候HOWTO
  4. 原始模式的缺点是你必须自己从扫描代码转换为字符。

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

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