내 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)
기본적으로, 나는 다시 매핑하고 싶습니다 있도록 원격으로 밴시를 제어하려면이 발표자 사용할 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
이제 키맵 파일을 작성하십시오 ( / 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"
-
저장, 닫기 및 재부팅 후 버튼이 밝기를 변경해야합니다.
- 파일을여십시오 :
답변
우분투 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