NOVA KLAVESNICE UMAX OFFICE

Written in

by

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.

Tags

Napsat komentář