各キーに個別の自動繰り返し速度を設定する

各キーに個別の自動繰り返し速度を設定する

X11 では、次の操作を行います。

xset r rate 120 240

キーボード全体の繰り返し速度を設定できます。

しかし、個々のキーごとに同じことができるかどうか疑問に思います。 (つまり、キーごとに繰り返し率が異なります。)

おそらく、あいまいなXKB設定、XKB C API、またはいくつかのevdev / ioctlハッキングを使用できます。

それ以外の場合は、キーボードファームウェアにアクセスでき、キーボードから送信されたUSB HIDコードを制御できる場合はどうすればよいですか?

私はそれが可能でなければならないことを知っている。何とか修飾子キーの繰り返し率はゼロであるように見えますが、残りのキーの繰り返し率はゼロではないためです。


心に浮かぶ1つのアイデアは、異なるキーセットを異なるUSBデバイスとして登録し、異なるデバイスに対して異なる繰り返し速度を設定することです(USBレベルで実行できる場合)。

ベストアンサー1

残念ながら、これは努力なしには不可能なようです。

PS / 2とUSBキーボード通信プロトコルの違いは全くわかりませんが、おそらく非常によく似ていると思います。これらの仮定を考えると、あなたがやろうとしていることは実際にはハードウェアレベルでは不可能であり、オペレーティングシステムレベルでは非常に困難です。

ハードウェアレベルでは、問題は、自動反復速度が次のように決定されることです。コマンドを送るキーボードの場合、このコマンドはすべての重複キーで機能します。個々のキー入力の繰り返し速度を設定するコマンドはありません。

OSレベルでは、カーネルの直接的な部分であるか、カーネルにロードされたドライバであるキーボード入力ハンドラをオーバーライドする必要があります。キーボードはキーを押して放すたびに割り込みを送信し、キーを押しているたびに割り込みを送信して自動的に繰り返します。したがって、ドライバは、繰り返されるキー押下割り込みを無視し、キー解除割り込みが受信されるまで、そのキー押下に必要な速度でキー押下イベントを人為的に生成する必要があります。

あるいは、Xorgのコードを変更して、ユーザーレベルでこの機能を実装することもできます。

おすすめ記事