XKB seems the way to go
Helpful were:
Howto add some german keys like äöüÄÖÜ߀ in the US keyboard layout:
save current keyboard layout into file:
xkbcomp -xkb :0 original-layout.xkb
copy file, apply the changes from my xkb file into it
load:
xkbcomp ~/.config/xkb-keyboard/cweiske-kinesis-full.xkb $DISPLAY
Key tester:
evtest (root) kinesis listed 3 times; 2nd is keyboard:
/dev/input/event21: Kinesis Advantage2 Keyboard /dev/input/event22: Kinesis Advantage2 Keyboard /dev/input/event23: Kinesis Advantage2 Keyboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | partial
xkb_types "complete" {
type "FOUR_LEVEL_RALT" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Level3";
level_name[Level4]= "Shift Level3";
};
};
partial
xkb_symbols "pc+de(nodeadkeys)+us:2+de:3+inet(evdev)" {
include "pc+de(nodeadkeys)+us:2+de:3+inet(evdev)"
key <AC01> {
type[group1]= "FOUR_LEVEL_ALPHABETIC",
type[group2]= "FOUR_LEVEL_RALT",
type[group3]= "FOUR_LEVEL_ALPHABETIC",
symbols[Group1]= [ a, A, ae, AE ],
symbols[Group2]= [ a, A, adiaeresis, Adiaeresis ],
symbols[Group3]= [ a, A, ae, AE ]
};
key <AC02> {
type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
type[group2]= "FOUR_LEVEL_RALT",
type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
symbols[Group1]= [ s, S, U017F, U1E9E ],
symbols[Group2]= [ s, S, ssharp, ssharp ],
symbols[Group3]= [ s, S, U017F, U1E9E ]
};
key <AD03> {
type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
type[group2]= "FOUR_LEVEL_RALT",
type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
symbols[Group1]= [ e, E, EuroSign, EuroSign ],
symbols[Group2]= [ e, E, EuroSign, EuroSign ],
symbols[Group3]= [ e, E, EuroSign, EuroSign ]
};
key <AD07> {
type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
type[group2]= "FOUR_LEVEL_RALT",
type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
symbols[Group1]= [ u, U, downarrow, uparrow ],
symbols[Group2]= [ u, U, udiaeresis, Udiaeresis ],
symbols[Group3]= [ u, U, downarrow, uparrow ]
};
key <AD09> {
type[group1]= "FOUR_LEVEL_ALPHABETIC",
type[group2]= "FOUR_LEVEL_RALT",
type[group3]= "FOUR_LEVEL_ALPHABETIC",
symbols[Group1]= [ o, O, oslash, Oslash ],
symbols[Group2]= [ o, O, odiaeresis, Odiaeresis ],
symbols[Group3]= [ o, O, oslash, Oslash ]
};
};
|