Linux의 젤리 빗 키보드

Linux의 젤리 빗 키보드

그래서 크리스마스 선물로 Jelly Comb 키보드를 구입했습니다. 그러나 제조업체에 따르면 키보드는 Windows에서 사용하도록 고안되었습니다. 이제 다음과 같은 질문이 있습니다.

  1. Num Lock을 누르면 키보드가 이상하게 작동하기 시작하고 숫자 역할을 하는 몇 개의 숫자와 몇 개의 문자를 제외하고 대부분의 키가 작동을 멈추고 Num Lock을 더 이상 끌 수 없습니다. numlockx off키보드를 컴퓨터에 연결할 때 Num Lock이 열리지 않도록 사용해 보았지만 가끔 숫자 패드를 사용하는 것을 좋아하는데 그렇게 할 수 없습니다.

  2. F1~F12가 작동하지 않습니다. Fn을 누르면 F 키가 멀티미디어 키 역할도 합니다. 최소한 그렇게 해야 합니다. 하지만 내 경우에는 F 키 중 하나를 누르면 임의의 멀티미디어 작업(키에 인쇄된 것과 무작위 및 다름)이 발생하지만 Fn 키와 함께 누르면 효과가 다른 멀티미디어 작업으로 변경되어 다시 인쇄됩니다. 열쇠가 아닌 다른 것에.

  3. 출력을 확인했을 때 xev일부 키에 동일한 키코드가 있는 것을 발견했습니다. 예를 들어, F11은 Fn+F4와 동일한 출력을 인쇄합니다. 샘플 출력은 다음과 같습니다.

KeyRelease event, serial 28, synthetic NO, window 0x3e00001,
    root 0x5c4, subw 0x0, time 2572602, (456,941), root:(521,1045),
    state 0x0, keycode 33 (keysym 0x70, p), same_screen YES,
    XLookupString gives 1 bytes: (70) "p"
    XFilterEvent returns: False

KeymapNotify event, serial 28, synthetic NO, window 0x0,
    keys:  4294967236 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeymapNotify event, serial 28, synthetic NO, window 0x0,
    keys:  4294967236 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

첫 번째는 임의의 문자이고 마지막 두 개는 F11과 Fn+F4입니다.

자세한 내용은 Gnome과 함께 Ubuntu 20.04를 실행하고 있습니다.

그래서 제 질문은 리눅스에서 이 키보드를 정상적으로 사용할 수 있는 방법이 있느냐는 것입니다. Windows처럼 키보드를 해석하도록 OS에 "지시"하는 방법이 있다고 생각하지만 비슷한 것을 찾지 못했습니다.

편집하다:

따라서 @dirkt의 제안에 따라 출력을 확인 evtest하고 각각 Fn+F11 및 F4에 대해 다음 줄을 얻었습니다.

Event: time 1609244073.713496, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1609244073.713496, -------------- SYN_REPORT ------------
Event: time 1609244073.738779, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1609244073.738779, -------------- SYN_REPORT ------------
Event: time 1609244076.661538, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1609244076.661538, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1609244076.661538, -------------- SYN_REPORT ------------
Event: time 1609244076.687504, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1609244076.687504, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1609244076.687504, -------------- SYN_REPORT ------------

Event: time 1609244076.687504, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2둘 다 동일한 코드(113 KEY_MUTE)를 가지고 있지만 Fn을 누르지 않으면 추가 줄이 나타납니다. 문자 및 숫자와 같은 모든 일반 키에도 동일하게 적용됩니다. 그런데 F1~F12를 Fn 키와 함께 사용하면 선이 사라집니다. 따라서 내 후속 질문은 Linux가 동일한 키 코드를 가진 키를 구별할 수 있도록 추가 줄을 활용할 수 있습니까? 그렇다면 차이점을 어떻게 알 수 있나요?

답변1

부분 답변:

제조업체에 따르면 이 키보드는 Windows에 적합합니다.

이는 키보드의 비표준 부분을 처리하기 위한 Windows 전용 드라이버가 있음을 의미할 수 있습니다.

이 드라이버는 Linux에서 사용할 수 없으므로 그대로 사용하거나 차이점을 리버스 엔지니어링하고 이를 처리하기 위해 Linux를 조정하는 옵션이 있습니다. 후자는 시간과 노력이 필요합니다.

Google for Jelly Comb은 이것이 USB 수신기가 있는 무선 키보드일 수 있음을 보여줍니다(당신은 말하지 않았지만 추측해야 합니다).

Linux에서 키보드 스택이 작동하는 방식에 대한 빠른 입문서:

USB 장치에는 키보드와 같은 장치와의 통신을 인코딩하는 방법에 대한 표준인 HID(Human Interface Device) 프로토콜이 있습니다. lsusb키보드를 식별하고 lsusb -vHID가 지원되는지 확인하는 데 사용되는 하나 이상의 USB 끝점(일부 키보드에는 둘 이상이 있음)

커널은 HID 이벤트를 디코딩합니다(이러한 이벤트를 설명하는 HID 설명자를 확인하고 이 스택 교환 또는 수퍼유저 스택 교환에서 자세한 답변을 검색할 수 있습니다). 그런 다음 커널은 이를 입력 계층에 전달합니다.

입력 계층 장치는 로 표시됩니다 /dev/event/input*. 그것을 실행하고 dmesg키보드가 무엇을 얻는지 확인하십시오. evtest해당 이벤트에서 오는 이벤트를 확인하는 데 사용할 수 있습니다 .

입력 레이어인 X 또는 Wayland의 이벤트를 해석하고 해당 키맵을 사용하여 이벤트를 처리합니다.

evtest따라서 둘 다 작동하지 않는 키 조합을 확인 xev하고 흥미로운 일이 진행되고 있는지 확인하십시오.

귀하의 KeymapNotify이벤트는 키맵을 변경하게 만든 코드가 있음을 의미합니다. 이는 사용 중인 키맵이나 데스크탑에 설치된 항목 때문일 수 있습니다.

그것이 작동할 것이라고 기대하지 마십시오 Fn. 키는 비표준이며 각 노트북 제조업체 또는 키보드 제조업체마다 키를 처리하는 방법이 다릅니다.

관련 정보