Настройка раскладки клавиатуры в Linux Ubuntu

Частая ситуация (особенно с ноутами), когда конструкторам и дизайнерам раскладки клавиатуры хочется оторвать руки. Этот пост ответит на такие вопросы как:

Как поменять клавиши местами?

Как отключить клавиши (Caps Lock, например)?

Как переназначить клавиши?

Как включить Scroll Lock

Не все так просто с переназначением клавиш на Num’панели, особенно, если Вы хотите переназначить клавиши в зависимости от состояния индикатора Num Lock. Например, у меня так и не вышло повесить мультимедийные клавиши на «цифры» при выключенном индикаторе Num Lock, т.к. переставал работать ввод цифр при любом состоянии индикатора. Если у Вас таки получилось повесить мультимедиа клавиши в зависимости от состояния индикатора — прошу подсказать решение. А пока я юзаю комбинации с Alt.

Для всех действий я буду использовать утилиту xmodmap. Вкратце принцип работы — создаем текстовый файл(ы), описываем какие клавиши нужно зарепамить или отключить, и загружаем файл(ы) в ~/.profile. Файлов может быть несколько, а можно все правила указать в одном. Загрузить файлы конфигурации можно так:

if [ -f "$HOME/.Xmodmap-capslock-replace" ]; then
  xmodmap ~/.Xmodmap-capslock-replace
fi

Основные команды и параметры xmodmap:

Сохранить дефолтную карту клавиатуры в файл:

xmodmap -pke > ~/.Xmodmap

Показать текущие настройки управляющих клавиш:

xmodmap -pm

Показать »

user@host:~$ xmodmap -pm
xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Caps_Lock (0x42),  Control_R (0x69)
mod1        Alt_L (0x40),  ISO_Next_Group (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_R (0x86),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Отключить клавишу Caps Lock:

! Комментарий
clear Lock

Заменить Caps Lock на Control:

! # Control_L on Caps_Lock #
clear Lock
keycode 66 = Control_L
add Control = Control_L

Заменить Caps Lock на Escape:

! # Escape on Caps_Lock #
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Заменить Caps Lock на BackSpace:

! # BackSpase on Caps_Lock #
remove Lock = Caps_Lock
keycode 66 = BackSpace

Включить Scroll_Lock:

add mod3 = Scroll_Lock

При настройке клавиш мы оперируем их представлениями — keycode и keysym. Получить эти значения позволяет утилита xev. Запускаем, появится небольшое окошко, ставим фокус на него и нажимаем нужные клавиши, коды которых нам нужны.

Заменить Caps Lock на BackSpace:

! # Disable Super_R #
keycode 134 = 
! или
keysym Super_R = 

Показать »

! Освободить правый Alt для переназначения
remove mod1 = Alt_R