Para um dispositivo USB, você pode usar lsusb
e procurar um dispositivo de interface humana (classe de interface 3) com o protocolo de teclado (protocolo de interface 1), por exemplo,
$ lsusb -v
... loads of stuff deleted ...
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
... loads of stuff deleted ...
Além disso, você pode deixar udev
ajudar você. Listar os dispositivos em /dev/input/by-path/
e os dispositivos de teclado terminam em -kdb
(pelo menos no Ubuntu, onde as regras do udev especificam), por exemplo
$ ls -l /dev/input/by-path/*-kbd
lrwxrwxrwx 1 root root 9 2010-03-25 09:14 /dev/input/by-path/pci-0000:00:1a.2-usb-0:1:1.0-event-kbd -> ../event4
$ ls -l /dev/input/by-path/*-kbd
lrwxrwxrwx 1 root root 9 2009-08-29 09:46 /dev/input/by-path/platform-i8042-serio-0-event-kbd -> ../event1