我有一台运行 ArchLinux32 的 ThinkPad X41t。在盖子上,它有几个按钮。我给了他们键码setkeycodes
。设备可以“变形”——即绕铰链旋转 180 度并像那样关闭。问题是,当设备被转换时,那些盖子按钮不起作用 - 它们仍然会产生键码(如 报告的那样showkey
),但它们什么都不做。使用evtest
,我确定了两件事:
- 盖子按钮与常规键盘按钮属于同一事件设备,属于“AT Translated Set 2 keyboard”。
被“转化”是一个可以识别的事件。这是来自 evtest 的报告:
Event: time ..., type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 1 Event: time ..., -------------- SYN_REPORT ------------ Event: time ..., type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 0 Event: time ..., -------------- SYN_REPORT ------------
当使用小棒已经发生变形事件时,我也尝试按下键盘键,但他们也没有做任何事情。
所以我怀疑当被转换的事件触发某些东西时,这会导致操作系统忽略来自这个特定设备的任何按键。有没有一种方法可以确定那是什么以及如何做,以及如何将盖子按钮添加到这个东西的例外中,这样我就可以在转换设备时使用它们?
提前致谢。
在 libinput 中修复。现在转换不会禁用常规键盘,但盖子不会按下按键,所以这不是问题。
对于遇到同样问题的人来说,我偶然发现了一个简单的解决方案。
首先,通过运行找到您的平板电脑按钮的 xinput 设备 ID
xinput
。它应该看起来像这样:我不确定这些 ID 是否在所有情况下都相同,但就我而言,我正在寻找的条目的 ID 为 11。一旦你有了它,通过输入禁用它
xinput disable 11
,你应该很高兴去!