This laptop can (to some extend) be mapped to colemak
/usr/share/X11/xkb/symbols/decolemak
// Keyboard layouts for Germany.
default
xkb_symbols "basic" {
include "latin(type4)"
name[Group1]="German (Colemak DHm)";
key <TLDE> {[dead_circumflex, degree, U2032, U2033 ]}; // ′ ″
key <AE01> {[ 1, exclam ]};
key <AE02> {[ 2, quotedbl, twosuperior, twosuperior ]};
key <AE03> {[ 3, section, threesuperior, threesuperior ]};
key <AE04> {[ 4, dollar, emdash, onequarter ]};
key <AE05> {[ 5, percent, exclamdown, onehalf ]};
key <AE06> {[ 6, ampersand, questiondown, threequarters ]};
key <AE07> {[ 7, slash, braceleft, oneeighth ]};
key <AE08> {[ 8, parenleft, bracketleft, threeeighths ]};
key <AE09> {[ 9, parenright, bracketright, fiveeighths ]};
key <AE10> {[ 0, equal, braceright, seveneighths ]};
key <AE11> {[ ssharp, question, backslash, questiondown ]};
key <AE12> {[ dead_acute, dead_grave, dead_cedilla, dead_ogonek ]};
key <AD01> {[ q, Q, at, at ]};
key <AD02> {[ w, W ]};
key <AD03> {[ f, F ]};
key <AD04> {[ p, P ]};
key <AD05> {[ b, B, U2039, NoSymbol, rightdoublequotemark, rightsinglequotemark, U203A ]};
key <AD06> {[ j, J ]};
key <AD07> {[ l, L ]};
key <AD08> {[ u, U ]};
key <AD09> {[ y, Y, guillemotright, U203A ]}; //
key <AD10> {[ odiaeresis, Odiaeresis ]};
key <AD11> {[ udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ]};
key <AD12> {[ plus, asterisk, asciitilde, macron ]};
key <AC01> {[ a, A ]};
key <AC02> {[ r, R ]};
key <AC03> {[ s, S ]};
key <AC04> {[ t, T ]};
key <AC05> {[ g, G ]};
key <AC06> {[ m, M, mu, mu ]};
key <AC07> {[ n, N ]};
key <AC08> {[ e, E, EuroSign, EuroSign ]};
key <AC09> {[ i, I ]};
key <AC10> {[ o, O ]};
key <AC11> {[ adiaeresis, Adiaeresis ]};
key <BKSL> {[ numbersign, apostrophe, rightsinglequotemark, dead_breve ]};
key <LSGT> {[ less, greater, bar, bar ]};
key <AB01> {[ z, Z ]};
key <AB02> {[ x, X, guillemotleft, U2039 ]}; // « ‹]};
key <AB03> {[ c, C, copyright, cent ]};
key <AB04> {[ d, D ]};
key <AB05> {[ v, V ]};
key <AB06> {[ k, K ]};
key <AB07> {[ h, H ]};
key <AB08> {[ comma, semicolon, periodcentered, multiply ]};
key <AB09> {[ period, colon, U2026, division ]}; // … ÷
key <AB10> {[ minus, underscore, endash, emdash ]};
key <SPCE> {[ space, space, nobreakspace, nobreakspace ]};
include "kpdl(comma)"
include "level3(ralt_switch)"
};
include in /usr/share/X11/xkb/rules/evdev.xml (it does not really matter where but in <layoutList>)
<layout>
<configItem>
<name>decolemak</name>
<shortDescription>deco</shortDescription>
<description>German (Colemak DHm)</description>
<languageList>
<iso639Id>ger</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>basic</name>
<description>German (Colemak DHm)</description>
</configItem>
</variant>
</variantList>
</layout>
<layout>
Now it should already be available to select in xfce etc.
To unlock the disk in kernel do
/etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="decolemak"
XKBVARIANT=""
XKBOPTIONS=""
# see man, not important
BACKSPACE="guess"
Then include that in initramfs
/etc/initramfs-tools/initramfs.conf
.
.
.
KEYMAP=y
.
.
.
To use this map in grub too (for CBFS)
grub-kbdcomp -o decolemak.gkb decolemak
You can ignore errors but make sure its not an empty output file and the symbols were found
copy the gkb to /boot/grub or on cbfs
grub.cfg needs to have
insmod at_keyboard
insmod usb_keyboard
if [ -f (cbfsdisk)/keymap.gkb ]; then
keymap (cbfsdisk)/keymap.gkb
fi
or similar like keymap /boot/grub/keymap.gkb
There is a lot that can go wrong here, see
and
https://askubuntu.com/questions/751259/how-to-change-grub-command-line-grub-shell-keyboard-layout