Как настроить раскладку Colemak в Linux
Узнайте, как активировать Colemak в консоли, X11 и Wayland. Разберитесь, почему на SSH-серверах не меняют раскладку и как сохранить привычное управление в Vim и клавиши Ctrl.
Где настраивается раскладка Colemak в Linux
В Linux раскладка Colemak не является единой системной настройкой. Раскладка применяется тем компонентом, который в данный момент считывает ввод с клавиатуры, поэтому она настраивается в одном из трех мест: текстовая консоль, X11 server или ваш Wayland compositor. Если выбрать неверный уровень, изменения не вступят в силу.
Четвертый вариант позволяет полностью обойти операционную систему. Клавиатура, поддерживающая переназначение клавиш на уровне прошивки (например, устройства с QMK или VIA), отправляет коды нужных вам символов. В результате любое устройство, к которому вы подключаете такую клавиатуру, будет использовать Colemak без какой-либо настройки, включая серверную консоль или чужой компьютер. Минус в том, что встроенная клавиатура ноутбука при этом продолжит печатать в QWERTY.
Остальная часть этого руководства посвящена трем программным уровням, объяснению того, почему удаленному серверу они почти никогда не требуются, а также влиянию смены раскладки на Vim и сочетания клавиш в терминале.
Проверка текущих настроек системы
Выполните эти команды перед внесением любых изменений. Они выводят текущие параметры и список вариантов раскладки Colemak, доступных в вашей базе данных клавиатур X.
localectl status
setxkbmap -query
localectl list-x11-keymap-variants us | grep colemakПоследняя команда должна вывести colemak и colemak_dh. Раскладка Colemak присутствует в xkeyboard-config уже много лет. Вариант Colemak-DH появился в версии 2.34, поэтому его отсутствие возможно только в очень старых дистрибутивах. По состоянию на август 2026 года, Ubuntu 24.04 и Debian 13 включают более новые версии.
Если setxkbmap -query сообщает, что не может открыть дисплей, значит, вы используете сеанс Wayland, и управление раскладкой осуществляется композитором. Для этого случая предусмотрен отдельный раздел ниже.
Colemak или Colemak-DH
Colemak меняет положение семнадцати клавиш относительно QWERTY и оставляет десять на прежних местах, включая Z, X, C и V. Благодаря этому сочетания клавиш для отмены, вырезания, копирования и вставки остаются там, где их ожидает левая рука. Именно ради этой совместимости раскладка имеет такой вид.
Colemak-DH — это модификация Colemak. В ней изменены позиции D, B и G, а H и M поменяны местами, так как в обычном Colemak для ввода D и H требуется тянуться указательным пальцем к центральному столбцу клавиатуры. Официальная модификация сохраняет за каждой буквой тот же палец, что использовался в Colemak, поэтому пользователю, переходящему с Colemak на DH, не приходится учить раскладку заново — изменения минимальны. Вариант для XKB — colemak_dh, а для клавиатур с дополнительной клавишей рядом с левым Shift используется colemak_dh_iso.
При переходе с QWERTY обучение в любом случае потребует усилий, поэтому выбирайте вариант, который кажется вам более удобным, и оставайтесь на нем. Смена раскладки во второй раз потребует столько же времени, сколько и в первый, так как вам придется перестраивать мышечную память, привязанную к физическому расположению клавиш.
Настройка раскладки Colemak в X11 с помощью setxkbmap и localectl
setxkbmap us -variant colemak
setxkbmap -querysetxkbmap -query теперь должен выводить variant: colemak, а ввод в любом окне должен соответствовать раскладке Colemak. Изменение действует до завершения сеанса X и не записывается на диск, что делает этот способ безопасным для тестирования раскладки.
Чтобы сохранить настройки после перезагрузки:
sudo localectl set-x11-keymap us pc105 colemak
localectl statusПорядок аргументов: раскладка, модель, вариант. localectl status теперь должен показывать X11 Layout: us и X11 Variant: colemak. Команда localectl также преобразует выбор в наиболее подходящую раскладку для консоли, если не добавлен флаг --no-convert, поэтому во многих системах эта единственная команда также настраивает tty. В Debian и Ubuntu после этого проверьте файл /etc/default/keyboard, так как именно его считывает console-setup при загрузке.
Настройка раскладки Colemak в Wayland
В сеансе Wayland отсутствует X-сервер для настройки. Композитор загружает раскладку клавиатуры и передает её каждому приложению, поэтому раскладка является параметром композитора. Именно поэтому команда setxkbmap здесь не работает: она либо не находит дисплей, либо меняет раскладку только для XWayland, а нативные приложения Wayland игнорируют эти изменения.
В GNOME настройка выполняется через ключ gsettings:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"Изменения применяются немедленно, выход из системы не требуется. Строка us+colemak представляет собой сочетание раскладки и варианта, соединенных знаком «плюс».
В sway добавьте настройку в файл ~/.config/sway/config:
input type:keyboard {
xkb_layout us
xkb_variant colemak_dh
}Перезагрузите конфигурацию с помощью swaymsg reload. Команда swaymsg -t get_inputs выводит список всех устройств ввода с используемыми ими раскладками; используйте её для проверки, если некорректно работает только одна клавиатура.
В KDE Plasma откройте «Параметры системы» (System Settings), перейдите в раздел «Клавиатура» (Keyboard), затем «Раскладки» (Layouts) и добавьте English (US) с вариантом Colemak.
Настройка раскладки Colemak в текстовой консоли
Консоль — это текстовый tty, доступный по нажатию Ctrl+Alt+F3, у которого есть собственная раскладка клавиатуры. Настройки X11 или композитора на неё не влияют, что важно при работе в терминале на виртуальной консоли.
В Debian и Ubuntu отредактируйте /etc/default/keyboard:
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="colemak"
XKBOPTIONS=""Затем примените изменения:
sudo setupconПроверьте раскладку, набрав текст в консоли. Пакет console-setup преобразует описание XKB в консольную раскладку с помощью ckbcomp, поэтому в этих системах консоль и X используют общее описание.
В дистрибутивах, использующих раскладки kbd напрямую, сначала узнайте имя файла:
localectl list-keymaps | grep -i -e colemak -e latin9
sudo localectl set-keymap en-latin9Пакет kbd поставляет раскладку Colemak для консоли как i386/colemak/en-latin9, поэтому обычно используется имя en-latin9, а не colemak. Указывайте имя, которое присутствует в списке, так как несуществующее имя будет отклонено.
sudo loadkeys en-latin9 немедленно меняет раскладку текущей консоли, а sudo loadkeys us возвращает её обратно. Рассматривайте loadkeys как временный тест, а не как постоянную конфигурацию: настройки действуют до перезагрузки, а в Debian и Ubuntu команда setupcon при загрузке восстанавливает параметры, указанные в /etc/default/keyboard.
Нужна ли headless VPS раскладка Colemak?
Почти никогда, и важно понимать почему. SSH передает символы, а не позиции клавиш. Ваш эмулятор терминала получает нажатие клавиши, локальная раскладка преобразует его в символ, и только этот символ передается через соединение. Сервер получает n, не имея возможности узнать, какая физическая клавиша его отправила. Поэтому раскладка, установленная на вашем ноутбуке, следует за вами во все SSH-сессии, в tmux и во все редакторы, которые вы запускаете удаленно, а удаленной машине вообще не требуется настройка клавиатуры.
Помните об этом, прежде чем приступать к редактированию файлов клавиатуры на продуктивных серверах. Если вы управляете парком Linux-серверов, раскладка относится к машине, за которой вы сидите, а не к парку, поэтому ей не место в вашей конфигурации автоматизации. Первые десять минут на новой VPS принесут больше пользы, чем это.
Стоит предусмотреть два исключения. Первое — консоль, подключенная непосредственно к машине. Браузерная консоль в панели провайдера обычно представляется виртуальной машине как клавиатура, поэтому нажатия клавиш приходят в виде скан-кодов, и раскладка консоли самого сервера определяет, какой символ появится на экране. Это единственный случай, когда раскладка, установленная на сервере, вступает в силу, и это также ваш путь спасения, когда SSH перестает работать, поэтому незавершенная настройка раскладки консоли там — это реальный риск.
Последовательная консоль (serial console) ведет себя иначе, так как она передает символы, и применяется ваша локальная раскладка. Второе исключение — общая машина. Раскладка консоли действует на всю систему, поэтому установка Colemak на сервере, в который входят другие люди, изменит её и для них, и они не догадаются, в чем причина.
Что происходит с клавишами hjkl в Vim
В раскладке Colemak клавиша h не перемещает курсор. Остальные три работают. Клавиша j находится под клавишей Y раскладки QWERTY, k — под N, а l — под U. В результате клавиши управления курсором оказываются разбросаны по трем рядам, а не под четырьмя пальцами.
Существует два рабочих решения, и у обоих есть свои сторонники.
Оставьте настройки по умолчанию и переучитесь. В этом случае конфигурация не нарушается, все плагины продолжают работать, а любые советы по Vim, написанные другими пользователями, остаются актуальными.
Либо переназначьте четыре клавиши под правой рукой на те места, где раньше были hjkl. В Colemak эти клавиши соответствуют h, n, e и i. В Colemak-DH те же физические клавиши соответствуют m, n, e и i, так как в этой раскладке H и M поменяли местами.
noremap n j
noremap e k
noremap i l
noremap l i
noremap k nТеперь n перемещает курсор вниз, e — вверх, i — вправо, а h уже была клавишей влево. Последние две строки возвращают команды, которые вы вытеснили: l переводит в режим вставки, а k повторяет последний поиск. Примените те же настройки для заглавных букв, иначе сочетание Shift и клавиши курсора приведет к неожиданному результату.
Опция langmap в Vim выполняет аналогичную задачу, но требует меньше строк:
set langmap=nj,ek,il,li,knКаждая пара интерпретируется как: символ, который вы нажали, и символ, который должен обработать Vim. Это правило применяется только к нормальному режиму, поэтому в режиме вставки текст в Colemak вводится как обычно. В справке Vim указаны два ограничения: langmap не распространяется на комбинации с Ctrl или Alt, а маппинги плагинов, написанные для стандартных клавиш, могут работать некорректно.
Что бы вы ни выбрали, сделайте выбор один раз. Переназначение, от которого вы откажетесь через месяц, будет стоить вам еще одного месяца на переобучение.
Что происходит с сочетаниями клавиш в терминале
Управляющий код терминала определяется символом, а не физической клавишей, поэтому все сочетания с Ctrl перемещаются вместе с раскладкой. Ctrl+C, Ctrl+Z, Ctrl+X и Ctrl+V сохраняют свои позиции, так как в Colemak клавиши Z, X, C и V намеренно оставлены там же, где они находятся в QWERTY.
Четыре сочетания, которые вы используете ежедневно, всё же меняют положение. Ctrl+D, завершающее ввод, теперь находится там, где в QWERTY расположена клавиша G. Ctrl+R, поиск по истории, находится на месте клавиши S в QWERTY. Ctrl+E, переход в конец строки, находится на месте клавиши K. Ctrl+U, очистка строки, находится на месте клавиши I.
tmux сохраняет свой префикс по умолчанию, так как в Colemak клавиша B не меняет своего положения. В раскладке Colemak-DH клавиша B перемещается в верхний ряд, и префикс следует за ней — это первое, что вы заметите, если у вас запущена длительная сессия tmux на VPS. Переназначение префикса на удобную вам клавишу выполняется одной строкой конфигурации, и это проще, чем дважды переучивать один и тот же рефлекс.
Сочетания клавиш рабочего стола подчиняются тем же правилам. Привязка к Super+E перемещается вместе с раскладкой, так как она определяется символом. Привязка к Super+F1 остаётся на месте, так как функциональные клавиши не переназначаются раскладкой.
Сколько времени занимает переход
Никто не сможет назвать точные сроки для ваших рук. Слепая печать — это мышечная память. Вы не учите расположение букв, вы перестраиваете рефлекс, который превращает слово в последовательность движений пальцев, поэтому единственный полезный фактор — это время, затраченное на печать.
Согласно отчетам пользователей (это субъективные журналы практики, а не контролируемые измерения), в первую неделю скорость падает более чем в два раза, а возврат к прежним показателям происходит в период от одного до трех месяцев ежедневного использования. Разброс между людьми велик, поэтому воспринимайте эти цифры как ориентир, а не как график.
Две привычки замедляют процесс. Переключение между QWERTY и Colemak в течение дня ослабляет оба рефлекса, поэтому большинство тех, кто успешно завершил переход, полностью переходят на новую раскладку на основном компьютере. Начало обучения в загруженную неделю приводит к печати с ошибками под давлением времени, что приучает смотреть на клавиши.
Настройте путь назад до того, как он вам понадобится, потому что момент, когда вам снова понадобится QWERTY, наступит именно тогда, когда что-то сломается и кто-то будет ждать.
Как быстро переключиться обратно на QWERTY
В X11 команда setxkbmap us мгновенно возвращает раскладку QWERTY. В консоли то же самое делает sudo loadkeys us. Чтобы отменить постоянную настройку, выполните sudo localectl set-x11-keymap us.
Переключатель удобнее, чем команда, которую приходится вводить в раскладке, на которой вы еще не можете печатать:
setxkbmap -layout us,us -variant colemak, -option grp:win_space_toggleЭта команда загружает Colemak как первую раскладку, а обычную US — как вторую; комбинация Super+Space переключает их. Запятая в конце colemak, — не опечатка: она задает вариант colemak для первой раскладки и отсутствие варианта для второй. В GNOME добавьте оба источника ввода в настройках, где Super+Space уже настроен на переключение.
Два запроса пароля отображаются вне сеанса рабочего стола и требуют отдельного внимания. Экран входа в систему запускается до применения настроек сеанса, поэтому проверяйте его через выход из системы, а не полагайтесь на настройки. Если диск зашифрован, запрос парольной фразы выполняется из initramfs, у которого есть собственная копия раскладки клавиатуры. В Debian и Ubuntu пересоберите её с помощью sudo update-initramfs -u после изменения /etc/default/keyboard, затем один раз перезагрузитесь для проверки, пока у вас еще есть другой способ доступа к машине.
Можно ли оставить одну программу в раскладке QWERTY?
Раскладка применяется до того, как приложение получает нажатие клавиши. X server или композитор преобразует скан-код в символ и передает его дальше, поэтому приложение не может запросить другую раскладку. Оно способно лишь переназначить то, что уже получило. Именно поэтому исправление для Vim находится в конфигурации самого Vim, и именно поэтому не существует общего переключателя раскладки для отдельных окон.
Работают два подхода. Первый — настройка для конкретного устройства. Если ввод в QWERTY осуществляется с отдельной клавиатуры, установите раскладку для этого устройства, а не для всей системы:
xinput list
setxkbmap -device 12 -layout usВозьмите идентификатор из xinput list и подтвердите его, поочередно печатая на каждой клавиатуре. sway принимает аналогичные настройки для конкретного идентификатора устройства из swaymsg -t get_inputs, при этом более специфичный селектор имеет приоритет над type:keyboard.
Второй подход — выполнить переназначение внутри самого приложения, как это делает langmap в Vim. В играх почти всегда есть экран настройки клавиш, и переназначение клавиш управления там занимает меньше времени, чем попытки изменить раскладку извне. Для всего остального, где нет такой возможности, используйте описанный выше переключатель раскладки и нажимайте его перед запуском программы.
FAQ
Нужно ли настраивать Colemak на моем VPS?
Нет, если вы подключаетесь по SSH. SSH передает символы, поэтому раскладка определяется на вашем ноутбуке до отправки данных, и сервер получает те же байты, что и при вводе на QWERTY. Исключение — консоль в браузере в панели управления провайдера: она подключается к виртуальной машине как клавиатура и использует собственную раскладку сервера. Эта консоль — ваш способ восстановления при сбоях SSH, поэтому меняйте её только при полной уверенности и обязательно протестируйте, пока SSH ещё работает.
Что выбрать: Colemak или Colemak-DH?
Оба варианта требуют переучивания после QWERTY, поэтому выбирайте исходя из удобства, а не сложности перехода. В Colemak-DH клавиши D, B и G перемещены, а H и M поменяны местами, так как в обычном Colemak для нажатия D и H требуется тянуться указательным пальцем в средний ряд. Имена вариантов в XKB — colemak и colemak_dh, а colemak_dh_iso предназначен для клавиатур с дополнительной клавишей рядом с левым Shift. Выполните localectl list-x11-keymap-variants us | grep colemak, чтобы увидеть доступные в вашей системе варианты.
Что происходит с клавишами hjkl в Vim при использовании Colemak?
h остается на месте. j перемещается под клавишу Y (в раскладке QWERTY), k — под N, а l — под U, из-за чего клавиши управления курсором оказываются разбросаны по трем рядам. Вы можете переучиться использовать их на новых местах, что сохранит работоспособность всех плагинов и руководств, либо переназначить четыре клавиши под правой рукой: h, n, e и i в Colemak, или m, n, e и i в Colemak-DH. Опция langmap в Vim выполняет ту же задачу для нормального режима, однако она не затрагивает комбинации с Ctrl и может вызвать конфликты с маппингами плагинов.
Как скоро я вернусь к прежней скорости печати?
Рассчитывайте на недели, а не дни, так как это вопрос мышечной памяти, требующий регулярной практики. Согласно отчетам пользователей, в первую неделю скорость составляет менее половины от прежней, а возврат к нормальным показателям занимает от одного до трех месяцев ежедневной работы. Чередование QWERTY и Colemak каждый день замедляет процесс, так как ни один из рефлексов не успевает закрепиться.
Почему команда setxkbmap не сработала на моем рабочем столе?
Почти наверняка потому, что используется Wayland. В Wayland композитор управляет раскладкой и передает её каждому приложению, поэтому setxkbmap либо не находит дисплей, либо меняет настройки только для XWayland, а нативные приложения игнорируют изменения. Установите раскладку в настройках композитора: через ключ gsettings org.gnome.desktop.input-sources в GNOME, в конфигурации xkb_variant для sway или на странице «Раскладки» в системных настройках KDE Plasma.