だからクリスマスプレゼントとしてJelly Combキーボードを購入しました。しかし、メーカーによると、キーボードはWindowsで使用するように設計されています。今、次の質問があります。
Num Lockを押すと、キーボードが奇妙に機能し始め、数字として機能する数字と数文字を除いて、ほとんどのキーが機能しなくなり、Num Lockをオフにすることはできません。
numlockx off
キーボードをコンピュータに接続するときにNum Lockが開かないようにしてみましたが、時には数字パッドを使用するのが好きですが、それはできません。F1〜F12が機能しません。 Fnを押すと、Fキーはマルチメディアキーとしても機能します。少なくともそれをしなければなりません。しかし、私の場合は、Fキーの1つを押すとランダムなマルチメディアジョブ(キーに印刷されたものとランダムと異なる)が発生しますが、Fnキーを押すと効果が別のマルチメディアジョブに変更され、再印刷されます。キー以外のものに。
出力を確認したところ、
xev
一部のキーに同じキーコードがあることがわかりました。たとえば、F11はFn + F4と同じ出力を印刷します。サンプル出力は次のとおりです。
KeyRelease event, serial 28, synthetic NO, window 0x3e00001,
root 0x5c4, subw 0x0, time 2572602, (456,941), root:(521,1045),
state 0x0, keycode 33 (keysym 0x70, p), same_screen YES,
XLookupString gives 1 bytes: (70) "p"
XFilterEvent returns: False
KeymapNotify event, serial 28, synthetic NO, window 0x0,
keys: 4294967236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeymapNotify event, serial 28, synthetic NO, window 0x0,
keys: 4294967236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
最初はランダムな文字で、最後の2つはF11とFn + F4です。
詳細については、GnomeでUbuntu 20.04を実行しています。
だから私の質問は、Linuxでこのキーボードを正常に使用する方法があるかどうかということです。 Windowsのようにキーボードを解釈するようにOSに「指示」する方法があると思いますが、似たようなものが見つかりませんでした。
編集する:
したがって、@dirktの提案に従って出力を確認し、evtest
それぞれFn + F11とF4に対して次の行を得ました。
Event: time 1609244073.713496, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1609244073.713496, -------------- SYN_REPORT ------------
Event: time 1609244073.738779, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1609244073.738779, -------------- SYN_REPORT ------------
Event: time 1609244076.661538, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1609244076.661538, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1609244076.661538, -------------- SYN_REPORT ------------
Event: time 1609244076.687504, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1609244076.687504, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1609244076.687504, -------------- SYN_REPORT ------------
Event: time 1609244076.687504, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
どちらも同じコード(113 KEY_MUTE)を持っていてもFnを押さないと、追加の行が表示されます。文字や数字など、すべての共通キーにも同じように適用されます。ところで、F1~F12をFnキーと一緒に使用すると線が消えます。したがって、私の後続の質問は、Linuxが同じキーコードを持つキーを区別できるように、追加の行を利用できますか?それでは、違いをどのように知ることができますか?
答え1
部分的な答え:
メーカーによると、このキーボードはWindowsに適しています。
これは、キーボードの非標準部分を処理するためのWindows専用ドライバがあることを意味できます。
このドライバはLinuxでは利用できないため、そのまま使用するか、違いをリバースエンジニアリングし、それを処理するためにLinuxを調整するオプションがあります。後者は時間と労力が必要です。
Google for Jelly Combは、これがUSBレシーバー付きのワイヤレスキーボードである可能性があることを示しています(あなたは言っていませんが、推測する必要があります)。
Linuxでキーボードスタックがどのように機能するかについてのクイックガイド:
USBデバイスには、キーボードなどのデバイスとの通信をエンコードするための標準的なHID(Human Interface Device)プロトコルがあります。lsusb
キーボードを識別し、lsusb -v
HIDがサポートされていることを確認するために使用される1つ以上のUSBエンドポイント(一部のキーボードには2つ以上があります)
カーネルはHIDイベントをデコードします(これらのイベントを説明するHID記述子を確認し、このスタック交換またはスーパーユーザースタック交換で詳細な回答を取得できます)。その後、カーネルはそれを入力層に渡します。
入力階層デバイスはで表示されます/dev/event/input*
。それを実行し、dmesg
キーボードが何を得るかを確認してください。evtest
そのイベントから来るイベントを確認するために使用できます。
入力レイヤーであるXまたはWaylandのイベントを解釈し、対応するキーマップを使用してイベントを処理します。
evtest
したがって、両方が機能しないキーの組み合わせを確認し、興味深いことが進行中であるxev
ことを確認してください。
あなたのKeymapNotify
イベントは、キーマップを変更させるコードがあることを意味します。これは、使用しているキーマップまたはデスクトップにインストールされている項目が原因である可能性があります。
それがうまくいくとは思わないでくださいFn。キーは非標準であり、ノートブックメーカーまたはキーボードメーカーごとにキーを処理する方法が異なります。