Execute o comando quando o dispositivo USB for adicionado

0

Eu tenho um mouse razer deathadder conectado ao meu laptop ubuntu 15.10. Este mouse usa 3500 DPI por padrão, o que o torna rápido. Usando razercfg , eu posso definir isso para 1800 DPI, então não há problema aqui. Infelizmente, essas opções não são preservadas durante reinicializações ou até mesmo suspender para ram / disco (laptop fechado). Meu primeiro pensamento foi chamar razercfg no login, mas como eu disse isso não funciona se com suspender para ram / disco. Por isso, pensei em usar as regras do udev:

lsusb me diz:

Bus 003 Device 003: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader
Bus 003 Device 002: ID 8087:8000 Intel Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 17ef:1010 Lenovo 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 04f2:b39a Chicony Electronics Co., Ltd 
Bus 001 Device 003: ID 138a:0017 Validity Sensors, Inc. Fingerprint Reader
Bus 001 Device 011: ID 1532:0016 Razer USA, Ltd DeathAdder Mouse
Bus 001 Device 008: ID 17ef:100f Lenovo 
Bus 001 Device 006: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 004: ID 04b4:0101 Cypress Semiconductor Corp. Keyboard/Hub
Bus 001 Device 002: ID 17ef:1010 Lenovo 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Usando o fornecedor e o ID do produto, criei um arquivo /etc/udev/rules.d/100-razer-deathadder.rules contendo:

ACTION=="add", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016", RUN+="razercfg -p 1 -r 1:1800"

que deve definir o DPI adequado para o mouse quando adicionado ao sistema. O comando razercfg -p 1 -r 1:1800 é testado e funciona. Eu recarreguei as regras com sudo udevadm control --reload-rules && udevadm trigger .

No entanto, isso não funciona. De fato, udevadm monitor confirma que essa regra não parece ter sido acionada.

Alguma ideia de qual é o erro aqui?

    
por user1228633 07.02.2016 / 13:05

1 resposta

2

1) Acesse /dev/input/ e consulte os dispositivos de entrada com maior probabilidade de corresponder ao seu mouse, com o terminal cmd:

 $ udevadm info --query=all --name=/dev/input/yr-device-file-name

Você poderá identificá-lo usando as duas variáveis de ambiente (env-var)

  • ID_VENDOR_ID = 1532

  • MODEL_ID = 0016

por sua pergunta (dependendo do dispositivo do ano, o segundo env-var pode não aparecer).

2) Identifique o valor do env-var SUBSYSTEM e adicione-o à regra do yr udev.

3) Adicione o caminho absoluto para o executável razercfg .

Portanto, a regra do udev deve ler algo como:

SUBSYSTEM=="___", ACTION=="add", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016", RUN+="/path/to/razercfg -p 1 -r 1:1800"

Lembre-se de que o udev não é executado em um ambiente shell, portanto, ele pode não saber (principalmente não sabe) de PATHS e outras configurações de ambiente das quais você pode ter dependido como usuário de login. Isso inclui a impressão para stdout (FD1), a menos que você faça provisões para isso configurando corretamente DISPLAY e exportando-o de dentro da regra do udev, ou seja, de dentro de um script que executa razercfg ... (Consulte esta resposta da UA para um resumo redigido sobre esse particular aspecto e leia sobre o udevadm em man udevadm se ainda não o fez).

HTH

    
por Cbhihe 08.02.2016 / 09:46

Tags