Configuração da taxa de repetição do teclado USB automaticamente

3

Muitas vezes, conecto um teclado USB ao meu laptop e, quando o conecto, a taxa de repetição padrão não é a desejada. Tentei alterá-lo usando um script udev adicionando uma regra

'ACTION=="add", ATTRS{name}=="Dell Dell Multimedia Pro Keyboard", RUN+="set-keyboard.sh"'

com o script set-keyboard.sh chamado

xset -display :0 r rate 500 50; xset -display :0 b off

O problema é que isso define a taxa de repetição e o bipe do teclado embutido do laptop, não do teclado USB. (Ou seja, se eu digitar xset q no teclado integrado, ele mostrará as configurações corretas, mas se eu digitar xset q no teclado USB, ele ainda estará definido na taxa errada.)

Existe uma maneira de deixar xset saber qual teclado definir ou alguma outra maneira de fazer isso?

    
por Janet 04.08.2013 / 21:53

2 respostas

2

Depois de algumas cutucadas, eu encontrei do link que o problema pode ser que o xorg redefine o teclado taxa após o udev ter sido executado, por isso, mesmo que meu script do udev estivesse definitivamente sendo executado, suas ações foram prontamente desfeitas pelo xorg.

No entanto, essa página também tem a correção: se eu executar o startx com as opções startx -- -ardelay 500 -arinterval 20 , minhas configurações serão preservadas mesmo quando um novo teclado estiver conectado.

    
por 05.08.2013 / 15:19
1

Você pode tentar este comando para determinar qual seria o ID do udev para o seu teclado USB. Execute isso e, em seguida, conecte o teclado em:

$ udevadm monitor --udev --subsystem-match=usb

Exemplo - monitor

Eu tenho um antigo teclado USB da Sun Microsystems. Quando eu desconecto e conecto de volta, recebo as seguintes mensagens do udev:

$ udevadm monitor --udev --subsystem-match=usb
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [1375655040.466080] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
UDEV  [1375655040.557791] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
UDEV  [1375655044.586242] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
UDEV  [1375655044.589087] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
UDEV  [1375655049.880514] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
UDEV  [1375655049.905175] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)

Assim, o ID do udev que você poderia colocar em sua regra usaria essa parte da saída acima, /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 .

Exemplo - exportar

Você também pode exportar todo o banco de dados do udev e varrê-lo manualmente:

$ udevadm info --export-db
...
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
N: bus/usb/002/009
S: char/189:136
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
E: SUBSYSTEM=usb
E: DEVNAME=bus/usb/002/009
E: ID_VENDOR=0430
E: ID_VENDOR_ENC=0430
E: ID_VENDOR_ID=0430
E: ID_MODEL=0005
E: ID_MODEL_ENC=0005
E: ID_MODEL_ID=0005
E: ID_REVISION=0102
E: ID_SERIAL=0430_0005
E: ID_BUS=usb
E: ID_USB_INTERFACES=:030101:
E: MAJOR=189
E: MINOR=136
E: DEVTYPE=usb_device
E: DRIVER=usb
E: DEVICE=/proc/bus/usb/002/009
E: PRODUCT=430/5/102
E: TYPE=0/0/0
E: BUSNUM=002
E: DEVNUM=009
E: DEVLINKS=/dev/char/189:136
...

E use outras características exclusivas da saída acima em sua regra do udev também.

Referências

por 05.08.2013 / 00:27

Tags