MSキーボードのスライダーを操作しようとしていますが、それでも機能しません。
私が試したこと:
存在する/etc/udev/hwdb.d/61-keyboard-local.hwdb
keyboard:usb:v045Ep00DB*
KEYBOARD_KEY_c022d=up
KEYBOARD_KEY_c022e=down
そして
evdev:input:b0003v045Ep00DB*
KEYBOARD_KEY_c022d=up
KEYBOARD_KEY_c022e=down
次のような
sudo udevadm hwdb --update
sudo udevadm control --reload
再起動しても何も起こりませんでした。
存在する/lib/udev/keymaps/microsoft-ergonomic-keyboard
0xC022D 0xC1 # Zoom Up which we wish to be Scroll up
0xC022E 0xC2 # Zoom Down which we wish to be Scroll down
再起動しても何も起こりませんでした。
存在する/etc/X11/xorg.conf.d/10-keyboard.conf
Section "InputDevice"
Identifier "Keyboard1"
Driver "evdev"
Option "Device" "/dev/input/event9"
Option "event_key_remap" "418=185 419=186 423=101 425=156 421=157"
EndSection
再起動しても何も起こりませんでした。
私が持っているもの
> sudo evtest /dev/input/event9
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x45e product 0xdb version 0x111
Input device name: "Microsoft Natural® Ergonomic Keyboard 4000"
...
Testing ... (interrupt to exit)
Event: time 1478692111.766327, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022d
Event: time 1478692111.766327, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1
Event: time 1478692111.766327, -------------- SYN_REPORT ------------
Event: time 1478692111.886318, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022d
Event: time 1478692111.886318, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 0
Event: time 1478692111.886318, -------------- SYN_REPORT ------------
Event: time 1478692112.678287, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022e
Event: time 1478692112.678287, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 1
Event: time 1478692112.678287, -------------- SYN_REPORT ------------
Event: time 1478692112.798370, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022e
Event: time 1478692112.798370, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 0
Event: time 1478692112.798370, -------------- SYN_REPORT ------------
スライダーが機能してevtest
イベントを表示できますが、xev
何も表示されません。 2016年に私ができることはもうありますか?
私は4.4.0-34-genericカーネルでLinux Mint 18 Sarahを使用しています。
答え1
背景:あなたのキーボード高圧ガス放電管USBデバイスの場合、カーネルはスライダキーのHID USBイベントを正しく認識し、それをキーコード(KEY_ZOOMIN
sums KEY_ZOOMOUT
)に変換します。したがって、その点ではすでに「動作」しています。イベントを受け取って役に立つタスクを実行できます。
ただし、Xキーボードトランスレータは最大255個のキーコードのみをサポートします(参照:この回答、これはXプロトコルの制限です)。したがって、X キー記号に変換できません。 (とにかくこれはあなたが望むものではないかもしれません。
しかし、あなたがやろうとしているのは、キーボードの別のキーとしてすでに使用されている上下の矢印キーと同様に、キーupに再マップしたいようです。down
のように回答Xが255を超えるキーコードを再マッピングできるようにリンク誰作成済みパッチの変形X
evdev
ドライバ。したがって、このパッチされたバリアントをコンパイルしてインストールする必要があります。それからオプションevent_key_remap
が認識されます。標準ドライバはこれを認識しないので、入力が何もしないことは驚くべきことではありませんevdev
。xorg.conf
おそらくこれが最もきれいな方法です。
すべてのLinuxを買収する過程で、
systemd
独自のハードウェアデータベースも持ち、キーマップを無視できるようになりました。これがカーネルのどのレベルで動作するのかよく分からないので、役に立つかわからず、「ハードウェアデータベース」の形式が文書化されていないようです。だから私はその点ではあまり役に立ちません。ただし、一致する形式は変わったようです。、説明されているように、バス番号を含めると運が良いかもしれません。
編集する:カーネルソースを読みながら、各入力デバイスには独自のスキャンコード(ハードウェアに応じて最大8バイト、多くの場合カーネルの1/2/4バイトのみが送信されます)とキーコード(あなたが望むものは何ですか?)がありますを発見しました。 )翻訳マッピングを参照してください
evtest
。オンデバイスとioctlを使用してEVIOCGKEYCODE_V2
大きなコード値を設定して取得できます。一部のIRレシーバ関連ツールはこれらのioctlを使用しているように見えますが、EVIOCSKEYCODE_V2
同様の一般的なツールxmodmap
はloadkeys/dumpkeys
存在しないようです。これがsystemd
データベースがどのように機能するかである場合、より柔軟な方法はルールudev
でそのようなツールを使用することです(テストするのも簡単です)。地図をダンプするためのクイックCプログラムを作成しました。おそらくgithubにアップロードする必要があるようです...原則として、すでに独自のプログラムまたはスクリプトを使用してイベントを処理し、必要な操作を実行できます。たとえば、
evtest
これを実行してbashスクリプトを使用して出力を解析し、ボタンをxdotool
4〜5回押して呼び出すと、スライダボタンを持つマウスホイールと同じ効果が得られます。など(似た目的の基本スクリプトでstackexchangeの質問がありますが、今は見つかりません。必要に応じてさらに検索してみます。)