![udev를 사용하여 USB 키보드의 반복 속도를 설정하는 방법은 무엇입니까?](https://linux55.com/image/52150/udev%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20USB%20%ED%82%A4%EB%B3%B4%EB%93%9C%EC%9D%98%20%EB%B0%98%EB%B3%B5%20%EC%86%8D%EB%8F%84%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
핫스왑 가능한 USB 키보드의 키보드 복제율을 어떻게 알 수 있나요?
키보드 반복 지연 및 속도를 설정하기 위해 udev 규칙을 /etc/udev/rules.d/99-usb-keyboard.rules
다음과 같이 만들었습니다.
ACTION=="add", SUBSYSTEM=="usb", RUN+="/home/michael/bin/keyboard_settings.sh"
키보드 설정.sh:
#!/bin/bash
# Set keyboard repeat delay and rate
xset -display :0.0 r rate 250 40
udev는 다음 명령을 사용하여 이것을 본 것 같습니다.udevadm test /sys/bus/usb/devices/3-2\:1.0/
read rules file: /etc/udev/rules.d/99-usb-keyboard.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 37438 bytes strings
31709 strings (264322 bytes), 28154 de-duplicated (230440 bytes), 3556 trie nodes used
IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:11
RUN '/home/myuser/bin/keyboard_settings.sh' /etc/udev/rules.d/99-usb-keyboard.rules:1
unable to create temporary db file '/run/udev/data/+usb:3-2:1.0.tmp': Permission denied
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
DEVTYPE=usb_interface
DRIVER=usbhid
ID_VENDOR_FROM_DATABASE=Hewlett-Packard
INTERFACE=3/1/1
MODALIAS=usb:v03F0p0325d0102dc00dsc00dp00ic03isc01ip01in00
PRODUCT=3f0/325/102
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=4145997461
run: '/home/myuser/bin/keyboard_settings.sh'
그러나 이것이 실제로 반복률을 변경하지는 않습니다. 노트북 키보드는 올바르게 설정되었지만 외부 USB 키보드는 올바르게 설정되지 않았습니다. udev 규칙을 적용한 후 Xorg가 설정을 덮어쓰나요? 어떻게 답을 찾을 수 있나요?
/usr/share/X11/xorg.conf.d/
Xorg.0.log에서 이 내용을 볼 수 있는데, 이는 X11이 무언가를 처리하고 있지만 키보드로 어떤 작업을 수행하는 데에는 규칙이 없음을 나타냅니다 .
[164570.705] (II) config/udev: Adding input device Lite-On Technology Corp. HP Basic USB Keyboard (/dev/input/event6)
[164570.705] (**) Lite-On Technology Corp. HP Basic USB Keyboard: Applying InputClass "evdev keyboard catchall"
[164570.705] (**) Lite-On Technology Corp. HP Basic USB Keyboard: Applying InputClass "Keyboard Defaults"
[164570.705] (II) Using input driver 'evdev' for 'Lite-On Technology Corp. HP Basic USB Keyboard'
[164570.705] (**) Lite-On Technology Corp. HP Basic USB Keyboard: always reports core events
[164570.705] (**) evdev: Lite-On Technology Corp. HP Basic USB Keyboard: Device: "/dev/input/event6"
[164570.705] (--) evdev: Lite-On Technology Corp. HP Basic USB Keyboard: Vendor 0x3f0 Product 0x325
[164570.705] (--) evdev: Lite-On Technology Corp. HP Basic USB Keyboard: Found keys
[164570.705] (II) evdev: Lite-On Technology Corp. HP Basic USB Keyboard: Configuring as keyboard
[164570.705] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/input/input34/event6"
[164570.705] (II) XINPUT: Adding extended input device "Lite-On Technology Corp. HP Basic USB Keyboard" (type: KEYBOARD, id 11)
[164570.705] (**) Option "xkb_rules" "evdev"
[164570.705] (**) Option "xkb_model" "pc105"
[164570.705] (**) Option "xkb_layout" "us"
답변1
이를 위해 udev를 사용하지 마십시오.
알아채다:다음은 최신 버전의 Xorg에만 적용됩니다.이 변화2020년부터.
-ardelay
이전 Xorg의 경우 및 명령줄 옵션을 사용할 수 있습니다 -arinterval
. 이를 사용하는 경우 xdm
이러한 옵션을 /etc/X11/xdm/Xservers
.
(하드와이어된 Xorg 명령줄을 사용하여) 사용하고 계시다면 gdm3
안타까울 뿐입니다.
클립 을 사용 xorg.conf
하고 거기에서 반복 속도를 설정하기만 하면 됩니다.
% cat /etc/X11/xorg.conf.d/99-keyboard.conf
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
# Option "XkbLayout" set in /etc/default/keyboard
# Option "XkbOptions" ditto
Option "AutoRepeat" "250 50"
EndSection
답변2
그래서 1년간의 온라인 검색 끝에 마침내 오늘 작동하게 되었습니다.
원천:https://newbedev.com/udev-rule-to-auto-load-keyboard-layout-when-usb-keyboard-plugged-in
xset
X11 프로그램입니다. 따라서 DISPLAY
및 env 변수를 XAUTHORITY
하드코딩 해야 합니다 .
기본적으로 해결 방법은 짧은 지연 시간을 두고 백그라운드에서 스크립트를 실행하는 것입니다. 따라서 udev는 xset 키보드보다 먼저 키보드를 활성화할 수 있습니다. 위에서 언급한 솔루션에서 udev는 백그라운드에서 두 번째 스크립트를 호출하는 스크립트를 호출하고 xset
실제로 이는 단일 스크립트로 단축될 수 있습니다.
/home/michael/bin/keyboard_settings.sh
#!/usr/bin/env bash
(
sleep 1
DISPLAY=":0.0"
XAUTHORITY="/home/your-profile/.Xauthority"
export DISPLAY XAUTHORITY
xset r rate 250 50
) &