나는 가지고있다이것매크로 키보드.
Windows에서는 예상대로 작동하지만 Linux(최신 운영 체제가 설치된 Raspberry Pi 0w 및 Debian 12의 데스크톱 설치)에서는 작동하지 않습니다. 내가 아는 한 그것은 감지되었지만 어떤 이벤트도 얻지 못했습니다.
$ sudo dmesg | grep hid
[ 881.432956] hid-generic 0003:0483:5752.000E: hiddev0,hidraw1: USB HID v1.11 Device [Vaydeer 9-key Smart Keypad] on usb-0000:00:15.0-2/input0
[ 881.494769] hid-generic 0003:0483:5752.000F: input,hidraw2: USB HID v1.11 Keyboard [Vaydeer 9-key Smart Keypad] on usb-0000:00:15.0-2/input1
[ 881.496033] hid-generic 0003:0483:5752.0010: hiddev1,hidraw3: USB HID v1.11 Device [Vaydeer 9-key Smart Keypad] on usb-0000:00:15.0-2/input2
[ 881.559126] hid-generic 0003:0483:5752.0011: input,hidraw4: USB HID v1.11 Mouse [Vaydeer 9-key Smart Keypad] on usb-0000:00:15.0-2/input3
$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: AT Translated Set 2 keyboard
/dev/input/event1: Sleep Button
/dev/input/event10: HDA Digital PCBeep
/dev/input/event11: HDA Intel PCH Front Headphone
/dev/input/event12: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event13: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event14: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event15: Vaydeer 9-key Smart Keypad
/dev/input/event16: Vaydeer 9-key Smart Keypad Mouse
/dev/input/event17: Vaydeer 9-key Smart Keypad Consumer Control
/dev/input/event18: Vaydeer 9-key Smart Keypad System Control
/dev/input/event2: Lid Switch
/dev/input/event3: Power Button
/dev/input/event4: ELAN0501:00 04F3:305B Mouse
/dev/input/event5: ELAN0501:00 04F3:305B Touchpad
/dev/input/event6: Video Bus
/dev/input/event7: Acer WMI hotkeys
/dev/input/event8: PC Speaker
/dev/input/event9: HD WebCam: HD WebCam
Select the device event number [0-18]: 15
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x483 product 0x5752 version 0x111
Input device name: "Vaydeer 9-key Smart Keypad"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 1 (KEY_ESC)
Event code 2 (KEY_1)
Event code 3 (KEY_2)
Event code 4 (KEY_3)
Event code 5 (KEY_4)
Event code 6 (KEY_5)
Event code 7 (KEY_6)
Event code 8 (KEY_7)
Event code 9 (KEY_8)
Event code 10 (KEY_9)
Event code 11 (KEY_0)
Event code 126 (KEY_RIGHTMETA)
...
Event code 127 (KEY_COMPOSE)
Event type 4 (EV_MSC)
Event code 4 (MSC_SCAN)
Event type 17 (EV_LED)
Event code 0 (LED_NUML) state 0
Event code 1 (LED_CAPSL) state 0
Event code 2 (LED_SCROLLL) state 0
Event code 3 (LED_COMPOSE) state 0
Event code 4 (LED_KANA) state 0
Key repeat handling:
Repeat type 20 (EV_REP)
Repeat code 0 (REP_DELAY)
Value 250
Repeat code 1 (REP_PERIOD)
Value 33
Properties:
Testing ... (interrupt to exit)
다른 키보드를 사용하려고 하면 evtest를 사용하여 주요 이벤트를 볼 수 있지만 이 키보드를 사용하면 아무 것도 얻지 못합니다.
제품에는 Linux 호환성이 명시적으로 명시되어 있지 않지만 이전에 호환되지 않는 키보드를 본 적이 없습니다. 문제를 해결하기 위해 노력할 수 있는 방법이 있나요? 아니면 적어도 이 문제를 더 자세히 알아볼 수 있나요?
답변1
Raspberry Pi에서 이 작업을 시도할 때도 동일한 문제가 발생했습니다. 이 게시물을 찾은 후 해당 /dev/hidraw*
입력을 살펴보고 데이터가 거기에 있는지 확인했습니다.
그래서 하나 만들어봤는데 cat /dev/hidraw7
실제로 어떤 이벤트가 수신되는 걸 봤어요. 그리고 놀랍게도 키보드는 기적적으로 예상대로 작동하기 시작했습니다. 원래 인터페이스에서 뭔가를 듣고 있는 한 작동한다는 것이 밝혀졌습니다!
시작 후 키보드에서 제공하는 4개의 입력에 대해 간단한 명령을 실행하면 모든 것이 제대로 작동합니다. 키보드 입력, 매크로, 마우스 입력, 미디어 및 볼륨 제어까지 가능합니다. (그러나 앱과 웹 페이지를 열려면 소프트웨어가 필요하다는 것은 놀라운 일이 아닙니다.)cat /dev/hidrawX > /dev/null &
나는 다음에서 영감을 받아 모든 관련 hidraw 인터페이스에서 cat을 실행하기 위해 이 간단한 스크립트를 작성했습니다.장치 이름에 매핑하는 방법에 대한 블로그 게시물 통과아바니티스 크리스토스:
#!/bin/bash
FILES=/dev/hidraw*
for f in $FILES
do
FILE=${f##*/}
DEVICE="$(cat /sys/class/hidraw/${FILE}/device/uevent | grep HID_NAME | cut -d '=' -f2)"
if [ "$DEVICE" == "Vaydeer 9-key Smart Keypad" ]
then
printf "%s \t %s\n" $FILE "$DEVICE"
cat /dev/${FILE} > /dev/null &
fi
done
실행되면 매크로 키보드에 속하는 4개의 인터페이스가 출력되어야 한다. 루트로 실행하거나 udev 규칙을 사용하여 다음과 같이 사용자에게 인터페이스에 대한 액세스 권한을 부여합니다.
SUBSYSTEM=="hidraw" ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5752", GROUP="yourgroup", OWNER="youruser", MODE="0660"
물론 이것은 여전히 무작위로 시도하여 발견된 더러운 해킹일 뿐이며 왜 작동하는지 모르겠습니다. 나는 아직도 그 진정한 원인에 관심이 있으니, 그가 무엇을 하고 있는지 아는 사람이 나에게 깨달음을 주고 싶다면 그렇게 하십시오.