Я сделал типографскую раскладку. Круче Бирмана
Мне хотелось набирать польские ą, ę и ł, ставить «ёлочки» и © без поисков в палитре символов и, прости господи, Alt-кодов. А ещё — нормально переключаться между языками, когда их больше двух.
Увы, готового решения, которое устроило бы меня, я не нашёл. Поэтому сделал своё. Типографскую раскладку Юшкевича — с диакритикой через Shift, спецсимволами без зажатого Alt и слотами под шесть языков.
Всё началось с польского
Я начал делать раскладку, когда начал учить польский. К привычным русскому и английскому добавился третий язык — и обнаружились сразу три проблемы.
Во-первых, польские буквы конфликтовали с привычной типографикой. В польской программистской раскладке национальные буквы вводятся через правый Alt, он же AltGr. В раскладке Бирмана этот же модификатор используется для типографских символов. Например, сочетание с C нужно для польской ć и для ©, а с E — для ę и €.
Во-вторых, переключение языков по кругу перестаёт быть удобным, если их стало больше двух. Список языков приходится держать в голове, машинально жать Caps Lock и получать правильный язык не выйдет. Комфорт печати летит в пропасть.
В-третьих, в польском постоянно встречаются ą, ć, ę, ł, ń, ó, ś, ź, ż. Это не какие-то редкие символы: они нужны уже в простом cześć — «привет» — или dziękuję — «спасибо». Разбираться с их вводом приходится уже с первых слов. Пальцы в узел завязываются, пока набираешь вот это всё по много раз.
Неужели нельзя просто пользоваться и польскими буквами, и типографикой, а также иметь понятный способ ввода, чтобы не приходилось выкручивать руки?!
Мне совсем не хотелось расставаться с картой символов Бирмана. Я считаю её удачной — и именно она стала основой моего проекта. Изменить я хотел прежде всего механику: как добираться до нужного знака и переключать языки.
Понеслась душа по кочкам
Пока языков два, переключение легко запоминается: нажал сочетание — попал в другой язык.
С тремя появляется дополнительный вопрос: сколько раз нажать, чтобы добраться до нужного? Иногда достаточно одного переключения, иногда приходится пройти через промежуточную раскладку. Начинаешь следить за индикатором языка, хотя хотел просто написать слово.
Мне хотелось оставить быстрый переход между русским и английским, а польскому дать отдельное сочетание. Чтобы он всегда вызывался одним и тем же действием.
Так у проекта появились две главные задачи: удобная польская диакритика и прямой доступ к дополнительным языкам.
Польские буквы через Shift
С диакритикой я решил попробовать такой порядок: сначала напечатать букву, потом уточнить её вид.
Выбран польский язык:
- Нажимаю a.
- Отпускаю клавишу.
- Отдельно нажимаю и отпускаю Shift.
- Уже набранная a превращается в ą.
Ещё одно нажатие Shift возвращает обычную a.
Я назвал это Shift-циклом: каждое отдельное нажатие перебирает варианты последней буквы по кругу:
То бишь, цикл выглядит так:
- a → ą → a
- c → ć → c
- e → ę → e
- l → ł → l
- n → ń → n
- o → ó → o
- s → ś → s
- z → ż → ź → z
У большинства польских букв всего один дополнительный вариант. У z их два: первое нажатие даёт ż, второе — ź, третье возвращает z.
Например, чтобы написать mały — «маленький», — набираю mal, нажимаю Shift и дописываю y. Для cześć нажимаю Shift после s, затем после последней c.
Получается короткий жест прямо по ходу слова. Мне не нужно заранее выбирать разновидность акцента, как при вводе через мёртвую клавишу: результат сразу виден в тексте.
Удержание Shift вместе с буквой работает привычно — вводит заглавную. Для диакритики нужно сначала отпустить букву, а затем отдельно нажать Shift.
Та же идея работает с другими языками
Начал я с польского, но механику можно применять и дальше:
- В немецком: a → ä → a.
- Во французском: e → é → è → ê → ë → e.
- В испанском: n → ñ → n.
Набор вариантов зависит от выбранного языка. Поэтому в польском режиме после a сразу появляется нужная ą.
Сейчас в демо 14 языков и 24 варианта клавиатуры с учётом региональных версий. Польский режим сохраняет привычное расположение QWERTY; у других национальных режимов есть собственные карты, включая QWERTZ и AZERTY.
Основной фокус — европейские языки. Поддержка арабского, иврита, турецкого и вьетнамского пока экспериментальная, а способы ввода зависят от языка.
Польский — на отдельное сочетание
Для переключения языков я задействовал Caps Lock.
Логика такая: два основных языка переключаются одиночным нажатием, а дополнительные вызываются напрямую.
Например, можно настроить так:
- Caps Lock — переключает русский и английский
- Caps Lock + J — включает польский
- Caps Lock + K — включает немецкий
- Caps Lock + L — включает французский
- Caps Lock + ; — включает испанский
Здесь + означает одновременное удержание клавиш. Языки в списке — пример настройки: назначения можно менять.
Для моего исходного сценария достаточно пары русский/английский и польского на Caps Lock + J. Остальные сочетания пригодятся, если появятся новые рабочие языки.
Внутри проекта это слоты S0–S4: S0 содержит пару основных языков, ещё четыре слота — по одному. Всего получается шесть языковых назначений.
В браузерном демо переключение происходит внутри страницы. Для знакомства с раскладкой добавлять языковые пакеты в ОС не требуется.
Для дизайнеров: польская ł и © в одном тексте
Допустим, я готовлю польскую версию интерфейса. На кнопке — Dołącz, в карточке тарифа — 49 zł, в подвале — ©.
Здесь в одном макете встречаются и национальные буквы, и типографские символы. Для последних я добавил последовательный ввод без удержания модификатора.
Чтобы получить ©:
- Нажимаю и отпускаю Alt.
- Нажимаю C.
Удерживать Alt и одновременно тянуться к C не нужно.
Одиночное нажатие Alt включает слой M1 для следующего символа. Два последовательных нажатия включают слой M2:
- Alt, затем C → ©
- Alt, затем E → €
- Alt, затем R → ®
- Alt, затем T → ™
- Alt, затем Alt, затем C → ¢
Между нажатиями нет ограничения по времени. Можно сделать паузу, посмотреть подсказку и продолжить. Esc отменяет ожидающий ввод.
В польском режиме сохраняется и знакомый способ ввода букв: удерживаемый Alt с C даёт ć, а отпущенный Alt, затем C — ©. Разные жесты позволяют этим назначениям сосуществовать.
Для международных макетов в справочнике можно найти валюты $, €, ¥, ¢, коммерческие знаки и другие символы. На macOS вместо Alt используется Option; клавиши в примерах указаны по физическим позициям US QWERTY.
Для авторов: «ёлочки», тире и многоточие
При работе с польским русские тексты никуда не исчезают. В них по-прежнему нужны длинное тире, правильные кавычки и неразрывные пробелы.
Например:
«Учу польский — и заодно переделываю клавиатуру…»
Для этих знаков тоже есть последовательности. Сначала нажимаю и отпускаю Alt, затем нужную клавишу:
- Alt, затем - → —
- Alt, затем / → …
- Alt, затем , → «
- Alt, затем . → »
Кавычки „“ доступны через второй слой: два отдельных нажатия Alt, затем запятая или точка соответственно. Другие варианты можно найти в справочнике.
Есть и неразрывный пробел — например, чтобы число и обозначение валюты в 49 zł оставались на одной строке.
Нужные символы вводятся явно. Раскладка помогает сразу набирать аккуратный текст, а выбор кавычек и пунктуации остаётся за автором.
Для кода есть выключатель
Когда перехожу от обычного текста к коду или разметке, дополнительные режимы ввода иногда хочется отключить.
Для этого достаточно нажать оба Ctrl вместе и отпустить.
Типографика выключается, ожидающие символы и циклы диакритики сбрасываются. Набранный текст сохраняется, переключение языков через Caps Lock в демо продолжает работать.
Повторное нажатие обоих Ctrl возвращает типографику.
Можно попробовать без установки
Типографская раскладка Юшкевича — бесплатный открытый проект. Мой собственный код распространяется под MIT, авторство и условия использования сторонних материалов указаны отдельно.
Для знакомства не нужны установка и регистрация. Можно использовать физическую клавиатуру или нажимать экранные клавиши. Внутри есть обучающий тур, поиск символов и шпаргалка.
Предлагаю начать с моего исходного сценария:
- Выбрать польский язык.
- Набрать a и отдельным нажатием Shift превратить её в ą.
- Попробовать cześć: Shift после s и после последней c.
- Набрать © через отпущенный Alt.
- Закрепить польский за Caps Lock + J.
Я начал этот проект, потому что учил язык и постоянно спотыкался о клавиатуру. Сейчас мне интересно проверить, насколько такой способ ввода подходит другим людям — с их языками, привычками и рабочими задачами.
Сколько языков у вас на клавиатуре — и на каком из них привычное переключение начало раздражать?