Thursday, June 08, 2006

Multimediálna klávesnica a linux

Ešte do včera som k tomu aby mi na mojej klávesnici ( Logitech Internet Keyboard ) fungovali "multimediálne" klávesy používal šikovnú utilitku hotkeys. Výborná utilitka až na pár drobných nedokonalostí, ktoré mi v poslednej dobe začali vadiť čoraz viac. Hotkeys totiž vypadli stále keď som pustil vmware alebo nejakú hru v cedege takže som ich musel stále reštarovať aby som mohol používať špeciálne klávesy. No a včera som úplne náhodov pri nastavovaní správneho modelu klávesnice v xorg.conf, natrafil na článok na servery abclinuxu.cz "Multimediální a jinak vylepšené klávesnice" s pekným popisom ako odchytiť špeciálne klávesy, priradiť im označenie a použiť vo WM na volanie rôznych funkcií. Takže po chvíľke hrania sa s utilitkou xev som mal odchytené keycody špeciálnych kláves a vytvorený súbor .Xmodmap:

keycode 229=F13
keycode 236=F14
keycode 178=F15
keycode 160=F16
keycode 174=F17
keycode 176=F18

Nasledovalo priradenie funkcie klávesám. V pekwm to vyzerá následovne:
# run psi
KeyPress = "F13" { Actions = "Exec osdctl -s psi, && psi &" }
# run thunderbird
KeyPress = "F14" { Actions = "Exec osdctl -s thunderbird, && thunderbird &" }
# run firefox
KeyPress = "F15" { Actions = "Exec osdctl -s firefox, && firefox &" }
# mute/unmute
KeyPress = "F16" { Actions = "Exec amixer -q sset Master toggle" }
# master volume -10%
KeyPress = "F17" { Actions = "Exec amixer -q sset Master 10%-" }
# master voulme +10%
KeyPress = "F18" { Actions = "Exec amixer -q sset Master 10%+" }
# PCM volume -10%
KeyPress = "Mod4 F17" { Actions = "Exec amixer -q sset PCM 10%-" }
# PCM volume +10%
KeyPress = "Mod4 F18" { Actions = "Exec amixer -q sset PCM 10%+" }

Na troch klávesách mám spúšťanie mailového klienta, browseru a jabber klienta a na ďalších troch ovládanie hlasitosti. Výborné je, že tieto klávesy idú kombinovať s ďalšími funkčnými takže som hravo vyriešil i PCM hlasitosť - to sa mi s hotkeys nepodarilo. Určite ste si všimli použitie ďalšej utilitky osdctl. Keďže hotkeys používali osd k vypisovaniu spustenej funkcie potreboval som nejakú náhradu. osdsh/osdctl túto funkciu splnili. osdsh je daemon, ktorý sa ovláda pomocou osdctl. Nastavenie zobrazovania sa dá urobiť pomocou osdshconfig utilitky, ktorou je možné vytvoriť themu pre vypisovanie.
Moja thema vyzerá takto:
# nastavuje vypisovanie textu
dset(d,3)
dset(f,-*-lucida-bold-r-normal-sans-24-*-*-*-*-*-*-*)
dset(C,green)
dset(k,black)
dset(o,0)
dset(O,0)
dset(x,20)
dset(y,50)
dset(l)
dset(b)

# nastavuje vypisovanie sliderov pri pridavani/uberani hlasitosti
smix(d,3)
smix(f,-*-lucida-bold-r-normal-sans-24-*-*-*-*-*-*-*)
smix(C,green)
smix(k,black)
smix(o,0)
smix(O,0)
smix(x,20)
smix(y,50)
smix(l)
smix(b)

# aktivuje mouzitie slideru pre mixer
# dalsia moznost je spustit osdctl -m 1
mixr(1)

Následne už stačilo len pridať spúšťanie daemona a mapovanie kláves do .xsession a bolo hotovo:
# nastavenie multimedialnych klaves
xmodmap .Xmodmap
# daemon pre osd
osdsh
# nacitanie themy pre osd
osdctl -S ~/.osdctl/mytheme

No comments: