Вопрос

Я играю с захватом входа с моего устройства клавиатуры:

/dev/input/by-path/platform-i8042-serio-0-event-kbd 

Для меня, и мне было интересно, было ли какие-либо спецификации для чего он возвращается, используя

od -tx1 /dev/input/by-path/platform-i8042-serio-0-event-kbd 

слушать. Мне любопытно в основном из-за поведения определенных ключей; Мета, клавиши со стрелками, Numpad Western Slash.

0520300 ac 9d 86 4c 6b 0f 04 00 04 00  04  00 (db) 00 00 00
0520320 ac 9d 86 4c 8c 0f 04 00 01 00 (7d) 00  00 00 00 00
0520340 ac 9d 86 4c 95 0f 04 00 00 00  00  00  00 00 00 00

Каждый другой ключ, на которой я посмотрел до сих пор, имеет два байта в скобках в качестве сопоставления ценностей, есть ли какие-либо причина, которые это особенные?

Это было полезно?

Решение

/dev/input/by-path/platform-i8042-serio-0-event-kbd просто симличийка /dev/input/eventX Файл устройства события. Данные могут быть прочитаны из файлов устройств событий как

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

определяется внутри /usr/include/linux/input.h.

Возможные значения type префиксированы с EV_Отказ Возможные значения code зависит от type. Отказ Они префиксированы с KEY_ или BTN_ или REL_ или так далее. Возможные значения value зависит от обоих type а также code. Отказ Например, для событий ключей value равняться 1 и для событий ключей 0.

Вы можете изучить данные о событиях с:

evtest /dev/input/eventX

куда X Является ли номер события вашего клавиатуры (или любого другого устройства события). Один клавиш прессы или выпуск обычно излучает три события (EV_MSC, EV_KEY а также EV_SYN).

Другие советы

Некоторые клавиши имеют необычные коды сканирования ...

От: http://www.beyondlogic.org/keyboard/keybrd.htm. (С редакциями):

Теперь есть 101 клавиши и 8 битов делают 256 различных комбинаций, поэтому вам нужно только отправить один байт за ключу, верно?

Неа. К сожалению, несколько клавиш, найденных на вашей клавиатуре, являются расширенными ключами, и, таким образом, требуют двух кодов сканирования. Эти ключи предшествуют E0 (Hex). Но это тоже не останавливается на двух кодах сканирования. Как насчет E1 1477, E1, F0,14, F0,77! Теперь это не может быть действительным кодом сканирования? Снова не так. Это происходит, когда вы отправляете при нажатии клавиши паузы / перерыва. Не спрашивайте меня, почему они должны сделать это так долго! Может быть, у них был плохой день или что-то?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top