デバイスが「変形」すると、ThinkPad X41tのカバーボタンは機能しません。

デバイスが「変形」すると、ThinkPad X41tのカバーボタンは機能しません。

ArchLinux32を実行しているThinkPad X41tがあります。蓋には複数のボタンがあります。私は彼らにそれに付属のキーコードを与えましたsetkeycodes。装置は「変形」することができる。つまり、ヒンジを中心に180度回転して閉じることができます。問題は、デバイスの切り替え時にこれらのカバーボタンが機能しないことです。報告されているように、まだキーコードを生成しますshowkeyが、何もしません。を使用して、evtest次の2つを確認しました。

  1. ふたボタンは、通常のキーボードボタンと同じイベントデバイス「AT Translation Set 2 Keyboard」に属します。
  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です。そのIDを見つけたら、入力して無効にxinput disable 11するだけです!

関連情報