Я пытаюсь загрузить новую раскладку клавиатуры, когда я подключаю USB-клавиатуру, но мое правило udev не работает.
SUBSYSTEM=="input", ATTR{idVendor}=="062a", ATTR{idProduct}=="0201", GOTO="usb_xmodmap_auto" LABEL="usb_xmodmap_auto" ACTION=="add", RUN+="/usr/bin/xmodmap ~/.usbXmodmap" ACTION=="remove", RUN+="/usr/bin/xmodmap ~/.pndXmodmap"
Я перезагрузил правила, используя:
>sudo udevadm control --reload-rules
и перезагружая систему, но когда я подключаю USB-клавиатуру, оригинальный xmodmap все еще загружается, и, таким образом, раскладка клавиатуры неверна, но если я запускаю команду в терминале
>/usr/bin/xmodmap ~/.usbXmodmapили же
>/usr/bin/xmodmap ~/.pndXmodmap
они работают просто отлично.
надеюсь, кто-то может помочь.
Редактировать:
просто чтобы помочь больше, я провел несколько тестов udevadm:
>udevadm test --action=add /devices/platform/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.1/input/input10
выходы:
run_command: calling: test udevadm_test: version 151 This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. [...] parse_file: reading '/etc/udev/rules.d/usb-keyboard.rules' as rules file udev_rules_new: rules use 100572 bytes tokens (8381 * 12 bytes), 21523 bytes buffer udev_rules_new: temporary index used 35380 bytes (1769 * 20 bytes) udev_device_new_from_syspath: device 0x3b4d8 has devpath '/devices/platform/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.1/input/input10' udev_rules_apply_to_event: RUN '/sbin/modprobe -b $env{MODALIAS}' /etc/udev/rules.d/80-drivers.rules:5 udev_rules_apply_to_event: RUN 'socket:@/org/freedesktop/hal/udev_event' /etc/udev/rules.d/90-hal.rules:2 udev_rules_apply_to_event: RUN '/sbin/modprobe $env{MODALIAS}' /etc/udev/rules.d/local.rules:31 udev_rules_apply_to_event: RUN 'socket:/org/kernel/udev/monitor' /etc/udev/rules.d/run.rules:2 udev_rules_apply_to_event: RUN '/usr/bin/xmodmap ~/.usbXmodmap' /etc/udev/rules.d/usb-keyboard.rules:4 udevadm_test: UDEV_LOG=6 udevadm_test: DEVPATH=/devices/platform/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.1/input/input10 udevadm_test: PRODUCT=3/62a/201/110 udevadm_test: NAME="USB-compliant keyboard" udevadm_test: PHYS="usb-ehci-omap.0-2.3/input1" udevadm_test: UNIQ="" udevadm_test: EV==1f udevadm_test: KEY==837fff 2c3027 bf004444 0 0 1fe3 c04 a27c000 267bfa d941dfed 9e0000 0 0 0 udevadm_test: REL==143 udevadm_test: ABS==1 0 udevadm_test: MSC==10 udevadm_test: MODALIAS=input:b0003v062Ap0201e0110-e0,1,2,3,4,k71,72,73,74,77,80,82,83,85,86,87,88,89,8A,8B,8C,8E,8F,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B1,B2,B5,CE,CF,D0,D1,D2,D5,D9,DB,E2,EA,EB,100,101,105,106,107,108,109,10A,10B,10C,162,166,16A,16E,178,179,17A,17B,17C,17D,17F,180,181,182,185,18C,18D,192,193,195,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1B0,1B1,1B7,r0,1,6,8,a20,m4,lsfw udevadm_test: ACTION=add udevadm_test: SUBSYSTEM=input udevadm_test: run: '/sbin/modprobe -b input:b0003v062Ap0201e0110-e0,1,2,3,4,k71,72,73,74,77,80,82,83,85,86,87,88,89,8A,8B,8C,8E,8F,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B1,B2,B5,CE,CF,D0,D1,D2,D5,D9,DB,E2,EA,EB,100,101,105,106,107,108,109,10A,10B,10C,162,166,16A,16E,178,179,17A,17B,17C,17D,17F,180,181,182,185,18C,18D,192,193,195,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1B0,1B1,1B7,r0,1,6,8,a20,m4,lsfw' udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event' udevadm_test: run: '/sbin/modprobe input:b0003v062Ap0201e0110-e0,1,2,3,4,k71,72,73,74,77,80,82,83,85,86,87,88,89,8A,8B,8C,8E,8F,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B1,B2,B5,CE,CF,D0,D1,D2,D5,D9,DB,E2,EA,EB,100,101,105,106,107,108,109,10A,10B,10C,162,166,16A,16E,178,179,17A,17B,17C,17D,17F,180,181,182,185,18C,18D,192,193,195,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1B0,1B1,1B7,r0,1,6,8,a20,m4,lsfw' udevadm_test: run: 'socket:/org/kernel/udev/monitor' udevadm_test: run: '/usr/bin/xmodmap ~/.usbXmodmap'
а также
>udevadm test --action=remove /devices/platform/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.1/input/input10
выходы:
run_command: calling: test udevadm_test: version 151 This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. [...] parse_file: reading '/etc/udev/rules.d/usb-keyboard.rules' as rules file udev_rules_new: rules use 100572 bytes tokens (8381 * 12 bytes), 21523 bytes buffer udev_rules_new: temporary index used 35380 bytes (1769 * 20 bytes) udev_device_new_from_syspath: device 0x3b4d8 has devpath '/devices/platform/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.1/input/input10' udev_rules_apply_to_event: RUN 'socket:@/org/freedesktop/hal/udev_event' /etc/udev/rules.d/90-hal.rules:2 udev_rules_apply_to_event: RUN 'socket:/org/kernel/udev/monitor' /etc/udev/rules.d/run.rules:2 udev_rules_apply_to_event: RUN '/usr/bin/xmodmap ~/.pndXmodmap' /etc/udev/rules.d/usb-keyboard.rules:5 udevadm_test: UDEV_LOG=6 udevadm_test: DEVPATH=/devices/platform/ehci-omap.0/usb1/1-2/1-2.3/1-2.3:1.1/input/input10 udevadm_test: PRODUCT=3/62a/201/110 udevadm_test: NAME="USB-compliant keyboard" udevadm_test: PHYS="usb-ehci-omap.0-2.3/input1" udevadm_test: UNIQ="" udevadm_test: EV==1f udevadm_test: KEY==837fff 2c3027 bf004444 0 0 1fe3 c04 a27c000 267bfa d941dfed 9e0000 0 0 0 udevadm_test: REL==143 udevadm_test: ABS==1 0 udevadm_test: MSC==10 udevadm_test: MODALIAS=input:b0003v062Ap0201e0110-e0,1,2,3,4,k71,72,73,74,77,80,82,83,85,86,87,88,89,8A,8B,8C,8E,8F,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B1,B2,B5,CE,CF,D0,D1,D2,D5,D9,DB,E2,EA,EB,100,101,105,106,107,108,109,10A,10B,10C,162,166,16A,16E,178,179,17A,17B,17C,17D,17F,180,181,182,185,18C,18D,192,193,195,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1B0,1B1,1B7,r0,1,6,8,a20,m4,lsfw udevadm_test: ACTION=remove udevadm_test: SUBSYSTEM=input udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event' udevadm_test: run: 'socket:/org/kernel/udev/monitor' udevadm_test: run: '/usr/bin/xmodmap ~/.pndXmodmap'
который, кажется, показывает, что он должен работать, но он не надеется, что это поможет получить ответ.