Saját billentyűzetkiosztás készítése

Két hobbym van: regények írása és a programozás. Sajnos, mindkettőhöz teljesen más billentyűkiosztás a jó. Ráadásul szeretem a wireless billentyűzetet, ami pedig kicsi, nincs rajta numerikus billentyűrész (keypad), ugyanis azon a részen egy tapipad van. Aminek nagyon örülök. Viszont így túl kevés a gomb. Már a szükséges karaktereknek is kevés, holott jó lenne pár extra módosítóbillentyű is, amik segítségével és az xbindkeys progival gyorsbillentyűkre köthetnék mindenféle gyakran használt progikat és funkciókat.

Tovább súlyosbítja a helyzetet, hogy amikor programozok, akkor nem elég az ha átváltok az angol billentyűkiosztásra, mert nagyon gyakori, hogy a programírás közben be kell gépelnem valami magyar szöveget, akár kommentbe, akár valami üzenet részeként, amit a program ír majd ki. Márpedig angol kiosztáson nincsenek magyar ékezetes betűk. Emellett az olyan gyakori karakterek is mint az írásjelek vagy műveleti jelek is teljesen másutt vannak a két kiosztásban.

Sokat töprengtem, hogyan oldjam meg a dolgot. A billentyűzetem olyan, hogy alapból angol feliratú. Ez a regényírás közben nem zavar annyiból, hogy rég megszoktam, hol vannak rajta a magyar ékezetes betűk. De zavar programozás közben, mert ott gyakran épp a mindenféle speciális karakterek kellenek (amik az írás közben szinte soha, például a []{}#$ jelek), s ezek teljesen máshol vannak a magyar kiosztás szerint, mint ahova fel vannak festve.

Szerintem hasonló gondokba mindenki belefutott, aki gyakran használja a számítógépet gyökeresen eltérő funkciókra, illetve különböző nyelvi környezetekben.

A megoldás:

Saját billentyűkiosztást kell tervezni. Ez két szempontból nehéz. Egyrészt, az X billentyűzet-értelmezése bizánci bonyolultságú! Cseppet se könnyű megérteni, mit csinál és miért. Többször nekifutottam, míg valamennyire megvilágosodtam benne. Gyakorlatilag most is van bőven mindenféle rejtélyes baromsága előttem. Lényegében egy zavaros, áttekinthetetlen katyvasz. Az egész másról se szól, minthogy a billentyűzet küld a gépnek minden billentyű esetén egy kódot, s ezt aztán az X össze-vissza indexelgeti többszörösen, mindenféle táblázatok alapján. Másrészt, az se könnyű hogy megtervezzük, melyik karakter hova kerüljön.

Leírom lépésről-lépésre, én mit alkottam és miért.
A legfontosabb amivel kezdenünk kell, a módosítóbillentyűk meghatározása. Az interneten erről rengeteg cikk van, DE GYAKORLATILAG MIND NEMHOGY HIÁNYOS, DE MÉG TÉVES IS!
    A dolog ugyanis úgy áll, hogy a módosítóbillentyűknek a nevét millióféleképpen variálhatjuk, és szinte bármelyik billentyűt kinevezhetjük módosítóbillentyűnek, sőt ugyanazon névvel több billentyűt is elláthatunk — ámde van sajnos pár fura név, ami csak látszatra ugyanolyan módosítóbillentyű mint a többi, valójában kitüntetett szerepe van! Ugyanis azalatt hogy „módosítóbillentyű”, sajnos 2 teljesen külön fogalmat szoktak összemosni.

1. Azon módosítóbillentyűk, melyek meghatározzák, hogy a billentyűzet által küldött billentyűkódból az X milyen karakterkódot állítson elő.
2. Azon módosítóbillentyűk, melyeket azért nevezünk így, mert önálló lenyomásuk nem eredményez külön karaktert, sőt más billentyűvel együtt lenyomva se módosítja azon billentyű karakter-jelentését, de a programok ezen módosítóbillentyű állapotát lekérdezhetik, s ettől függően csinálnak valamit.

Ha a fenti magyarázat netán zavaros volt, elárulom hogy a valóság ennél is rosszabb, mert az X a maga xmodmap táblázata alapján dönti el azt is, melyik billentyű melyik módosítóbillentyűként értelmeztetik…

Mindez abszolút érthetetlen konkrét példa nélkül, úgyhogy vágjunk is bele.

Mindenekelőtt ki kell választani, melyik már létező kiosztásból induljunk ki. Kétféle az ami szokásosan szóbajöhet, a magyar (nem magyar anyanyelvű olvasóim esetén az ő saját anyanyelvük szerinti) vagy az angol. Én a magyarból indultam ki, beállítottam rá a gépemet a

setxkbmap hu

paranccsal, majd e kiosztást kimentettem egy fájlba, eképp:

xmodmap -pke > modmap

A feladatunk ezután a következő lesz:
1. Szerkeszteni kell e modmap fájlt megfelelően
2. Létre kell hozni egy parancsfájlt a módosítóbillentyűk számára, ami az X minden indulásakor lefut.
3. A fenti 2. pont érdekében, meg azért hogy tudomást vegyen az új modmap fájlról, szerkeszteni kell a $HOME/.xinitrc fájlt.

Mint mondtam, mindenekelőtt tisztában kell lennünk a módosítóbillentyűk szerepével. Nos, ha belenézünk a modmap fájlba, ott efféle sorokat látunk:

keycode 17 = 8 parenleft multiply multiply asterisk asterisk dead_abovedot

Ha nálad nem pont ezek a fura szavak vannak a „keycode 17 =” kezdetű sorban, cseppet se aggódj! A lényeg, hogy mindegyik sor úgy kezdődik hogy keycode, s utána van egy szám, na ez az amit a billentyűzet küld a gépnek amikor lenyomjuk a gombot. Mondjuk még ez is csak elnagyolt fogalmazás, mert vannak trükkös progik amikkel még azt is külön lehet vizsgálni, a billentyű lenyomva van-e vagy már fel is engedték, stb… de ebbe most ne menjünk bele.

Na most látható, hogy minden keycodehoz pontosan 1 darab sor tartozik, amikben azonban változó számú paraméter szerepel. A paramétereket egymástól mindig szigorúan szóköz választja el, azaz olyan paraméter nincs, ami szóközt is tartalmazhatna. A paraméter vagy egy általunk jólismert karakter, vagy egyetlen számjegy, vagy valami fura név.

Egy sorban az egyenlőségjel után legfeljebb 8 különböző paraméter szerepelhet, többnyire azonban ennél jóval kevesebb van. Gyakori, hogy ugyanazon nevű paraméter több helyen is szerepel, akár egy soron belül, akár több sorban is itt-ott.

Amint mondtam, maximum 8 mező lehetséges egy sorban, azaz 8 paraméter. Mindegyik mező azt jelenti, ahhoz a billentyűzetkódhoz aminek a soráról épp szó van, milyen konkrét karakterkód rendeltetik, amennyiben a megfelelő billentyűt olyan módosítóbillentyűvel nyomták le, amely módosítóbillentyűt e mező reprezentál. Ezen mezők, pontosabban paraméter-pozíciók a következőket jelentik:

1. mező (ez természetesen a BALOLDALI első mezőt jelenti, azt ami a baloldali egyenlőségjel után közvetlenül van jobboldalt, azaz a mezők balról jobbra számozódnak!): Ide azon karakterkód kerül, mely akkor generáltatik, ha a megfelelő billentyűt bármiféle módosítóbillentyű nélkül, önmagában nyomjuk le.

2. mező: Ide az a kód kerül, ami a SHIFT-tel való lenyomáskor keletkezik.

3. mező: Ide az a kód kerül, ami akkor keletkezik, ha a billentyűt azzal a módosítóbillentyűvel együtt nyomjuk le, aminek a neve az, hogy Mode_switch. Nem hallottál még róla?! Na sebaj, majd kicsit később felhomályosítalak felőle…!

4. mező: Ide az a kód kerül, ami a gombnak a Mode_switch és a SHIFT együttes megnyomásával keletkezik.

5. mező: Az itteni kód akkor keletkezik, ha a gombot az úgynevezett ISO_Level3_Shift nevű módosítóbillentyűvel együtt nyomjuk meg. (De szép neve van, egyem a zuzáját annak a perverznek aki ezt elnevezte…)

6. mező: Az itteni kódot az ISO_Level3_Shift és a SHIFT együttes megnyomásával csiholhatjuk ki a billcsinkből.

Sajnos, a hetedik és nyolcadik mező kódjára nem tudtam rájönni, hogy az hogyan keletkezik. Gyötörtem a gépet órákon át, és eljutottam oda, hogy bizonyos roppant speciális beállításokkal el tudtam érni, hogy kiadja a NYOLCADIK mező kódját. A hetedikét azonban nem. És a nyolcadikat is csak úgy, hogy emiatt megváltozik az összes korábbi mező elérhetősége, azokat már más módosítóbillentyűkkel lehet ezután elérni. Illetve egy másfajta beállításnál elérhető az első, a második, a hetedik és nyolcadik mező kódja, de a közbeeső 3,4,5,6 mezőké nem. Fasza…

Szóval, úgy döntöttem, megelégszem az első 6 mezővel, ez is jó sok variáció. Megjegyezném, e nem teljes eredmény nem okvetlenül azt jelenti hogy én vagyok az idióta, ugyanis ha valamit nem értettem nagyon félre, hivatalosan csak AZ ELSŐ 4 MEZŐ kódjának elérhetősége garantált minden hardweren illetve implementációban! Általában azért biztosított az ötödik és hatodik mező is, ezért is van az, hogy ha belenézel valami „gyári” xmodmap fájlba, akkor abban a második 2 mező gyakorlatilag az első két mező ismétlése, mert hátha az ökör felhasználó összecseréli a shiftet a másik módosítóbillentyűvel. A ritkábban használt többi karaktert meg az ötödik és hatodik oszlopba rakják, mert szinte biztos hogy az is létezik majd az adott hardware- és szoftverkörnyezetben. Ez azonban sajnos tényleg csak majdnem mindig van így, és nagy szívás lehet belőle, hogy egyes esetekben nem tudjuk kicsiholni a gépből az oda eldugott hosszú í betűt mondjuk… (amit szokásosan az AltGr-J alá rejtenek).

A hetedik és nyolcadik oszlop azonban már tényleg abszolút semennyire sem garantált. Arra jobb ha nem számítunk, kb olyan mintha nem is lenne.

Szóval, elégedjünk meg az első hattal. Látjuk, hogy itt három titokzatos billentyűt kell meghatároznunk, ezek a SHIFT, az ISO_Level3_Shift és a Mode_shift.

Na most ezek meghatározása az utóbbi kettő esetén úgy megy, hogy e fura neveket beírjuk a táblázatba valahová, olyan keycode sorba, amihez hozzá szeretnénk rendelni. Egyszerre több helyre is beírhatjuk őket, ezesetben többféleképp is elérhetjük az adott funkciót. A SHIFT esetében ez kissé bonyolultabb, annyiból, hogy abból nincs olyan hogy SHIFT, ezt csak én nevezem így, tehát nem azt kell beírni hogy SHIFT. Hanem ebből elvileg lehet kettőfajta is, melyek a Shift_L és Shift_R nevekre hallgatnak. Nem véletlenül, mert ezek szokásosan a baloldali illetve jobboldali Shift feliratú gombokhoz vannak rendelve. De te természetesen változtathatsz ezen, ha akarod.

Fontos tisztázni, hogy miként derítheted ki, billentyűzeted melyik gombjához miféle keycode tartozik! Ehhez neked az xbindkeys nevű progira van szükséged. Ezt el kell indítsd parancssorból, így:

xbindkeys -k

erre megjelenik egy fehér ablakocska, ekkor nyomd meg a téged érdeklő gombot, mire efféle üzenetet ír ki neked:

Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"NoCommand"
    m:0x2000 + c:108
    Mode_switch

A fenti üzenetet a jobboldali Alt gomb, más néven AltGr megnyomása után kaptam. Ebből téged a c:108 rész kell érdekeljen, ez jelenti azt, hogy e gombhoz tartozó mezőket a

keycode 108 =

kezdetű sorban kell meghatároznod.

E gombból úgy lesz egy Mode_switch nevű módosítóbillentyű, hogy a megfelelő keycode sorba beírjuk azt, hogy Mode_switch, legalábbis a legelső mezőbe okvetlenül. Oda muszáj. Őszinténszólva nem vagyok biztos benne, van-e bármi jelentősége annak, ha a többi mezőkbe is beírjuk; fene se tudja mit csinál a rendszer, hogyan értelmezi azt, ha egy módosítóbillentyűt más módosítóbillentyűvel együtt nyomunk le! A legtisztább ha vagy csak a legelső mezőbe írjuk bele, vagy mindegyikbe. Fontos tudni, hogy nem kötelező kitölteni a sor mind a nyolc mezőjét, a vége felé levőkből bárhányat el lehet hagyni. E téren hogy kifejezetten épp egy módosítóbillentyűt beírjunk-e egynél több mezőbe, bevallom nem merem magamat nagyon okosnak és az isteni bölcsesség tudorának feltüntetni, mert napok óta ezzel a billentyűkérdéssel kísérletezem, és olyan észtvesztő, meglepő, hülye logikátlanságokat tapasztaltam e téren a drága Xorg részéről, hogy bármiféle aljasságot is habozás nélkül elhiszek róla ezek után, az első szóra. Azaz, tartok tőle hogy e kérdés meglehetősen hardware- és implementációfüggő. (Erre való utalásokkal bőven találkoztam mindenféle leírásokban is amúgy). Ezalatt azt értem, hogy már maga az a tény is számít, egyrészt miféle gyártótól van a billentyűzeted, aztán az, melyik verziójú xorgot használod, sőt az is, hogy a linuxod, vagy legalábbis az X indulásakor annak xorg.conf fájljában – már ha van neki olyan egyáltalán az adott disztróban – mit mondasz neki, milyen típusú a billentyűzeted eredetileg, pld pc104, vagy ha épp hu akkor hány gombos, meg miféle „variant”, stb. Eszméletlen kavarások lehetségesek e dolgokból. Én tehát leírom hogy magam hogyan csináltam hogy nekem jó legyen, közreadom a megfelelő fájlokat is, de ne végy mérget rá hogy ez nálad istenbizony tutira jó lesz, lehet hogy kell majd vele kísérletezned. Én magam e leírást annak alapján készítettem, amit egy Logitech K400 típusú wireless billentyűzettel kísérleteztem ki.

Miután ezzel a Mode_switch-cel megvagyunk, hasonlóképp meg kell határoznunk, melyik gomb legyen az ISO_Level3_Shift módosítóbillentyű, valamint a Shift_L és Shift_R. Utóbbi kettőből bármelyiket el is hagyhatjuk, ha úgy döntünk, nekünk elég egyetlen shift gomb is.

Illik hogy meghatározzuk azt a két gombot is, melyek neve Control_L és Control_R. (Ezek ugye azok amik a billentyűzeteden általában Ctrl névvel vannak jelölve).

Na most, a táblázatban megadott mindenféle nevekből csoportokat képezhetünk, azaz egyes szimbólumoknak adhatunk közös neveket! Ez úgy megy, hogy ha én parancssorban kiadom az
xmodmap
nevű parancsot, akkor ezt írja ki nekem:

xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32)
lock
control     Control_L (0x25)
mod1        Alt_L (0x40),  Alt_L (0xcc)
mod2        Hyper_L (0x4d),  Hyper_L (0xb4),  Hyper_L (0xcf)
mod3        Super_R (0x3e),  Super_R (0x86)
mod4        Super_L (0x85),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x42),  ISO_Level3_Shift (0x5c)

E fenti kis lista első oszlopa felsorolja a rendszeremben használatos azon szimbólumokat, melyek úgynevezett „módosítóbillentyűk”-nek vannak tekintve, s utánuk fel van tüntetve, e szimbólumok mely konkrét, a keycode-sorokat tartalmazó táblázatban szereplő karakterkódokat jelentik. Például látható, hogy nálam van olyan módosítóbillentyű, melynek az a neve hogy „control”, s ehhez tartozik egy olyan kód melynek neve a keycode-táblázatban Control_L, és ott van zárójelben hogy ennek értéke (0x25). Ez egy hexadecimális szám, értéke decimálisan 2*16+5, azaz 32+5, azaz 37, tehát e Control_L billentyű a táblázat 37-es sorában lett meghatározva, az a gomb fogja ezt a controlkodást művelni, aminek a billentyűkódja 37.

Itt most csak ezt az egy billentyűt foglaltam bele abba a csoportba, aminek a neve az hogy „control”. Megtehettem volna hogy más billentyűt is kinevezek controlnak, de később ismertetendő okokból nekem elég egyetlen. Vannak más csoportok is, például olyan nevekkel hogy shift, lock, mod1, mod2, mod3, mod4, mod5. Ennél több sajnos nem lehetséges. És e csoportnevek is rögzítettek. Próbáltam trükközni, és definiálni mod6 nevű csoportot, de a rendszer hevesen tiltakozott azon nyomban, hogy mit képzelek én, nem úgy van ám az!

Na most ha már megvan a magunk xmodmapos táblázata, rendesen kitöltve a keycode kezdetű sorokat mindazzal a sok roppant okossággal amit beleálmodtunk, akkor jöhet e csoportok meghatározása, erre kell nekünk egy kis szkript. Legyen a neve mondjuk stílszerűen „modkeys”, és a tartalma az esetemben ez:

#!/bin/bash
xmodmap -e 'clear shift'
xmodmap -e 'clear Lock'
xmodmap -e 'clear control'
xmodmap -e 'clear mod1'
xmodmap -e 'clear mod2'
xmodmap -e 'clear mod3'
xmodmap -e 'clear mod4'
xmodmap -e 'clear mod5'
xmodmap -e 'add shift = Shift_L'
xmodmap -e 'add control = Control_L'
xmodmap -e 'add mod1 = Alt_L'
xmodmap -e 'add mod2 = Hyper_L'
xmodmap -e 'add mod3 = Super_R'
xmodmap -e 'add mod4 = Super_L'
xmodmap -e 'add mod5 = ISO_Level3_Shift'

Ez a következőt csinálja:

A „clear” szöveget tartalmazó sorok törlik a billentyűcsoportok esetlegesen meglevő korábbi definícióit. Majd utána az „add”-ot tartalmazó sorokban szépen sorra meghatározzuk, hogy mely csoportba mely nevű billentyűk tartozzanak. Minthogy a keycode sorokba a táblázatban ugyanazt a nevet többször is beírhattuk, ezért e fenti szkriptben egy név beírása – mondjuk a Super_L-é – egyszerre több konkrét gombot is belerakhat a megfelelő, jelen esetben a mod4 nevű csoportba.

Hagyományból egyes programok feltételezik, hogy a rendszerben létezik shift és control nevű módosítóbillentyűcsoport, sőt még olyan is hogy mod1, és ezen utóbbi mod1, ez okvetlenül azonos az Alt billentyűkkel.

Szemfüles Olvasóim biztos észrevették eddigre, hogy hiszen eszerint nekem csak egyetlen Shift és egyetlen Ctrl billentyűm van illetve lesz ami működik, miért jó nekem az hogy a többiről lemondok?

Azért, mert kevés a billcsimen a gomb. Nem engedhetem meg a luxust, hogy több fizikailag különböző gomb is ugyanazt a szoftveres funkciót lássa el, ez értelmetlen pazarlás. És tök felesleges is, mert jobbkezes vagyok, emiatt mindig úgy volt nálam hogy örökké csak a bal shiftet és bal ctrl-t használtam. Azaz a jobboldali efféle gomboknak simán definiálhatok más feladatot.

Most tehát ez úgy van nálam, hogy a rendszeremben a következő módosítóbillentyűk élnek:

shift = ez nálam a baloldali shift. Funkciója a szokásos.

control = ez is a baloldali Ctrl gomb, ennek is a megszokott a funkciója.

mod1 = ez a baloldali Alt gomb, ennek is a megszokott a funkciója.

A fenti 3 csoportot ugyanis jobb nem piszkálni, mert a mindenféle programok erősen számítanak rájuk. Itt tehát ezeknél csak annyit tettem, hogy mindegyik csoportból kiszedtem a jobboldali párjukat.

Most jönnek a nyalánkságok! Vannak ugyanis még nálam a következő csoportok:

mod2 = ez a keycode táblázatban a Hyper_L néven szerepel, és e nevet ahhoz a keycodehoz írtam be, melyet a wireless billentyűzetem tetején levő Home nevű gomb produkál, e gombra egy házacska van rajzolva. Ez természetesen nem azonos a megszokott „Home” gombbal, ami van minden billentyűzeten, semmi köze hozzá.

mod3 = Super_R — ez a jobboldali Shift feliratú gombra van mappelve nálam.

mod4 = Super_L — Na ez nálam a bal oldali Windows® gomb hogy egyem a lelkét… utálok ránézni is, szerencsére pár hónappal ezelőtt találtam (méregdrágán...) az Ebayen pingvines matricát rá való méretben, jó tartósat valami alumíniumszerű anyagból... Így most már nem fenyeget a veszély hogy véletlenül leokádom a gépemet ha a pillantásom arra a helyre vetődik. Hiába került sokba, úgy érzem megérte az árát, mert nem óhajtok a Micro$oft cég ingyenes reklámtáblája lenni a billentyűzetem által, pláne ha nem is használom az ő operációs rendszerüket!

mod5 = ISO_Level3_Shift. Na ez van nálam a CapsLock gombhoz hozzárendelve…

Mode_switch = Jobboldali Alt gomb, más néven AltGr.

Bár elvileg létezik olyan nevű csoport is hogy lock, de ahhoz nem rendeltem semmit, utálom ha megnyomok valamit aztán onnantól örökké nagybetűvel ír.

Kérlek gondolkozz most el e kiosztás nagyszerűségén! Tele vagyok jól használható, szabadon bütykölhető módosítóbillentyűkkel. A progik csak a shift, ctrl és alt gombokra számítanak, esetleg nagy ritkán a windowsrapingvinesre. A többit a magam kedve szerint használhatom. De az igazi nagy zsenialitás szerintem nem is ez e kiosztásban, hanem az, ami pedig első pillantásra talán nem is olyan szembeötlő! Ez pedig az, hogy nálam teljesen külön billentyűre került a Mode_switch és az ISO_Level3_Shift !

Ugyanis a legtöbbször az úgy van, hogy amint azt láthatod is szinte bármelyik eredeti xmodmapos fájlon, a harmadik és negyedik mező az elsőnek és másodiknak a megismétlése. Az ezutáni, ötödik és hatodik oszlopban vannak azok a karakterek, amiket szokásosan az AltGR, vagyis a jobboldali Alt lenyomásával érhetsz el. Ez amiatt érdekes és szomorú, mert mint e doksi legelején írtam, ezen ötödik és hatodik oszlop elvileg arra van, hogy ezeket az ISO_Level3_Shift lenyomásával érjük el! Vagyis ez azt jelenti, hogy szokásosan a billentyűkiosztások készítői ezen ISO_Level3_Shift szimbólumot mintegy egybemossák a Mode_switch szimbólummal, gyakorlatilag a Mode_switch látja el az ISO_Level3_Shift feladatkörét. (vagy a franc se tudja, de nem izgatom magamat emiatt. Nyilván számtalan módon elérhetik ennek megtrükközését). A lényeg, hogy ők csak látszatra használnak maguk is 6 oszlopot a táblázatból, gyakorlatilag csak 4 az amit ténylegesen használnak, hiszen az első kettővel azonos a harmadik és negyedik, és hát ez szerintem pocséklás.

Ahhoz hogy ez megváltozzék, kénytelen voltam e két szimbólumot, a Mode_switch-et és az ISO_Level3_Shift-et szigorúan különválasztani. Ennek nyilvánvalóan az a veszélye, hogy ha valami fura hardweren mégsem érhető el az ötödik és hatodik oszlop, akkor ráfaragtam. Ennek esélye azonban csekély, s akkor legfeljebb visszatérek a „szabványos” kiosztáshoz.

Persze hogy örömem ne legyen teljes, a drága X azért megköti a kezemet. (Hiába, Linux alatt sincs kolbászból a kerítés, itt se fenékig tejfel minden... legalábbis ha az embör gyermöke grafikus környezetben (is...) akar dolgozni...) Mert mi is az első logikus ötlet: ugye az, hogy a mod névkezdetű módosítóbillentyűket hagyjuk meg mindenféle extra funkcióra, s legyen egy külön billentyű ISO_Level3_Shift néven, ami majd előállítja nekünk a megfelelő karaktereket! Így eggyel több lehet a módosítóbillentyűnk!

Hát nem. Akármivel is próbálkoztam ennek érdekében, annak vége az lett, hogy a rendszerem a legváratlanabb hülyeségeket produkálta. Még olyat is akár, hogy az xmodmap esetén kiírt táblázatban nem is szerepelt módosítóbillentyűként egy billentyű, de attól még halálnyugodtan úgy működött. (Xorg bug lenne?) Vagy hogy azt gondolta a CapsLock, hogy ő ezentúl nem csak egy ISO_Level3_Shift gomb, de ellátja még a control gombok feladatát is, mert miért is ne. Hiába nem mondok neki ilyesmit, de ő jobban tudja, okosabb nálam. Szerinte az úgy a jó. Szóval ez a fura ISO_Level3_Shift micsoda úgy tűnik csak akkor müxi magát korrektül, ha egyben ki van nevezve valami mod-os módosítóbillentyűnek is.

Na most hogy melyik karaktert hova pakoljuk, mert ugye innen indult ki az egész. Hát kéremalássan, ugye nem véletlen indultam ki a magyar kiosztásból. Többnyire azt használom, de nekem belőle főként csak az ékezetes karakterek kellenek. Szóval az eredeti hu kiosztás az alap, ezt változtatjuk meg. Mégpedig a következőképp:

Marad minden betű a helyén ami az első és második mezőben szerepel a keycode sorokban. Ez azt jelenti hogy amit simán vagy shiftelve nyomunk le, nem változik, így ugyanúgy érhetjük el az összes kis- és nagybetűt. A J betű sorába, ami a keycode 44 sor, oda a harmadik mezőbe írjuk be hogy iacute, a negyedikbe meg hogy Iacute, különben nem lesz hosszú í és Í betűnk, ahol megszoktuk. Ne feledjük ugyanis hogy az AltGr most nem az ötödik és hatodik, hanem a harmadik és negyedik oszlopokért felelős! Célszerű ezen iacute és Iacute szavakat beírni az I betű harmadik és negyedik mezejébe is. A számjegyeket is ugyanúgy érhetjük el, és azon karaktereket is, melyek a magyar kiosztás szerint a számjegyek shiftelt megnyomására jelennek meg, s amik persze tök mások mint amik egy angol billcsi esetén e helyre fel vannak rajzolva. De ezt célszerű így hagyni, mert hátha megszoktuk ezek helyét már az eredeti magyar kiosztáson.

Na most jön a nagy okosság! Az ötödik és hatodik oszlopot ugye az ISO_Level3_Shift segítségével érhetjük el, az ötödiket e gomb, a hatodikat meg e gomb plusz a shift lenyomásával. Ezen ISO_Level3_Shift billentyű pedig jelen esetben nem más mint a CapsLock. Abszolút jól kézreáll, pláne egy jobbkezes embernek, aki a bal kezét használja a módosítóbillentyűk számára, s a jobbal gépel főleg. Én tehát azt tettem, hogy a megfelelő gombok soránál az ötödik mezőbe felvettem sorra azokat a karaktereket amik az angol billentyűzeten azon a gombon szerepelnek (a betűket nem, tehát az a-z karaktereket nem, mert minek), a hatodik oszlopba meg azokat, amik az angol billentyűzeten szintén e gombon szerepelnek de felül, amit ott tehát shifttel lehet elérni! Ez azt jelenti, hogy ha látom a billentyűzetemen (ami angol) hogy valami speciális karakter hova van rajzolva, azt simám el tudom érni, úgy, hogy ha alulra van rajzolva akkor a CapsLockkal nyomom meg, ha pedig felülre van rajzolva, akkor a Shift+CapsLockkal, s e kombináció könnyen lenyomható, akár még egyetlen ujjal is, mert közvetlenül egymás alatt van a CapsLock és a baloldali Shift. Legalábbis nálam a LenovoThinkPad T530-as laptop esetében, meg a Logitech K400-as wireless billentyűzeten. Ez messze sokkal könnyebb, mint mondjuk programírás közben váltogatni a billentyűzetkiosztást, vagy ha valami levelet írunk magyarul, akkor közben emlékezni kell rá hogy merre is van a kérdőjel vagy a felkiáltójel, vagy más akármi, mert csak abban az egyben lehetünk biztosak, hogy tutira nem ott van ahova fel van rajzolva (ha nem magyar a billentyűzetünk). Így most garantáltan minden speciális jel ott van, ahova fel van rajzolva, épp csak ezeket a CapsLock vagy a Shift + Caps­Lock segítségével érhetjük el.

Megjegyzendő, hogy legalább alul a pont és vessző karakterek ugyanott vannak az angol és magyar kiosztáson is egyaránt, így azokkal nincs gond.

Minthogy a számjegyek fölötti speckó jelek is „felülre” vannak rajzolva ugyebár, ezért ezeket is logikusan a Shift+CapsLockkal érhetjük el, be is vannak téve e helyre a táblázatba mert tiszteljük a logikát, de ugyanakkor belevettem ugyanezeket az ötödik oszlopba is, hogy shift nélkül, sima CapsLockkal is elérhetőek legyenek. Nem sok értelmét láttam ugyanis annak, hogy a sima CapsLockos nyomkodás ezen gombok esetében a számjegyeket eredményezze, mert azok oly gyakoriak, hogy azokat minden épeszű ember úgyis mindenféle módosítóbillentyű lenyomása nélkül akarja majd beütni, s így a számok fölötti jelekhez nem kell a shiftet is nyomkodni, elég egyszerűen magát a CapsLockot. E szimbólumok úgyis gyakoriak nagyon a programozásban.

Na most az eképp elkészített táblázatot mentsük el a $HOME könyvtárunkba .myxmodmap_hu néven, s készítsünk egy megfelelő .xinitrc fájlt, amiben szerepelnek a következő sorok:

setxkbmap hu
xmodmap $HOME/.myxmodmap_hu
modkeys
Keymap --

A setxkbmap hu sor amiatt kell, mert ha ezt nem adjuk ki, akkor általam ismeretlen okoknál fogva (valószínűleg valami olyasmi amit a legelején taglaltam, hogy az X nem tudja miféle hardwerre számítson, de ez csak tipp a részemről) a kiosztásunk hiányosan fog működni, azaz nem funkcionál majd jól a CapsLock mint mod5.

Az xmodmap-os sor tölti be a táblázatunkat, a modkeys pedig az a szkript amit korábban már fentebb közöltem, ami beállítja a megfelelő módosítóbillentyűket.

Hátravan még e titokzatos sor:

Keymap –

Nos ez egy kis szkript a részemről, aminek tartalma a következő:

#!/bin/bash
KEY="hu"
if [[ $1 == "--" ]] ; then
cp /_/P/Szkriptjeim/-/mysettings/aktkeymap.txt /Mount/RAM
exit
fi
if [[ $1 != "" ]] ; then
KEY=$1
fi
echo $KEY > /Mount/RAM/aktkeymap.txt
setxkbmap hu
xmodmap $HOME/.myxmodmap_$KEY
modkeys
exit

Mit is csinál ez? Elárulom, a benne megemlített aktkeymap.txt fájl tartalma mindössze ennyi:

hu

Nos e szkript ha a -- paraméterrel hívjuk meg, e fájlt átmásolja egy speckó könyvtárba, ami történetesen a ramdiszken található, de ez úgy különben nem igazán fontos. A lényeg hogy ha nem e -- paraméterrel hívjuk meg, akkor a paraméterét is beleírja e fájlba, és beállítja a $HOME könyvtárunk azon .myxmodmap fájljára a billentyűzetkiosztást, aminek a neve végén a kapott paraméter szerepel!
Ez amiatt lényeges, mert eddig elsunnyogtam azt a döntő, lényegi kérdést, mire is használom a jobboldali Ctrl billentyűmet. Nos, ezt kivettem a módosítóbillentyűk köréből, s elneveztem úgy, hogy F22. Ha ugyanis nem tudnád, azok az általad kívánt héber, arab, vietnámi, orosz vagy akármilyen más karakterek amiket be szeretnél tenni a billentyűzetkiosztásodba, azok milyen névre hallgatnak, mit írjál bele a magad xmodmap fájljába rájuk hivatkozandó, akkor keresd meg a rendszeredben a keysymdef.h fájlt, abban megtalálod. (Az Xproto vagy valami hasonló nevű progi-csomag része, ami pedig az X szerver része). Épp csak ott mindegyiknek a neve úgy kezdődik, hogy XK_, na neked a név ez után következő része kell.

Na és hát látom a keysymdef.h fájlban hogy elvileg van egy rakás további F-es funkcióbillentyű-szimbólum, nemcsak 12-ig mennek azok! Felhasználtam az F22 nevűt, s ezt tettem a jobboldali Ctrl helyére. Nekem eredetileg úgyis csak F12-ig mennek a funkcióbillentyűk, s nem is találkoztam olyan billentyűzettel, amin ennél több lett volna. Most van F22 is már nekem. Eképp e billentyűre hivatkozhatok az xbindkeys progival, s meg is tettem ezt. A magam $HOME/.xbindkeysrc fájljában szerepel e rész:

# saját hu keymap
"Keymap hu"
F22

# saját eo keymap
"Keymap eo"
Control + F22

Ez azt jelenti, hogy ha simán megnyomom ezen F22-nek kinevezett jobboldali Ctrl gombot, akkor átvált a $HOME/.myxmodmap_hu kiosztásra. Ha a (baloldali)Ctrl-lel együtt nyomom meg, akkor a $HOME/.myxmodmap_eo nevű kiosztásra vált át. Hasonlóképp még sok más kiosztást is definiálhatnék. Lehetne olyan amit rádefiniálok a következő kombinációkra:

mod1 + F22
mod2 + F22
mod3 + F22

stb, sőt ha telepítjük az xchainkeys progit is, na akkor aztán a lehetőségeink végtelenek…

Eképp tehát lehet több saját billentyűkiosztásunk is.

Az eo nevűt arra használom, hogy benne szerepelnek az eszperantó nyelv úgynevezett „kalapos” betűi is, melyeket az AltGr illetve Shift+AltGr segítségével érhetek el.

Mindez valójában csak amiatt történt hogy legyen mivel kipróbálnom, működik-e az elképzelésem a saját billentyűkiosztások közötti váltásról, sok értelme nincs, mert ugyanezen betűk simán elférnének ugyanezen helyeken a magyar (azaz hu-nak nevezett) kiosztásban is. Azonban annak aki sokat használ egyszerre több olyan nyelvet is, melyekben nagyon sok a magyarétól eltérő karakter szerepel, pld orosz, görög, héber, koreai, japán, arab, stb, annak számára e lehetőség kincset ér.

Na és amikor a Keymap szkript átvált a megfelelő xmodmap fájlra, eltárolja a beállított keymap nevének kódját. Ez arra jó, hogy valami okossággal ezt ki lehet jelezni folyamatosan a képernyő statusbarjára, hogy tudjuk mivel dolgozunk épp, ne kelljen találgatnunk. De ez egy másik cikk témája lesz majd.

Végezetül egy jó kis trükk: Nemcsak a speciális nevekkel adhatjuk meg a karaktereinket az xmodmap táblázatban is, hanem az UNICODE kódjukkal közvetlenül is, efféleképp:

keycode  27 = r R U003C1 U003A1

Ezek után azt hiszem semmiféle akadálya nem lehet annak, hogy mindenki megcsinálja a maga számára az ő szívének kedves billentyűzetkiosztást!
 

Hozzászólások

Hú ez nagyon masszív. Engem az a rész érdekelne leginkább, hogy mi a végeredmény. Hogy milyen kiosztást tartasz kényelmesnek, hatékonynak. Ezt így kicsit nehéz kinyerni a szövegből, ha a technikai rész első körben nem annyira érint.

kicsit off:

Amúgy nekem ami magyar gépelésnél tapasztalat, hogy valamiért a jobb kisujjra rengeteg ékezetes billenytű jut. Azt nehéz megtanulni. Néha azzal kísérletezek, hogy egyel arrébb viszem a kezem, és a k-ra rakom a jobb mutatót, nem lenne e jobb így. vagy esetleg a balt is egyel jobbra vinni. mert amúgy az a gond, hogy a bal kicsi mellett nincsenek ilyen plusz gombok, a caps locks meg a tab miatt. 

+1, én is szívesen vennék egy grafikus eredményt, hogy milyen kiosztást raktál össze!

Én is egyébként magyar gépeléshez, és programozáshoz váltogatok két kiosztás között, és már eléggé zavar, de lusta vagyok teljesen átszokni. Pedig magyaron is el lehet érni mindent, ami kell alt-gr-es kombinációkkal. A legtöbben így programoznak, akik akkor kezdték amikor már alap volt, hogy van magyar kiosztás.

A saját kiosztástól azért is félek, mert ha le kell ülnöm más gépe elé, akkor azonnal teljesen meg lennék lőve. Úgyhogy maradok a standardoknál.

Nos, ebben mindenféleképp igazad van: én is elismerem, ez a "saját kiosztás" dolog olyasmi, ami semmi esetre se ajánlható azoknak, akik gyakran kerülnek kontaktusba idegen lényekkel (ööö... akarommondani idegen gépekkel...)

Ez azoknak jó akik kizárólag otthon programoznak (vagy csinálnak akármit) a maguk gépén, vagy vihetik magukkal a masinájukat a munkahelyre. Nekik azonban nagyon hasznos, ebben mélyen hiszek.

Köszönöm az elismerést. A kisujjról amit írtál, teljesen igazad van. Mindazonáltal - ahogy a szövegből is kiderül - én nem változtattam alapból a magyar kiosztáson, mármint azon a részén ami fel van festve a (magyar) billentyűzetekre, a betűket illetően. A számokat illetően: azok is maradtak a helyükön. A számok fölötti meg különleges karakterek helye változott csak olyan értelemben, hogy azok ott vannak ahol az angol billentyűzeten lennének, de módosítóbillentyűvel érhetőek el, hogy miként az a postban részletesen leiratott.

A kérésedet értem, hogy szeretnél grafikus "segédletet" hozzá, de bevallom fogalmam sincs ezt hogy oldhatnám meg. Nem is nagyon tudom hova lehetne feltölteni valami ilyesmit, nincs accountom semmi képfeltöltő oldalon, lusta is vagyok ilyenre regelni mert mindig csak baj van hogy engedélyezzek cookiekat stb, meg igazoljam nem vagyok-e robot... De különben se oldana meg semmit az se ha lefényképezném a billentyűzetemet. Ugyanis semmi sincs ráírva vagy ráragasztva. Közönséges US billentyűzetnek látszik. Amint az is, hiszen amit fentebb írtam csak az X dolgaiba turkál bele. De épp ez a lényege az egésznek, hogy __nem_is_kell__ semmit se ráragasztgatnom a billcsire! Minden karakter ott van rajta ahová fel van festve, csak azt kell megjegyeznem hogy ha speciális karakterekhez akarok hozzáférni, akkor azokat a CapsLock vagy netán a Shift+CapsLock együttes segítsége árán (azokkal együtt lenyomva) érhetem el.

(Oké van még egypár extra feature is, de ez a leglényegesebb).

Nekem mindenesetre ez nagyon bevált, évek óta így használom.

Természetesen a fent leírt módszerrel teljesen egyéni kiosztásokat is csinálhatsz magadnak, olyasmiket amik akár gyökeresen eltérnek attól ami a billentyűzetre fel van festve, ez kizárólag azon műlik, mit írsz bele az .xmodmap fájlodba.

Amennyiben ez segítene valamit, ha van rá igény, hajlandó vagyok az én .xmodmap fájlomat bemásolni ide, az nem gond.

1. állat

2. kellene kép a billentyűzetről (hardware)

3. meg egy ábra, hogy ebből mi lett szoftveresen :)

Kérlek meg ne haragudj, nem gúnyból mondom de nem tudom mire célzol. Miért kéne egy kép a fizikai billentyűzetről? Az nem változott! Az egy közönséges Logitech K400 wireless billcsi. Én nem nyúltam hozzá a hardware-hoz. Nem is merném, istenőrizz, a forrasztópáka úgy áll a kezemben mint 80 éves aggszűz apáca kezében a ló micsodája! Én kizárólag szoftveres dolgokról írtam fentebb, a szoftver téren „nyomultam”!

Túlgondolod.

Elkerülte a figyelmem a "K400" a leírásodban és ezért voltam kíváncsi, hogy milyen (75/60/40%-os) billentyűzettel tolod. Van itt ilyen bőven körülöttem, tudom, milyen az. :)

Magyarázat: https://www.keyboardco.com/blog/index.php/2017/08/full-size-tkl-60-and-…

Fú, bocsi nem olvastam el végig. De elismerésem. :) Hogy is írták előttem? Ja igen, ez tényleg "masszív" :)

Amin viszont megakadt a szemem, hogy K400-ast használsz. Na most. Azon hogyan lehet kényelmesen gépelni? Én tudok tíz ujjal, nem nézem a kezem. De azon folyton melléütök, vagy nem bírom leütni, beakad, kettőt ütök, ezért inkább két ujjal pötyörészek rajta. De úgy is "fájdalmas". (Te meg regényt írsz vele :D Bakker ezért még nagyobb is a respect, ha tényleg azzal gépeltél le ennyi szöveget.)  Amúgy szeretem, meg minden, HTPC-hez kiváló, touchpad-ja jobb mint bármelyik laptopé. De a billentyűk...

(Volt valami filmben, vagy sorozatban, lehet valamelyik Warner-es DC-s sorozat volt az. A "hekker" úgy "hekkelt", hogy két monitor előtt ült, előtte két ilyen K400 (vagy talán a tesója a 410-es volt). Asszonnyal sírva röhögtünk. Mondta is feleségem, hogy kizárt, hogy azon valaki gépelni tud rendesen. Ráadásul kettőn, egyszerre.)

Nekem? Most pl egy IBM SK 8820-ast nyomkodok. A magas billentyűket szeretem. A laposabb, mint pl a Logitech K120 nem annyira tetszik. Otthon van egy ősrégi Logitech-em, nem tudom a pontos típusát, kb 15 éve vettem. A laptopok lapos billentyűzetét kifejezetten utálom, ott már nézni kell a kezemet, hol is van az ujjam.

Tudok ékezettel és ekezet nelkul is gepelni, fejben "váltok". Meglátásom szerint az ékezettel való gépelés kb 1/3-2/3 arányban terheli a jobb kezet, ekezet nelkul egalban van. Egy időben napi 100-150e leütést is sikerült produkálnom és folyton bedurrant a jobb alkarom. Ekkor figyeltem fel rá, hogy a jobb kezem mennyivel többet dolgozik és elkezdtem elhagyni az ékezeteket, amikor csak lehetett.

De egyébként nincs billentyűzet-fétisem, mindegy, hogy milyen típus, árkategória, kiosztás, vezetékes, vagy nélküli, csak lapos ne legyen :)

Igen, én a logitech K400-at használom. Rengeteg regényt begépeltem azon. Embere válogatja, kinek mi válik be. Nem vagyunk egyformák. Nincs azzal semmi baj ha neked más billcsi az ami beválik.

Én beszereztem egy Ultimate Hacking Keyboardot is (röviden UHK) egy olyan „kettétéphetős” fajtát. Nekem nem vált nbe egyelőre mert nincs hozzá tapipad, és az se jó nekem ha „kettétépem”. Pedig rengetegen dicsérik. Ez van. Különbözőek vagyunk.

Én használok saját kiosztást windowson és linuxon is, de ez még számomra is követhetetlen. Nálam amúgy annyi az egész, hogy egy rendes US kiosztás, de altgr-el elérhetőek a magyar karakterek a szokásos helyükön.

Hogy is hívták azt a Gobo-s srácot? Nemhogy ő tért vissza?

READY.
󠀠󠀠‎‏‏‎▓

Nincsenek benne "hibák", amiatt mert nekem ez így jól működik évek óta. De ha KIEGÉSZÍTENI akarod hasznos szakmai infókkal, azt örömmel fogadom. Például nagyon érdekelne, hogyan lehet elérni az xmodmap táblázat hetedik és nyolcadik oszlopába beleírt karaktereket, már ha ez lehetséges egyáltalán minden billentyűzettípusnál.

Kisbetűnek is megírtam már, a nyelvtannáciskodás hidegen hagy. Szakmai értelemben van valami hozzáfűzni valód a cikkhez? Nincs? Mert ha nincs akkor amit művelsz nem más mint digitális környezetszennyezés, a bolygó erőforrásainak pazarlása (még ha csekély mértékben is), mindenesetre nem vagy vele hasznára a világnak. De ezt nyilván te is tudod. Akkor viszont miért műveled? Mit élvezel a felesleges szószaporításon? A szánalmas kötekedésen? Mondd, tőled tényleg csak ennyi telik?

Figyelj már, most tényleg és komolyan, mert nem bántani akarlak. Ha ide jársz a HUP-ra akkor valamiféle értelemben informatikus kell legyél, vagy olyan valaki akit érdekel ez a terület. Eszerint kell legyen a fejedben valami ami talán értékesebb mint egy átlagember agyberendezése. Ezt az adottságot hasznos dologra is kamatoztathatnád. Olyasmire amivel anyagi javakat teremtesz magadnak, a családodnak, vagy valamit ingyen a Világ rendelkezésére bocsátasz, mint mondjuk egy opensource program amit te írsz, vagy akármi. Vagy belekezdesz valami nemes hobbyba: zenélsz például! Én nemrég ismerkedtem meg a didgeridoo nevű zeneszerszámmal véletlenül, addig azt hittem antitalentum vagyok a zenéléshez de kiderült hogy engem szinte e hangszerhez „teremtettek”! Rólad is kiderülhet ilyesmi. És ezt azért írom mert gondolkozz el kérlek azon, valami efféle mennyivel nemesebb tett volna, mint másokba belekötni mondvacsinált indokok alapján, vagy olyasmi miatt ami talán valóságos hiba abban amit a másik alkotott, mindazonáltal teljesen jelentéktelen, s ezzel magad is tisztában vagy!

Figyelj, én elhiszem hogy a trollkodásban, a szót szóra mondásban te gyakorlottabb vagy talán mint én, még az is lehet hogy szellemesebb is. Elképzelhető, hogy egy efféle vitasorozatban te le tudsz engem győzni, pláne mert ahogy magamat ismerem, idővel egyszerűen megunom és nem is válaszolok majd rá. Legrosszabb esetben persze nem kizárt hogy begurulok, írok valami rondát, erre megint bannolva leszek (bár jelenleg nem is vagyok dühös még rád, szóval ennek esélye kevés.) Bármelyik eset következzék is be, te elégedett lehetsz, gondolván hogy „na, győztem e kis hülye fölött” vagy ilyesmi.

Oké. De mondd, nem érzed az ilyesmit GYEREKESNEK?! Tőled csak ennyi telik? Olyan kicsi az önbizalmad hogy ilyen olcsó kis győzelmekre van szükséged ahhoz, hogy hízelegj a hiúságodnak?!

Tényleg nem vagy képes valami nemesebb dologra?!

Megint átolvastam az előző bejegyzésemet. Semmi hibát nem találtam benne, legfeljebb hogy egy szót "angol" és nem „magyar” idézőjelek közé tettem. Lehet, ismétlem LEHET ettől függetlenül hogy valamiféle egészen elvont, ritkán használatos akadémiai szabályzat szerint bele lehet magyarázni valami hibát, vagy van benne valami typo ami még most is elkerülte a figyelmemet. De most komolyan, érdemes ezzel az időt húzni, ezen rágózni?! Ez neked tényleg olyan FONTOS?!

Ha igen, sajnállak. Jó, tudom, most azt gondolod, hazudok, mert igenis bosszant amit művelsz, és ennek most te örülsz mert sikerült egy kissé megbántanod engem. Igen, kissé valóban bosszant amit művelsz, mert engem bosszant minden kicsinyesség, de ettől még nem vagyok dühös rád, hanem amellett hogy kissé bosszankodom, igenis sajnállak is ha te tényleg azon a szinten állsz hogy neked mások bántása okoz örömet, és nemesebb tettekben nem tudsz élvezetet találni.

Szia. Átfutottam a cikket, mert nekem is volt gondom a billentyűzettel, de itt egy másik irány.

Érdekes módon a Linuxnak két billentyűzet "motorja" van. Az egyik a terminálban működik, és más kódokat használ, mint amely az X-ben működik.
Azt sem árt tudomásul venni, hogy hiába a nagy bázis, a terminálos billentyűzettel hiába van beállítva, nem biztos hogy  megtudunk jeleníteni  mondjuk normális ékezetes ő ű betűket, vagy euro karaktert. Ez már inkább betűtípustól függ. S akkor még nem is említettem az elavult ISO8859-2 és UTF-8 kódolásokat.

Mindenesetre a terminálban használatos billentyűzet kiosztást sokkal könnyebb elkészíteni.
Billentyűzet kombinációkat is készíthetünk mely pl. különbséget tesz. A sima ALT+gomb, ALTGR+gomb, CTRL+ALTGR+gomb meg akár ezek kombinációja esetén is. Persze csak akkor ha definiáltuk őket.
Ezek a terminál billentyűzet kiosztások az én rendszeremben pl. az /usr/lib/kbd/keymaps/i386/ főmappában vannak.
Különböző kiosztásokra léteznek variánsok. Colemak, dvorak, qwerty, qwertz stb.

Az X egy kicsit más tészta de nem ördöngösség.
Kétféleképpen járhatunk el, mely nem az xmodmap-ot veszi igénybe, és ekkor akár zászlóhoz, és váltó gombhoz is társíthatjuk.

Az első egy kicsit bonyolultabbnak tűnik. Négy fájlt kell ehhez módosítani rendszerszinten, egyet meg létrehozunk.
Magyar nyelv esetén a hu, hu_extend, evdev.lst és evdev.xml fájlokról van szó.

Ezek konkrétan az /usr/share/X11/xkb/symbols/
és 
/usr/share/X11/xkb/rules/ mappákban találhatók.

Mivel jelenleg az a cél hogy egy vagy akár kettő új variánst hozzunk létre, kell egy alap amiből kiindulunk.
Ez a hu, latin és keypad lehet.
Ismernünk kell az egyezményesített elnevezéseket, esetleges UTF-8 kódokat.

Nyilván tisztában kell lennünk azzal hogy mit akarunk, milyen karakter rajzolódjon ki ha leütünk egy billentyűt, vagy annak kombósitott változatát. ismernünk kell a billentyűzet fizikai kódjait is.
A key <AE01> - A billentyűzet hasznos első sorának első billentyűje. Ebben a sorban vannak a számok, zárójelek -+ karakterek angol billentyűzet esetén.

A 2. sor qwerty stb. az key <AD01> - ez a q betű billentyűje általában. 
Ebből következik hogy az key <AD02> a következő w karakter. stb.
Így vannak a sorok: 
key <AE0x>, 
key <AD0x>, 
key <AC0x>, 
key <AB0x>

X esetén egy fizikai kódhoz 4 karaktert rendelhetünk, melyeket ugye vagy magában leütve, vagy különböző kombókkal érhetjük el.
Itt egy példa:

    key <AD03> { [ e,               E,              EuroSign,           cent            ] }; // e E € ¢  code 26

Billentyűlenyomások
magában: e
Shift e: E
AltGR e: €
Shift ALTGR e: ¢

A definíciók a {} zárójelen belül vannak. A ; ugorhat a következő sorra. A // a komment. Nem hajtódik végre.

vagy itt egy másik:
    key <AD11> { [ odoubleacute,    Odoubleacute,   bracketleft,        braceleft       ] }; // ő Ő [ {  code 34 

Rakhatjuk persze szűkebbre is, 

    key <AD03> {[e, E, EuroSign, cent ]}; // e E € ¢  code 26
    key <AD11> {[odoubleacute, Odoubleacute, bracketleft, braceleft ]}; // ő Ő [ {  code 34 

de a jobb átláthatóság végett van így széthúzva.
    key <AD03> { [ e,               E,              EuroSign,           cent            ] }; // e E € ¢  code 26 
    key <AD11> { [ odoubleacute,    Odoubleacute,   bracketleft,        braceleft       ] }; // ő Ő [ {  code 34     
    
    
Végül amikor UTF kódot használunk, mert nincs megfelelő angol elnevzés.
    key <AC06> { [ h,               H,              U201E,              U201D           ] }; // h H „ ”  code 43
    
Itt ugye mint látható a sor végén a // komment jel után, ez a négy karakter van jelen a h betű esetén.
h H „ ” Igazi idézőjelek. Végül is bárhová betehetném, de nekem itt lett a jó.

Miből áll össze egy ilyen kiosztás?
A hu fájl tanulmányozása során látható hogy hogyan is áll össze.

// Default layout
default  partial
xkb_symbols "basic" {
    include "hu(102_qwertz_comma_dead)"
    name[Group1] = "Hungarian";
};

    // Default layout - Ez a komment mint már tudjuk.

default partial - Ez az alap kiosztást jelenti. Minden fájlban ez az első bejegyzés.

xkb_symbols "basic" {
}

Ebben a „basic” nevű szakaszban találhatóak az alap definíciók. Amelyek a {} jelek között vannak azok tartoznak ehhez a szakaszhoz.
Jelen esetben ez van benne:
    include "hu(102_qwertz_comma_dead)"

Tehát a „basic” szakasz tartalmazza a „hu” fájlban a „102_qwertz_comma_dead” definícióban megadott kódokat.
Vagyis magában a fájlon belül! 

    name[Group1] = "Hungarian";
Ez a neve. Mégpedig az evdev.xml fájlban így hivatkoznak rá.

Mi van a „102_qwertz_comma_dead” definíciós szakaszban, és az hogy épül fel?

partial
xkb_symbols "102_qwertz_comma_dead" {
    name[Group1] = "Hungarian (102/qwertz/comma/dead keys)";
    include "latin"
    include "hu(def_102)"
    include "hu(def_qwertz)"
    include "kpdl(comma)"
    include "hu(def_dead)"
    include "hu(def_common)"
    include "level3(ralt_switch)"
};

Azért partial-al kezdődik, mert ez csak egy kis része az egésznek, és ez beleépül majd az egészbe.
Az include az azt jelenti hogy a már valahol definiált kódokat nem írjuk be újra, hanem csak hivatkozunk rájuk.

A latin az gondolom világos, hogy az alap angol betűk kicsi és nagy változatai. Ezt hívja be. Minek újra beírni, ha már megvan?
    key <AD01>    { [         q,          Q,           at,  Greek_OMEGA ]    };
    key <AD02>    { [         w,          W,      lstroke,      Lstroke ]    };
    key <AD03>    { [         e,          E,            e,            E ]    };
    key <AD04>    { [         r,          R,    paragraph,   registered ]    };
    key <AD05>    { [         t,          T,       tslash,       Tslash ]    };
    key <AD06>    { [         y,          Y,    leftarrow,          yen ]    };
    key <AD07>    { [         u,          U,    downarrow,      uparrow ]    };
    key <AD08>    { [         i,          I,   rightarrow,     idotless ]    };
    key <AD09>    { [         o,          O,       oslash,     Ooblique ]    };
    key <AD10>    { [         p,          P,        thorn,        THORN ]    };

Ha ezek alapján elkészítettük a saját kiosztásunkat valahogy így:

Ez pl. a saját hu_extend fájlom kezdő tartalma.    

default partial
xkb_symbols "basic" {
    include "level3(ralt_switch)"
    key <TLDE>  { [    0,              section,            notsign,            notsign             ] }; // 0 § ¬ ¬  code 49
    key <AE01>  { [    1,              apostrophe,         asciitilde,         dead_tilde          ] }; // 1 ' ~ ~  code 10

    itt további kódok vannak
    
};

// Extended layout
partial
xkb_symbols "rewrite" {
    include "hu_extend"

    key <AE07>  { [    7,              equal,              dead_grave,         U2260               ] }; // 7 = ` ≠  code 16
    itt további kódok vannak
    
};

A lényeg hogy az elkészült új kiosztások egy új fájlban legyenek, nevezetesen most pl. a hu_extend fájl nevet kapta.

Ennek a helye a már említett /usr/share/X11/xkb/symbols mappában van.

Tehát itt az új kiosztás. Meg kell etetni a rendszerrel.

Most jön hogy módosítjuk az eredeti hu fájlt, és beillesztjük ezt a pár sort, hogy tudjon róla, van egy új kiegészítés.
Valahová a default partial után.

// Extended layout
partial
xkb_symbols "extended" {
    include "hu_extend"
};

// Extended rewrite
partial
xkb_symbols "rewrite" {
    include "hu_extend(rewrite)"
};

Két fájl megvan, most jön a 3. az evdev.xml fájl.

A fájlon belül értelemszerűen a Hun sort kell megkeresni.
<shortDescription>Hun</shortDescription> 

Ezen belül is hierarchia és szakaszok vannak.
A variánsok így néznek ki.

<variant>
    <configItem>
        <name>extended</name>
        <description>alap (base)</description>
    </configItem>
</variant>

<variant>
    <configItem>
        <name>rewrite</name>
        <description>plusz</description>
    </configItem>
</variant>

Ha ezt így belefűzzük akkor lesz az eddigiek mellé egy extended-rewrite (alap-plusz) kiosztásunk.

És az utolsó az evdev.lst

Itt keressünk „hu:” sorokat. Jó sok van belőlük. Hm.
illesszük be mondjuk a qwerty után hogy
hu_extend          hu: Hungarian plusz

Ha azonnal szeretnénk változást, akkor ha van benne valami, törölni kell a /var/lib/xkb/ tartalmát.
Avagy jelentkezzünk ki, majd újra be.
Ha mindent jól csináltunk, akkor a billentyűzetkezelővel kiválaszthatjuk az új kiosztást. Gyorsgombot rendelhetünk hozzá.

Az elején említettem hogy kétféleképpen lehet megoldani az xmodmapon kívül.
Ez a másik annyival egyszerűbb csak hogy nem rekjuk be a billentyűzetkezelő alá, hanem létrehozzuk a fájlt, bemásoljuk a már említett /usr/share/X11/xkb/symbols/ mappába.

Majd beírjuk az /etc/default/keyboard fájlba is.

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL=pc105
XKBLAYOUT=hucsX
XKBVARIANT=
XKBOPTIONS=

BACKSPACE=guess

Ennek az a hátránya hogy csak ez az egy kiosztás van alapból, mert nem is használjuk a billentyűzetkezelőt.
Nincs zászló, nincs gyors gomb.
 

És igen. gkbd-keyboard-display -l kiosztás van egy fénykép a billentyűzetről. Képet hogy lehet ide berakni?
 

cannot into us-altgr-intl

let's go Brandon!

Szerkesztve: 2020. 01. 29., sze – 01:07

Nem szeretek különböző kiosztások között ide-oda váltogatni, inkább nyomok plusz egy billentyűt jobb hüvelykujjal ha magyar ékezetre van szükség.  Egy kiosztás mind felett:

1. Menu -> System settings -> Keyboard indít, Layout tab kiválaszt.

2. Bal oldali listához English (US) és Hungarian (101/qwerty...) hozzáad.

3. Options... -> Switching to another layout -> Right Alt (while pressed)

4. Opcionálisan, ha más kiterjesztett latin abc-s nyelvek spec betűi (äåæòôõǫøßþð...) és/vagy egyéb spec karakterek (₁²°©™µ‰¥...) is gyakran kellenek: Options... -> Position of Compose key -> Menu (vagy Right Ctrl, mert ahogy elnézem mostanra eltűnt a notebookokról a Menu billentyű)

Gondolom ez amit írsz, valamiféle eyecandy DE esetén működik: Talán KDE vagy Gnome vagy ilyesmi... Én azonban DWM-et használok. Ott nincs semmiféle „Menü” pláne nem „System settings” meg „Options”...

Ez amit én írtam, mindig működik, ha van legalább egy natúr X telepítve.

Én nem szeretem a DE-ket, tudod. Ettől még persze nem vonom kétségbe, hogy ez neked úgy jó, ahogy leírtad. Nyilván, amit én írtam az csak egyetlen módszer a sok lehetséges közül.

Állandóan a saját magad halálra sz*patásán dolgozol. Bámulatos. Gobo, ismeretlen saját programnyelv, saját Linux, most meg ez a DWM. Nincs bajom vele, de míg más a pornubra veri ki, neked furcsa az ízlésed. Olyan "lila" ködös, nem? De, hogy tudd; elolvastam pár művedet, és ha nem azzal lenne tele, mennyire fényesre csiszoltad a brédet, akkor használható munkák is lehetnének. Ne add föl, van még jó pár ösvény, amit újra lehet taposni.

READY.
󠀠󠀠‎‏‏‎▓

Nincs jobb dolgod mint hogy állandóan engem próbálsz megalázni?

Különben meg tudatlak, ha nem vetted volna észre, Treynek tetszik ez a postom a saját billentyűzetkiosztásról. Azért az ő véleményére mégiscsak jobban adok mint a tiedére már bocs. De ha nem bocs akkor is.

És igen, az igaz hogy furcsa az ízlésem. Na és? Tilos talán? Én legalább ALKOTOK valamit. Vagy legrosszabb esetben is törekszem rá. Tőled meg más se telik mint a kötekedés, a másik fél piszkálása. Na, akkor melyikünk a „nemesebb”, a szó klasszikus értelmében? Melyik törekvés a tiszteletre méltóbb?!

Mondd, nagy kérés lenne tényleg hogy elfelejts végre engem? Lécci... Neked is jobb lenne, több időd maradna valami hasznosabbra...

Szerintem az az óvodás szint amit te művelsz. Szerelmes lettél belém hogy állandóan én járok az eszedben? Én csak azt mondtam, Trey véleményére többet adok mint a tiedére. Lehet hogy ez téged sért, de kénytelen leszel magad megbirkózni a frusztráltságoddal mert ebben nem segíthetek.

Régi Gnome-ban műkődött, újakból viszont már rég kiegyszerűsítették ezt, KDE-t pedig még nem használtam, DWM hidegen hagy.

Először én is xmodmap és xkb szintjén akartam megoldani, de közben rájöttem, hogy mindössze néhány kattintással be lehet állítani mindent, ami az én kényelmemhez elengedhetetlen.  Annak idején még Windows-ra is csináltam ugyanilyen kiosztást magamnak, bár ott jóval többet kellett klikkolni.

Szerkesztve: 2020. 01. 29., sze – 06:22

Én is próbáltam xmodmap-pal variálni, de az elmúlt harminc éven az xkb lett a nyertes. Mondjuk ez érthető is, hiszen sokkal bonyolultabb.

https://hup.hu/node/163641

Hasonló cipőben jártam, én is próbálkoztam saját billentyűzettel, de végül a befutó az US International (with Dead keys) kiosztás lett.
Itt minden remek helyen van a programozáshoz.
Az ékezetes betűket is könnyen el lehet érni, az áéíóú betűket egyszerűen úgy, hogy AltGr+[aeiou].
Az ö és ü betű is könnyen megy, mert csak az o és u melletti betűkkel kell az AltGr-t lenyomni, AltGr+p ill. AltGr+y.
Egyedül az ő és ű betűk bonyolultabbak egy kicsit.
Két megoldás is van, vagy compose key-jel, nálam ScrolLock = o az ő, ScrolLock = u az ű.
Vagy Dead Keys-es kiosztással, AltGr+Shift+2 o illetve AltGr+Shift+2 u.

A Compose key-jel milliónyi karakter leírható.

Ráadásul ez megy terminálban is és Windowson is. Egyedül a Compose-hoz kell külön program, mert a Windows nem tudja és nincs Dead keys kiosztás sem.

Teljesen jól lehet így gépelni. Azt nem mondom, hogy egy gyors és gép író esetén ez ne lassítana, de nem kell figyelnem a billentyűzetet a gépeléshez.
Gyakran kell az ékezet, most is így gépelek :-) ☺
A compose mód meg nagyon király, valahogy sikerült a sarló és kalapács (☭) kódját is megjegyeznem: ComposeKey C C C P ;-)

1 - nagyon hasznos a cikked, köszönet érte

2 - a neten fellelhető angol anyagok tényleg teli vannak hibákkal, hiányosak, ..., fordítsd le amit írtál angolra, mert jobban járna mindenki, ha ezt olvasná el

3 - én most ott tartok, hogy saját billentyűzet építése tervben van, aminél ugye nem kell xkb hakkolás, mert azt küldök a kábelen, amit akarok, de minden más esetben eszméletlen hasznos lenne, ha lenne valami kulturált módja a layout szerkesztésnek, nekem van egy php script-em, ami egy csv fájlt dolgoz fel layout fájlá, de az minden csak nem felhasználóbarát, ha valakinek van ideje, programozásra fel!

Ha nem válaszolnék kommentben, hát küldj privátot!

Hát én nagyon szépen köszönöm neked hogy így megdicsérted a cikkemet, jólesett tényleg... Csak azt nem értem miért járna jobban mindenki ha az angol változatot olvasná el. Mert egy született angolra, arra ez biztos igaz de erősen kétlem hogy ilyen illetőből sok járna a HUP-ra. Aki pedig magyar, annak a magyar változat mégiscsak jobban érthető... De úgy döntöttem behódolok a kívánságodnak, tehát:

Thy will be done!

Behold! The English version:

https://hup.hu/node/167753

Kiegészítések:

- Keycode kiolvasáshoz ubuntu-n "xev" parancsot ajánlom, az "xbindkeys" telepítése nélkül is elérhető, emlékeim szerint alap telepítés része. Nem kizárt, hogy ugyan az egyébként, csak más néven.

- Ha nem akarsz rendszerfájlokat módosítani (ahogy fentebb írták páran, a meglévő layout fájlokra mutatva), van az alábbi parancs, amivel egy fájlból beolvashatod a teljes saját layout-odat. Bejelentkezéskor futtatni kell, és ha váltasz másik layout-ra, akkor felülírja ezt a beállítást (pl. mindenféle control panel-ben kijelölöd a layout-ok listájáról az újat, és tádám, mintha sose futtattad volna a parancsot).

    xkbcomp mylayout.xkb $DISPLAY

- A rengeteg tényleg zavaros, stackoverflow-s vergődés, és évekkel ezelőtt félbehagyott dokumentálást olvasva oda jutottam, hogy kinyertem az aktuális billentyű kiosztást (asszem "xkbcomp"-al) egy fájlba, és elkezdtem módosítani, először kidobálni mindent, majd megvalósítani ami kell. Problémáim nekem is az ismertek voltak, ráadásul volt egy rakás szimbólum, amire nincs szükségem, helyére mást raktam, stb. Saját kiosztásom linkelve alább.

- Sikerült 8 rétegű billentyűzetet is megvalósítanom, módosítóim shift-alt-ctrl mellett capslock-super(windows key)-altgr(teljesértékű)-contextmenu. A csatolt kód tartalmazza a "SYKTH_TYPE" néven ezt a típust, minden gombnak lehet így altgr+shift-es kombinációja is.

- Eredetileg én a cursor billentyűk áthelyezését tűztem ki célul, jkli billentyűkre raktam át, majd kísérleteztem az léáp billentyűkre átrakással is (előbbi caps, utóbbi altgr lenyomásával érhető el, szintén a fájlban van).

- Jelenleg az android-os billentyűzetemben (saját fejlesztés, majd egyszer publikálom, csak nem írtam fel honnan másoltam a kód alapját) az a-e-i-o-u billentyűkre van rakva az á-é-í-ó-ú, módosított állapotként, elég sok helyet lehet vele spórolni, a kisujj problémát megoldja, csak az ö-ü (és rajta az ő-ű) páros kell foglaljon billentyűt.

- Saját kódomnak is vannak hibái, nem javaslom éles használatra, pl. vannak appok, ahol a kurzor billentyűim működnek, de az alt+shift+kurzor kombináció nem megy át, később még tervezem ezt javítani.

- Egyelőre a kód lehetne tisztább, és több default elnevezés is van benne amit lehet más kódokban nagyon máshogy használnak, ez jelenleg egy próbálkozás (ami éles üzemben van kb. 2,5 éve). Use with caution.

- Tervezem a jövőben saját hardware-re váltani, ergonómiai okokból, valószínűleg mélyebb leírás akkor lesz erről publikálva.

- xbindkeys-t még nem használok, csak a xubuntu saját gui-ján keresztül megadott kombinációimat (asszem az is a háttérben xbindkeys-t használ), tapasztalatom szerint az XF86Launch1-től felfelé vannak olyan billentyűkódok (első részben kell megadni), amik legjobban használhatók bármi zavar okozása nélkül parancs indításra.

(Az egész xkb sok-sok dokumentálatlan részlettel rendelkezik, és sok olyan tapasztalatom volt, hogy megírtam a kódot úgy ahogy kellett, futott, majd módosítottam kb. "a"-t "b"-re, és nem futott le a betöltés. Elég buggy, lehet a betöltő, lehet sok a módosíthatatlan részlet, amire kód azért van, csak nem fog megtörténni.)

Fájl:
http://sykth.com/xkb

Ha nem válaszolnék kommentben, hát küldj privátot!

- Próbáld ki a 8 réteget is kezelő típusomat, szerintem hasznodra lesz :).

- A billentyűzet építés sem ördögi ám, C-ben programozol akkor arduino-szerű dolgokra egy nap alatt ráállsz, az pont megfelel ilyen célra. De vannak meglévő firmware-ek is, amiket használhatsz. És ha sajátot építesz, akkor még a leütéskor küldött scancode felett is hatalmad lesz!

Ha nem válaszolnék kommentben, hát küldj privátot!

Hehe, nem a programozás részétől félek ám, kedves barátom! Sőt, én kifejezetten a low-level programozási dolgokat élvezem!

Nekem a dolog elektronikai része az, ami nem menne. Soha életemben nem tanultam olyasmit, minden ami telik tőlem e téren az, hogy esetleg beszerelem a villanykapcsolókat a falba, aztán kész, ennyi!

Nem menne nekem a forrasztás se. Próbáltam. Jó, persze biztos igazad van, belejönnék még én is ebbe, de az vagy húsz év elszánt gyakorlást igényelne, annyi idővel később meg már talán nem is élek!

Ha már kész a hardware, de nem csak úgy hogy megvan a leírás HOGYAN készítsem el, hanem annyira készen hogy odanyomják a kezembe, na akkor igen, onnantól kezdve már tudok vele mit kezdeni. Addig nem. Addig a pontig én csak tisztelem azokat az embereket akik erre képesek, és picit irigykedem is rájuk. (de nem annyira, hogy széttrollkodjam a topikjaikat...)

Az a helyzet hogy van nekem egy barátom, villamosmérnök, és vele épp mostanában kezdtünk egy jókora projectbe: saját számítógépet akarunk készíteni, mondhatni saját „platformot”, természetesen FPGA alapokon. Külön billentyűzet nem lesz hozzá, mert minek, lesz hozzá USB port, aztán oda mindenki azt dug amit akar...

na és nálam már ott sötét a pálya hogy mi az az FPGA. Persze, tudom nagyjából... de semmi esetre se annyira hogy belekezdjek egy effélének az építésébe.

Szóval a dolog hardware-része a haverom reszortja. Megdumáltuk az alap elemi utaításkészletet, ugye a „gépi kódot”, ő meg csinál két példányt, az egyik naz enyém lesz... az én feladatom innen kezdődik! (Na jó, persze, volt némi beleszólásom a tervezési fázisban az architektúra milyenségébe is).

Tehát, amint lesz 2 példány belőle, elkezdjük a programkörnyzezet megalkotását... nem semmi feladat lesz. Én például magamra vállaltam a teljes lebegőpontops aritmetika megírását. Mert ilyen társprocesszor nincs a gépünkben... Illetve, úgy vállaltam magamra e melót, hogy nem lesz semmiféle lebegőpontos izémizé benne. Tanulmányoztam a kérdést, s úgy találtam, túl nagy szopás egy ilyesmit megírni, miközben a haszna megkérdőjelezhető, mert PONTATLAN. Inkább úgy döntöttem, egy BCD aritmetikát írok meg majd rá. Ez se „lebegőpontos” lesz, hanem fixpontos: lesz vagy százegynéhány egész számjegynek fenntartva hely, és ugyanennyi tizedesjegynek is. Ez már talán kellően pontos... Csak lefedi a legtöbb igényt...

Nyilván persze lesznek mindenféle függvények, amik ezeket „összetömörítik” kisebb helyre ha nem kell ekkora pontosság meg minden...

Elég sanszos, hogy így se szopok majd vele kevésbé mint a lebegőpontos számábrázolással, de legalább tényleg pontosabb lesz.

De ezen kívül is lesz elég feladat: ütemező írása, megszakításkezelés, a mindenféle portok támogatása, stb...

A projekt még nagyon az elején tart, több infót tehát ne várj. Csak arra akartam kilyukadni, az efféle „gépi kódú” szöszmötölés meg hogy „embedded system” programozás (ha szabad ezt annak neveznem) az oké, azzal nekem semmi bajom, de nem vagyok képes megtervezni magát a hardware-t, sőt összerakni se hiába van már meg a terv hozzá. Béna vagyok az ilyesmihez, sajna.

Vannak már forrasztásmentes foglalattal ellátott board-ok, azokat tudom ajánlani, csak bepattintod a kapcsolót, és kész. Firmware feltöltéshez kész eszközök vannak, hardware-el nem kell foglalkoznod. Viszont onnantól pl. a layout váltás mehet hardver szinten is, vagy akár macro-k kezelése is.

Ha nem válaszolnék kommentben, hát küldj privátot!

Szerkesztve: 2020. 02. 06., cs – 14:05

Mac-hez készült billentyűzeteknél ez a módszer nem mindenre jó. Az Fn gomb (nem csak Mac-en, hanem eddig amin próbáltam semmin) nem generált X eventet. Mondjuk Thinkpadeken BIOS-ban fel lehet cserélni az Fn és Ctrl billentyűket, de ahol erre nincs mód ott ezt driveresen lehet csak megoldani, pl.: https://github.com/free5lot/hid-apple-patched