1 つのキーボードで xbindkeys を使用しますか?

1 つのキーボードで xbindkeys を使用しますか?

現在の設定は次のとおりです:

  • PS2キーボード1個
  • USBキーボード1台

次にこれを使います:

xinput --create-master SecondKeyboard

xinput --reattach "Keyboard Id" "Master Id"

それらを分離します。

カスタム レイアウトを作成すれば、1 つのキーボードを入力用、もう 1 つをショートカット用にできると思いましたが、xkb では複数のキーをクリックするレイアウト (つまり、押すcapslockctrl+ alt+が実行されるf4) を作成できないことがわかりました。

そこで私が考えたのは、キーボードの ID が異なるため、xbindkeys をキーボードの 1 つでのみ実行することです。これを実現できますか?

答え1

関係するさまざまなレベルの簡単な概要:

キーボードはスキャン コードを生成します。これらはカーネル入力レイヤーによって のキーコード イベントにマップされます/dev/input/eventX。Xevdevドライバーはこれらのイベントを受け取り、キーシムに変換します。次に、XInput 拡張機能により、仮想コア キーボードのスレーブからのすべてのイベントが通常の X イベントとして利用可能になり、その他のイベントは XInput イベントとしてのみ利用可能になります。

したがって、次のオプションがあります。

1) カスタムスキャンコードからキーコードへのマッピングを設定します。これらのマッピングはデバイスごとに行われるため、実際には可能ですが、これはIOCTLを介して行われ、これ以外に既製のツールはないようです。ハードウエアudev。その後、 で新しいキーサイドを使用できますxkb。両方のキーボードはコア キーボードとして保持されます。

2) xbindkeysXInput イベントを理解できるように拡張し、コア以外のキーボードからのイベントにバインドできるようにします。これにはプログラミングが必要ですが、比較的簡単なはずです。この場合は、すでに行ったように、1 つのキーボードをコア キーボードから切り離します。

関連情報