Подтвердить что ты не робот

Описание структуры input_event (из linux/input.h)

Может кто-нибудь, пожалуйста, скажите мне, каковы свойства типов данных, используемых структурой input_event?

В файле input.h он определяется следующим образом:

struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};

но нет других описаний! Даже гуглинг не дал мне ничего интересного.

Единственное, что я знаю, это то, что time дает секунды или миллисекунды с эпохи, а value дает код нажатой кнопки. Но даже ценность свойства value для меня не совсем понятна. В моей программе каждое нажатие клавиши генерирует шесть событий. Следующими событиями являются ответ на нажатие клавиши ENTER:

type=4,code=4,value=458792
type=1,code=28,value=1
type=0,code=0,value=0
type=4,code=4,value=458792
type=1,code=28,value=0
type=0,code=0,value=0 

а для буквы a:

type=4,code=4,value=458756
type=1,code=30,value=1
type=0,code=0,value=0
atype=4,code=4,value=458756
type=1,code=30,value=0
type=0,code=0,value=0

Я хотел бы декодировать значение в действительную букву, но я не понимаю смысла свойств.

Пожалуйста, помогите!

4b9b3361

Ответ 1

struct input_event, среди прочих, определен в include/linux/input.h.


От 5. Интерфейс событий в ядре Linux Documentation/input/input.txt (и изменен для предоставления правильных имен файлов заголовков):

  • time - это метка времени, она возвращает время, в которое произошло событие.

  • type - это, например, EV_REL для относительного момента, EV_KEY для нажатия клавиши или выпуск. Другие типы определены в include/linux/input-event-codes.h.

  • code - это код события, например REL_X или KEY_BACKSPACE, снова полный Список находится в include/linux/input-event-codes.h.

  • value - это значение, которое несет событие. Либо относительное изменение для EV_REL, абсолютное новое значение для EV_ABS (джойстики...) или 0 для EV_KEY для релиз, 1 для нажатия клавиши и 2 для автоповтора.

Для руководств и примера кода выполните веб-поиск "linux kernel" "input subsystem".