Клавиатура в OpenWrt

Начиная с этого раздела документации, мы попробуем сделать, казалось бы, не реальное - превратить наш роутер в полноценный компьютер. Хоть эта цель и кажется невозможной, тем не менее, достигнуть её не сложнее чем то, что мы проделали в предыдущих разделах.

Первым делом нам необходимо подключить стандартное устройство ввода - это клавиатура.

На этапе конфигурации OpenWrt отмечаем следующие модули:
Base system:
<*> busybox:
Linux System Utilities:
<*> lsusb
Kernel modules:
USB Support:
<M> kmod-usb-hid

Устанавливаем пакеты:

root@OpenWrt:/# opkg install kmod-usb-hid
Installing kmod-usb-hid (2.6.36.2-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-usb-hid_2.6.36.2-1_brcm47xx.ipk.
Installing kmod-hid (2.6.36.2-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-hid_2.6.36.2-1_brcm47xx.ipk.
Installing kmod-input-core (2.6.36.2-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-input-core_2.6.36.2-1_brcm47xx.ipk.
Installing kmod-input-evdev (2.6.36.2-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-input-evdev_2.6.36.2-1_brcm47xx.ipk.
Configuring kmod-input-core.
Configuring kmod-hid.
Configuring kmod-input-evdev.
Configuring kmod-usb-hid.

Подключаем клавиатуру и смотрим вывод dmesg:

root@OpenWrt:/# dmesg
usb 1-1.3: new low speed USB device using ohci_hcd and address 5
input: USB USB Keykoard as /devices/ssb0:1/usb1/1-1/1-1.3/1-1.3:1.0/input/input0
generic-usb 0003:1C4F:0002.0001: input: USB HID v1.10 Keyboard [USB USB Keykoard] on usb-ssb0:1-1.3/input0

Также проверим, создалось ли соответствующее устройство:

root@OpenWrt:/# ls /dev/input/*
/dev/input/event0 /dev/input/event1

Вывод lsusb у меня имеет следующий вид:

root@OpenWrt:/# lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 0a05:7211
Bus 001 Device 003: ID 0a05:7211
Bus 001 Device 004: ID 0951:1603
Bus 001 Device 005: ID 1c4f:0002

Устройство с ID 1c4f:0002 SiGma Micro является подключенной клавиатурой.

Также в директории /proc должен создаться соответствующий файл устройства:

root@OpenWrt:/# cat /proc/bus/input/
/proc/bus/input/devices /proc/bus/input/handlers
root@OpenWrt:/# cat /proc/bus/input/devices
I: Bus=0003 Vendor=1c4f Product=0002 Version=0110
N: Name="USB USB Keykoard"
P: Phys=usb-ssb0:1-1.3/input0
S: Sysfs=/devices/ssb0:1/usb1/1-1/1-1.3/1-1.3:1.0/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

Проверим реакцию на нажатие кнопок:

root@OpenWrt:/# cat /dev/input/event0 | hexdump
0000000 00cc 0000 74e7 000b 0004 0004 0004 0007
0000010 00cc 0000 751f 000b 0001 001e 0001 0000
0000020 00cc 0000 7531 000b 0000 0000 0000 0000
0000030 00cc 0000 b356 000b 0004 0004 0004 0007
0000040 00cc 0000 b37b 000b 0001 001e 0000 0000
0000050 00cc 0000 b387 000b 0000 0000 0000 0000
0000060 00ce 0000 e2bd 0003 0004 0004 0028 0007
0000070 00ce 0000 e2ec 0003 0001 001c 0001 0000
0000080 00ce 0000 e2ff 0003 0000 0000 0000 0000
0000090 00ce 0000 bd78 0004 0004 0004 0028 0007
00000a0 00ce 0000 bd9e 0004 0001 001c 0000 0000
00000b0 00ce 0000 bdab 0004 0000 0000 0000 0000

USB клавиатура