Receiving key press and key release events in Linux terminal applications?

keypressandrelease picture keypressandrelease · Sep 11, 2009 · Viewed 17.2k times · Source

I would like to write a simple C program that will perform different actions based on both "key down" and "key up" events. This program will be run from inside rxvt.

What library or mechanism should I use to access both key presses and releases? Is it true that reading /dev/tty will only provide key releases? Is this also true for termcap, terminfo, ncurses, and slang? Is there a way to achieve this from within a terminal application?

Answer

Andrew Edgecombe picture Andrew Edgecombe · Oct 21, 2009

The following links may be of some assistance in using the keyboard raw mode which will give you access to the keyboard events rather than just key releases.

  1. This Linux Journal article
  2. This article on SourceForge
  3. And this HOWTO for when it all goes bad

Raw mode does have the disadvantage that you have to do your own conversion from scan codes to characters though.