MS Natural Ergonomic 4000 슬라이더를 Linux Mint에서 작동시키려면 어떻게 해야 합니까?

MS Natural Ergonomic 4000 슬라이더를 Linux Mint에서 작동시키려면 어떻게 해야 합니까?

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_ZOOMINsums KEY_ZOOMOUT)로 변환합니다. 따라서 그 점에서는 이미 "작동"하고 있습니다. 이벤트를 수신하여 유용한 작업을 수행할 수 있습니다.

그러나 X 키보드 번역기는 최대 255개의 키코드만 지원합니다(참조:이 답변, 이는 X 프로토콜의 제한 사항입니다). 따라서 X 키 기호로 변환할 수 없습니다. (어쨌든 이것은 당신이 원하는 것이 아닐 수도 있습니다. 확대/축소는 일반적으로 응용 프로그램의 마우스 버튼 이벤트, 즉 버튼 4 및 5에 의해 처리되기 때문입니다. 따라서 키보드 기호로 변환하더라도 확대 또는 축소되지 않습니다.) .

그러나 당신이 하려는 것은 이미 키보드의 다른 키로 사용되는 위쪽 및 아래쪽 화살표 키와 마찬가지로 up및 키에 다시 매핑하려는 것처럼 보입니다.down

  1. 에서와 같이답변X가 255보다 큰 키코드를 다시 매핑할 수 있도록 링크됨누구생성됨패치 변형X evdev드라이버. 따라서 이 패치된 변형을 컴파일하고 설치해야 합니다.그 다음에옵션 event_key_remap이 인식됩니다. 표준 드라이버는 이를 인식하지 못하므로 입력이 아무 것도 하지 않는 것은 놀라운 일이 아닙니다 evdev.xorg.conf

    아마도 이것이 가장 깨끗한 방법 일 것입니다.

  2. 모든 Linux를 인수하는 과정에서 systemd이제 자체 하드웨어 데이터베이스도 갖게 되었으며 키맵을 무시할 수 있게 되었습니다. 이것이 커널의 어느 수준에서 작동하는지 잘 모르기 때문에 도움이 되는지 모르겠고 "하드웨어 데이터베이스"의 형식이 문서화되어 있지 않은 것 같습니다. 그래서 나는 그 점에 있어서는 당신에게 별로 도움을 줄 수 없습니다.

    그러나 일치하는 형식은변한 것 같아, 설명된 대로 버스 번호를 포함하면 운이 더 좋을 수도 있습니다.

    편집하다: 커널 소스를 읽으면서 각 입력 장치에는 자체 스캔 코드(하드웨어에 따라 최대 8바이트, 많은 곳에서는 커널의 1/2/4바이트만 전송됨)와 키 코드(당신이 원하는 것은 무엇입니까?)가 있음을 발견했습니다. ) 번역 매핑을 참조하세요 evtest. 온디바이스 및 ioctl을 사용하여 EVIOCGKEYCODE_V2큰 코드 값을 설정하고 얻을 수 있습니다. 일부 IR 수신기 관련 도구가 이러한 ioctl을 사용하는 것으로 보이지만 EVIOCSKEYCODE_V2이와 유사한 일반 도구 xmodmaploadkeys/dumpkeys존재하지 않는 것 같습니다. 이것이 systemd데이터베이스가 작동하는 방식 이라면 더 유연한 대안은 udev규칙에서 그러한 도구를 사용하는 것입니다(또한 테스트하기 더 쉽습니다). 지도를 덤프하기 위한 빠른 C 프로그램을 작성했습니다. 아마도 github에 올려야 할 것 같습니다...

  3. 원칙적으로 이미 자신의 프로그램이나 스크립트를 사용하여 이벤트를 처리하고 원하는 작업을 수행할 수 있습니다. 예를 들어, evtest이를 실행하고 bash 스크립트를 사용하여 출력을 구문 분석한 다음 xdotool버튼을 4~5번 눌러 호출하면 슬라이더 버튼이 있는 마우스 휠과 동일한 효과를 얻을 수 있습니다. 등등 (비슷한 목적의 기본 스크립트로 stackexchange 질문이 있는데 지금은 못찾겠습니다. 필요하면 더 검색해보겠습니다.)

관련 정보