
現在の設定は次のとおりです:
- PS2キーボード1個
- USBキーボード1台
次にこれを使います:
xinput --create-master SecondKeyboard
xinput --reattach "Keyboard Id" "Master Id"
それらを分離します。
カスタム レイアウトを作成すれば、1 つのキーボードを入力用、もう 1 つをショートカット用にできると思いましたが、xkb では複数のキーをクリックするレイアウト (つまり、押すcapslockとctrl+ alt+が実行されるf4) を作成できないことがわかりました。
そこで私が考えたのは、キーボードの ID が異なるため、xbindkeys をキーボードの 1 つでのみ実行することです。これを実現できますか?
答え1
関係するさまざまなレベルの簡単な概要:
キーボードはスキャン コードを生成します。これらはカーネル入力レイヤーによって のキーコード イベントにマップされます/dev/input/eventX
。Xevdev
ドライバーはこれらのイベントを受け取り、キーシムに変換します。次に、XInput 拡張機能により、仮想コア キーボードのスレーブからのすべてのイベントが通常の X イベントとして利用可能になり、その他のイベントは XInput イベントとしてのみ利用可能になります。
したがって、次のオプションがあります。
1) カスタムスキャンコードからキーコードへのマッピングを設定します。これらのマッピングはデバイスごとに行われるため、実際には可能ですが、これはIOCTLを介して行われ、これ以外に既製のツールはないようです。ハードウエアでudev
。その後、 で新しいキーサイドを使用できますxkb
。両方のキーボードはコア キーボードとして保持されます。
2) xbindkeys
XInput イベントを理解できるように拡張し、コア以外のキーボードからのイベントにバインドできるようにします。これにはプログラミングが必要ですが、比較的簡単なはずです。この場合は、すでに行ったように、1 つのキーボードをコア キーボードから切り離します。