Klawisze Multimedialne Acer Aspire 5610 i Ubuntu

Dzisiaj postanowiłem uruchomić wreszcie klawisze multimedialne będące częścią mojego laptopa. W internecie szukałem tego już kilka razy, ale zawsze kończyło się niepowodzeniem.Zawsze poradniki dotyczyły raczej ustawienia działających już klawiszy tak aby kontrolowały one odtwarzacze muzyki czy cokolwiek innego.

U mnie jednak problem był inny – system w ogóle nie rozpoznawał tych klawiszy. Nawet polecenie xev nie reagowało. Dzisiaj podszedłem do sprawy nieco inaczej. Zdałem sobię sprawę, że do obsługi dodatkowych klawiszy potrzebuję dodatkowego sterownika. Okazało się, że to był dobry trop. Potrzebowałem sterownika acerhk. Dla mojego laptopa wystarczy skompilować ściągnięte źródła i zainstalować je poleceniami:

make
sudo make install

U mnie początkowo kompilacja nie chciała przejść i make wywalał jakiś błąd z modyfikacją CFLAGS. W internecie znalazłem złotą poradę jak to ominąć… Wystarczyło zakomentować liniję (chyba 18.) w której ustawiane były flagi (CFLAGS+=…). I to pomogło 🙂

Następną częścią było załadowanie sterownika acerhk do modprobe‚a. Aby to zrobić wystarczy wydać polecenie:

modprobe acerhk force_series=2020 poll=0

Po tej operacji xev rejestruje już klawisze specjalne i nie ma problemów z ustawieniem skrótów klawiszowych za pomocą programu gnome-keybinding-properties.

Na tym można byłoby zakończyć, ale przecież klawiatury mają więcej przycisków niż tylko multimedialne, a nie wszystko da się ustawić za pomocą wyżej wspomnianego programu. Przykładowo jeśli chcielibyśmy uruchomić jakiś dowolny program. Z takimi ustawieniami niestety nie da się tego zrobić. Pokombinowałem więc trochę więcej 🙂

Jak za każdym razem postanowiłem zasięgnąć wiedzy za pomocą Google. Okazało się, że można uruchamiać dowolne programy, ale najpierw trzeba dodać odpowiednie klawisze do konfiguracji programu xmodmap. U mnie niestety nie było pliku xmodmap.config nigdzie w katalogu /etc ale za to doczytałem się gdzieś, że wystarczy stworzyć w katalogu użytkownika plik .Xmodmap i tam zapisać konfigurację dodatkowych klawiszy.

Najpierw za pomocą polecenia:

xmodmap -pke > .Xmodmap

wygenerowałem sobie plik ze wszystkimi kodami klawiszy. Teraz wystarczyło już tylko zajrzeć do pliku /usr/share/X11/XKeysymDB w celu obejrzenia jakie symbole klawiszy mamy do dyspozycji. Przy definiowaniu klawiszy specjalnych warto zwrócić uwagę na symbole postaci XF86*. Ja potrzebowałem tylko symboli: XF86Mail, XF86Launch0, XF86WWW. Przy czym XF86Launch0 użyłem do klawisza specjalnego na którym jest literka P i nie mam zielonego pojęcia co ma przedstawiać 🙂

Teraz pozostało już tylko wpisać to co trzeba do .Xmodmap wygenerowanego wcześniej. Aby uzyskać kody klawiszy, o które chodzi wystarczy uruchomić program xev w terminalu i powciskać te klawisze. Wtedy w terminalu pokażą się informacje dotyczące wciśniętego klawisza. Mnie interesował keycode. Przykładowe wciśnięcie klawisza ‚a’ wygeneruje takie coś:

KeyPress event, serial 32, synthetic NO, window 0x1a00001,
    root 0x1a6, subw 0x0, time 9636362, (542,315), root:(550,364),
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

Kiedy już znałem kody klawiszy wystarczyło odnaleźć odpowiadające im linijki w .Xmodmap i dopisać do nich odpowiednie symbole. W moim przypadku były to linijki:

keycode 130 = XF86WWW
[...]
keycode 151 = XF86Launch0
[...]
keycode 236 = XF86Mail

Aby uwzględnić te zmiany wystarczy wydać polecenie:

xmodmap .Xmodmap

Po kolejnym uruchomieniu komputera załadują się one automatycznie.

Teraz wystarczyło już tylko ustawić skróty wystarczy uruchomić program gconf-editor i odnaleźć w nim klucz: apps/metacity/keybinding_commands/command_1 i wprowadzić tam komendę jaką chcemy uruchomić za pomocą klawisza. Potem w kluczu apps/metacity/global_keybindings/run_command_1 ustawić odpowiednie symbole klawiszy. Ja chciałem aby odpowiedni przycisk uruchamiał mi firefoxa na stronie gmail.com dlatego w run_command_1 wpisałem XF86Mail. W ten sposób przypisałem klawisz o kodzie 236 (XF86Mail) do komendy 1.

Na koniec zostało jeszcze tylko ładowanie sterownika acerhk podczas startu systemu. Niestety dodanie go w opcjach sessji GNOME niewiele daje ponieważ musi on być uruchomiony z prawami root’a. Dopisanie go do /etc/rc.local też mi niewiele dało dlatego stworzyłem sobie własny skrypt startowy:

sudo touch /etc/init.d/myinit
sudo chmod 755 /etc/init.d/myinit

Teraz trzeba wyedytować plik za pomocą jakiegoś edytora tekstu i dodać tam dwie linijki:

#! /bin/sh
modprobe acerhk force_series=2020 poll=0

Ostatnia rzeczą jaką trzeba zrobić jest poinformowanie demona init o tym, że powinien załadować ten skrypt przy starcie. Robi się to następującym poleceniem:

sudo update-rc.d /etc/init.d/myinit defaults

System cośtam pomieli, powyświetla i po wszystkim skrypt myinit będzie uruchamiany przez demona init.d a co za tym idzie załadowane zostaną sterowniki do klawiatury acera.

Tyle chyba wystarczy na jednego posta 🙂

Reklamy

Linux on board

Postanowiłem po raz kolejny zainstalować sobie linuxa. Oczywiście moją ulubioną dystrybucję: OpenSUSE. Postanowiłem napisać trochę kodu w Linuxie bo prawdę mówiąc robiłem tego na prawdę niewiele.

Sama instalacja przebiegła bezproblemowo (nie licząc błędu odczytu z CD bo był brudny 😉 ). Po instalacji na sam początek postanowiłem zainstalować sterowniki do bezprzewodowej karty sieciowej w moim Acerze Aspire 5610Z. Nauczony doświadczeniem, że sterowniki MadWiFi są ZŁE i nie działały poprzednio więc nawet nie sprawdzałem czy nowa wersja wspiera już moją kartę. Od razu ściągnąłem ndiswrappera (służącego do instalacji Windowsowych sterowników do kart WiFi na Linuxie) oraz same sterowniki do karty.

Miałem pewne niedogodności związane np. z brakiem g++, którego zapomniałem zainstalować ;), ale w końcu udało mi sie zainstalować ndiswrappera oraz wrzucić do niego sterowniki. Potem załadowanie go do modprobe’a i gotowe ^^

Brzmi prosto jednak wszystko to zajęło mi pół dnia – łącznie ze ściąganiem kiklku programów (m.in Eclipse) oraz ich konfiguracją.

Tyle zachodu tylko po to aby napisać „Hello World”… 😉