12

From the actual console (e.g. Ctrl-Alt-F3), I'd like to use sudo loadkeys dvorak as in ubuntu. While that automagically works in Ubuntu, Debian wants me to locate a keymap file. I don't have the /usr/share/keymaps that is sometimes given as an answer. find / -type f -name '*dvorak*' turns up a few files which loadkeys won't take. As in this other answer I do not want to make a permanent change to my system using console-config. I want to write simple scripts that can change the keymap on the fly.

Is there a package I can install or something?

Since I'd like to swap Caps-Lock and Escape eventually, I should probably make my own custom keymaps, anyway, correct?

16

1) Make sure console-data package is installed:

# loadkeys dvorak
Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz

$ dpkg --search /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz
console-data: /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz

$ cat /etc/debian_version 
wheezy/sid

2) IMHO, yes dumpkeys > test.keymap && edit test.keymap && loadkeys test is the easiest.

| improve this answer | |
1

This is a script from my personal poison cabinet which I use to permanently make CAPSLOCK an additional CTRL on debian. It should provide enough hints so you can further adapt it yourself.

It's assumed the 'us' kbd layout is used until now, new keyboard layout will be called 'sjas' here.

Oneliner:

apt install console-data -y; TMP=$(loadkeys us | awk {'print $2'}); TMP2=$(dirname $TMP)/sjas.kmap.gz; cp -vaf $TMP $TMP2; gzip -d $TMP2; TMP3=${TMP2%%.gz}; sed -i -e 's/us.map/sjas.map/' -e 's/.*58.*/keycode  58 = Control/' $TMP3; gzip -c $TMP3 > $TMP2; rm $TMP3; sed -i 's/"us"/"sjas"/g' /etc/default/keyboard

Not in one line, so it can be read easier:

apt install console-data -y
TMP=$(loadkeys us | awk {'print $2'})
TMP2=$(dirname $TMP)/sjas.kmap.gz
cp -vaf $TMP $TMP2
gzip -d $TMP2
TMP3=${TMP2%%.gz}
sed -i -e 's/us.map/sjas.map/' -e 's/.*58.*/keycode  58 = Control/' $TMP3
gzip -c $TMP3 > $TMP2
rm $TMP3
sed -i 's/"us"/"sjas"/g' /etc/default/keyboard

Replace 'sjas' and 'us' string occurrences with accordingly where your current layout differs and how you want to call your new one.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.