Яков Пуртов

Блог о продуктовом дизайне, разработке, компьютерах, интерактивной литературе и пр.

TREKL — Typographic Russian Enhanced Keyboard Layout

TREKL (Typographic Russian Enhanced Keyboard Layout) — улучшенная русская типографская раскладка клавиатуры. Создана с любовью к русской типографике и для реальной жизни, где приходится использовать смесь языков (английские символы в русском тексте). Даёт основу для энтузиастов кастомных и сплит-клавиатур.

Пригодится, если...

  • Хотите правильную русскую типографику,
  • Пишете markdown-заметки или используете Obsidian,
  • Не любите переключать язык (русский → английский → русский), чтобы ввести дополнительный символ (например, меншенить людей через «@», ставить «#тег», или что-то ещё: «5 > 1»),
  • Хотите стабильных препинаков на кастомной / сплит-клавиатуре (например, точка и запятая всегда в одном месте на любом языке).

Как пользоваться

TREKL даёт два дополнительных слоя символов поверх стандартной раскладки, вызвать которые можно зажав соответствующую клавишу-модификатор. А также изменяет некоторые символы в shift-слое.

На старый лад слой назвали бы «регистром». Вы уже умеете пользоваться дополнительными слоями клавиатуры, например, чтобы напечатать восклицательный знак, удерживая ⇧ Shift, жмёте 1. Зажатый ⇧ Shift активирует дополнительный слой раскладки, который переопределяет поведение остальных клавиш.

MacOS

  • Зажать правый или левый ⌥ Option → Печать дополнительного символа (на схеме: светло-зелёный символ в левом верхнем углу клавиши).
  • Зажать правый или левый ⌥ Option+⇧ Shift → Печать второго дополнительного символа (на схеме: бирюзовый символ в правом верхнем углу клавиши).


Windows

  • Зажать правый Alt Gr → Печать дополнительного символа (на схеме: светло-зелёный символ в левом верхнем углу клавиши).
  • Зажать правый Alt Gr+⇧ Shift → Печать второго дополнительного символа (на схеме: бирюзовый символ в правом верхнем углу клавиши).


На некоторых клавиатурах Alt Gr (справа) может быть подписан как просто Alt. Технически, Alt Gr — это тоже самое, что и Ctrl+Alt (левый). Это сочетание также должно работать.


Мнемоническая схема

Или как запомнить расположение символов.

Не все символы используются каждый день. Держать перед глазами визуальную схему раскладки непрактично. Нужен был простой подход, чтобы легко найти / вспомнить нужный символ. Если забыли символ, то скорее всего он найдётся «на ощупь» одним из следующих способов.

Правила размещения символов:

  1. Почти все стандартные символы находятся в привычном месте. За базис взята раскладка Windows. На MacOS такая раскладка называется «Russian — PC» («Русская — ПК»). Причины изменения некоторых стандартных штук см. ↓ в «особенностях раскладки».
  2. Близкие по смыслу к стандартным → в том же месте.
    • Кавычки «ёлочки» и „лапки“ → на скобках ( )
    • Длинное (em-dash) и среднее тире (en-dash) на дефисе.
    • «≠, ±» (не равно, плюс-минус)= +
    • «∗» (asterisk operator, «звёздочка в пароле»)*
    • «‰» → %
  3. Символы стрелок (←↖↑↓↗→) на домашнем положении правой руки. Если указательный палец на «пеньке», то все стрелки будут в привычном расположении «IJKL». Это похоже, когда вы ставите пальцы левой руки в играх на «WASD». Пространственная метафора самая сильная в данном случае. На сплит-клавиатурах на эти клавиши в дополнительном слое часто добавляют навигацию стрелками.
  4. Клавиша совпадает с первой буквой русского или английского названия символа:
    • «•, ⌫» (маркер списка, стереть)bullet, backspace → B (английская)
    • «× ·» (умножение)multiplication → M (английская)
    • «№» (номер)number → N
    • «́ » → ударе́ние → У (русская)
    • «⚠, 〰» (внимание, волна)warning, wave → W
    • «★ ☆» → звезда → З (русская)
    • «°» (градус)degree → D
    • «§» → параграф → П
    • «≈, α» (приблизительно, альфа)approximately, alpha → A (английская)
    • Индексы «¹», «²», «³» → 1 2 3
  5. Форма символа похожа на букву (русскую или английскую). Вариант, когда не осталось места.
    • «✓» (галочка)V
    • «✗» (крестик)X (английская)
    • «∞» (бесконечность)8
    • «∅» (пустое множество)Q
    • «β» (бета)В (русская)
    • «^» (caret)А (русская)

Markdown, Obsidian и чаты

MD-разметка, а также хештеги и меншены через «@» стали стандартом оформления текста в интернете, соцсетях и чатах. На стандартной раскладке всё время сталкиваешься с кейсом, когда пишешь заметку на русском и нужно переключиться на английский ради 1—2 символов.

Больше никаких лишних прыжков между языками: русский → английский → русский!

TREKL решает проблему:

  • Хеш «#» на ⇧ Shift 3 на обоих языках позволяет легко вводить заголовки и хештеги. Символ «№» используется значительно реже. Поэтому переехал на Alt | ⌥ N, что сделало его доступных на обоих языках.
  • Квадратные скобки «[ ]» теперь всегда доступны по Alt | ⌥ на любом языке, что позволяет оформлять «[[wiki-ссылки]]» и «[md-ссылки](address)».
  • Вертикальная черта (пайп) «|» также теперь доступен по сочетанию ⇧ Shift \ на обоих языках, что позволяет создавать таблицы и именованные ссылки.
  • Угловые скобки «< >» доступных на обоих языках по сочетанию Alt | ⌥ ⇧ Shift, что позволяет оформлять цитаты и знаки «больше», «меньше». Альтернативное сочетание: Alt | ⌥ ⇧ Shift 6 и 7.
  • Бектик «`» и тильда «~» всегда доступны по сочетаниям Alt | ⌥ и Alt | ⌥ ⇧ Shift соответственно, что позволяет оформлять блоки кода и зачёркнутый текст.
  • Собака «@» на ⇧ Shift 2 на обоих языках позволяет меншенить людей в чатах и сущности в некоторых приложениях.

Стабильные препинаки для кастомных и сплит-клавиатур

Мне никогда не нравилось, что на русском и английском точка и запятая в разных местах, не говоря уже про остальные знаки препинания (препинаки). Стандартные клавиатуры уже не спасти, но в кастомной клавиатуре я могу делать всё что захочу, например, вынести препинаки в отдельный слой.

Обычно прошивки кастомных клавиатур позволяют на любую физическую кнопку назначить вызов одного из стандартных скан-кодов (аппаратный код, который посылает физическое устройство в драйвер; количество скан-кодов ограничено) или сразу сочетание нескольких скан-кодов.

Казалось бы, а в чём проблема? Но не всё так просто! При переключении языка один и тот же скан-код выдаёт разные символы. У нас просто нет такого скан-кода, который мы можем привязать к клавише, чтобы на любом языке всегда печатать точку. Дело как раз в клавиатурной раскладке: раскладка отвечает в ОС за интерпретацию нажатых скан-кодов. Например, если вы хотите раскладку дворака, вам не нужно физически менять клавиши, достаточно изменить интерпретацию: скан-код → символ.

Это моя главная мотивация создания TREKL. У меня была мечта, когда я купил себе сплит-клавиатуру: «загнать все настройки в прошивку клавиатуры, чтобы она знала как вводить нужные символы на любой ОС без дополнительного софта и драйверов». Перепробовав множество способов, понял, что на сегодня такая мечта недостижима, если ты хочешь отойти от стандартной раскладки хоть на сколько-то. Вместо дополнительных программ, скриптов и прочих костылей, самым надёжным способом преобразования «скан-код → юникод-символ» оказалась изменение самой раскладки на ОС.

TREKL предоставляет стабильные для двух языков сочетания «скан-код (или их комбинация) → юникод-символ» для основных знаков препинания и технических символов.

Для пользователей MacOS, привыкших к запятой и точке на 6 и 7, доступен фолбек через Alt | ⌥. Это ещё один запасной вариант биндинга точки «.» и запятой «,».

Стабильные командные сочетания на MacOS

Некоторый софт не умеет корректно обрабатывать биндинги для разных языков. Привязываешь сочетание S для сохранения, переключаешься на русский, жмёшь то же самое → Ы — неизвестная команда.

Чтобы решить эту проблему, при зажатии одного из сочетаний: , ^ Ctrl^ Ctrl → текущая раскладка подменяется на стандартную «США международная — ПК» на обоих языках. Таким образом даже на русском языке командные сочетания будут посылать английские буквы и знаки препинания.

Другие особенности TREKL

  • На английском языке поменяны местами двоеточие «:» и точка с запятой «;». Чтобы вызвать «;» нужно зажать ⇧ Shift. Мотивация: двоеточие намного чаще используется в английских текстах, чем точка с запятой; также я использую lisp-языки, где «:» используется чаще «;». Для си-подобных языков, где всё усыпано «;» — это будет немного больновато, но в кастомной клавиатуре вы сможете переопределить биндинг как вам нравится. Может быть я сделаю дополнительную версию, где поменяю обратно, если будет достаточно желающих.
  • На русской раскладке клавиша (обратный слеш) \ заменена на (обычный слеш) /, что более полезно. ⇧ Shift для обоих языков напечатает → «|» (пайп). Обратный слеш в обоих языках доступен по модификатору Alt | ⌥.
  • На ⇧ Shift 2 → печатается символ «@» в обоих языках. Английская двойная кавычка «"» почти никогда не нужна при печати на русском, когда у вас есть нормальные кавычки «ёлочки» и „лапки“. Если всё же понадобится одинарная «’» или двойная «"», то можно вызвать их с модификаторами Alt | ⌥ и Alt | ⌥ ⇧ Shift соответственно по клавише Э.
  • Версия для MacOS поддерживает стандартный смайлик: 🙂 по  S. Полезно, если хотите отучиться спамить скобки. Или «сыпать ногтями», как подшучивают зумеры.

Некоторые сценарии использования

Помимо удобной работы с md-разметкой и правильной русской типографикой вам доступны следующие штуки:

  • Ударе́ние мо́жно ста́вить
  • α-версия, β-релиз, λ-выражение
  • Из русской раскладки: I кв., II кв., III кв., IV кв., XXI век
  • Нажмите: ↵, ↹, ⌥, ⇧, ⌘, ^, ⌫
  • Рейтинг: ★★★☆☆
  • Статус: ✓ Готово, ✗ Провал
  • Состояния: ∅ Пока пусто, ⚠ Внимание!
  • Сноски: «Скидка 90%¹», «¹ На самом деле это скидка на выгоду от переплаты».
  • Площадь: 100 м², расход воды: 24 м³
  • Отправить по ссылке: ↖ Обратно или Отсюда ↗
  • Указывать направление: ← туда, сюда →, ↓ далее, ↑ ранее
  • Валюты: ₽, $, ¥
  • Торговые марки и копирайты: ®Лучший товар™, © Яков Пуртов, 2024 г.
  • Что-то математическое: ~20 кг., 20 + 31 ≠ 50, но ≈ 50±1, ну или ∞
  • Размеры: 100×20×30 мм
  • Параграфы и номера: § 1.1, №100
  • Градусы: сегодня -1°C, угол заточки 38°
  • Пароль: ∗∗∗∗∗, и скрытие: му∗∗∗
  • Средняя точка как соединитель: 99 ₽ · 10 шт.
  • Буллеты списков: •, —
  • Не «сыпьте ногтей», а пишите 🙂 (только на MacOS).

Альтернативы

Если вам нужна типографская раскладка, но по каким-то причинам не подходит TREKL, то есть «Типографская раскладка Ильи Бирмана», попробуйте её. Набор дополнительных символов немного отличается.

Раньше я использовал её, но когда у меня появилась сплит-клавиатура, она перестала закрывать мои потребности (что я описал ↑ выше). Пришлось создавать свою. Что вы тоже можете сделать: используйте ukelele на MacOS и MKLC на Windows.

〰〰〰〰〰〰

Universal Layout предлагает стабильные препинаки перерабатывая стандартные английскую и русскую раскладки в одну объединённую раскладку с переключением языка по CapsLock. Есть для Windows, MacOS и Linux. Цена решения: часть русских букв уехала на дополнительный слой. Набор дополнительных символов немного отличается.

Про Universal Layout я узнал уже после того, как сделал свою раскладку. Всё же идеи у нас немного отличаются. Смотрите, что вам ближе.

Скачивание и условия использования

⚠ TREKL я сделал для себя, но делюсь со всеми бесплатно и без смс.

  • Никаких гарантий работоспособности дать не могу. Продукт распространяется как есть.
  • Если будете кому-то советовать или рассказывать → укажите моё авторство и дайте ссылку на эту статью.

По ссылке найдёте файлы установки для MacOS и Windows. В «README» будет инструкция по установке. Там же будет картинка-схема раскладки.

⬇️ Скачать

Как установить

MacOS

  1. Скопируйте файл бандла «TREKL — Typographic Russian Enhanced Keyboard Layout» в:
    • «/library/Keyboard Layouts» → чтобы установить для всех пользователей.
    • «~/library/Keyboard Layouts» → чтобы установить только для себя.
    • В русской локализации папка называется «Библиотека».
    • При установке для всех пользователей потребуется ввести пароль.
    • Чтобы показать скрытые папки в Finder, нажмите ..
  2. Завершите сеанс пользователя или перезагрузите компьютер.
    • MacOS добавляет раскладки к настройкам только при старте сеанса пользователя.
  3. Добавьте новые раскладки в настройках: Системные настройки → Клавиатура → Секция «Источники ввода» → Изменить → «Плюсик» (снизу слева).
    • В английском → выберите «Английская TREKL»
    • В русском → выберите «Русская TREKL»
    • Рекомендуется добавлять обе раскладки, чтобы иметь одинаковый набор типографских символов вне зависимости от языка.
  4. Удалите стандартные раскладки. ⚠ Чтобы удалить системную английскую раскладку «ABC» (US):
    1. Добавить японскую раскладку: Японский → «Японский — ромадзи».
    2. В настройках японской раскладки поставить галку «Катакана».
    3. Удалить японскую раскладку, а затем стандартную английскую.

Windows

  1. Установите обе раскладки, запустив «eng\setup.exe» и «rus\setup.exe».
  2. Добавьте раскладки в настройках. Параметры (Настройки) → Время и язык → Язык и регион → Справа от нужного языка («Английский» или «Русский») нажмите «три точки» → Языковые параметры → Секция «Клавиатура» → Добавить клавиатуру → «Русская (типографика)» для русского языка и «Английская (типографика)» для английского.
  3. Удалите стандартные раскладки.
  4. Перезагрузитесь.

Как удалить на Windows

  • Верните стандартные раскладки в настройках.
  • Удалите через «Установка и удаление программ» TREKL-раскладки: Параметры (Настройки) → Приложения → Установленные приложения → В поиске: «trekl» → Удалить.

Вопрос → Ответ

Вопрос: На Windows снова появились стандартные раскладки, но в настройках языка их нет. Как удалить их?
Ответ: Явно добавьте и удалите стандартные раскладки.

Напишите свой вопрос мне на почту: yakov@purt.link

Правило бойскаута

В книге «97 вещей, которые должен знать каждый программист» под номером 8 содержится «Правило бойскаута» («The Boy Scout Rule»), описанное дядей Бобом.

Перевод фрагмента:

У бойскаутов есть правило: «Всегда оставляй лагерь чище, чем был до тебя». Если ты видишь мусор на земле, ты убираешь его, независимо от того, кто его оставил. Первоначальное правило сформулировал Роберт Баден-Пауэлл, отец скаутского движения: «Постарайся оставить после себя мир лучше, чем ты его нашёл».

Если переложить правило на код: «всегда оставляй модуль более чистым, чем до его проверки», независимо от того, кто был автором исходного кода. Каким был бы результат, если бы мы всегда прилагали небольшие усилия для улучшения кода?

Я думаю, если следовать этому простому правилу, вместо ухудшения, наши системы постепенно становились бы всё лучше и лучше по мере развития. Мы бы увидели, что команды стали заботиться о системе в целом, а не о своей маленькой части.

Вам не нужно доводить каждый модуль до совершенства перед отправкой. Просто сделайте его немного лучше. Конечно, это означает, ваш добавленный код должен быть чистым. Плюс вы улучшаете хотя бы ещё одну вещь перед отправкой модуля: назовите переменную получше, разделите длинную функцию или разорвёте циклическую зависимость.

  

Все могут использовать «правило бойскаута»

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

Я часто повторяю фронтендерам, с которыми работаю над проектами: «Никогда не поздно сделать интерфейс чуточку лучше!», когда предлагаю попутно исправить косяки интерфейса, напрямую не связанные с поставленной задачей. Как минимум, пытаюсь добиться включения их в дизайн-долг и далеко не откладывать следующий релиз с исправлениями.

Когда проектирую фичу, то как правило, причёсываю все известные мне интерфейсные проблемы на странице. Мелкие сразу, а с большими приходится ловить эту зыбкую границу, когда ты уже создаёшь что-то другое. С ростом мастерства научаешься балансировать между имеющими ресурсами и реальным достижением поставленных пользовательских и продуктовых целей.

Главное — это неравнодушие к замеченным проблемам!

Тоже самое можно делать не только с кодом и интерфейсом, но и с аналитикой и процессами команды.

Автомеханик — профессионал

Представьте, что вы сдали своё авто в ремонт с небольшой неисправностью. Сами вы «под капотом» не разбираетесь. Помимо известной неисправности в итоге выяснится, что ещё и охлаждающая жидкость подтекает. Что вы предпочтёте?

  • Чтобы автомеханик: 1) смотрел узко, только на проблему, с которой вы обратились и не тратил ваше время, а о неисправности вы узнаете где-нибудь в дороге и сами разберётесь; или 2) по-пути посмотрел смежные узлы на наличие проблем и обнаружил течь? Даже, если вы не заказывали диагностику всё равно проводил беглый осмотр?
  • Когда автомеханик заметил течь: 1) ничего не делал; или 2) предложил заменить прокладку и подтянуть соединения? А также оценил риски, если не чинить сейчас и сообщил вам?

Хороший профессионал не нуждается в разрешении сделать то, что должно быть сделано — что входит в его понимание «хорошей работы». Хороший автомеханик не будет игнорировать проблему или даже идти на поводу у клиента, если ему дорога́ репутация и жизнь клиента.

Простое правило — большой культурный сдвиг

Казалось бы, такая мелочь: разреши себе оглядеться и улучшить, что тебе не нравится. Но возникает несколько культурных преград:

  • Не хватает намётанности глаза и не толерантности к «плохому», чтобы его постоянно находить и не воспринимать как должное. Не всем даётся это упражнение, особенно без регулярных тренировок. А для тренировок нужна подходящая среда, где ты калибруешься о других.
  • Необходимость выделения времени и переноса сроков. Мелкие улучшения и приборка должны делаться сразу, без обсуждений — это часть работы и здорового процесса. Большие исправления должны выноситься на обсуждение, включая риски, если оставить всё как есть.
  • Нет уверенности, что твой вариант лучше, что ты действительно что-то улучшаешь. Особенно неуверенность наблюдается у новичков. Культура поощрения «стремления вносить улучшения» в долгосроке приведёт к тому, что за несколько итераций оптимум будет найден, даже, если разово ситуация ухудшается. В противном случае улучшения не случаются вовсе. А в особо ответственные места новичков обычно не пускают, как минимум без наставника.
  • Риск возникновения конфликтов с предыдущими авторами. Что важнее в команде: показать какой-ты крутой и всё заранее продумал, или культивировать среду непрерывных улучшений?

«Работает — не трожь!» — вредное правило

Известный мем только вредит. Приводит к застою и расстановке акцентов не на то. Ключевой ценностью становится работоспособность без развития, хотя очевидно, что в долгосрочной перспективе обычно нужна система, которую можно спокойно улучшать без потери качества и скорости развития.

И здесь мы приходим к мысли, что культура опирается на «горизонт планирования» — чем он дальше, тем выше ценятся практики непрерывного улучшения, и чем короче, тем больше мы ценим работоспособность без поддержки. Но про это поговорим как-нибудь в другой раз.