태그 보관물: udev

udev

단일 장치 (Logitech 발표자)의 키맵을 어떻게 변경합니까? Prior) [page up] keycode 117

내 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)

기본적으로, 나는 다시 매핑하고 싶습니다 있도록 원격으로 밴시를 제어하려면이 발표자 사용할 PriorB, NextN, 등등을.

이 키 코드를 전체적으로 다시 매핑하고 싶지 않기 때문에이 장치의 키맵 만 변경하려면 어떻게해야합니까?



답변

나는 그렇게하지 않았지만 키 맵 파일을 만들고 /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
    

    키 코드 목록은 여기 에서 찾을 수 있습니다 .

    이제 키맵 파일을 작성하십시오 ( / 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 규칙을 추가해야합니다 .

    1. 파일을여십시오 : gksudo gedit /lib/udev/rules.d/95-keymap.rules
    2. 파일의 맨 아래에 있지만 LABEL="keyboard_end"줄 앞에 다음을 추가하십시오.

      ENV{ID_VENDOR}=="Logitech*", ATTRS{idProduct}=="c52d", RUN+="keymap $name logitech-r400"
      
    3. 저장, 닫기 및 재부팅 후 버튼이 밝기를 변경해야합니다.


답변

우분투 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)

이제 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″를 검색하고, 원하는에 의해 발표 및 displaytoggle을 대체 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이 같은 버튼 때문에, 나는 그들에게 동일한 출력했다 최대 키를 누릅니다. 7004b & 7004e는 기본적으로 여기에 나타나지 않습니다. 아마도 기본 PAGEUP & PAGEDOWN 입력이고 “Logitech Presenter R400″과 관련이 없기 때문일 수 있습니다. 그것들을 추가합시다 :

 KEYBOARD_KEY_07004b=previoussong #    top  left  <
 KEYBOARD_KEY_07004e=nextsong     #    top right  >

여기 내 마지막 conf가 있습니다.

 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

웹 브라우저에서이 새 매핑을 확인할 수 있습니다 (예 :

$('body').on('keydown', function(e){ console.log(e.key) })

그것은 나에게 주었다 :

[>] ArrowUp
[ ] ArrowDown
 <  ArrowLeft
 >  ArrowRight

답변