Klawiatura multimedialna nie jest dziś żadną nowością. Większość z nas posiada urządzenia z dodatkowymi guzikami czy funkcjami. Niestety większość z tych guzików działa tylko pod systemami Microsoft Windows. Wciskając guzik z dużą literkę e uruchamiamy przeglądarkę Internet Explorer. A co zrobić jeśli posiadamy Linuksa? Przecież tam nie mamy IE. Na szczęście jest wiele programów, które pomogą nam skonfigurować dodatkowe klawisze tak by uruchamiały przez nas zdefiniowane aplikacje lub polecenia.
Większość dystrybucji Linuksa radzi sobie poprawnie z klawiszami funkcyjnymi wbudowanymi w klawiatury laptopów. A co jeśli posiadamy zwykłą multimedialną klawiaturę? Nie ma co się martwić. Sprawa jest bardzo prosta a pomoże nam w tym kilka aplikacji.
LinEAK – Linux Easy Access Keyboards
Pierwszą aplikacją z jakiej możemy skorzystać jest LinEAK. Niestety aplikacja nie jest od bardzo dawna rozwijana. Jest to dość prosty w użyciu program z ładnym interfejsem graficznym. Być może w repozytoriach popularnych dystrybucji Linuksa jest on jeszcze dostępny. Jeśli nie to musimy sami go skompilować z ostatnich paczek jakie można znaleźć na sourceforge.net. Wersja jaką udało mi się odszukać jest z 24 maja 2006 roku.
Aplikacja ma wbudowaną bazę klawiatur. Jeżeli posiadamy klawiaturę, która jest już zdefiniowana w programie wystarczy ją wybrać z listy dostępnych urządzeń. To tyle. Kolejnym krokiem będzie uruchomienie demona lineakd
. Słucha on sygnałów jakie wysyła klawiatura, a następnie podejmuje odpowiednią akcję.
W przypadku jeśli aplikacja nie posiada zdefiniowanej klawiatury to możemy sami przechwycić sygnał klawisza a następnie do niego podpiąć odpowiednią aplikację. Dla GNOME możemy posłużyć się aplikacją acme
.
HotKeys
Kolejną aplikacją z jakiej możemy skorzystać jest program HotKeys. Niestety nie jest on rozwijany już od dawna. Ostatnia wersja jaką znalazłem jest z 11 grudnia 2002 roku. Jest ona oznaczona numerem 0.5.7.1. Aby zobaczyć jakie klawiatury są domyślnie wspierane należy wydać polecenie hotkeys -l
. Lista klawiatur nie jest duża.

/usr/share/hotkeys/
. Jeżeli chcemy skonfigurować klawisze niezależnie od użytkownika, to w jego katalogu domowym tworzymy plik .hotkeys
. Jest to plik XML, który trzyma się schematu < Opcja keycode="numer"/ >
. Przykładowa konfiguracja dla klawiatury Acer TravelMate 430:
<definition> <config model="Acer TravelMate 430"> <Play keycode="162"/> <NextTrack keycode="153"/> <PrevTrack keycode="144"/> <Stop keycode="164"/> <VolUp keycode="176" adj="2"/> <VolDown keycode="174" adj="2"/> <WebBrowser keycode="178"/> <Email keycode="236"/> <Prog1 keycode="159"/> <Prog2 keycode="151"/> </config> <contributor> <name>Ludovic Rousseau</name> <email>ludovic.rousseau@free.fr</email> </contributor> </definition>
Teraz należy edytować plik /etc/hotkeys.conf
. W sekcji Kbd
podajemy nazwę pliku konfiguracyjnego z naszą klawiaturą. W pliku konfiguracyjnym możemy sobie ustawić kolor OSD (on Screen Display), który powiadomi nas o tym jaki guzik wcisnęliśmy. Definiujemy tam również, różne akcje jakie możemy przypisać dodatkowym klawiszom.
Jak pobrać kod klawisza?
Do pobrania kodu klawisza posłuży nam prosta aplikacja o nazwie xev. Po jej uruchomieniu pojawi nam się małe białe okienko z czarnym kwadratem.

KeyPress event, serial 27, synthetic NO, window 0x2a00001, root 0x9e, subw 0x0, time 276586277, (384,81), root:(456,108), state 0x10, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XmbLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False KeyRelease event, serial 30, synthetic NO, window 0x2a00001, root 0x9e, subw 0x0, time 276586397, (384,81), root:(456,108), state 0x10, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" KeyPress event, serial 30, synthetic NO, window 0x2a00001, root 0x9e, subw 0x0, time 276587590, (384,81), root:(456,108), state 0x10, keycode 230 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 30, synthetic NO, window 0x2a00001, root 0x9e, subw 0x0, time 276587667, (384,81), root:(456,108), state 0x10, keycode 230 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes:
Jak można zauważyć najpierw został wciśnięty i puszczony guzik [ a ]
. Następnie był to jakiś klawisz dodatkowy o keycode
równym 230 (keycode 230 (keysym 0x0, NoSymbol)). Właśnie liczba 230 jest kodem klawisza jaki możemy podać do aplikacji.
XBindKeys
Kolejną bardzo ciekawą aplikację jest XBindKeys. Konfiguracja tego programu jest bardzo podobna do pozostałych. O ile poprzednie aplikacje posiadają predefiniowane klawiatury, tutaj musimy wszystko zrobić ręcznie. Najpierw tworzymy plik .xbindkeysrc
.
Plik ten możemy wygenerować poleceniem: xbindkeys --defaults > ~/.xbindkeysrc
. Następnie wydajemy polecenie xbindkeys -k
i przystępujemy do konfiguracji aplikacji. Wyskoczy nam małe okienko, a w konsoli pojawi się prośba o naciśnięcie jakiegoś klawisza do którego chcemy ustawić opcję.
Press combination of keys or/and click under the window. You can use one of the two lines after "NoCommand" in $HOME/.xbindkeysrc to bind a key. "NoCommand" m:0x10 + c:230 Mod2 + NoSymbol
Teraz należy skopiować dwie pierwsze linijki, czyli:
"NoCommand" m:0x10 + c:230
do wcześniej stworzonego pliku. W pierwszej linijce w między cudzysłowami wpisujemy polecenie jakie ma się uruchomić po wciśnięciu guzika np:
"/usr/bin/mozilla-firefox" m:0x10 + c:230
W ten sam sposób konfigurujemy resztę guzików. Teraz wystarczy uruchomić xbindkeys
i dodatkowe guziki będą działać.
GNOME i klawiatura multimedialna
Jeżeli posiadamy środowisko graficzne GNOME to sprawa jest jeszcze prostsza. Udajemy się do aplikacji Skróty klawiaturowe w menu System -> Preferencja -> Skróty klawiaturowe
. Konfigurowanie skrótów jest tam bardzo proste.
Niestety nie zawsze poprawnie wykrywane są wszystkie guziki. Wtedy pozostaje nam skorzystać z innych rozwiązań.
KeyTouch
Aplikacja KeyTouch składa się z dwóch programów: samego KeyTouch oraz programu do konfigurowania aplikacji o nazwie KeyTouch Editor.
Po wybraniu konkretnego modelu możemy dostosować poszczególne klawisze do naszych potrzeb. Jeżeli nie ma naszej klawiatury na liście możemy skonfigurować jej klawisze w podobny sposób jak to było robione w poprzednich aplikacjach.
Do konfiguracji posłuży nam aplikacja KeyTouch Editor. Pierwszym krokiem będzie wybranie sposobu podłączenia oraz typu urządzenia. Następnie zostajemy proszeni o wciśnięcie jakiegoś klawisza funkcyjnego. Powinien ukazać się nam bardzo przyjemny konfigurator.
Teraz pozostało skonfigurować klawisze i przypisać do nich funkcje, uruchamiane aplikacje lub pluginy jakie zawiera program. Jeżeli posiadamy plik konfiguracyjny to wracamy do aplikacji KeyTouch i go do niej importujemy. Teraz wystarczy zastosować zmiany i cieszyć się obsługą klawiatury.
A co z przyciskami, które nie wysyłają sygnałów do "xev"? Acery i inne takie?
Bardzo fajny artykuł :-) Jak tylko wrócę do domu to go przetestuję. Natomiast testowałem key touch pod ubuntu 2008.4 – po jakimś czasie zaczął mi się szwankować i nie można było zamknąć procesu podczas zamykania systemu. Musiałem zabijać go ręcznie. Po odinstalowaniu problem ustał. Dzisiaj sprawdzę jak się mają jego konkurenci.
Zamiast cudować można po prostu zrobić taka klawiaturę
http://klawiatura.wordpress.com/
prosta i wygodna. Nie potrzebne zadne alty
żeby poznać kody generowane przez klawiaturę (scacode) klawiszy trzeba użyć polecenia
# showkey -s
po czym np. do pliku /etc/rc.d/rc.local dopisać dla każdego klawisza linie
# setkeycode scancode keykode
keycode można wybrać dowolny NIE występujący w tabeli zwracanej przez program
# getkeycodes
o ile się nie mylę X używa jeszcze innych kodów, więc użycie programu xev będzie konieczne
ja tam mam swój model klawiatury wpisany w xorg.conf i moje kde4 je wspaniale obsługuje, chociaż jak dany model nie jest obsługiwany przez xorg to można zmodyfikowac jakiś podobny config coby miec klawisze typu XF86Mute itp, ja tak wcześniej robiłem
a w laptopach to sie nie przyda bo tam przyciski dodatkowe wysyłają zdarzenia acpi a nie klawiaturowe
A co w przypadku, gdy nie tyle chcemy uruchomić naciśnięciem klawisza program (lub skrypt), tylko dość konkretną akcję w wybranym programie? Np. mam klawiaturę, która posiada m.in. klawisz oznaczony symbolem "odśwież zawartość okna przeglądarki". Nie problem z wykorzystaniem xbindkeys spowodować uruchomienie samej przeglądarki – ale jak "dowiązać" do klawisza jedynie akcję "odśwież"?
Albo mam również klawisze oznaczone symbolami jak w magnetofonie: "Fast Forward", "Pause" itp. Jak je dowiązać, aby można było powodować takie akcje np. w Beep Media Player?
[…] Program xbindkeys służy do przechwytywania skrótów klawiaturowych i wykonywania skojarzonych z nimi poleceń. W skrótach tych można użyć wszystkich klawiszy. Artykuł stanowi uzupełnienie opublikowanego już poradnika Klawiatura Multimedialna […]