내 Logitech Wave 무선 키보드는 핵심적으로 두 개의 장치로 나타납니다. 하나는 정상적으로 작동하는 일반 키보드이지만 모든 추가 키는 다음과 같이 이벤트 마우스로 표시됩니다.
cat /dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse
버튼을 누르면 예상되는 쓰레기가 생성되지만 xev는 아무것도 등록하지 않습니다. OpenSuse Tumbleweed에서 실행하고 싶지 않은 hidpoint를 시도했고
usbhid.quirks=0x46d:0xc517:0x40
커널 매개변수를 사용하여 "다중 ID" 인식을 강제로 시도했지만 현재로서는 알아낼 수 없으므로 아마도 그럴 가능성이 높습니다. 내가 하고 있는 일을 이해하면 제대로 작동하지 않습니다.
커널이 추가 장치를 마우스 대신 키보드로 인식하도록 설득하는 최선의 방법에 대한 제안이 있습니까?
요청 시 추가 정보 제공:
lsusb:
Bus 001 Device 007: ID 046d:c517 Logitech, Inc. LX710 Cordless Desktop Laser
우편:
usb 1-6: new low-speed USB device number 7 using xhci_hcd usb 1-6: New USB device found, idVendor=046d, idProduct=c517 usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-6: Product: USB Receiver usb 1-6: Manufacturer: Logitech input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/0003:046D:C517.0009/input/input14 logitech 0003:046D:C517.0009: input,hidraw3: USB HID v1.10 Keyboard [Logitech USB Receiver] on usb-0000:00:14.0-6/input0 logitech 0003:046D:C517.000A: fixing up Logitech keyboard report descriptor input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.1/0003:046D:C517.000A/input/input15 logitech 0003:046D:C517.000A: input,hiddev0,hidraw4: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:14.0-6/input1
$ evtest /dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse > evtestdump
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xc517 version 0x110
Input device name: "Logitech USB Receiver"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 1 (KEY_ESC)
Event code 28 (KEY_ENTER)
Event code 74 (KEY_KPMINUS)
Event code 78 (KEY_KPPLUS)
Event code 103 (KEY_UP)
...
Event code 241 (KEY_VIDEO_NEXT)
Event code 244 (KEY_BRIGHTNESS_ZERO)
Event code 256 (BTN_0)
Event code 272 (BTN_LEFT)
Event code 273 (BTN_RIGHT)
Event code 274 (BTN_MIDDLE)
Event code 275 (BTN_SIDE)
Event code 276 (BTN_EXTRA)
Event code 277 (BTN_FORWARD)
Event code 278 (BTN_BACK)
Event code 279 (BTN_TASK)
Event code 352 (KEY_OK)
Event code 353 (KEY_SELECT)
Event code 354 (KEY_GOTO)
Event code 358 (KEY_INFO)
Event code 362 (KEY_PROGRAM)
Event code 366 (KEY_PVR)
Event code 370 (KEY_SUBTITLE)
Event code 371 (KEY_ANGLE)
Event code 372 (KEY_ZOOM)
Event code 374 (KEY_KEYBOARD)
Event code 376 (KEY_PC)
Event code 377 (KEY_TV)
Event code 378 (KEY_TV2)
...
Event code 431 (KEY_DISPLAYTOGGLE)
Event code 432 (KEY_SPELLCHECK)
Event code 433 (KEY_LOGOFF)
Event code 439 (KEY_MEDIA_REPEAT)
Event code 442 (KEY_IMAGES)
Event code 478 (KEY_FN_1)
Event code 479 (KEY_FN_2)
Event code 576 (KEY_BUTTONCONFIG)
Event code 577 (KEY_TASKMANAGER)
Event code 578 (KEY_JOURNAL)
Event code 579 (KEY_CONTROLPANEL)
Event code 580 (KEY_APPSELECT)
Event code 581 (KEY_SCREENSAVER)
Event code 582 (KEY_VOICECOMMAND)
Event code 592 (KEY_BRIGHTNESS_MIN)
Event code 593 (KEY_BRIGHTNESS_MAX)
Event code 608 (KEY_KBDINPUTASSIST_PREV)
Event code 609 (KEY_KBDINPUTASSIST_NEXT)
Event code 610 (KEY_KBDINPUTASSIST_PREVGROUP)
Event code 611 (KEY_KBDINPUTASSIST_NEXTGROUP)
Event code 612 (KEY_KBDINPUTASSIST_ACCEPT)
Event code 613 (KEY_KBDINPUTASSIST_CANCEL)
Event type 2 (EV_REL)
Event code 0 (REL_X)
Event code 1 (REL_Y)
Event code 6 (REL_HWHEEL)
Event code 7 (REL_DIAL)
Event code 8 (REL_WHEEL)
Event type 3 (EV_ABS)
Event code 32 (ABS_VOLUME)
Value 0
Min 1
Max 4173
Event type 4 (EV_MSC)
Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
Event: time 1498324926.500910, type 4 (EV_MSC), code 4 (MSC_SCAN), value c101c
Event: time 1498324926.500910, type 1 (EV_KEY), code 154 (KEY_CYCLEWINDOWS), value 1
Event: time 1498324926.500910, -------------- SYN_REPORT ------------
Event: time 1498324926.644944, type 4 (EV_MSC), code 4 (MSC_SCAN), value c101c
Event: time 1498324926.644944, type 1 (EV_KEY), code 154 (KEY_CYCLEWINDOWS), value 0
Event: time 1498324926.644944, -------------- SYN_REPORT ------------
Event: time 1498324926.932933, type 4 (EV_MSC), code 4 (MSC_SCAN), value c101f
Event: time 1498324926.932933, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 1
Event: time 1498324926.932933, -------------- SYN_REPORT ------------
Event: time 1498324927.052921, type 4 (EV_MSC), code 4 (MSC_SCAN), value c101f
Event: time 1498324927.052921, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 0
Event: time 1498324927.052921, -------------- SYN_REPORT ------------
Event: time 1498324927.396932, type 4 (EV_MSC), code 4 (MSC_SCAN), value c1020
Event: time 1498324927.396932, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1
Event: time 1498324927.396932, -------------- SYN_REPORT ------------
Event: time 1498324927.548930, type 4 (EV_MSC), code 4 (MSC_SCAN), value c1020
Event: time 1498324927.548930, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 0
Event: time 1498324927.548930, -------------- SYN_REPORT ------------
Event: time 1498324927.916944, type 4 (EV_MSC), code 4 (MSC_SCAN), value c103d
Event: time 1498324927.916944, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
Event: time 1498324927.916944, -------------- SYN_REPORT ------------
Event: time 1498324928.084925, type 4 (EV_MSC), code 4 (MSC_SCAN), value c103d
Event: time 1498324928.084925, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
Event: time 1498324928.084925, -------------- SYN_REPORT ------------
Event: time 1498324928.460914, type 4 (EV_MSC), code 4 (MSC_SCAN), value c1005
Event: time 1498324928.460914, type 1 (EV_KEY), code 212 (KEY_CAMERA), value 1
Event: time 1498324928.460914, -------------- SYN_REPORT ------------
Event: time 1498324928.628903, type 4 (EV_MSC), code 4 (MSC_SCAN), value c1005
Event: time 1498324928.628903, type 1 (EV_KEY), code 212 (KEY_CAMERA), value 0
Event: time 1498324928.628903, -------------- SYN_REPORT ------------
Event: time 1498324930.876924, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b6
Event: time 1498324930.876924, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 1
Event: time 1498324930.876924, -------------- SYN_REPORT ------------
Event: time 1498324930.908915, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b6
Event: time 1498324930.908915, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 0
Event: time 1498324930.908915, -------------- SYN_REPORT ------------
Event: time 1498324931.684927, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b5
Event: time 1498324931.684927, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 1
Event: time 1498324931.684927, -------------- SYN_REPORT ------------
Event: time 1498324931.724935, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b5
Event: time 1498324931.724935, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 0
Event: time 1498324931.724935, -------------- SYN_REPORT ------------
Event: time 1498324932.652916, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0183
Event: time 1498324932.652916, type 1 (EV_KEY), code 226 (KEY_MEDIA), value 1
Event: time 1498324932.652916, -------------- SYN_REPORT ------------
Event: time 1498324932.812954, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0183
Event: time 1498324932.812954, type 1 (EV_KEY), code 226 (KEY_MEDIA), value 0
Event: time 1498324932.812954, -------------- SYN_REPORT ------------
Event: time 1498324933.748907, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0192
Event: time 1498324933.748907, type 1 (EV_KEY), code 140 (KEY_CALC), value 1
Event: time 1498324933.748907, -------------- SYN_REPORT ------------
Event: time 1498324933.884934, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0192
Event: time 1498324933.884934, type 1 (EV_KEY), code 140 (KEY_CALC), value 0
Event: time 1498324933.884934, -------------- SYN_REPORT ------------
Event: time 1498324938.084936, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10082
Event: time 1498324938.084936, type 1 (EV_KEY), code 142 (KEY_SLEEP), value 1
Event: time 1498324938.084936, -------------- SYN_REPORT ------------
Event: time 1498324938.100912, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10082
Event: time 1498324938.100912, type 1 (EV_KEY), code 142 (KEY_SLEEP), value 0
Event: time 1498324938.100912, -------------- SYN_REPORT ------------
(II) config/udev: Adding input device Logitech USB Receiver (/dev/input/mouse1)
(**) Logitech USB Receiver: Applying InputClass "system-keyboard"
(**) Logitech USB Receiver: Applying InputClass "Logitech USB TrackBall"
(**) Logitech USB Receiver: Applying InputClass "Logitech M570 Trackball"
(II) Using input driver 'evdev' for 'Logitech USB Receiver'
(**) Option "SendCoreEvents" "true"
(**) Logitech USB Receiver: always reports core events
(**) evdev: Logitech USB Receiver: Device: "/dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse"
(WW) evdev: Logitech USB Receiver: device file is duplicate. Ignoring.
(EE) PreInit returned 8 for "Logitech USB Receiver"
(II) UnloadModule: "evdev"
(II) config/udev: Adding input device Logitech USB Receiver (/dev/input/event11)
(**) Logitech USB Receiver: Applying InputClass "evdev keyboard catchall"
(**) Logitech USB Receiver: Applying InputClass "system-keyboard"
(**) Logitech USB Receiver: Applying InputClass "evdev keyboard catchall"
(**) Logitech USB Receiver: Applying InputClass "libinput keyboard catchall"
(II) Using input driver 'libinput' for 'Logitech USB Receiver'
(**) Logitech USB Receiver: always reports core events
(**) Option "Device" "/dev/input/event11"
(**) Option "_source" "server/udev"
(II) event11 - (II) Logitech USB Receiver: (II) is tagged by udev as: Keyboard
(II) event11 - (II) Logitech USB Receiver: (II) device is a keyboard
(II) event11 - (II) Logitech USB Receiver: (II) device removed
(**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/0003:046D:C517.000D/input/input18/event11"
(II) XINPUT: Adding extended input device "Logitech USB Receiver" (type: KEYBOARD, id 11)
(**) Option "xkb_model" "microsoftpro"
(**) Option "xkb_layout" "gb"
(**) Option "xkb_options" "terminate:ctrl_alt_bksp"
(II) event11 - (II) Logitech USB Receiver: (II) is tagged by udev as: Keyboard
(II) event11 - (II) Logitech USB Receiver: (II) device is a keyboard
(II) config/udev: Adding input device Logitech USB Receiver (/dev/input/event12)
(**) Logitech USB Receiver: Applying InputClass "evdev pointer catchall"
(**) Logitech USB Receiver: Applying InputClass "evdev keyboard catchall"
(**) Logitech USB Receiver: Applying InputClass "system-keyboard"
(**) Logitech USB Receiver: Applying InputClass "evdev pointer catchall"
(**) Logitech USB Receiver: Applying InputClass "evdev keyboard catchall"
(**) Logitech USB Receiver: Applying InputClass "Logitech USB TrackBall"
(**) Logitech USB Receiver: Applying InputClass "Logitech M570 Trackball"
(**) Logitech USB Receiver: Applying InputClass "libinput pointer catchall"
(**) Logitech USB Receiver: Applying InputClass "libinput keyboard catchall"
(II) Using input driver 'libinput' for 'Logitech USB Receiver'
(**) Option "SendCoreEvents" "true"
(**) Logitech USB Receiver: always reports core events
(**) Option "Device" "/dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse"
(**) Option "_source" "server/udev"
(EE) Failed to look up path '/dev/input/event13'
(II) event13: opening input device '/dev/input/event13' failed (No such device).
(II) event13 - failed to create input device '/dev/input/event13'.
(EE) libinput: Logitech USB Receiver: Failed to create a device for /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse
(EE) PreInit returned 2 for "Logitech USB Receiver"
(II) UnloadModule: "libinput"
M570 트랙볼이 있는데 범용 수신기를 통해 이미 연결되어 있음에도 불구하고 수신기가 분명히 연결되어 있는 것 같습니다.
답변1
부분 답변: 추가 정보를 얻는 방법
lsusb
1) 공급업체 및 장치 ID를 볼 수 있도록 질문을 제외하고 업데이트하세요 .
2) dmesg
조합이 인식되면 질문을 출력으로 업데이트합니다. 부팅 메시지에서 동글을 찾을 수 없으면 동글을 뽑았다가 다시 삽입하여 강제로 재식별하세요.
3) evtest
마우스 입력 장치에서 루트로 실행하여 (a) 어떤 이벤트를 생성한다고 주장하는지 (b) 다른 키를 누를 때 실제로 어떤 이벤트를 생성하는지 확인하십시오. 이 출력으로 질문을 업데이트하십시오.
4) 드라이버가 인식하는 장치를 확인합니다 /var/log/Xorg.0.log
. evdev
관련 줄로 질문을 업데이트하십시오.
최소한 장치가 마우스로 인식되는 이유를 정확히 파악해야 합니다.
편집하다
로지텍 드라이버가 어떤지 모르겠네요~해야 한다작동하지만 두 번째 장치가 추가 키용으로 예약된 것 같습니다.그리고mouse( EV_REL
) 이벤트의 경우 일종의 포괄적인 이벤트일 수도 있습니다.
커널 측에서는 차이가 없습니다. 커널은 USB HID 이벤트를 입력 이벤트로 변환한다는 것만 알고 있습니다. 심볼릭 링크에는 오해의 소지가 있는 이름을 사용 하지만 udev
그것도 괜찮습니다. 중요한 것은 X가 두 번째 입력 장치가 중복된 것으로 생각하는 것 같습니다(아마 이름이 동일하기 때문일 것입니다). 그래서 거기에 섹션을 xorg.conf
포함시키고 InputClass
X가 장치를 수락할 수 있도록 다양한 옵션을 시도하려고 합니다. 나는 전혀 모른다왜X가 거절했기 때문에 단계별 지침을 제공할 수 없습니다. 설명이 충분하지 않은 경우 man xorg.conf
옵션을 살펴보고 InputClass
해당 기능이 무엇인지 Google에 검색해 보세요. 많은 가이드가 있습니다.
X 로그를 확인하는 것 외에도 xinput
나열된 장치를 살펴보세요. 마우스로 표시되더라도 이 목록에는 표시되기에 충분합니다. 에 다시 할당할 수 있습니다 Virtual core keyboard
.~ 할 것이다EV_REL
X는 추가 버튼이 있더라도 이벤트가 있는 것이 마우스여야 한다고 생각하기 때문에(대부분의 경우 정확할 것임) 마우스로 감지될 수 있습니다 EV_KEY
.
답변2
이상하게도 그것을 쥐로 식별하는 것은 가장 까다로운 부분이 아닙니다. 그것이 xorg.con에 필요한 전부입니다.
Section "InputClass"
Identifier "Wave keyboard extra keys"
MatchUSBID "046d:c517"
MatchIsPointer "on"
Driver "evdev"
Option "SendCoreEvents" "true"
Option "Buttons" "27"
Option "Device" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse"
EndSection
문제는 많은 키가 xorg/evdev가 들을 수 없을 정도로 높은 키코드를 생성한다는 것입니다(스캔코드 > 255). 제가 찾은 해결책은 다음과 같습니다.외부 라우터, 다음 구성을 사용하십시오.
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/418 "XKey/XF86RotateWindows"
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/419 "XKey/XF86Game"
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/421 "Xkey/XF86Launch7"
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/423 "Xkey/XF86Launch8"
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/397 "Xkey/XF86Launch9"
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/430 "Xkey/XF86Messenger"
"Logitech USB Receiver" "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse" none key/136 "Xkey/XF86Search"
분명히 각 줄 끝에 있는 Xkey 매핑은 필요에 따라 조정될 수 있습니다. 하나의 키는 매핑되지 않는 것 같습니다. 기어와 창과 함께 왼쪽 상단에 있는 큰 은색 키입니다. 이는 의미 있는 스캔 코드를 전혀 생성하지 않으므로 작동하지 않을 것 같습니다. 음, 유일한 다른 문제는 미디어 센터와 (인접한) "음악 노트" 키가 동일한 스캔 코드를 방출하므로 항상 서로 반복되고 동일한 키로 나타난다는 것입니다. 그 외에 모든 Fn 키와 미디어 키는 예상대로 작동하거나 데스크탑 키보드 단축키 구성에 잠시 액세스한 후에 작동합니다.