A billentyűzetkiosztás kibővítése Linux rendszeren. Új, magyar billentyűzetkiosztás-változatok létrehozása.
A különböző billentyűzetkiosztások elrendezése igen változatos. Logikusan gondolkodva kézenfekvő lenne, hogy az egyes nemzetek által használt szimbólumok gyakorisága határozza meg. A valóság sokkal inkább történeti okok felől közelíthető meg. 1867-ben, Christopher Sholes az első Remington írógép megalkotója a kezdetleges mechanika, a betűket lecsapó lengőkarok összeakadása miatt kénytelen volt a leggyakrabban használt betűket egymástól távolabbra helyezni. Így alakult ki az angolban használatos „QWERTY” sorrend. A magyar billentyűzet kiosztás, az angolhoz képest felcseréli a „z” és „y” betűket, mint ahogy a német is. Az első írógépek német közvetítéssel kerültek Magyarországra.
Kevésnek bizonyult, hogy August Dvorak 1936-ban kidolgozta az angol nyelv hanggyakoriság-eloszlásának alapján a lehető legkönnyebben használható megoldást. A személyi számítógépek elterjedésének időszakában, a billentyűzetkiosztás optimálisabb átrendezése megoldható lett volna, de addigra már kialakult egyfajta szabványosság, melyet nem lehetett figyelmen kívül hagyni. A mai szabványos billentyűzet formája a 90-es években alakult ki, de léteznek speciális billentyűzetek: matematikai, gazdasági, programozási, multimédia, internet célokra is. Saját processzora billentyű-leütéskor egy ún. „scan-kódot (azonosító jel)” küld a gép processzorának amely programon keresztül feldolgozza a hozzá érkező jelet, ennek következtében adódik, hogy az egyes billentyűkhöz tartozó szimbólumok, parancsok helyét gyakorlatilag bizonyos megkötések mellett, tetszés szerint szabadon meg lehet változtatni.
A magyar billentyűzetkiosztás a mai napig nem csak a speciálisabb igényeket nem tudja kielégíteni, de az alapvető magyar helyesírás és központozás szabályait sem. A gondolatjel (–), a három pont (…), a magyar idézőjel páros („ ”), a másodlagos magyar idézőjel páros (» «) csak karaktertáblán keresztül beszúrással érhető el, míg más szimbólumok ismétlődnek (e, E, <, >, í, Í, §, N, Ł, Đ, &, ÷, °), továbbá megtalálhatóak olyanok, melyek a legkevésbé szükségesek a magyar nyelvben (ł, Ł, ŧ, Ŧ, ø, Ø, þ, Þ, đ, Đ, Ŋ, ħ, Ħ).
Pozitívumnak lehetne tekinteni, hogy egyes nyelvek speciális betűi a halott billentyűk kombinálásával (mint repülő ékezet + karakter) elérhetőek, azonban kényelmetlen használata mellett a számítógépes szövegfeldolgozást is ellehetetleníti. Negatívum, hogy az angol billentyűzettől eltérően néhány programozásban használatos és más szimbólum indokolatlanul más helyre került (<, >, [, ], {, }).
Az operációs rendszerek támogatottsága a magyar billentyűzetkiosztásra vonatkozóan, gyakorlatilag olyan változatokra korlátozódik, mint a 101 és 102 gombos QWERTZ, vagy QWERTY, valamint mindezek a halott billentyűs és halott billentyűk nélküli változatai. Bravúrosan nevetséges, mindezek további kombinálása a numerikus részen ponttal vagy vesszővel támogatott változata. Lehetne firtatni, hogy mindez kiket terhel, de sokkal időszerűbb lenne egy elfogadható igényesebb megoldás a hardver gyártók és operációs rendszer gyártók részéről!
A számítógépes billentyűzeteken egyes billentyűket különféle funkciókra, célokra helyeztek el, melyek szabványosan kezelik az operációs rendszer működését, a használt alkalmazások funkcióit. Többé-kevésbé egyezményesen elfogadott helyük és funkciójuk van. Megváltoztatásuk lehetséges, de kaotikus bonyodalmat okozna.
A felső részben található funkcióbillentyűket (F1 – F12), esetleg más billentyűkkel kombinálva, a különböző alkalmazások hasonló parancsok végrehajtására használják (F1 – súgó megjelenítése, Alt + F4 – ablak bezárása).
Egyes billentyűknek a szövegszerkesztésben is kiemelkedő szerepe van, ilyenek a Tab (bekezdés), Shift (nagybetűk és számok elérése), Caps Lock (váltás nagy betűre), Backspace (visszatörlés), Enter (soremelés), nyilak, Home, End, Page Up, Page Down (kurzormozgatás), Insert (kijelölés), Delete (törlés).
A Ctrl, Alt, AltGr billentyűknek más billentyűkkel kombinálva különféle parancsok kiadására (Ctrl + C – másolás, Ctrl + V – beillesztés) szolgálhatnak, más esetekben módosító szerepet tölthetnek be, speciális karakterek beírását teszik lehetővé (magyar kiosztáson az AltGr + U az € jel elérése).
Az alábbi megoldás tesztelése Ubuntu Linux 10.04 kiadásán
történt. (Windows operációs rendszerre, íme a Microsoft saját megoldása.)
Linux operációs rendszeren a billentyűzetkiosztás kibővítésére több
lehetőség kínálkozik. A feladat az lenne, hogy a billentyűzet
kiosztásáért felelős fájlokat a lehető legkisebb mértékben kelljen
módosítani, oly módon, hogy adott esetben legyen lehetséges az eredeti
állapot egyszerű visszaállítása. Ezeket a fájlokat a „/usr/share/X11/xkb”
könyvtár tartalmazza. Itt mindössze két fájl kerül csekély mértékben
módosításra, nevezetesen a „/usr/share/X11/xkb/symbols/hu” és a
„/usr/share/X11/xkb/rules/evdev.xml”, valamint egy teljesen új
fájl létrehozása: „/usr/share/X11/xkb/symbols/hu_extend". A
feladat befejeztével, az operációs rendszer billentyűzet beállítójában
megmarad az eredeti magyar kiosztás minden változata, valamint a munka
eredményeként két újabbat is ki lehet majd választani.
gedit /usr/share/X11/xkb/symbols/hu gedit /usr/share/X11/xkb/symbols/latin gedit /usr/share/X11/xkb/symbols/keypad
sudo gedit /usr/share/X11/xkb/symbols/hu_extendFeltöltés a következő tartalommal:
default partial
xkb_symbols "basic" {
// Equal to standard Hungarian "qwertz" layout
include "level3(ralt_switch)"
// "Alpha" section
key <TLDE> { [ 0, section, notsign, notsign ] }; // 0 § ¬ ¬ code 49
key <AE01> { [ 1, apostrophe, asciitilde, dead_tilde ] }; // 1 ' ~ ~ code 10
key <AE02> { [ 2, quotedbl, dead_caron, caron ] }; // 2 " ˇ ˇ code 11
key <AE03> { [ 3, plus, asciicircum, dead_circumflex ] }; // 3 + ^ ^ code 12
key <AE04> { [ 4, exclam, dead_breve, breve ] }; // 4 ! ˘ ˘ code 13
key <AE05> { [ 5, percent, dead_abovering, degree ] }; // 5 % ° ° code 14
key <AE06> { [ 6, slash, dead_ogonek, ogonek ] }; // 6 / ˛ ˛ code 15
key <AE07> { [ 7, equal, grave, dead_grave ] }; // 7 = ` ` code 16
key <AE08> { [ 8, parenleft, dead_abovedot, abovedot ] }; // 8 ( ˙ ˙ code 17
key <AE09> { [ 9, parenright, dead_acute, acute ] }; // 9 ) ´ ' code 18
key <AE10> { [ odiaeresis, Odiaeresis, dead_doubleacute, doubleacute ] }; // ö Ö ˝ ˝ code 19
key <AE11> { [ udiaeresis, Udiaeresis, dead_diaeresis, diaeresis ] }; // ü Ü ¨ " code 20
key <AE12> { [ oacute, Oacute, dead_cedilla, cedilla ] }; // ó Ó ¸ ¸ code 21
key <BKSL> { [ udoubleacute, Udoubleacute, currency, breve ] }; // ű Ű ¤ ˘ code 51
key <AD01> { [ q, Q, backslash, Greek_OMEGA ] }; // q Q \ Ω code 24
key <AD02> { [ w, W, bar, Lstroke ] }; // w W | Ł code 25
key <AD03> { [ e, E, e, E ] }; // e E e E code 26
key <AD04> { [ r, R, paragraph, registered ] }; // r R ¶ ® code 27
key <AD05> { [ t, T, tslash, Tslash ] }; // t T ŧ Ŧ code 28
key <AD06> { [ z, Z, leftarrow, yen ] }; // z Z ← ¥ code 29
key <AD07> { [ u, U, EuroSign, uparrow ] }; // u U € ↑ code 30
key <AD08> { [ i, I, Iacute, iacute ] }; // i I Í í code 31
key <AD09> { [ o, O, oslash, Ooblique ] }; // o O ø Ø code 32
key <AD10> { [ p, P, thorn, THORN ] }; // p P þ Þ code 33
key <AD11> { [ odoubleacute, Odoubleacute, division, dead_abovering ] }; // ő Ő ÷ ° code 34
key <AD12> { [ uacute, Uacute, multiply, dead_macron ] }; // ú Ú × ¯ code 35
key <AC01> { [ a, A, adiaeresis, Adiaeresis ] }; // a A ä Ä code 38
key <AC02> { [ s, S, dstroke, section ] }; // s S đ § code 39
key <AC03> { [ d, D, Dstroke, ETH ] }; // d D Đ Ð code 40
key <AC04> { [ f, F, bracketleft, ordfeminine ] }; // f F [ ª code 41
key <AC05> { [ g, G, bracketright, ENG ] }; // g G ] Ŋ code 42
key <AC06> { [ h, H, hstroke, Hstroke ] }; // h H ħ Ħ code 43
key <AC07> { [ j, J, iacute, Iacute ] }; // j J í Í code 44
key <AC08> { [ k, K, lstroke, ampersand ] }; // k K ł & code 45
key <AC09> { [ l, L, Lstroke, Lstroke ] }; // l L Ł Ł code 46
key <AC10> { [ eacute, Eacute, dollar, cent ] }; // é É $ ¢ code 47
key <AC11> { [ aacute, Aacute, ssharp, dead_caron ] }; // á Á ß ˇ code 48
key <LSGT> { [ iacute, Iacute, less, greater ] }; // í Í < > code 94
key <AB01> { [ y, Y, greater, less ] }; // y Y > < code 52
key <AB02> { [ x, X, numbersign, greater ] }; // x X # > code 53
key <AB03> { [ c, C, ampersand, copyright ] }; // c C & © code 54
key <AB04> { [ v, V, at, leftsinglequotemark ] }; // v V @ ‘ code 55
key <AB05> { [ b, B, braceleft, rightsinglequotemark] }; // b B { ’ code 56
key <AB06> { [ n, N, braceright, N ] }; // n N } N code 57
key <AB07> { [ m, M, less, masculine ] }; // m M < º code 58
key <AB08> { [ comma, question, semicolon, multiply ] }; // , ? ; × code 59
key <AB09> { [ period, colon, greater, division ] }; // . : > ÷ code 60
key <AB10> { [ minus, underscore, asterisk, dead_abovedot ] }; // - _ * ˙ code 61
// "Keypad" section
key <KPDL> { [ KP_Delete, comma, comma ] }; // , del , code 91
};
El is lehet menteni, viszont a fájl nyitva marad további
szerkesztésre, de az eddig szerkesztett részben semmilyen további
változtatást nem kell végrehajtani. Az egyes billentyűk egyezményes
elnevezése.partial
xkb_symbols "reorganized" {
// The standard Hungarian "qwertz" layout modified
include "hu_extend"
// "Alpha" section
// "AExx" (second) row
// Dead keys on third column, except "dead_tilde"
// Added some matematical symbols on fourth column
// Spanish reverse exclam
key <TLDE> { [ 0, section, dead_macron, notsign ] }; // 0 § ¯ ¬ code 49
key <AE01> { [ 1, apostrophe, asciitilde, dead_tilde ] }; // 1 ' ~ ~ code 10
key <AE02> { [ 2, quotedbl, dead_caron, U222A ] }; // 2 " ˇ ∪ code 11
key <AE03> { [ 3, plus, dead_circumflex, U2229 ] }; // 3 + ^ ∩ code 12
key <AE04> { [ 4, exclam, dead_breve, exclamdown ] }; // 4 ! ˘ ¡ code 13
key <AE05> { [ 5, percent, dead_abovering, U2030 ] }; // 5 % ° ‰ code 14
key <AE06> { [ 6, slash, dead_ogonek, U2261 ] }; // 6 / ˛ ≡ code 15
key <AE07> { [ 7, equal, dead_grave, U2260 ] }; // 7 = ` ≠ code 16
key <AE08> { [ 8, parenleft, dead_abovedot, U22DC ] }; // 8 ( ˙ ⋜ code 17
key <AE09> { [ 9, parenright, dead_acute, U22DD ] }; // 9 ) ´ ⋝ code 18
key <AE10> { [ odiaeresis, Odiaeresis, dead_doubleacute, U2033 ] }; // ö Ö ˝ ″ code 19
key <AE11> { [ udiaeresis, Udiaeresis, dead_diaeresis, U2032 ] }; // ü Ü ¨ ′ code 20
key <AE12> { [ oacute, Oacute, dead_cedilla, U203E ] }; // ó Ó ¸ ‾ code 21
// Added some symbols where not written on keyboard
// Removed the repeated symbols
// Some symbols of the Hungarian spelling and of the general text is important
// Spanish reverse question
key <AD02> { [ w, W, bar, U03C9 ] }; // w W | ω code 25
key <AD03> { [ e, E, guillemotright, U03B5 ] }; // e E » ε code 26
key <AD05> { [ t, T, U2122, U2121 ] }; // t T ™ ℡ code 28
key <AD06> { [ z, Z, yen, U2048 ] }; // z Z ¥ ⁈ code 29
key <AD07> { [ u, U, EuroSign, U2049 ] }; // u U € ⁉ code 30
key <AD08> { [ i, I, guillemotleft, plusminus ] }; // i I « ± code 31
key <AD10> { [ p, P, U2103, U2109 ] }; // p P ℃ ℉ code 33
key <AD11> { [ odoubleacute, Odoubleacute, division, degree ] }; // ő Ő ÷ ° code 34
key <AD12> { [ uacute, Uacute, multiply, U23DA ] }; // ú Ú × ⏚ code 35
key <AC02> { [ s, S, dstroke, U2211 ] }; // s S đ ∑ code 39
key <AC03> { [ d, D, Dstroke, U2300 ] }; // d D Đ ⌀ code 40
key <AC04> { [ f, F, bracketleft, U2640 ] }; // f F [ ♀ code 41
key <AC05> { [ g, G, bracketright, sterling ] }; // g G ] £ code 42
key <AC06> { [ h, H, U201E, U2019 ] }; // h H „ ’ code 43
key <AC07> { [ j, J, U201D, U2018 ] }; // j J ” ‘ code 44
key <AC08> { [ k, K, lstroke, U03F0 ] }; // k K ł ϰ code 45
key <AC09> { [ l, L, Lstroke, U20A4 ] }; // l L Ł ₤ code 46
key <AC11> { [ aacute, Aacute, U00DF, U1E9E ] }; // á Á ß ẞ code 48
key <LSGT> { [ iacute, Iacute, less, squareroot ] }; // í Í < √ code 94
key <AB01> { [ y, Y, greater, U221E ] }; // y Y > ∞ code 52
key <AB02> { [ x, X, numbersign, U03C0 ] }; // x X # π code 53
key <AB06> { [ n, N, braceright, mu ] }; // n N } µ code 57
key <AB07> { [ m, M, endash, U2642 ] }; // m M – ♂ code 58
key <AB08> { [ comma, question, semicolon, questiondown ] }; // , ? ; ¿ code 59
key <AB09> { [ period, colon, ellipsis, division ] }; // . : … ÷ code 60
key <AB10> { [ minus, underscore, asterisk, U0304 ] }; // - _ * ̄ code 61
// "Keypad" section
// Added arrows on third and fourth column
// Decimal sign on Delete key (third and fourth column)
key <KP7> { [ KP_Home, KP_7, U21D6, U2196 ] }; // 7 home ↖ ⇖ code 79
key <KP8> { [ KP_Up, KP_8, U21D1, U2191 ] }; // 8 up ↑ ⇑ code 80
key <KP9> { [ KP_Prior, KP_9, U21D7, U2197 ] }; // 9 prior ↗ ⇗ code 81
key <KP4> { [ KP_Left, KP_4, U21D0, U2190 ] }; // 4 left ← ⇐ code 83
key <KP5> { [ KP_Begin, KP_5, U21D4, U2194 ] }; // 5 begin ↔ ⇔ code 84
key <KP6> { [ KP_Right, KP_6, U21D2, U2192 ] }; // 6 right → ⇒ code 85
key <KP1> { [ KP_End, KP_1, U21D9, U2199 ] }; // 1 end ↙ ⇙ code 87
key <KP2> { [ KP_Down, KP_2, U21D3, U2193 ] }; // 2 down ↓ ⇓ code 88
key <KP3> { [ KP_Next, KP_3, U21D8, U2198 ] }; // 3 next ↘ ⇘ code 89
key <KP0> { [ KP_Insert, KP_0, U21D5, U2195 ] }; // 0 insert ↕ ⇕ code 90
key <KPDL> { [ KP_Delete, comma, KP_Decimal, KP_Decimal ] }; // , del . . code 91
// Added some symbols on second, third and fourth column
key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
key <KPDV> { [ U22A2, KP_Divide, U2225, U2226 ] }; // / ⊢ ∥ ∦ code 106
key <KPMU> { [ U22A3, KP_Multiply, U2672, U267B ] }; // * ⊣ ♲ ♻ code 63
key <KPSU> { [ U22A4, KP_Subtract, U2213, U262E ] }; // - ⊤ ∓ ☮ code 82
key <KPAD> { [ U22A5, KP_Add, U27C2, U22B9 ] }; // + ⊥ ⟂ ⊹ code 86
};
Ebben a részben eltávolításra kerültek az ismétlődő szimbólumok,
beillesztésre került néhány hiányzó központozási jel, matematikai jelek
és egyebek, valamint a numerikus részen nyilak szimbólumai.
A halott billentyűk
átcsoportosítása a „dead_tilde” kivételével. Ha valakinek más az
elképzelése, az UTF–8 kódok ismeretében e második részt tetszés szerint
szabadon módosíthatja. A fájl kész, el lehet menteni. A
„/usr/share/X11/xkb/symbols/hu”, „/usr/share/X11/xkb/symbols/latin” és
„/usr/share/X11/xkb/symbols/keypad” fájlokat is be lehet zárni. A
teljesen kész hu_extend fájl
megtekintése, akár jegyzetekkel együtt el is lehet menteni. Karakterek elhelyezkedésének
megtekintése.sudo cp /usr/share/X11/xkb/symbols/hu /usr/share/X11/xkb/symbols/hu.backup sudo gedit /usr/share/X11/xkb/symbols/huA következő sorokat kell illeszteni a fájl elejére, valahova a „partial” részek közé:
// Extended layout
partial
xkb_symbols "extended" {
include "hu_extend"
};
// Extended reorganized
partial
xkb_symbols "reorganized" {
include "hu_extend(reorganized)"
};Ez a fájl is kész, el lehet menteni, de még mindig hátra van egy
utolsó fájl szerkesztése.sudo cp /usr/share/X11/xkb/rules/evdev.xml /usr/share/X11/xkb/rules/evdev.xml.backup sudo gedit /usr/share/X11/xkb/rules/evdev.xmlKeressük meg benne a "<shortDescription>Hun</shortDescription>" karaktersorozatot, ezen belül a "<variantList>" tömbbe kell illeszteni a következő sorokat, vigyázva arra, hogy a meglévő „<variant>…</variant>” tömbök ne legyenek megtörve:
<variant> <configItem> <name>extended</name> <description>alap (base)</description> </configItem> </variant> <variant> <configItem> <name>reorganized</name> <description>plusz</description> </configItem> </variant>Végre el lehet menteni ezt az utolsó fájlt is és ki is lehetne próbálni, de a grafikus felületért felelős Xserver még mindig nem tudja alkalmazni.
sudo rm /var/lib/xkb/*
Alkalmazás: Rendszer →
Beállítások → Billentyűzet → Kiosztások → Hozzáadás → Magyarország.
A változatoknál immár kiválasztható a Magyarország alap (base),
valamint Magyarország plusz. Az új kiosztást innen ki is lehet
nyomtatni.Munkahelyen, vagy akár otthon is, amikor többen használnak egy gépet, könnyen konfliktus helyzet is adódhat, ha valamelyik felhasználó kedve szerint garázdálkodna a billentyűzetkiosztások megváltoztatásával. Az okok magától érthetőek, ami miatt a rendszergazda nem szívesen engedi, hogy valaki kedvére átszerkeszthesse a rendszerbeállító állományokat. Szerencsére ebben az esetben is van lehetőség saját billentyűzetkiosztás beállítására. Erre alkalmas az xmodmap segédeszköz. Az elkészített konfigurációs fájl saját „/home” könyvtárba lehet menteni, hatása egyszerű törléssel megszüntethető.
xmodmap -pke > xmodmap.backup
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/key = \1\tsymbol = \2/p'Ez a parancs megmutatja az egyes billentyűkhöz tartozó numerikus kódot, amelyhez tetszés szerinti szimbólum, vagy parancs rendelhető.
cp xmodmap.backup xmodmap.txtSzerkesszük az „xmodmap.txt" fájlt, ha nem ismerjük az egyes szimbólumok elnevezését, teljesen megfelel a karaktertáblából kikeresett szimbólum UTF–8 kódja, pl.: „℃” = „U2103”.
xmodmap xmodmap.txtA fájlnak bármilyen ASCII karaktereket tartalmazó neve lehet, pl.: xmod_hu_extend, amely betöltése után, ugyanaz az eredmény érhető el, mint a fentebb tárgyalt korábbi megoldás során. A rendszer felismeri a kiterjesztés nélküli fájlokat is, egyetlen lényegi dolog, hogy olyan nevet adjunk, amely könnyen emlékeztet funkciójára. A véletlen törlés elkerülésére érdemes ponttal kezdeni az elnevezést, így a fájl rejtett lesz. Más-más néven több beállító fájl is készíthető, viszont semmilyen hatást nem gyakorol a rendszer billentyűzet választójára. Első bejelentkezés után a rendszer felismeri az elmentett állományokat, megkérdezi melyeket töltse be.
Az operációs rendszer elsődleges feladata, megteremteni a kapcsolatot a felhasználó és számítógép között. Ellenőrzés alatt tartani ez utóbbi összetevőit, megteremteni a kapcsolatot az egyes beviteli, kimeneti eszközökkel. A…
Legyünk tisztában a jogi és technikai feltételekkel, majd jöhet a telepítés. A kézikönyvvel ellentétben, ez a művelet kb. 3 órát vesz igénybe, beleértve a minimálisan kötelező alapbeállításokat. Győződjünk meg, gépünk…
A Linux disztribúciók sokaságából nem biztos, hogy elsőre sikerül kiválasztani a számunkra megfelelőt. A magyar fejlesztésű Linux disztribúciók az utóbbi évtized folyamán, a nagyobb összegű csúszópénzeknek hódoló illetékes…
Az utóbbi időben a számítástechnika ipara nagyon sok olyan kütyüvel árasztotta el a piacot, melyek egy-egy külön szegmensre próbálnak betörni, meggyőzve a fogyasztókat, hogy portékájuk a korszak praktikusan használható modern…
A különböző Linux disztribúciók a Linux kernelre (rendszermagra) építették saját rendszereiket, beleintegrálva az általuk fontosnak tartott felhasználói programokat. A népszerűbbek 6–12 hónap kiadási-ciklusonként sokat,…
Az alapértelmezettként 2011-ben bevezetett Unity felhasználói felület már jó ideje frusztrálja a Ubuntu felhasználók táborát. Elégedetlenségüknek oka: a stabilitás hiánya, a munka hatékonyságának visszaesése és…