Обзор
Стандартная виртуальная консоль (TTY) Linux не способна напрямую интерпретировать комплексные схемы XKB, применяемые графическим сервером. Чтобы перенести правила ввода в чисто текстовое окружение, используется инструмент ckbcomp, транслирующий описания XKB в нативные таблицы символов для утилиты loadkeys. В этом практическом руководстве мы шаг за шагом разберем весь процесс: от базовой компиляции и выбора национальных вариаций раскладок до переназначения модификаторов вроде CapsLock и немедленной загрузки конфигурации в ядро.
1. Подготовка окружения и экспорт базовой раскладки US
Для сборки и применения консольных раскладок из определений XKB установим вспомогательный стек утилит: пакеты console-setup, kbd и базу определений xkb-data.

Команда ckbcomp считывает конфигурационные файлы XKB и преобразует их в текстовый формат, совместимый с подсистемой loadkeys.
Сгенерируем типовую раскладку для языка us и перенаправим вывод через конвейер в head -n 30, чтобы изучить первые строки структуры соответствия клавиш:
⚙️ [Ключевые параметры запуска]
-model : аппаратный тип клавиатуры (например, pc105, pc104).-variant : региональная или эргономическая модификация (например, dvorak, colemak).-option : специальные переключатели XKB для модификаторов (к примеру, замена CapsLock через ctrl:nocaps).-charmap : целевая кодировка таблицы соответствия (обычно UTF-8 или ISO-8859-1).-compact : объединение повторяющихся определений для сокращения итогового размера файла.-freebsd : генерация синтаксиса виртуальной консоли FreeBSD вместо формата Linux.

2. Тонкая настройка: выбор национальной модели (-model) и вариаций (-variant)
Для генерации раскладки под стандартное 105-клавишное устройство (-model pc105) с корейской языковой таблицей (-layout kr) передаем соответствующие флаги.
В листинге отображаются сопоставления скан-кодов конкретным символам Юникода для различных состояний клавиш-модификаторов.

При работе с европейскими языками нередко требуется исключить задержку при вводе диакритических знаков. Добавим к немецкой раскладке (-layout de) модификатор -variant nodeadkeys.
Механизм «немых клавиш» отключается, благодаря чему символы умлаутов и акцентов отображаются в терминале моментально без ожидания составного ввода.

3. Кастомизация модификаторов: превращение CapsLock в Control
Параметр -option ctrl:nocaps переопределяет клавишу CapsLock, заставляя ее функционировать в качестве дополнительного Control. Проверим сгенерированный результат с помощью grep, отфильтровав упоминания Caps_Lock.
Поскольку поведение клавиши полностью изменено, идентификатор Caps_Lock исчезает из таблицы, оставляя вывод команды пустым.

Если необходимо сохранить обе функции, но поменять их местами, воспользуемся параметром -option ctrl:swapcaps.
В скомпилированном выводе видно взаимное переназначение: на позицию левого Control (keycode 29) теперь назначен Caps_Lock, а физический CapsLock выполняет роль управляющей клавиши.

4. Экспорт раскладки в файл и мгновенное применение через loadkeys
Создадим в домашней директории специальный каталог для хранения сформированных карт клавиатуры:

Скомпилируем раскладку US с заменой CapsLock на Control и сохраним полученный текстовый поток в файл ~/keymaps/custom_us.map с помощью оператора перенаправления (>):

Консольные утилиты Linux поддерживают сжатые таблицы. Выполним архивацию утилитой gzip -fk ~/keymaps/custom_us.map, где ключ -k позволяет сохранить исходный текстовый файл:

Сравним характеристики файлов командой ls -lh ~/keymaps/custom_us.map*.
Исходная текстовая таблица объемом около 120 КБ после сжатия уменьшается до компактных 4.0 КБ:

Загрузим созданную конфигурацию в текущую консоль TTY командой sudo loadkeys ~/keymaps/custom_us.map.
Операция выполняется мгновенно и без вывода ошибок, сразу активируя обновленное поведение клавиши Control в текстовом режиме.

Мы рассмотрели практический подход к трансляции раскладок XKB в консольный формат с помощью ckbcomp и их активации через loadkeys в Ubuntu.
Используя разобранные опции, вы сможете быстро настроить удобную клавиатурную среду в терминале Linux без долгого изучения страниц документации.