Раскладка для биологов
Длинный и не самый захватывающий рассказ о том, как получилась Раскладка.
Предисловие
Одним январским вечером я сгорел с того, что снова копирую греческие буквы для своих биологических текстов и начал фантазировать о том, как бы модифицировал раскладку Бирмана под свои нужды, будь у меня возможность.
Заскриншотив обои своего рабочего стола, на которых был постер бирмановской раскладки, я начал малевать. Да мне нужны-то были всего-то подстрочные и надстрочные цифры, немного греческого и поддержка 4 языков — вы знаете, коротенький квест по кастомизации на пару вечеров.

Другим вечером я погуглил, как вообще делают кастомные раскладки под Винду? Оказалось, go-to решение это использовать Microsoft Keyboard Layout Creator — чудом поддерживаемую до наших времён программу с дизайном Windows XP.
Тут тяжело разглядеть, но первым делом я модифицировал раскладку Бирмана, заполнив цифровой ряд в Альт и Альт-Шифт регистрах индексами. Модифицировал, установил и забил — серьёзно думать над расстановкой остальных символов у меня в тот день не было сил.

Через месяц я случайно наткнулся на исходники постера раскладки Бирмана для Smashing Magazine. 2009 год! Смотреть и переставлять символы в Иллюстраторе было в 500 раз приятнее, чем в MSKLC — и всю работу по дизайну моей раскладки я провёл там.

v1
Европейские языки
Меня угораздило прочитать комменты к той статье на Smashing Mag — каждый третий читатель бухтел про то, что раскладка слишком заточена на американцев и других пользователей en-US раскладки. Мол, где наши ÆŒØ и прикольные акцентики, имперец?

Окей! Меня переклинило на том, чтобы засунуть в раскладку поддержку как можно большего числа популярных европейских языков. Это оказалось очень запарным квестом, потому что любая альтернативная буква в двух ипостасях вроде Ł и ł занимала собой целую клавишу.
В какой-то момент я заметил себя рассчитывающим пересечения всех уникальных букв и значков диакритики в европейских языках, справляясь со статьёй какого-то норвежского географа.

В пике своей мультиязычности раскладка поддерживала французский (со всеми æœ и кавычками), немецкий (без новомодного прописного эсцета), испанский и португальский, итальянский, скандинавские языки (с финским, без исландского, саамского и фарерского), чешский и польский, голландский, ирландский, албанский, эстонский, румынский и Бог знает какие ещё.

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

В какой-то момент я заметил, что в польском языке используется огонэк вместо цедили и решил отказаться от него окончательно, наконец освободив клавишу Ш под штрихи, а место над ÷ под дробную черту ⁄ — вместе с цифроиндексами этот символ даёт набирать ¹⁄₂ абсолютно ⁷⁄₈ любые ¹³⁄₃₇ дроби ⁹⁹⁄₁₀₀.
Восточноевропейские языки
Параллельно я отчаянно пытался всунуть в раскладку поддержку украинского и беларусского — не то, чтобы я их знал, но меня бесила сама мысль, что раскладка, распространяющаяся в русскоязычной сфере, будет поддерживать норвежский, но не украинский.
Я думал над всякими приколами с диакритикой: чтобы карон ˇ в комбинации с Г возвращал Ґ, Ii встало дублем на букву I вместо штрихов и комбинировалось в Ïï умляутом ¨, и так далее. Даже, о ужас!, хотел стоящий на У бреве ̆ заставить вести себя как кратку для получения Ўў, хотя это вообще разные знаки!
Стр. 275 второго издания «Книги про буквы от Аа до Яя»» Юрия Гордона

Статистика языка - kvant1004.pdf
Были и грешные мысли отказаться от каких-то не самых популярных букв:

Но в итоге я сдался и просто сделал некоторые клавиши разными в русской и английской раскладке. Ї встало на Й, Ў на W, Є на Э, а Ґ и І не смогли выбить себе места на Г и I потому, что там уже стояли более нужные знаки. Даже место под мой любимый меджусловјанскы језык нашлось.

Но теперь появилась проблема — как показать то, что раскладка ведёт себя по разному на разных языках? Самым простым решением было бы сделать два постера и пометить «нестабильные» клавиши другим цветом вместо того, чтобы красить им все «языковые».

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



Очень быстро всё это чудо было успокоено — сначала квадратный Рубик Моно был заменён просто моноширинным шрифтом, потом была убита и идея с точками вместо клавиш.

Следующие два года мне аукалось то, что я поставил Іі и Єє на место кавычек-ІлапокЄ и засунул апостроф куда-то на край строки.
Клавиша B и интерпункт
В один момент на место клавиши B претендовали beta, bullet и похожий на B эсцет в двух ипостасях — и два из четырёх должны были уйти или спрятаться под какую-нибудь чужую для них клавишу.
Окончательно отказываться от немецкого я не хотел и оставил только строчной эсцет ß — один чёрт заглавный ẞ не имеет никакого смысла и должен быть заменён на SS. Эсцет это лигатура с длинной s (ſ), а заглавной длинной s не существует.

Кстати, такой фаворитизм или неприятие отдельных грамматических правил не ограничивалось одной буквой — я наглейшим образом сделал раскладку более удобной для тех, кто придерживается английских правил написания кавычек — то бишь ‘одинарные’ лапки первого порядка, “двойные” второго. В этом плане раскладка Бирмана много удобнее — все кавычки в ней можно набрать, вообще не используя Альт+Шифт.

От буллита, который в раскладке Бирмана подписан как mark для мнемоники, я в итоге тоже отказался — достаточно было прочитать пост ex-дизайнера Медиума Марцина Вишори для того, чтобы окончательно забить на желания каких-нибудь отдельных пользователей.
Собственно, life-changing цитата:
• bullet point that I don’t really use. Get out of here, you stupid fat bullet point. No one invited you.
Теперь пользователи Раскладки обязаны пользоваться интерпунктом на Альт+X, а на клавише B прекрасно уживаются бета и строчный эсцет.
Гречица
С греческим сначала всё было просто: берём самые популярные в науке буквы, ставим их на клавиши, с которых начинается их английское название (alpha на A), на шифт вешаем заглавные версии вроде Σ, Λ и Δ. Если первая буква названия уже была занята, как в случае phi, psi и pi, на клавишу ставилась самая популярная, а остальные шли лесом — без исключений.
Потом мне захотелось знак параграфа § и он встал на Альт+Шифт+S вместо заглавной сигмы — для математических формул с Σ все равно нужно использовать полноценный Латех.
О штрихах и истории кавычек-лапкок
Потом крутая прописная лямбда Λ уступила место парочке не менее крутых ‹одинарных ёлочек›. Можно сказать, что дедушка уступил место правнукам — потому что все кавычки произошли от значка >, названного антилямбдой потому, что он выглядит как повернутая Λ.
Дельта Δ чуть не исчезла, уступая место degree sign °, но потом я вспомнил, что в физхимии Δ и ° ходят парочкой и разлучать их никак нельзя — и знак gradusa уехал на G.
Когда Раскладка уже была почти готова, я отвлёкся на экзамен по молекулярной биологии и пожалел, что из-за своих глупых принципов я не могу напечатать знак псевдоуридина ψ — мол на P psi быть не может из-за pi, а на других клавишах получится исключение.
Чутка обдумав, я забил на этот принцип и засунул ψ на Y, а φ на F — разблокировав воспоминание о том, как в пятом классе учительница математики попросила написать меня на доске φ, ψχ! и только потом пояснила, что я такое написал.
Энивей, этим были закрыты последние два пустых места раскладки.

Постер
Для того, чтобы распространять Раскладку среди далёких от типографики биологов, мне нужен был какой-никакой постер, который бы пояснял бы, чем символы Раскладки круче тех, что уже есть на клавиатуре.
Об альтернативе Таймз Нью Роман
Для этого мне нужен был шрифт, которым бы я набирал примеры — и конечно же, это должен был быть Таймз Нью Роман или его аналоги. Эдакий what you see is what you get (in your paper). Главным соперником TNR был мой любимый Stix 2 Text — и в итоге я выбрал его, но использовал отдельные символы вроде цифроиндексов из TNR для того, чтобы не обманывать читателя.

В остальном ничего интересного — мне просто хотелось сделать такой постер, который я бы смог повесить под постером раскладки Бирмана. Отсюда и гранд-цитата, над выдумыванием которой я долго ломал голову, и большое название раскладки внизу. Илья Бирман был не против такой самодеятельности, так что совесть моя была чиста.

Дальше осталось только сделать сайт (на Вордпрессе, господи) и подключить админ-ресурс в виде должности главреда своего студсовета — и за 20 минут до вручения моего диплома Раскладка для биологов увидела свет.
v1.1
И снова постер
Я очень люблю, когда то, что я делаю, обретает физическую форму — поэтому когда организаторы Биоуниверсиады МГУ, для которой я дизайнил всякое, раздавали постеры с моей раскладкой участникам, не смог не стащить один себе домой.
Следующие полтора года я пялился на стену с постером и всё больше разочаровывался. Вблизи он был кучкой квадратиков с максимально безопасно разведёнными буквами, издалека — огромным серым прямоугольником с чёрными веснушками. Сам же я уже рисовал что-то такое, очень плотно сбитое, весёлое и злое:

Сначала я разобрался с крупным планом, сменив сетку из квадратиков на нечто более скевоморфное:

Посмотрев на эти трапеции, я вспомнил о шрифте, в котором все буквы заужались кверху — Царге от Болдиталика. Посмотрел и подумал: мне нужен шрифт, буквы которого займут собой всё пространство «трапеции клавиши», примерно как буква М в Царге. Но не Царга — некоторые буквы я видил другими, а модификации чужих шрифтов это всегда скользкая дорожка.

Поэтому я решил сделать шрифт исключительно под новый постер под рабочим названием KCap/Trapezoid. В первую очередь хотелось фана, поэтому я заранее запретил себе любую дотошность — иначе вышло бы как с Михеем и его годовой разработкой. Отсутствие элегантности я хотел скомпенсировать Гарамоном на переднем плане — своеобразный ремейк Красавицы и Чудовища.
И в этот раз я забил на исходник старого постера и переверстал всё с нуля в Фигме. С такими большими буквами у клавиатуры на постере наконец появился «средний план» — что-то для зацепа глаз на уровне метра от плаката.

Минорные апдейты
За два года с появления первой версии у меня так и не накопилось весомого списка изменений.
Интерпункт: В какой-то момент я заметил, что интерпункт не эквивалентен знаку умножения в виде точки. Меня это парило исключительно из-за консистентности — раз на Z находятся два знака деления, на Х должно быть два знака умножения, а не × и какой-то французский гендергэп. Подумав ещё, я забил — применений у интерпункта явно больше, чем у multiplication dot.
Диакритические пары: для диакритики в раскладке есть отдельный блок с правилами того, когда какой символ нужно подставлять. В русской раскладке не поддерживалась часть странных юникодовских символов вроде Ӝ, поэтому я пошёл и прописал их все. Ручками — только бы лишний раз не трогать Keyboard Layout Creator.

Значок радикала˙ меня бесил лишь тем, что на самом деле это какая-то китайская диакритика. Оставлен из уважения к редокс-биологии.
Языки: вот что действительно меня бесило, так это i и є на месте английских кавычек. Это как когда ты нажимаешь Энтер, чтобы отправить сообщение, случайно задеваешь э и чувствуешь себя как гопник. Брр.
Но выкидывать Іі и Єє я совсем не хотел, поэтому полетели головы у межславянской Jj, интерробанга ‽, дубля трубы | и ещё какой-то мелочи — а Єє вместе с ¿¡ были сосланы на край клавиатуры.
Порт на МакОС
Когда я релизил первую версию раскладки, я обещался выпустить версию для Мака «в течение пары месяцев, если всё сложится». Так вот, ничего не сложилось!
Для того, чтобы с удобством делать раскладки для Мака, нужна программа Ukelele — и, разумеется, она тоже выглядит как нечто из нулевых.

Мне удалось несколько раз брать макбуки друзей во время лекций, и даже сделать черновую версию раскладки — но для того, чтобы прописать руками всю сотню-другую диакритических пар, нужно было засесть с чужим компьютером очень надолго, чего я не хотел.
Я в целом не хотел ничего делать руками — поэтому спустя год я таки наткнулся на самое low effort решение: утилиту Keyboard Layout Files Creator, которая конвертировала раскладочные файлы между Виндой, МакОС и Линуксом.
Одна загводка: заброшенная уже как 4 года утилита всё никак не могла сделать рабочую раскладку под самую нестабильную и вечно меняющуюся операционную систему из всех — МакОС. Поэтому мне пришлось разворошить .bundle раскладки Бирмана и аугментировать в неё сгенерированные klfc куски keylayout файла.

И это, кто бы мог подумать, не сработало! Раскладка банально не появлялась в настройках и я понятия не имел, где искать ошибку. В расстроенных чувствах я пошёл на форум Ukelele Users, где Джон Брауни, автор Ukelele, рассказал мне о klcompiler: утилите, которая проверяет keylayout-файлы на валидность и выплёвывает человекочитаемые ошибки в стиле «More than one key with keycode 48». Факт существования этой утилиты это настолько эзотеричное знание, что теперь при попытке загуглить «klcompiler» первой релевантной ссылкой выскакивает ответ Джона мне.

Дальше — проще: я чинил ошибку, которую мне выплёвывал klcompiler, и отправлял величайшему альфа-тестеру всех времён Дарье для того, чтобы она прогнала новую версию через klcompiler и отправила мне новую ошибку в ответ. И так до победного экрана с кучей вопросительных знаков.

Сайд-квестом была долбёжка с иконками: мне нужен был рабочий онлайн-конвертер в icns (и он нашёлся), чтобы иконка адаптивилась под светлую и тёмную темы (открытый Никитой Прокоповым флаг TISIconIsTemplate) и чтобы она хорошо выглядела в большинстве подкурсорных бабблов (для этого исходный файл пришлось перекрасить в белый).

And the rest is history.