Как отладить ввод с устройства ввода (/ dev / input / event *)

19

У меня есть ИК-приемник, который использует драйвер imon, и я хотел бы, чтобы он работал с ядром. Прямо сейчас половина клавиш на пульте ( изображение ) работает, но важная мысль, как цифровые клавиши, не работает!

Странно думать, что модуль таблицы ключей ядра (rc-imon-pad) кажется правильным, но кажется, что он на самом деле не используется, так как одни и те же клавиши работают без этого модуля.

Кажется, что модуль rc-imon-pad всегда загружается, когда я загружаю imon, и тогда я подозреваю, что коды клавиш кэшируются, так что это не имеет значения, если я выгружаю rc-imon-pad

Теперь я теряюсь, если я делаю cat /dev/input/event5или ir-keytable -tесть данные независимо от того, какую клавишу я нажимаю, поэтому драйвер регистрирует кнопки, но кажется, что они переведены на неправильные коды клавиш.

Мои ядра - это стандартное ядро ​​Ubuntu от Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP Вторник 21 декабря 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
источник
2
Кажется, проблема в том, что ядро ​​отправляет коды клавиш больше 255, которые X не регистрирует, потому что оно ограничено 8-разрядным целым числом без знака. И теперь я перекомпилирую модуль ядра с модифицированными кодами клавиш, чтобы проверить эту теорию ...
LassePoulsen
1
Кстати, вместо catвас можно использовать, evtestкоторый дает хорошо проанализированную информацию.
9000

Ответы:

3

У меня такой же пульт, и он отправляет правильные коды клавиш в ядро ​​2.6.38-gentoo-r3. Я не компилировал коды клавиш как модуль, потому что у них, вероятно, еще не было времени, чтобы сделать возможным выбор отдельных комбинаций клавиш. Это все или ничего, и я не люблю, чтобы бесполезные модули были захламлены мной. Вместо этого я позволяю v4l-utils справиться с этим с помощью udev.

Пара вещей, которые я узнал:

  • Проверьте вывод команды ir-keytable -r, в ней должны быть перечислены все коды клавиш, применимые к вашему пульту.
  • Загрузите таблицу ключей вручную: ir-keytable -c -w bleh / keymaps / imon_pad, после чего ir-keytable -r должна вернуть вам таблицу
  • У вас может быть неисправный приемник, вы ничего не упоминаете об истории. Я помню, по крайней мере, одно сообщение в lirc-list, где парень сказал, что отправка дела назад и получение нового решило его проблемы.

Дайте нам знать, как все прошло.

lkraav
источник
Обязательно ознакомьтесь с этим ответом всем, xinput testздесь очень полезно. unix.stackexchange.com/a/6231/27902
Элайджа Линн
17

Вы можете найти полезные xinput listи xinput test <device>.

Например,

$ xinput list
Pointer ID указателя виртуального ядра = 2 [главный указатель (3)]
Pointer ↳ Указатель XTEST виртуального ядра id = 4 [ведомый указатель (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [ведомый указатель (2)]
Id ID виртуальной клавиатуры = 3 [мастер клавиатура (2)]
    Id Виртуальное ядро ​​XTEST клавиатура id = 5 [подчиненная клавиатура (3)]
    Id Кнопка питания id = 6 [подчиненная клавиатура (3)]
    Id Идентификатор видео шины = 7 [подчиненная клавиатура (3)]
    Id Кнопка Sleep id = 8 [подчиненная клавиатура (3)]
    Extra Дополнительные кнопки ноутбука Asus id = 9 [подчиненная клавиатура (3)]
    ↳ AT Translated Set 2: идентификатор клавиатуры = 10 [подчиненная клавиатура (3)]

и я могу контролировать свою клавиатуру ( xinput test 10) или сенсорную панель ( xinput test 11или даже xinput test "SynPS/2 Synaptics TouchPad") для всех видов событий ввода, и они довольно распечатаны на консоли, а параметры извлечены и напечатаны тоже.

Это не решит вашу проблему, но по крайней мере немного поможет, расшифровывая беспорядок, который, например, cat /dev/input/event1производит.

ulidtko
источник
1
Спасибо огромное! Я построил детектор клавиатуры на основе этого ответа.
10