Ok, descobri um jeito, embora não pareça muito claro;)
Eu vou começar do final - rodar este one-liner vai lhe dizer a verdade:
grep "USB.*pci" /proc/acpi/wakeup |\
cut -d ':' -f 2- |\
while read aaa; do \
find /dev/.udev \
-name "*$aaa*" \
-print \
-exec grep "$aaa" /proc/acpi/wakeup \; -exec echo \; ;\
done
Nice, não é? E aqui está como funciona:
- O começo deve ser óbvio:
grep "USB.*" /proc/acpi/wakeup
extrai da lista apenas dispositivos USB que possuem um nó sysfs conhecido. -
cut -d ':' -f 2-
deixa apenas o final (números) depois de 'pci:' em cada linha. - Em seguida, para cada finalização (
aaa=0000:00:1d.2
e assim por diante), tente encontrar um link simbólico do dispositivo udev que contenha a sequência. - Para cada link simbólico encontrado, o comando find:
- imprime o nome do link simbólico do udev, < - esta é a parte mais útil
- executa o grep para exibir a linha de
/proc/acpi/wakeup
que corresponde ao dispositivo encontrado, - acrescenta uma linha em branco para clareza de saída.
Assim, graças à significativa nomenclatura dos links simbólicos do dispositivo pelo udev, você pode dizer qual dispositivo USB é o teclado, o mouse etc.