Máris látom a tanácstalan tekintetedet, kedves Olvasóm: mi a csudának saját billentyűzethozzárendelés, ha a masinánk eddig remekül működött a magyar billentyűzet magyar kiosztásával?!
Nos, ennek számos oka lehet. Például, nem vagyunk megelégedve a betűk szokásos kiosztásával. Előfordulhat ugye, hogy te korábban olyan billentyűzeten írtál, ahol az „Y” és „Z” betűk meg voltak cserélve a mostani állapothoz képest. Vagy neked is az a véleményed mint nekem, hogy teljesen felesleges a „Q” gombot olyan jól elérhető helyre rakni, amikor az abszolút ritkán használatos karakter a magyar szövegekben, helyette jobb lenne valami gyakoribb betűt ahhoz a billentyűhöz rendelni! Vagy esetleg eszperantista vagy, és szeretnéd, ha amúgy magyar billentyűzeteden azért az eszperantó „kalapos” (azaz ékezetes) betűket is elérhetnéd valamiféle speciális billentyűkombinációk segítségével. Vagy netán thai/japán/héber (stb...) karakterekkel akarod bővíteni a billentyűzeted karakter-repertoárját...
Nos, a Linux alatt erre van mód. Mindenekelőtt azonban tudni kell, hogy amit most leírok, csak a grafikus felületre vonatkozik – beleértve a virtuális termináljainkat, tehát kedvenc Mrxvt vagy Urxvt termináljainkat is. Amit most írunk, az tehát nem lesz érvényes „mélykonzolban”.
1. rész - Saját billentyűzetkiosztás készítése
Szóval, saját billentyűzethozzárendelést legegyszerűbb úgy csinálni, hogy meghagyjuk e mostanit, ami valószínűleg jó nekünk nagyobbrészt, mindössze megváltoztatunk benne néhány apróságot. Ehhez mindenekelőtt mentsük ki e mostanit egy fájlba, az
xmodmap -pke >myxmodmap
paranccsal. Ezután nézzünk ebbe bele. Nem listázom ide az egészet, de efféle sorokat látunk:
keycode 24 = q Q q Q backslash Greek_OMEGA
Ez azt jelenti, hogy ha a billentyűzetünk egy „24” kódú jelet küld a számítógépnek, akkor az milyen karakterkódot állítson elő belőle. Mint látható a szám után több variáció is fel van sorolva. A legelső a shift nélküli variációt jelenti – ez itt a „q” betű. Utána jön az, ha a Shift módosítóbillentyűvel nyomtuk meg a gombot, ez itt a „Q”-t eredményezi, s még ez is oké lenne, de úgy tapasztaltam, hogy az ezutáni oszlopban megint az jön, hogy mi van ha egymagában nyomjuk meg, s az ezutániban megint az, mi van ha Shift-tel együtt!
Bevallom becsületesen, ennek nem tudom az okát. (Aki tudja, okvetlenül írja meg nekem, mert erre nagyon kíváncsi vagyok!) Utána az AltGr-el való együttes megnyomás jele szerepel, na ez az a hülye „visszaperjel” vagy „fordítottperjel” amit a Windowsos korszakunkból jól ismerünk, s aminek angolul „backslash” a neve. Az ezutáni adat azt jelenti, hogy mi van, ha Shift+AltGr-el együtt nyomnánk meg a billentyűt.
Mint azt már bizonyára sejti a Tisztelt Olvasóm, e fájlban módosítani fogjuk a bejegyzéseket.
Megemlítendő, hogy Greek_OMEGA jelet én bizony nem bírok kicsikarni a billentyűzetből! Ha a virtuális terminálban nyomom a Shift+AltGr-Q gombot, semmit nem ír ki, ha a LibreOffice alatt nyomom, akkor ezt a szép 1/2-es jelet: ½
Gondolom ennek az lehet az oka, hogy amit itt megadunk, nem maga a karakter amit látunk, csupán egy karakterkód, s a megjelenített kép nem okvetlenül az, amit elvárunk – függ ugyanis a használt karakterkészlettől is! Szóval, a dolog bonyolult. El tudom képzelni, hogy elvileg a Shift+AltGr-Q kombináció ha lenyomom, igenis kiküldi a megfelelő jelet, de az a most használt fontkészletemben az ½ jelet eredményezi, miközben más fontkészlet alatt talán valóban a görög omegát látnám. A virtuális terminál alatt meg azért nem látok semmit ekkor, mert az az eredeti „mélykonzol” terminál beállításait emulálja, s abban nincs megadva görög omega jel, legalábbis nem a magyar karakterkészletben, ami eltér attól, amit az X felület alatt használunk!
Ki is próbáltam: LibreOffice-ban ha a most használt HBookman betűtípusról átváltok Ljuba Serif-re, megjelenik az omega-jel: Ω
Ha most ezeket olvasván szörnyülködve csóválod a fejedet, s azt mondod, ez iszonyú zűrös és nagy a kavarás, akkor – akkor igazat adok neked! Sajnos, jelenleg ilyen a számítástechnika állapota. Ezen a helyzeten próbál segíteni az úgynevezett Unicode-kódolás, s annak UTF-8 nevű implementációja, aholis teljesen egyértelmű lesz, milyen kód milyen karakterhez tartozik, mert nem lesznek külön kódlapok csak egyetlenegy, igaz ott egy karakterhez olykor több bájt is tartozik majd, mert a kód csak annyi bájton fér el. Mindenesetre, akkor a világ összes jele egyetlen, egyértelmű kódrendszer alapján lesz azonosítható. Ez a jövő útja, de jelen pillanatban még nem terjedt el kizárólagosan.
Hogy mit hova tegyünk, melyik karaktert melyik billentyűre, az egyéni ízlés kérdése. Nekem például úgy tetszett, hogy az "emdash"-nak és "endash"-nak nevezett kötőjeleket rátettem az AltGR+ü és ShiftAltGr+ü gombokra, eképp:
keycode 20 = udiaeresis Udiaeresis udiaeresis Udiaeresis emdash endash
Arra ügyeljünk csak, hogy ha a billentyű sima, módosítóbillentyű nélküli lenyomására akarunk rákötni valamit, vagy annak Shift-tel való lenyomására, akkor a sor MINDKÉT helyén szereplő bejegyzését módosítanunk kell, másképp nem fog működni! Azaz ha mondjuk a "t" gomb lenyomására az "á" karaktert akarnánk előcsalogatni (tudom hogy baromság, csak a példa kedvéért írom) akkor annak eképp kéne szerepelnie:
keycode 28 = á T á T tslash Tslash
Ha a nagy "T" helyére meg az "é" karaktert akarjuk rakni, akkor ezt írjuk:
keycode 28 = á é á é tslash Tslash
Ahhoz hogy a fenti módosítások érvénybe lépjenek, ki kell adni az
xmodmap myxmodmap
parancsot. Ha azt akarjuk, hogy ez az új billentyűzetkiosztás már rögvest a grafikus felület indulásakor érvénybe lépjen, ahhoz nevezzük át a myxmodmaprc fájlunkat .xmodmaprc névre, aztán csináljunk egy "indul" nevű (szöveges) állományt a $HOME mappába, aminek ez a tartalma:
xmodmap .xmodmaprc
és az Ubuntuban (vagy az épp használt disztrónkban) szokásos módon intézzük el, hogy ez "autostartos" legyen, azaz mindig induljon el a grafikus felület elindulásakor.
Igazán nem ördöngösség, ugyebár?!
Felmerülhet a kérdés, honnan találhatod ki a speciális karakterek neveit, melyeket meg kell adnunk a táblázatunkban! Nos ezeket az ubuntuban a /usr/include/X11/keysymdef.h nevű állomány tartalmazza.
Mindenesetre itt van néhány, a magyarok számára fontos karakter neve:
Nyitóidézőjel („): doublelowquotemark
Záró idézőjel (”): rightdoublequotemark
Három pont (…): ellipsis
Gondolatjel (–): endash
Hosszú kötőjel (—): emdash
Azt hiszem most már semmi akadálya annak, hogy a kedves Olvasó a neki tetsző billentyűhozzárendelést valósítsa meg!
2. rész - Csináljunk extra módosítóbillentyűt!
A minap súlyos szerencsétlenség szakadt rám: tönkrement a billentyűzetem! A nejem vett nekem egy újabbat, de persze a legolcsóbbat, amin nincsenek multimédiás billentyűk... ki kellett találnom valamit helyettük. Persze az xbindkeys progival hozzárendelhetem más billentyűkombinációkhoz a kedvenc funkcióimat – de miféle billentyűkombinációkhoz?! A „Win” billentyűt nem használhatom, azt sok program lefoglalja magának. A Ctrl illetve Alt gombokra meg végképp jobb ha nem számítok, mert tuti, hogy valami progiban, például a LibreOffice-ban (vagy akár a Firefoxban, pláne ha Vimperator kiegészítést használok hozzá...) e billentyűknek fontos egyéb szerepeket szánnak! Kell készíteni egy saját, extra módosítóbillentyűt!
E feladatra a CapsLock gombot szemeltem ki. Szépen, kényelmesen elérhető ugyebár... és nincs is rá igazán szükség, sőt, megléte inkább hibák forrása! Nem is emlékszem rá, hogy valaha is használtam volna bármire is...
A feladat nem volt egyszerű. Egyszerre kellett összepasszintani több állományt is nálam. Persze a dolog rém egyszerű, ha már tudjuk, mit kell tenni – csak ugye amíg rájöttem...
De most már megvan.
Most ilyen az xmodmap parancsom kimenete:
[root@Csiszilla:/usr]$ xmodmap
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Hyper_R (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_L (0x7d), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3 Hyper_R (0x42)
mod4 Super_L (0x7f), Hyper_L (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x71), ISO_Level3_Shift (0x7c)
Ebből a mod3 kezdetű sor úgy jött létre, hogy a $HOME/.xmodmaprc file-ben megkerestem azt a sort, ami úgy kezdődött, hogy
keycode 66 =
s ezt átírtam erre:
keycode 66 = Hyper_R NoSymbol Hyper_R
Most már lett tehát Hyper_R billentyűm, de meg kellett mondani a masinának, hogy ez egy „mod3”-nak tekintett módosítóbillentyű ezentúl! Emiatt most így néz ki a $HOME/indul fájlom:
!/usr/bin/env bash
xmodmap myxmodmap
xmodmap -e 'clear Lock'
xmodmap -e 'add Mod3 = Hyper_R'
xbindkeys
A legutolsó sor indítja az xbindkeys programot, hogy életbelépjenek a mindenféle speciális funkciók, amiket hozzárendelek egyes billentyűkombinációkhoz.
Ezek után lehet parancsokat hozzárendelnem a billentyűkombinációkhoz a $HOME/.xbindkeysrc fájlban, az új gombomra mint „mod3” hivatkozva (a módosítók nevei e fájlban szerencsére nem case-sensitivek). Íme az én .xbindkeysrc fájlom tartalma:
keystate_numlock = disable
keystate_capslock = disable
keystate_scrolllock = disable
#CapsLock+KurzorFel
"amixer set PCM 2+"
m:0x30 + c:111
#Mod3 + Up
# CapsLock+KurzorLe
"amixer set PCM 2-"
m:0x30 + c:116
#Mod3 + Down
# CapsLock+kurzorjobbra
"amixer set Master 5+"
m:0x30 + c:114
# CapsLock+kurzorbalra
"amixer set Master 5-"
m:0x30 + c:113
#MOC progi terminalban (CapsLock+2)
"urxvt --background black --foreground green -g 1024x768 -e mocp -T viola_theme"
mod3 + c:11
#MOC progi terminalban (AltGr+l)
"urxvt --background black --foreground green -g 1024x768 -e mocp -T viola_theme"
mod5 + l
#LibreOffice (CapsLock+w)
"/System/Links/Executables/swriter"
mod3 + w
# Terminalemulator
"urxvt --background black --foreground green -g 1024X768"
Mod3 + a
# Terminalemulator
"xterm -bg black -fg green"
Mod3 + x
# Kepernyovedo (CapsLock + s)
"sleep 2 ; xset dpms force off"
Mod3 + s
# Play/Pause (CapsLock+Tab)
"mocp -G"
Mod3 + c:23
# Previous (CapsLock+0)
"mocp -r"
Mod3 + 0
# Next (CapsLock+1)
"mocp -f"
Mod3 + 1
"xbindkeys_show"
control+shift + x
# CapsLock+PrintScreen
"import -window root `date +%y%m%d%H%M%S`.png "
m:0x30 + c:107
# PrintScreen
"import -window root `date +%y%m%d%H%M%S`.png "
c:107
#rendszermonitor (CapsLock+m)
"conky"
Mod3 + c:58
#rendszermonitor lelovese (Shift+CapsLock+m)
"killall conky"
Shift+Mod3 + c:58
# Firefox (CapsLock+f)
"/Programs/Firefox/Current/bin/firefox"
Mod3 + f
# Opera (CapsLock+o)
"opera"
Mod3 + o
#ugras a moc-cal epp jatszott zene elejere (CapsLock + q)
"/Programs/Szkriptjeim/Current/bin/MocZeneEleje"
Mod3 + q
# (CapsLock+hosszu i) ugras a moc-cal epp jatszott zeneben vissza 5 masodpercet
"mocp -k -5"
Mod3 + c:94
# (CapsLock+y) ugras a moc-cal epp jatszott zeneben elore 5 masodpercet
"mocp -k 5"
Mod3 + c:52
# CapsLock + pont = kozepso egergomb emulacioja
#"xdotool click 2"
# Mod3 + c:60
# AltGr + m = kozepso egergomb emulacioja
"xdotool click 2"
Mod5 + m
Eddig az .xbindkeysrc fájl tartalma. A MocZeneEleje szkript (amire itt hivatkozás történt) tartalma ez:
#!/bin/bash
mocp -k -`mocp -i | grep CurrentSec: | sed -e 's/CurrentSec: //'`
Megjegyzendő, hogy az "indul" nevű fájl NEVE bármi lehet, csak az a lényeg, hogy adj rá futtathatósági jogokat, különben nem fog lefutni neked az induláskor...
Most már boldog vagyok. Van egy saját, abszolút külön módosítóbillentyűm, amire egyáltalán semmi progi nem számít, jól elérhető helyen, s azt kötök rá, amit csak akarok!