ThinkPad X41t の蓋のキーは、デバイスが「変形」されていると機能しません

ThinkPad X41t の蓋のキーは、デバイスが「変形」されていると機能しません

私は ArchLinux32 を実行している ThinkPad X41t を持っています。蓋にはいくつかのボタンがあります。 を使用してキーコードを割り当てましたsetkeycodes。デバイスは「変形」できます。つまり、ヒンジを中心に 180 度回転して閉じることができます。問題は、デバイスが変形されると、それらの蓋のボタンが機能しなくなることです。それらはキーコードを生成しますが ( によって報告されているようにshowkey)、何もしません。 を使用してevtest、次の 2 つのことを確認しました。

  1. 蓋ボタンは、通常のキーボード ボタンと同じイベント デバイス、「AT Translated Set 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 ------------
    

また、小さなスティックを使用して変身イベントがすでに発生しているときにキーボードのキーを押してみましたが、何も起こりませんでした。

したがって、変形イベントが何かをトリガーすると、OS がこの特定のデバイスからのキー入力を無視する原因になるのではないかと疑っています。それが何で、どのように行われるかを判断する方法はありますか。また、デバイスが変形したときに使用できるように、この例外に蓋ボタンを追加するにはどうすればよいでしょうか。

前もって感謝します。

答え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 です。それがわかったら、 と入力して無効にすれば、準備xinput disable 11完了です。

関連情報