Где находятся таблицы ключей в Debian? (Использование loadkeys для изменения раскладки клавиатуры.)

12

С реальной консоли (например Ctrl- Alt- F3) я бы хотел использовать sudo loadkeys dvorak как в Ubuntu . Хотя это автоматически работает в Ubuntu, Debian хочет, чтобы я нашел файл раскладки клавиатуры. У меня нет того, /usr/share/keymapsчто иногда дается в качестве ответа. find / -type f -name '*dvorak*'поднимает несколько файлов, которые loadkeysне будут принимать. Как и в этом другом ответе, я не хочу вносить постоянные изменения в мою систему, используя console-config. Я хочу написать простые сценарии, которые могут изменить раскладку клавиш на лету.

Есть ли пакет, который я могу установить или что-то еще?

Поскольку в конечном итоге я хочу поменять местами Caps-Lock и Escape, я, наверное, должен сделать свои собственные пользовательские раскладки клавиш , верно?

Джон Бабер-Лусеро
источник

Ответы:

15

1) Убедитесь, что console-dataпакет установлен:

# 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) ИМХО, да dumpkeys > test.keymap && edit test.keymap && loadkeys testсамое простое.

barti_ddu
источник
1

Это скрипт из моего личного ядовитого кабинета, который я использую, чтобы надолго сделать CAPSLOCK дополнительным CTRL в debian. Он должен содержать достаточно подсказок, чтобы вы могли самостоятельно адаптировать его.

Предполагается, что макет «us» kbd используется до сих пор, новая раскладка клавиатуры здесь будет называться «sjas».

Один лайнер:

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

Не в одну строку, так что читать проще:

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

Замените вхождения строк 'sjas' и 'us' соответственно, где ваш текущий макет отличается и как вы хотите назвать свой новый.

sjas
источник