2

Что я хочу сделать: получить USB HID ID, когда я нажимаю клавиши своей по- настоящему эргономичной клавиатуры, чтобы иметь возможность перепрограммировать прошивку клавиатуры.

Я знаю, что есть список от Microsoft с большим количеством идентификаторов USB HID.

Но было бы легче найти идентификатор ключа, просто набрав его и увидев его в программе. Особенно для некоторых медиа-ключей, которые я не нахожу в этом списке от Microsoft.

Существует ли такая программа? Может быть программа командной строки. Linux предпочтительнее, но Windows будет вариант.

PS: я видел, что у этого вопроса на stackoverflow есть интересный ответ. Но я не могу найти /dev/usb/hiddev0 в моей системе (Fedora 17).

Обновить

В этом вопросе ответ @Andy Ross помог мне, по крайней мере, получить вывод при нажатии клавиши. я сделал

xxd -c 144 /dev/input/by-path/pci-0000:00:1a.0-usb-0:1.1:1.0-event-kbd

Но это все еще не очень читабельно. И не всегда одно и то же, когда я нажимаю одну и ту же клавишу.

Update2

В этом вопросе связан скрипт на python , который читает устройство ввода и должен его распечатать. Но на этом компьютере на работе у меня нет прав доступа к устройству с помощью этого сценария Python.

2 ответа2

3

Ответ:

su -c "while true; do od --read-bytes=144 --width=144 -x /dev/input/event3 | awk 'NF > 1 { print \$12 }'; done"

Explanition

С помощью команды дерева я нашел это

$ tree /dev/input/by-path
/dev/input/by-path/
├── pci-0000:00:1a.0-usb-0:1.1:1.0-event-kbd -> ../event3
├── pci-0000:00:1a.0-usb-0:1.1:1.1-event -> ../event4
├── pci-0000:00:1d.2-usb-0:1:1.0-event-mouse -> ../event2
└── pci-0000:00:1d.2-usb-0:1:1.0-mouse -> ../mouse0

Итак, /dev/input/event3 - моя клавиатура.

Команда od выводит файлы в восьмеричном и других форматах.

  • С опцией -x он выводит шестнадцатеричное значение.
  • А с параметром --width=144 он сбрасывает только одну строку за нажатие клавиши (длина одной строки составляет 144 байта).
  • Опция --read-bytes=144 квиты od после 144 байт.

Команда awk выводит 12-е поле из всей строки. Это только в том случае, если количество полей NF больше 1, потому что каждая вторая строка - это просто разрыв строки.

В while true цикл вокруг всего этого состоит в том, что, если я наберу некоторые буквенные ключи, это сломается. Я не получаю больше результатов, только 0000 . Но команда od прекращает чтение после 144 байт (нажатие одной клавиши). После этого он перезапускается. Конечно, есть лучшее решение для этого, но это хороший обходной путь.

Пример вывода (я несколько раз нажал Return, RightCtrl и Backspace, что дает мне правильные цифры при сравнении с этим документом из Microsoft (PDF) или с этим документом из текстового файла)

0028
0028
0028
00e4
00e4
00e4
002a
002a
002a
0

xev в Linux поможет вам.

Удачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .