如何调试来自输入设备(/ dev / input / event *)的输入


19

我有一个使用imon驱动程序的IR接收器,我希望它与内核一起工作。现在,遥控器(图像)上的一半键都可以使用,但是像数字键这样的重要提示却不起作用!

奇怪的是,内核键映射模块(rc-imon-pad)似乎是正确的,但是似乎并没有真正使用它,因为同样的键在没有该模块的情况下也可以正常工作。

似乎在加载imon时总是加载rc-imon-pad模块,然后我怀疑键码已缓存,因此如果我卸载rc-imon-pad不会有什么不同

现在我迷路了,无论我按什么键,cat /dev/input/event5还是ir-keytable -t有数据,无论我按什么键,驱动程序都会注册按钮,但似乎按钮被转换为错误的键码。

我的内核是Natty的ubuntu股票内核(Linux xbmc 2.6.37-11-generic#25-Ubuntu SMP Tue Dec 21 21 23:42:56 UTC 2010 x86_64 GNU / Linux)


2
看来问题在于内核发送的密钥代码大于255,而X却没有注册,因为它限于一个无符号的8位整数。现在,我正在使用修改后的键码重新编译内核模块,以测试该理论……
LassePoulsen 2010年

1
顺便说一句,代替cat您可以使用evtest它提供很好的解析信息。
9000

Answers:


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上至少看到一条消息,那个家伙说发回该案并得到一个新的消息解决了他的问题。

让我们知道进展如何。


确保每个人都检查出这个答案,xinput test在这里非常有用。unix.stackexchange.com/a/6231/27902
Elijah Lynn

17

您可能会发现有用xinput listxinput test <device>

例如,

$ x输入列表
⎡虚拟核心指针id = 2 [主指针(3)]
虚拟核心XTEST指针id = 4 [从指针(2)]
SynPS / 2 Synaptics触摸板id = 11 [从指针(2)]
⎣虚拟核心键盘id = 3 [主键盘(2)]
    ↳虚拟核心XTEST键盘id = 5 [从键盘(3)]
    ↳电源按钮id = 6 [从属键盘(3)]
    ↳Video Bus id = 7 [从属键盘(3)]
    ↳睡眠按钮id = 8 [从属键盘(3)]
    us华硕笔记本电脑额外按钮id = 9 [从属键盘(3)]
    ↳AT翻译集2键盘id = 10 [从键盘(3)]

而且我可以监视键盘(xinput test 10)或触摸板(xinput test 11甚至是xinput test "SynPS/2 Synaptics TouchPad")的各种输入事件,它们可以漂亮地打印到控制台,参数也可以提取和打印。

这不会解决您的问题,但是至少可以通过破译例如cat /dev/input/event1产生的混乱来有所帮助。


1
非常感谢!我根据此答案构建了一个键盘检测器
l0b0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.