Logitech R400プレゼンターは次のキーコードを送信します。
keycode 112 (keysym 0xff55, Prior) [page up]
keycode 117 (keysym 0xff56, Next) [page down]
keycode 60 (keysym 0x2e, period)
keycode 71 (keysym 0xffc2, F5)
keycode 9 (keysym 0xff1b, Escape)
基本的に、このプレゼンターを使用してBansheeをリモートで制御したいので、Prior
をB
に、Next
をN
などに再マッピングします。
このデバイスのキーマップのみを変更するにはどうすればよいですか(これらのキーコードをグローバルに再マップしたくないので)。
私はそれをやったことはありませんが、/lib/udev/keymaps/
にキーマップファイルを作成し、/lib/udev/rules.d/95-keymap.rules
にデバイスのルールを追加する必要があると思います
詳細:
Udevキーマップはスキャンコードをキーコードにマップするため、キーマップファイルを作成するには両方を見つける必要があります。スキャンコードを見つけるには、次を実行し、デバイスのボタンを押します。
Sudo /lib/udev/keymap -i input/event5
event *には異なる番号を試す必要があるかもしれません。出力は次のようになります。
scan code: 0x70037 key code: dot
scan code: 0x70029 key code: esc
scan code: 0x7003E key code: f5
scan code: 0x7004B key code: pageup
scan code: 0x7004E key code: pagedown
キーコードのリストは here にあります。
キーマップファイルを作成します(/ lib/udev/keymaps/logitech-r400として保存しています):
0x70037 brightnessdown
0x70029 brightnessup
0x7003E brightnessdown
0x7004B brightnessup
0x7004E brightnessdown
有用なことは何もしません-動作するかどうかを簡単に確認するためのテストです。
新しいキーマップを一時的にテストするには、次を実行します:
Sudo /lib/udev/keymap input/event5 /lib/udev/keymaps/logitech-r400
結果は次のようになります。
Remapped scancode 0x70037 to 0xe0 (prior: 0x34)
Remapped scancode 0x70029 to 0xe1 (prior: 0x01)
Remapped scancode 0x7003e to 0xe0 (prior: 0x3f)
Remapped scancode 0x7004b to 0xe1 (prior: 0x68)
Remapped scancode 0x7004e to 0xe0 (prior: 0x6d)
これでボタンの明るさが変わります。
その変更を永続的にしたい場合は、デバイスにキーマップファイルを適用する/lib/udev/rules.d/95-keymap.rules
にudevルールを追加する必要があります。
gksudo gedit /lib/udev/rules.d/95-keymap.rules
ファイルの下部で、LABEL="keyboard_end"
行の前に、以下を追加します。
ENV{ID_VENDOR}=="Logitech*", ATTRS{idProduct}=="c52d", RUN+="keymap $name logitech-r400"
保存して閉じ、再起動後にボタンの明るさが変わります。
Ubuntu 16.04を使用しています。ガイドを作成しました こちら
Evtestで検出する
Sudo evtest
デバイスリストを見てください:
/dev/input/event0: Lid Switch /dev/input/event1: Power Button /dev/input/event2: Sleep Button /dev/input/event3: Power Button /dev/input/event4: AT Translated Set 2 keyboard /dev/input/event5: Video Bus /dev/input/event6: USB Optical Mouse /dev/input/event7: AlpsPS/2 ALPS DualPoint Stick /dev/input/event8: AlpsPS/2 ALPS DualPoint TouchPad /dev/input/event9: Logitech USB Receiver /dev/input/event10: Logitech USB Receiver /dev/input/event11: HDA Intel PCH Dock Mic /dev/input/event12: HDA Intel PCH Headset Mic /dev/input/event13: HDA Intel PCH Dock Line Out /dev/input/event14: HDA Intel PCH Headphone /dev/input/event15: HDA Intel PCH HDMI/DP,pcm=3 /dev/input/event16: HDA Intel PCH HDMI/DP,pcm=7 /dev/input/event17: HDA Intel PCH HDMI/DP,pcm=8 /dev/input/event18: Integrated Webcam /dev/input/event19: Dell WMI hotkeys Select the device event number [0-19]: 9 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x46d product 0xc52d version 0x111 Input device name: "Logitech USB Receiver"
最初の「Logitech USB Receiver」を取得しました。ここでは、イベントIDは9です。
Testing ... (interrupt to exit)
OK evtestは入力を求めています。Logitechのリモートボタンをクリックするだけです。
[>] value 7003e (KEY_PRESENTATION) [>] value 70029 (KEY_PRESENTATION) [ ] value 70037 (KEY_DISPLAYTOGGLE) < value 7004b (KEY_PAGEUP) > value 7004e (KEY_PAGEDOWN)
注:[>]を複数回クリックすると、7003e、70029、7003eなどが表示されることがわかりました。理由はわかりません。
Udev confの変更
入力コードができたので、udev confを見てみましょう。
Sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
「R400」を検索し、プレゼンテーションとディスプレイの切り替えを必要なものに置き換えますplaypause&stopcd矢印キー:
# Logitech Presenter R400 evdev:input:b0003v046DpC52D* KEYBOARD_KEY_070029=playpause # bottom left [>] was "presentation" KEYBOARD_KEY_07003e=playpause # bottom left [>] was "presentation" KEYBOARD_KEY_070037=stopcd # bottom right [ ] was "displaytoggle"
前述のとおり、07003eと070029は同じボタンであるため、同じ出力upキーを与えました。 7004bおよび7004eはデフォルトではここに表示されません。おそらく、ネイティブのPAGEUPおよびPAGEDOWN入力であり、「Logitech Presenter R400」に関連していないためです。それらを追加しましょう:
KEYBOARD_KEY_07004b=previoussong # top left < KEYBOARD_KEY_07004e=nextsong # top right >
最終的な設定は次のとおりです。
KEYBOARD_KEY_07004b=previoussong # top left < KEYBOARD_KEY_07004e=nextsong # top right > KEYBOARD_KEY_070029=playpause # bottom left [>] was "presentation" KEYBOARD_KEY_07003e=playpause # bottom left [>] was "presentation" KEYBOARD_KEY_070037=stopcd # bottom right [ ] was "displaytoggle"
(新しい)ルールの再読み込み
Sudo udevadm hwdb --update
次に、前に選択した同じイベントIDを使用して、ここでイベントID 9を指定します。
Sudo udevadm trigger /dev/input/event9
Webブラウザでこの新しいマッピングを確認できます。次に例を示します。
$('body').on('keydown', function(e){ console.log(e.key) })
それは私に与えた:
[>] ArrowUp [ ] ArrowDown < ArrowLeft > ArrowRight