Vcera jsem mel narozeniny a dostal jsem tuhle sqelou klavesnici Umax Office Keyboard, kterou jsem si pral. Klavesy jsou opravdu prijemne na psani, je o neco mekci nez moje minula, ale zase ne moc. No a hned vecer jsem se pustil do rozchozovani specialnich klaves.
Opravdu dobry projekt ktery zavadi podporu multimedialnich klavesnic je LinEAK. Existuje jeste konkurencni projekt hotkeys, ale ten jsem nezkousel.
Lineak ma 2 konfiguraky. Ten prvni je v /usr/etc a menuje se lineakkb.def. Po trose zkoumani, jsem za pomoci utility xev, ktera vypisuje spoustu informaci a mimo jine hlavne keycode stisknute, respektive pustene klavesy.
Vysledkem je pak tenhle muj konfigurak, kam jsem na konec pridal nasledujici zaznam pro moji klavesnici:
# Contributed by Josef Hajas
[UOK]
brandname = „Umax“
modelname = „Office Keyboard“
[KEYS]
Back = 234
Forward = 233
BlueLeft = 166
BlueRight = 168
# BlueUp = 139
BlueDown = 139
Stop = 232
WWW = 178
Email = 236
Favorites = 230
Refresh = 231
Search = 229
PowerOff = 222
Sleep = 223
Mute = 160
VolumeUp = 176
VolumeDown = 174
Play|Pause = 162
Stop = 164
Previous = 144
Next = 153
# APP = xxx Alt+Shift+TAB
# Close = xxx Alt+F4
# Mark = xxx Shift
# Cut = xxx Shift+Del
# Paste = xxx Ctrl+v
# Copy = xxx Ctrl+c
# Word = xxx Ctrl+Alt+d
# Excel = xxx Ctrl+Alt+e
# PPoint = xxx Ctrl+Alt+p
# Calendar = xxx Ctrl+Alt+o
# Calc = xxx Ctrl+Alt+c
# MyCom = xxx Meta+e
# LogOff = xxx Meta Meta Up Up Up Return
# With F function
# Help = xxx F1
# New = xxx Ctrl+n
# Open = xxx Ctrl+o
# Save = xxx F12
# Replace = xxx F5
# Spell = xxx F7
# Undo = xxx Alt+BackSpace
# Redo = xxx Alt+Return
# Reply = xxx Ctrl+r
# Forward = xxx Ctrl+f
# Send = xxx Ctrl+Return
# Print = xxx Shift+F12
[END KEYS]
[END UOK]
# end Umax Office Keyboard
Jediny co jsem nepochopil je, proc takove to kulate modre tlacitko generuje stejny scancode pro nahoru i dolu 🙁
Jak je videt zdaleka ne vsechny klavesy maji prizazeny vlastny keycode, ale hodne specialnich multimedialnich nebo funkcnich klaves generuje sekvenci jinych klaves. S temi lineak neumi nic delat, ale v KDE se to da pres KControl/prizpusobeni/klavesove zkratky docela dobre nakonfigurovat.
Kazdopadne pro prirazeni scankodum akce se da pres konfigurak ~/.lineak/lineakd.conf a ted v soucasne dobe vypada takhle:
# Global settings
KeyboardType = UOK
CdromDevice = /dev/cdrom
MixerDevice = /dev/mixer
# Specific keys of your keyboard
Back = „/usr/bin/fakekey“
Forward = „“
BlueLefft = „“
BlueRight = „“
Stop = „“
WWW = „/usr/bin/moztab“
Email = „mozilla -mail“
Favorites = „“
Refresh = „“
Search = „/usr/bin/moztab google.com“
PowerOff = „“
Sleep = „EAK_SCREEN_LOCK(KDE)“
Mute = „EAK_MUTE“
VolumeUp = „EAK_VOLUP“
VolumeDown = „EAK_VOLDOWN“
Play|Pause = „xmms -t“
Stop = „xmms -s“
Previous = „xmms -r“
Next = „xmms -f“
moztab je muj skriptik, ktery zpusobuje to, ze pokud nebezi zadna instance mozilly, tak ji pusti a otevre stranku kerou dostane jako parametr a pokud uz nejaka mozilla bezi, tak udela totez, ale otevre jen novou tab. Skript vypada takhle:
$ cat /usr/bin/moztab
#!/bin/sh
if ! `mozilla -remote „OpenURL($1,new-tab)“`
then `mozilla -splash $1 &`
fi
Ten program fakekey jsem si napsal sam kdyz jsem zjistil, ze asi nebude jina cesta jak z sellu simulovat stisk klaves. Inspiroval jsem se tady respektive na google mirroru. Ten samy programek na zapinani NumLocku je i u suse.
Ten muj programek simulujici Alt+Left (coz je zkratka pro Back v mozille) pak vypada analogicky:
#include
#include
int main(int argc, char **argv) {
Display* disp = XOpenDisplay( NULL );
if( disp == NULL ) return 1;
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_Alt_L ), True, CurrentTime ); // key Alt down
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_Left ), True, CurrentTime ); // key Left down
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_Left ), False, CurrentTime ); // key Alt up
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_Alt_L ), False, CurrentTime ); // key Alt up
XCloseDisplay( disp );
return 0;
}
Az budu mit trochu cas, tak to trochu zobecnim, aby to mohlo generovat libovolnou sadu stisku.
Nicmene ten problem jsem vyresil nakonec docela jinak. V diskusi k lineaku jsem nasel sqelou radu jak na tlacitka back a forwart v mozille.
Back = „mozilla -remote ‚openURL(javascript:history.go(-1);)’“
Forward = „mozilla -remote ‚openURL(javascript:history.go(1);)’“
Jeste me stve jedna vec: kdyz pocitac bootuje tak jak se po discich kontroluje klavesnice (normalne jen trochu probliknou vsechny kontrolky) tak se vzdy zapne cervena ledka F indikujici ze fukcni klavesy nejou F1-F12 ale generuji vicestisky napr pro ulozeni, otevreni, novy dokument atd.
Vzhledem k tomu ze mam na F1-F4 prepinani ploch, tak mi to docela vadi 🙁
Asi si predelam prepinani ploch na samotne ty zkratkove funkcni klavesy (tedy Help, New, Open a Save). OpenOffice pouziva stejne jine klavesove zkratky a to ani nemluvim o mem oblibenem vimku 😉 Jo kdyby nejaky ficury klavesy fungovali ve vimku… no mozna to jeste nejak upravim.
Napsat komentář
Pro přidávání komentářů se musíte nejdříve přihlásit.