Предыстория

Так исторически сложилось, что за компьютером нужно минимум 2 лейаута - Английский и Русский.

К тому же уже давно использую раскладки вида Colemak (Vanilla / DH / CAWS) и свои модификации для русского типа RulemakDH иль RulemakCAWS (см Rulemak-CAWS.md)

Да всё это на двух разных матрицах - обычной Staggered ANSI и раздельной Columnar.

Пока до какого-то идеала дойти не удалось. Ясно лишь что для ANSI и Split клавиатуры нужны разные раскладки.

Было бы круто конечно полностью отказаться от ANSI клавиатур. Но пару раз в неделю приходится пользоваться ноутбуком, и каждый раз таскать с собой сплит не всегда удобно.

Соответсвенно конфиги раскладок мне надо постоянно редачить. Менять. Подгонять под разные клавы. Под разные задачи.


XKB: что это и почему боль

XKB (X Keyboard Extension) - это стандартная система клавиатурных раскладок в Linux. Она под капотом у X11 и Wayland. Вся клавиатура - от нажатия клавиши до символа на экране - проходит через XKB.

Можно определить несколько слоёв (Base, Shift, AltGr, AltGr+Shift). Можно назначать любые символы на любые клавиши. Можно dead keys, compose sequences, переопределение модификаторов. Всё что угодно.

Конфигурация XKB - это текстовые файлы. Выглядит это примерно так:

key <AD01> {
    type[group1]= "ALPHABETIC",
    symbols[Group1]= [ q, Q, backslash, division ]
};
key <AD02> {
    type[group1]= "ALPHABETIC",
    symbols[Group1]= [ w, W, U0312, division ]
};

На каждую кнопку - свой блок. На каждый слой - свой символ. И так 50+ кнопок.

И ты сидишь с таблицей keysym-ов, ручками переписываешь символы, постоянно сверяясь чтоб не ошибиться. Неудобно, легко ошибиться и т.д и т.п..

Собсна, именно это задолбало настолько, что появился xkb.sccl.cc.


xkb.sccl.cc

Визуальный редактор раскладок XKB для Linux. В вебе.

Ничего особенного - просто QoL штучка. Натыкал нужные кнопки, скопировал конфиг, пользуешься.

На чём сделано: Zine - тот же SSG на Zig, на котором работает основной sccl.cc. Чистый HTML+CSS+JS, никаких фреймворков, всё на клиенте.

Все стандартные символы из XKB для бинда уже есть на сайте. Но XKB умеет вбивать любые Unicode символы, т.ч. только ими можно не ограничиваться.

Принцип простой: тыкаешь на кнопку на экранной клавиатуре, появляется поиск по keysym-ам, выбираешь нужный символ. Повторяешь для каждого слоя. Готово - жмёшь “copy xkb config” или скачиваешь .xkb файл.


Как юзать

Сгенерил конфиг - дальше два пути:

Быстрый (временно):

xkbcomp my-layout.xkb $DISPLAY

Применится сразу. До перезагрузки или перелогина.

Персистентный:
Кладёшь .xkb файл в /etc/X11/xkb/symbols/, правишь evdev.xml чтоб система знала про твою раскладку. Или через DE-настройки клавиатуры.

На NixOS со sccl_nix раскладка уже параметризована - сгенеренный конфиг можно положить рядом и подключить через sccl.keyboard.


Contributing

Сайт хранит конфиг в localdata в своём формате. В любой момент его можно скачать как JSON.

Если запилил годную раскладку - создавай PR: скидываешь JSON в assets/presets/ и раскладка появляется на сайте в списке пресетов.
pr можно и на github, но мне не совсем удобно.

потом может добавлю прямой импорт из существующего xkb конфига. было б удобно.

Всё естестна опенсурс.