Na rynku lub jako gadżety można dostać różne zabawki na USB które zawierają przyciski. Niedawno stałem się posiadaczem gadżetu nazwanego "Power Saver", który jest jednym dużym przyciskiem; po podłączeniu do komputera i jego naciśnięciu komputer wchodzi w stan uśpienia. Z punktu widzenia użytkownika działa więc jak klawiatura USB z jednym przyciskiem - SLEEP.
Aby takie urządzenia były rozpoznawane w OpenWrt należy zainstalować pakiet kmod-usb-hid:
opkg install kmod-usb-hid
Po tej operacji w logach (
logread) pojawi się informacja o wykrytym urządzeniu. W moim przypadku było to:
usbcore: registered new interface driver hiddev
input: Tenx 1Key Web Device as /devices/platform/ar71xx-ohci/usb2/2-1/2-1:1.0/input/input1
generic-usb 0003:1130:6625.0001: input: USB HID v1.10 Keyboard [Tenx 1Key Web Device] on usb-ar71xx-ohci-1/input0
input: Tenx 1Key Web Device as /devices/platform/ar71xx-ohci/usb2/2-1/2-1:1.1/input/input2
generic-usb 0003:1130:6625.0002: input: USB HID v1.10 Device [Tenx 1Key Web Device] on usb-ar71xx-ohci-1/input1
Jeżeli tak jest - wystarczy już tylko oprogramowanie które to obsłuży. Godnym polecenia narzędziem jest
triggerhappy, który potrafi nasłuchiwać zdarzeń od przycisków i wykonywać różne akcje.
opkg install triggerhappy
Najpierw sprawdzamy co tak naprawdę generuje dany gadżet. Uruchamiamy:
thd --dump /dev/input/event*
i naciskamy przycisk. W moim przypadku pojawiło się coś takiego:
EV_KEY KEY_SLEEP 1 /dev/input/event1
# KEY_SLEEP 1 command
EV_KEY KEY_SLEEP 0 /dev/input/event1
# KEY_SLEEP 0 command
Generuje więc zdarzenia przycisku KEY_SLEEP.
Wystarczy teraz wyedytować plik
/etc/triggerhappy/triggers.d/example.conf i wstawić wywołanie swojego programu (przykłady są w tym pliku).
Może to być start/stop mpd, odmontowanie dysków po przytrzymaniu, przełączenie wifi itd. Mamy po prostu kolejny przycisk w systemie.