Вы можете открыть устройство /dev/input/eventN
, соответствующее клавиатуре (клавиатурам), и прочитать события клавиатуры оттуда. Вы даже получите клавиатурные события от не-X консолей. Это интерфейс evdev.
Начиная с Documentation/input/input.txt
в источнике ядра:
Вы можете использовать блокировку и неблокирование
читает также select()
на
/dev/input/eventX
устройств, и вы будете
всегда получать целое число входных данных
события на чтение. Их расположение:
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
time
это метка времени, она возвращает
время, когда произошло событие.
Тип например EV_REL
для
относительный момент, REL_KEY
для
нажмите или отпустите. Больше типов
определено в include/linux/input.h
.
code
- это код события, например
REL_X
или KEY_BACKSPACE
, снова
полный список находится в
include/linux/input.h
.
value
- значение события
несет. Либо относительное изменение для
EV_REL
, абсолютно новое значение для EV_ABS
(джойстики ...) или 0 для EV_KEY
для
релиз, 1 для нажатия клавиш и 2 для
повтор.