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

Вопрос:Может кто-нибудь, пожалуйста, скажите мне, каковы свойства типов данных, используемых структурой input_event? В файле input.h он определяется следующим образом: struct input_event { struct timeval time; __u16 type; __u16 code; __s32 value; }; но нет других описаний! Даже гуглинг не дал мне ничего интересного. Единственное, что я знаю, это то, что time дает секунды или миллисекунды

Вопрос:

Может кто-нибудь, пожалуйста, скажите мне, каковы свойства типов данных, используемых структурой 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

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

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

Лучший ответ:

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».

Оцените статью
Добавить комментарий