Teams > Tips & trucs

Je eigen keyboard layout

(1/2) > >>

MKe:
Ik heb een 75% keyboard, dat is een keyboard zonder numpad. Op zich heb je die ook niet nodig, maar een enkele keer  kan het wel handig zijn om zoiets te hebben. Om dat toch voor elkaar te krijgen heb ik een eigen keyboard layout gemaakt op basis van het 'us' keyboard en dacht dat het handig zou zijn voor mensen hier om dat eens te laten zien. Misschien heb je wel zo'n laptop zonder numpad?
Mijn numpad komt op de letters "qweasdzxc" en werkt als de rechter alt (Alt gr) wordt ingedrukt. Verder draai ik de capslock en de escape toets om omdat ik bijna nooit capslock gebruik, maar wel vaak de escape key.

Om dit te doen moet ik eerst een layout file maken. Hier wijs je functies toe aan toetscodes. Het vinden van de toetscodes is wat omslachtig. Ik moet daarvoor eerst het commando 'xev -event keyboard' runnen in de commandline. Je krijgt dan een venster te zien en als die actief is wordt er het cli venster de 'keycode' geprint van de toetsen die ik indruk. Een voorbeeld: de 'a' geeft:

--- Code: ---KeyPress event, serial 28, synthetic NO, window 0x1800001,
    root 0x164, subw 0x0, time 3397884, (478,252), root:(1540,277),
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x1800001,
    root 0x164, subw 0x0, time 3397982, (478,252), root:(1540,277),
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

--- Einde van code ---
De keycode voor 'a' is dus 38. Doe dit voor alle toetsen die je wilt remappen (qweasdzxc)

Vervolgens open je dan de file /usr/share/X11/xkb/keycodes/evdev en zoekt de keycodes op. Daar staat dan de aanduiding waar Linux mee werkt, voor 'a' is dat dan 'AC01'.

Best lastig dus, maar als je dit allemaal opzoekt zul je zien dat er logica in zit, zo zijn de rijen van onder naar boven: AA, AB, AC, AD, AE etc. en worden de toetsen van links naar rechts genummerd: 0, 1, 2,3 etc. De q-toets is dan dus 'AD01, de s-toets AC02 etc.

Nu kunnen we een layout file maken. Die staan allemaal in /usr/share/X11/xkb/symbols. Maak daar (met sudo!) een bestand aan met de naam van je keyboard. Ik noem mijn keyboard hier 'custom', dus ik noem de file ook zo. In de file kom de volgende tekst, let op het gebruik van de gevonden codes zoals ik hierboven heb beschreven:

--- Code: ---default partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    include "us(basic)"
    name[Group1]= "Cusom voor 75 (US) met numblok";

    include "eurosign(5)"
    include "level3(ralt_switch)"
    key <CAPS> {        [     Escape           ]        };
    key <ESC>  {        [     Caps_Lock             ]        };

    key <AB01>  { [  NoSymbol,   NoSymbol,   1, NoSymbol ]      };
    key <AB02>  { [  NoSymbol,   NoSymbol,   2, NoSymbol ]      };
    key <AB03>  { [  NoSymbol,   NoSymbol,   3, NoSymbol ]      };

    key <AC01>  { [  NoSymbol,   NoSymbol,   4, NoSymbol ]      };
    key <AC02>  { [  NoSymbol,   NoSymbol,   5, NoSymbol ]      };
    key <AC03>  { [  NoSymbol,   NoSymbol,   6, NoSymbol ]      };

    key <AD01>  { [  NoSymbol,   NoSymbol,   7, NoSymbol ]      };
    key <AD02>  { [  NoSymbol,   NoSymbol,   8, NoSymbol ]      };
    key <AD03>  { [  NoSymbol,   NoSymbol,   9, NoSymbol ]      };
    key <SPCE>  { [  NoSymbol,   NoSymbol,   0, NoSymbol ]      };
};

--- Einde van code ---

Je ziet dus dat ik eerst de "us(basic)" binnenhaal, het us-toetsenbord layout. dan de eurosign(5) die zoals het zegt het euro teken op de 5 (met rechter alttoets zet, vervolgens ook nog de "level3(ralt_switch)" die ervoor zorgt ik de rechter alt-toets als 3e modifier key kan gebruiken.

Daarna remap ik de CAPSLOCK en de ESCAPE toetsen, spreekt voor zich denk ik?
Vervolgens dus de toetsen codes AB01 etc met daarachter de remap.  Er zijn steeds 4 waarden. De eerste is zonder modifier key, de tweede als je de shift ingedrukt houdt, de 3e is dus wat er gebeurt als je de rechter alt toets (Altgr) ingedrukt houdt. 'NoSymbol'  zegt eigelijk "doe maar wat er in de "US" layout is gedefinieerd. Als laatste gebruik ik Altgr-spatie als '0'.

Als dit opgeslagen is moeten we de layout aanmelden. Daarvoor open ik met sudo in mijn tekst editor de file /usr/share/X11/xkb/rules/base.lst. Zoek daarin de regel "! layout" en zet direkt onder die regel:

--- Code: ---  custom           Cusom voor 75 (US) met numblok

--- Einde van code ---

Nu moet je het toetsenbord alleen nog maar als default te zetten met de volgende commando:

--- Code: --- sudo localectl set-x11-keymap custom

--- Einde van code ---
Vanaf nu werkt je escape als capslock en kun je getallen invoeren door de toetsen q w e a s d z x c <spatie> te gebruiken terwijl je de rechter alt-toets ingedrukt houdt.

Dit is maar een voorbeeld, natuurlijk zijn de mogelijkheden eindeloos om je toetsenbord helemaal naar je hand te zetten. Succes!

vanadium:
Zeer bedankt! Dit is de beste uitleg die ik al heb gezien om op de "juiste" manier aanpassingen te doen aan het toetsenbord . Deze methode is veel ingewikkelder dan vroeger met xmodmap. xmodmap werkt ook nu nog, maar enkel als je xorg draait.

MKe:
Graag gedaan.

Xkb kan ook net als xmodmap ook net losse commando’s werken. Dus als je alleen b.v. CapsLock wilt remappen is dat vrijwel net zo gemakkelijk te doen met xkb. Het voordeel met de methode die hierboven is beschreven is dat je gemakkelijk kunt switchen tussen de verschillende keyboard lay-outs. Alles heeft zijn voor- en nadelen.

De one-liner om met xkb de capslock te remappen naar escape is als volgt:


--- Code: ---setxkbmap -option caps:escape

--- Einde van code ---

vanadium:
Top! Als je naar die dingen zoekt op internet, dan kom je nog altijd veel te veel uit op adviezen met xmodmap, of op zeer ingewikkelde adviezen met xkb waar ik niets van snapte (tot vandaag).

MKe:
Ja inderdaad. De documentatie van xkb is een zootje en de mix met xmodmap maakt het er niet gemakkelijker op. Ik zag ook door de bomen het bos niet meer, vandaar dat ik er nu maar eens echt ingedoken ben.

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie