当设备“变形”时,ThinkPad X41t 上的盖子按键不起作用

当设备“变形”时,ThinkPad X41t 上的盖子按键不起作用

我有一台运行 ArchLinux32 的 ThinkPad X41t。盖子上有几个按钮。我给了他们带有 的密钥代码setkeycodes。设备可以“变形”——即围绕铰链旋转 180 度并像这样关闭。问题是,当设备转换时,这些盖子按钮不起作用 - 它们仍然产生键码(如 所报告的showkey),但它们不执行任何操作。使用evtest,我确定了两件事:

  1. 盖子按钮与常规键盘按钮属于同一事件设备,属于“AT 翻译集 2 键盘”。
  2. 被“转变”是一件可识别的事件。这是 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 ------------
    

当变形事件已经发生时,我也尝试使用小棒按键盘按键,但他们也没有做任何事情。

因此,我怀疑当转换事件触发某些事件时,会导致操作系统忽略来自该特定设备的任何按键。有没有办法确定这是什么以及如何做,以及如何将盖子按钮添加到此事物的例外中,以便我可以在设备转换时使用它们?

提前致谢。

答案1

已在 libinput 中修复。现在变形不会禁用常规键盘,但盖子不会按下按键,所以这不是问题。

答案2

对于任何遇到同样问题的人来说,我刚刚偶然发现了一个简单的解决方案。

首先,通过运行查找平板电脑按钮的 xinput 设备 ID xinput。它应该看起来像这样:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=10   [slave  pointer  (2)]
⎜   ↳ Wacom Serial Penabled Pen stylus          id=12   [slave  pointer  (2)]
⎜   ↳ Wacom Serial Penabled Pen eraser          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=11   [slave  keyboard (3)]

我不确定这些 ID 是否在所有情况下都相同,但就我而言,我正在查找的条目的 ID 为 11。一旦找到该 ID,请输入 禁用它xinput disable 11,然后就可以开始了!

相关内容