Bindowanie klawiszy nie tylko w Xach
Zapewne większość użytkowników klawiatur multimedialnych (i nie tylko) zna metodę bindowania klawiszy za pomocą programu xbindkeys. Minusem tego programu jest to, że (jak sama nazwa wskazuje) działa on tylko podczas pracy w Xach. I tu z pomocą przychodzi nam actkbd, który pozwala na korzystanie z przybindowanych klawiszy także podczas pracy w konsoli.
actkbd do działania wymaga kernela z serii 2.6 z działającym interfejsem evdev. Obsługa evdev przez nasz kernel będzie się objawiała istnieniem plików /dev/input/event*. Jeśli plików tych tam nie ma możemy jeszcze spróbować załadować moduł evdev, a jeśli to nie pomoże to czeka nas kompilacja kernela.. ;)
Instalacja i rozpoznanie sprzętu
Pierwszym krokiem jest oczywiście instalacja actkbd, której dokonujemy za pomocą naszego ulubionego zarządcy pakietów lub ze źródeł.
Kolejny krok to identyfikacja urządzeń wejściowych jakie mamy podłączone do komputera:
$ cat /proc/bus/input/devices I: Bus=0003 Vendor=046d Product=c03e Version=0110 N: Name="Logitech USB-PS/2 Optical Mouse" P: Phys=usb-0000:00:1d.3-1/input0 S: Sysfs=/class/input/input0 U: Uniq= H: Handlers=mouse0 event0 B: EV=17 B: KEY=70000 0 0 0 0 B: REL=103 B: MSC=10 I: Bus=0003 Vendor=046d Product=c312 Version=0110 N: Name="BTC USB Multimedia Keyboard" P: Phys=usb-0000:00:1d.3-2/input0 S: Sysfs=/class/input/input1 U: Uniq= H: Handlers=kbd event1 B: EV=120013 B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe B: MSC=10 B: LED=7Listę urządzeń trochę skróciłem - mogą na niej pojawić się jeszcze rzeczy takie jak:
- Power Button (FF) - przycisk power,
- Power Button (CM) - nie mam pojęcia co to ;),
- PC Speaker - głośniczek systemowy,
- porty podczerwieni - nazwy różne w zależności od modelu,
- dodatkowe przyciski z laptopa,
- pewnie jeszcze wiele innych dziwnych rzeczy.
Jeśli odnaleźliśmy plik odpowiadający naszemu urządzeniu możemy sprawdzić jakie zdarzenia i kody klawiszy z niego otrzymujemy, ale wcześniej musimy utworzyć pusty pliku konfiguracji dla actkbd:
$ touch /etc/actkbd.confTeraz już uruchamiamy actkbd w trybie odczytywania kodów klawiszy:
$ sudo actkbd -s -d /dev/input/odpowiedni_plik_eventNa ekranie powinny nam się wyświetlać kody klawiszy, które wciskamy (nazwy klawiszy dopisałem):
Keys: 56 -- alt Keys: 15+56 -- alt+tab Keys: 56 -- alt Keys: 15+56 -- alt+tab Keys: 29 -- ctrl Keys: 29+46 -- ctrl+c
Konfiguracja
Kiedy znamy już kody klawiszy, które chcemy przybindować możemy przejść do pisania pliku konfiguracyjnego. Poszczególne linie piszemy według takiego schematu:
klawisze:typ_zdarzenia:atrybuty:poleceniePole "klawisze" zawiera oczywiście kody klawiszy, które odczytaliśmy powyżej.
Pole "typ_zdarzenia" może być jedną z trzech opcji:
- key - wciśnięcie klawisza,
- rep - powtarzanie (przytrzymanie) klawisza,
- rel - puszczenie klawisza.
Z pole "atrybuty" nie będziemy korzystać, jego szczegółowy opis znajdziemy w pliku README programu.
Pole "command" to oczywiście polecenie jakie ma zostać wykonane po naciśnięciu wybranych klawiszy.
Kiedy odpowiednio skonfigurowaliśmy nasze skróty możemy przejść do testowania. Zanim jednak zaczniemy testy, które mogą nam skutecznie zablokować dostęp do klawiatury odpalmy na jakimś wolnym terminalu polecenie:
sleep 30; sudo killall actkbdktóre po 30 sekundach zabije demona.. :P
Testy możemy rozpocząć po uruchomieniu actkbd z opcją -D:
sudo actkbd -d /dev/input/odpowiedni_plik_event -D
Przykłady wykorzystania
Globalne skróty Amaroka w całym systemie
Przy częstej pracy w konsoli denerwujące jest to, że aby zmienić piosenkę w Amaroku trzeba przełączyć się do Xów. Aby to zmienić wystarczy stworzyć takie bindowania:
44+125:::dcop amarok player prev 45+125:::dcop amarok player play 46+125:::dcop amarok player playPause 47+125:::dcop amarok player stop 48+125:::dcop amarok player nextNależy jeszcze wyłączyć oryginalne skróty Amaroka, aby akcja nie była wywoływana dwa razy.
Wykorzystanie przycisku "Power" na obudowie komputera
Jeśli po wyświetleniu dostępnych urządzeń na liście odnaleźliśmy "Power button (FF)" także możemy go wykorzystać. Sprawdzamy kod przycisku:
sudo actkbd -s -d /dev/input/event_przycisku_powerWpisujemy go do pliku konfiguracyjnego i uruchamiamy kolejną instancję demona:
sudo actkbd -D -d /dev/input/event_przycisku_power
Automatyczne uruchamianie
Mamy wiele możliwości, jednak chyba każda z nich ma swoje wady i zalety.
Pierwszym sposobem są skrypty startowe:
Wersja dla Gentoo (wrzucamy do pliku /etc/init.d/actkbd, a potem wydajemy polecenie rc-update add sctkbd default):
#!/sbin/runscript
start() {
ebegin "Starting actkbd daemon"
start-stop-daemon --start --exec /usr/bin/actkbd -- -D
eend $?
}
stop() {
ebegin "Stopping actkbd daemon"
start-stop-daemon --stop --exec /usr/bin/actkbd
eend $?
Wersja dla Debiana (i innych korzystających z System V). Oczywiście, skryptów tych można dorzucić wiele bajerów, to jest jedynie podstawowa wersja.
Zalety tego rozwiązania to dostępność skrótów jeszcze przed zalogowaniem się użytkownika. Do wad możemy zaliczyć niemożliwość uzyskania dostępu do serwera dcop oraz... dostępność skrótów jeszcze przed zalogowaniem się użytkownika, co może być poważną luką w bezpieczeństwie systemu.
Kolejny sposób to po prostu dodanie wywołania demona actkbd do pliku .bashrc:
if [[ `ps -C actkbd | grep actkbd` = "" ]] ; then sudo /usr/bin/actkbd -D; fi
I to w sumie na tyle. Możliwości actkbd są o wiele większe niż proste bindowanie klawiszy, po więcej info odsyłam do źródeł (linki poniżej). Dla moich zastosowań (o których jeszcze kiedyś napiszę) program ten wydaje się być idealny.
Zobacz też
- Strona domowa actkbd
- Strona domowa xbindkeys
- bzcat /usr/share/doc/actkbd-0.2.8/README.bz2 (czy gdzie to u was w systemie leży)
- bzcat /usr/share/doc/actkbd-0.2.8/samples/actkbd.conf.bz2
- "update-rc.d i skrypty startowe w Debianie" na debianusers.pl
- HOWTO Make an rc script na gentoo-wiki.com
- Skrypty startowe z Podręcznika Gentoo
±
Komentarze do wpisu "Bindowanie klawiszy nie tylko w Xach":
1.
30 września 2008, 14:01:08
Dzięki wielkie :)
Porzebowałem czegoś takiego jak actkbd.
PS.
Popraw linki do homepage actkbd i xbindkeys
2.
30 września 2008, 14:02:57
@Scytale: thx, poprawione...
3.
30 września 2008, 16:16:52
Napisałem kiedyś coś podobnego dla HP Jornada 720, ale jest przenośne. Źródła tutaj:
http://filip.eu.org/jornada/jinputd-0.1.3.tar.bz2
Dodaj komentarz: