Создаём свою «идеальную программерскую» раскладку или Недооценённый AltGr

*Примечание: чтобы в полной мере ощутить все преимущества новой "ка́стомной" раскладки, необходимо уверенно владеть десятипальцевым слепым вводом (иначе последующие действия не имеют никакого смысла).

Что здесь написано?

  • Осуждение QWERTY

  • Немножко об альтернативных раскладках

  • На чём печатаю Я

  • AltGr (правый Alt) и что с ним можно сделать

  • MSKLC: собираем раскладку

Шаг №1: Выбор базовой раскладки клавиатуры

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

Немного отсебятины: Я, как и все, изучая десятипальцевый слепой ввод, печатал на всем знакомой QWERTY-раскладке. В процессе использования, испытывался лютый дискомфорт (возможно нас таких и не очень много): уставал левый указательный палец, правый безымянный и мизинец (даже несмотря на то, что P - далеко не самый частотный символ в английском языке). Также было замечено, что пальцы при печати сильно вытягиваются - как бы пытаются уйти подальше друг от друга.

Чтобы ответить на вопрос, почему так происходит, я создал Excel-файл, в котором наглядно показана нагрузка на каждый символ, и добавил таблицу частотности букв английского языка (результат на скрине).

Вот здесь как раз всё встаёт на свои места: T находится довольно далеко от основной позиции пальцев, плюсом буквосочетания AT/TA, TE/ET, ST/TS, DT, CT, NU/UN, NI/IN, NO,ON заставляют пальцы вытягиваться. Также я отметил главную неприятную особенность QWERTY, о которой конечно-же многие знают - это то, что основным по нагрузке является на домашний, а верхний ряд. Про перегрузку левой или правой руки ничего говорить не буду, так как на планете есть как правши, так и левши, но для левшей у меня плохие новости: если посмотреть на клавиатуру, то можно заметить, что снизу вверх клавиши смещаются ВЛЕВО, что удобно лишь правой руке.

Что по альтернативным раскладкам?

Начнём с того, что разные раскладки проектировались по-разному и преследовали разные цели: наиболее развёрнуто, научно и точно рассказано в этом посте: О вопросах сравнения и оптимизации клавиатурных раскладок / Хабр (habr.com)

  • Dvorak: все гласные влево, максимальное чередование и минимизация использования нижнего ряда любой ценой -> повышение скорострельности.

  • Colemak/Workman: A влево, остальные гласные вправо, повышение эргономичности - расстояния, которые преодолевают пальцы при вводе текста, "Мы круче Dvorak'a!!!"

  • Capewell: нафиг чередования, даёшь эргономичность и идеальный межпальцевый баланс!

  • Carpalx: математические модели, системы штрафов, optimizing.

  • Minimak 4, 8, 12 keys: улучшаем QWERTY с минимальными усилиями!

  • ARENSITO: У вас есть Ergodox или Maltron? Тогда я к вам!!!

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

Что бы там не говорили про то, что альтернативные раскладки нисколько не быстрее стандартной QWERTY, что на 99% правда, фактом является то, что люди переходящие на подобный раскладки идут на этот "трудный в освоении" шаг ради комфорта, а не скорости. Комфорт - это не пустой звук, я сам через это прошёл и очень доволен результатом, да в некоторых программах Ctrl+C и Ctrl+V приходится нажимать не как в QWERTY, но что мешает вводить комбинации двумя руками??? Верно, ничего не мешает.

К чему пришёл Я???

За основу я взял раскладку Dvorak, модифицированный Capewell'ом - Capewell-Dvorak, в котором символ L больше не нажимается правым мизинцем, что очень здорово. Я заметил, что клавишу N в QWERTY мне очень легко нажимается (вспоминаем как смещены символы в нижнем ряду) и там как раз поставили L, да и в принципе, раскладка вышла неплохая. Но, как вы поняли, и здесь есть маленький изьян, из-за которого пришлось немного откатиться к классическому Dvorak'у, а именно ZXCV,а точнее символ C (такое можно простить только Colemak/Workman и Carpalx'у, ибо гласные и K находятся справа, но не в этом случае)

Вследствие чего была произведена "маленькая" модификация, в результате которой я получил, то, что нужно. Действовал я чисто по ощущениям, для этого понадобилось время.

Шаг №2: Ставим всё необходимое на базу

Кто-то может возразить насчёт "программерской" клавиатуры, ибо уже есть Dvorak programmer. Да, он есть, но все спец-символы находятся в верхнем ряду. В то же время хочется нажимать все основные программерские символы в домашнем ряду, чем Dvorak programmer порадовать не может.

Я же предлагаю использовать AltGr (почти Ctrl+Alt, ибо AltGr+Del не работает как Ctrl+Alt+Del, то есть не работает) он же правый Alt, работает как Shift, точнее создаёт новый "чистый" слой клавиш, в который можно засунуть ещё кучу символов. Однако отмечу, что нужно научиться нажимать AltGr только правым мизинцем, тогда никаких проблем в его использовании не возникнет. Также я заметил, что почему-то на правый Alt стараются частотные символы не заводить, даже в домашний ряд, ограничиваясь диакритическими знаками, математическими знаками и греческим алфавитом. Скорее всего, это объясняется некоторой сложностью в использовании AltGr, а именно неправильное нажимание неправильным пальцем.

Теперь открываем блокнот и переписываем все спец-символы, чтобы не забыть: все скобки, кавычки, апостро́фы, звёздочки, амперса́нды, собачки, или даже диакритические знаки!

Агась, базовая раскладка есть, спец-символы не забыли, теперь можно приступать с сборке нашей супер-раскладки. Отрываем MSKLC (да-да, я Winдузятник) и вбиваем свои символы, не забывая всё проверять и тестировать. Перед сборкой очень рекомендую везде понажимать и посмотреть, какие функции содержит MSKLC, что такое Dead Key, как провести тест (там всё очень просто).

Жмём Shift и прописываем, что будет вводиться при зажатом Shift'е, большие буквы и стандартный спец-символы. Ещё можно предусмотреть спец-символы на месте точки и запятой (у меня это ! и =).

Теперь то, ради чего мы здесь собрались: AltGr!!! (не забудьте убрать галочку с Shift, иначе символы будут вводиться не с AltGr, а с AltGr+Shift, на которую (если это кому-то нужно) можно поставить цифры или даже шаблонные тексты)

Я расположил спец-символы следующим образом: слева - все виды скобок, справа - операторы и другие спец-символы. Самые частотные из них находятся в домашнем ряду, что упрощает их ввод. Вверху я расположил комбинируемые диакритические знаки "на все случаи жизни".

Ещё раз напомню, что правый Alt нажимается правым большим пальцем (да-да от так умеет, причём легко). Таким образом, остальные пальцы не сдвигаются с места, позволяя легко вводить спец-символы, почти как без него, тут нужно немного попрактиковаться.

Ура, вы расставили все клавиши так, как вам нужно, теперь осталось всё это добро собрать и установить на компьютер: открываем Project -> Properties, будем свойства задавать

Задаём имя, описание (которое будет выскакивать при переключении раскладки), остальное по желанию.

После того как всё введено, жмём "Build DLL and Setup Package", после успешной установки перезагружаем ПК и радуемся новой установленной раскладке (старую можно удалить в настройках).

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

Подытожим: для идеальной раскладки необходимо:

  1. Идеальная базовая раскладка

  2. Удобно расставленные спец-символы

  3. Программа MSKLC

  4. Много практики (если не печатаете на альтернативной раскладке)

Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 30

    +4

    Я переключение раскладки перенес на CapsLock, для меня это уже победа. А тут такое!

      0
      Кстати, реально, с раскладкой на CapsLock жить значительно удобнее. Еще хорошая идея поменять Ctrl и Alt местами. Становится сильно легче там, где большинство шорткатов на Ctrl завязаны.
      +7

      Всё хорошо и интересно, но лично у меня пару вопросов:


      • что с Linux?
      • что с «чужими» ПК?
      • давно у программистов скорость набора такста стала определяющей?

      Вроде как, Дворак и прочее — для машинисток, которые набирают огромные количества тескта, а у разработчиков (кроме документации, да и то, не всегда) нет такой уж потребности в скоростной печати, тем более, что спецсимволы — очень индивидуально(в английской QWERTY, действительно не очень удобно).

        0
        А я и говорил не о скорости, а комфорте в использовании. Кому нужна скорость, те уже давно тренируются (в том числе и на QWERTY), но мне 80 WPM хватает за глаза.

        Я практически не пользуюсь Linux'ом, ничего не могу порекомендовать, сори чувак.

        На чужих ПК, конечно, не поработаешь (есть твоя клавиатура не Anne pro 2 или любая другая, где можно «системно» менять раскладку и печатать на своей раскладке независимо от ПК). В конце концов, ничто не мешает выучить новую раскладку, периодически печатая на QWERTY, чтобы её не забыть.

        Единственная проблема, которая может возникнуть в начале использования — это неопределённость с горячими клавишами, тут всё зависит от программы, в Chrome всё, как в QWERTY, в Overwatch тоже, а в CS уже нет, придётся перебиндить клавиши или переключаться на русскую раскладку
          0
          > давно у программистов скорость набора такста стала определяющей?

          Это да, как кто то из писателей говорил «где я возьму вам столько слов?» Последний раз я много печатал, когда надо было программу за два дня написать. Там да, пальцы устали даже. А в последнее время приходится больше говорить и думать, чем писать. Да и любая IDE дает возможность задать сниппеты и может предсказывать, что тебе требуется напечатать, так что только успевай нажимать хоткеи. А вот как раз с горячими клавишами не все так радужно. Некоторые IDE завязаны на сканкод клавиши, а не символ. Особенно под линуксом может быть проблемой. Что то такое было помню, что пришлось переучиваться на другую горячую клавишу, потому что Visual Code Studio не давала возможности переопределить горячую клавишу.

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

          Проще смириться со стандартной раскладкой. Не надо будет терять время на привыкание к другой раскладке.

          Да еще наверное альтернативная раскладка под другой язык, а то и не один увеличивает сложность.
          0
          Это всё же на вкус и цвет как говорится, но за пост и пример создания собственной раскладки — спасибо
            0

            Лучше бы купили эргономичную клавиатуру от Microsoft, чем менять раскладку, имхо.
            Ваш способ слишком радикальный и непереносимый.

              –1
              Насколько я знаю, QWERTY-раскладка пришла с печатных машинок, на которых раскладка специально(!) была сделана так, чтобы самые частонажимаемые клавиши были раскиданы по границам слева и справа. Сделано это из-за того, что ножки, на которые цеплялись буквы в машинке, перехлестывались из-за бешеного ритма печатания машинистками и только QWERTY давала нужный безопасный угол «входа» ноги на бумагу.

              Изначально же раскладка была такая, что самые частые буквы были в центре, а оттуда волнами налево и направо раскидывались второстепенные. Но через пару месяцев (лет?) производители ввели QWERTY. На компьютеры эту раскладку перенесли бездумно.

              В целом печатная машинка и клава — разные устройства, сравнивать их раскладку не корректно (как и раскладка для мобильных телефонов, там акцент надо делать на левый и правый верхний угол). А потому любая коррекция будет де-факто «под себя любимого»))) Что не есть плохо. У меня есть друг, который работал в колледже и на 1-ом курсе давал вместо информатики курс слепой печати. Полгода студенты писали «мама мыла раму», а потом темы про файлы, папки, Word, Excel пробегали за пару месяцев. И были ему дико благодарны…
                +3
                На компьютеры эту раскладку перенесли не бездумно, а очень продуманно — потому, что она была стандартной для печатных машинок и была привычна огромному количеству пользователей.
                  +1

                  Куда более бездумно перенесли в клавиатуры сдвиги клавиш по горизонтали. Они тоже были нужны для обеспечения работы механики, и являются химически чистым примером „делаем, потому что так тут принято“.

                  +6
                  нужно научиться нажимать AltGr только правым мизинцем

                  правый Alt нажимается правым большим пальцем


                  ЯННП.
                    0

                    Я в kde поставил смену языков на AltGr — очень стало удобно, в рабочей винде этого очень не хватает.


                    А уж переделывать раскладки под себя в линуксе вообще ничего не останавливает, но я ограничиваюсь только заменой точки с запятой в русском языке, бо запятые использую чаще, поэтому запятую ставлю одним нажатием, а точку ставлю через shift.

                      +1
                      Статья интересна только тем, что кто-то ковырялся в этом вопросе. А в остальном стандартизация рули и со своим стандартом раскладки автор опоздал лет эдак на 100 (может 80). Лично я, как постоянный пользователь десктопа испытываю жуткий дискомфорт сталкиваясь с ноутами с их кастрированными клавиатурами + каждый производитель добавляет свои «изюминки».
                        0
                        А не было попыток поставить себе кейлоггер и оценить реальную, а не стандартную, частоту повторения символов при вводе программ?
                        Думаю, это ещё будет зависеть от конкретного языка программирования.
                          0

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


                          • Неизвестно, какие строки набраны вручную, а какие сгенерированы машиной (сниппетами, автовставкой) или скопированы;
                          • Не работает для сбора статистики работы в шелле (bash, zsh...), которая крайне важна в разработке программерской раскладки.

                          Некоторая статистика есть у Xah Lee (автор ergoemacs и кучи гайдов по эргономике клавиатур) в его статье Computer Languages Characters Frequency.
                          У меня также есть кое-какая статистика по частоте, собранная при разработке своей раскладки. Я ориентируюсь на C, C++, Rust и *sh, и замерял так:


                          C: Linux kernel 5.7.8 (~121k LOC *.c, *.h).
                          C++: Firefox 78.0.2 (~680k LOC *.cpp *.hpp *.cxx *.hxx *.h).
                          Rust: Firefox Servo 78.0.2 + Xi editor 0.3.0 (~39k LOC *.rs).


                          Результаты в gist по ссылке, см. раздел Unigrams (Bigrams это статистика по биграммам относительно раскладки Дворака, где L и R — это буквы в левой и правой частях клавиатуры соответственно).

                            0
                            Computer Languages Characters Frequency.

                            Есть Лисп, но нет Паскаля, за что его игнорят-то?
                              0
                              Дык его автор на emacs живет, а там лисп основной язык его, редактора, расширения.
                              0
                              Всё так, это зависит от языка. Можно грубо оценить без кейлоггера — через подсчёт кол-ва символов в большом объёме кода на данном языке. При этом придётся пренебречь следующим:

                              А куда при подсчете кол-ва символов по финальному коду попадет BackSpace, стрелки, Enter, функциональные клавиши и вся другая навигация со всеми хоткеями?
                                0

                                Очевидно, статистики по подобным клавишам там не будет (хотя кол-во Enter грубо равно кол-ву LOC). Но отсутствие статистики по стрелкам/хоткеям не так существенно в случае разработки раскладки под модальные редакторы (чем я и занимаюсь), тк тогда исходники — это статистическая база по insert mode и именно она определяет то, что называется "физической раскладкой клавиатуры". Разработка раскладки для command mode и прочих режимов модальных редакторов — отдельная задача

                            0
                            Спасибо за исследование, но есть моменты.
                            Про перегрузку левой или правой руки ничего говорить не буду, так как на планете есть как правши, так и левши, но для левшей у меня плохие новости: если посмотреть на клавиатуру, то можно заметить, что снизу вверх клавиши смещаются ВЛЕВО, что удобно лишь правой руке.

                            Я сам левша, с тем что вы написали сложно согласится, также выдержка из википедии (https://en.wikipedia.org/wiki/QWERTY):
                            In the QWERTY layout many more words can be spelled using only the left hand than the right hand. In fact, thousands of English words can be spelled using only the left hand, while only a couple of hundred words can be typed using only the right hand (the three most frequent letters in the English language, ETA, are all typed with the left hand). In addition, more typing strokes are done with the left hand in the QWERTY layout. This is helpful for left-handed people but disadvantages right-handed people.

                            Лично мне довольно сложно понять факт улучшения комфорта набора без изменения его скорости; подскажите пожалуйста, изменилась ли аккуратность набора, количество совершаемых ошибок?
                              +2

                              Любопытно, есть плюсы (такие как вынос пунктуации в home row и расположение скобок попарно), но эта раскладка не является тем граалем, который ищут все авторы раскладок:


                              • Основная фича раскладки — пунктуация на AltGr + home row — проигрывает в скорости набора пунктуации раскладкам с пунктуацией на первом слое numeric row. Т.е. таким как Programmer Dvorak, когда в цифровом ряду на 1ом слое скобки и т.д., а цифры на 2ом слое (который с Shift или Caps).


                              • Не дружественна к Unix shell (../../..), да и к виндовой тоже (с обратным слэшем).


                              • Не исправляет некоторые проблемы QWERTY с модальными клавишами, такие как Shift и Ret на слабых пальцах.


                              • Не дружественна к модальным редакторам (не ремапит Esc), правда это легко решается.


                              • Некоторые весьма частые биграммы из языков с C-подобным синтаксисом набирать сложно. Среди них: ); //


                              • Редкие апостроф и grave accent занимают неоправданно ценные позиции.


                              • Сложно оценить раскладку без design documents, неясен именно такой выбор некоторых позиций. Туда же — все игры с перестановкой букв в Двораке. В раскладке Дворака, да и не только в ней, позиция каждого символа выверена с учётом участия букв в биграммах итд, нельзя просто сказать "L набирать тяжело, давайте-ка её переставим".



                              Безотносительно раскладки: подборка альт. раскладок классная, но неполная без 3l, BEAKL.

                                0
                                когда в цифровом ряду на 1ом слое скобки и т.д., а цифры на 2ом слое (который с Shift или Caps).

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

                                    Я довольно часто промахиваюсь в цифровой ряд правым мизинцем — там 3 варианта нажатия (0-=). С попаданием во все остальные позиции в цифровом ряду проблем не замечал.

                                  0
                                  Отвлекаясь от темы раскладок, замечу: не факт, что так уж удобно пользоваться AltGr большим пальцем. Я печатаю в 10 пальцев вслепую, а на AltGr у меня заведены испанские кукарямбы в международной раскладке. Это безусловно намного удобнее, чем любой другой из известных мне способов, но все равно мажу я постоянно. За — не помню, год? — так и не привык до конца.
                                    0
                                    Повесил дополнительный слой на altgr -> через несколько месяцев понял что суставу приходит конец -> отказался от altgr. Пришел к неутешительному выводу — стандартные клавиатуры ущербны по определению, и никакая раскладка этого не исправит.
                                      0

                                      Раскладки — больной вопрос всех современных кравиатур: можно сколько угодно пытаться менять раскладку на более "оптимальную", но это перестаёт быть оправданным в случае использования нескольких девайсов и нескольких ОС.


                                      Импользование Dvorak оправдано для огромных текстов, что явно не случай IT.


                                      По своему опыту:


                                      1. Лучше везде стремиться к одной раскладке (физической), в моём случае — ANSI, даже на ноутбуках. В виду предпочтения Thinkpad'ов — меняю штатную клавиатуру на ANSI в случае, если там ISO или какая-то экзотика. Рабочие/домашние клавиатуры — строго ANSI, аналогично. Никаких "плавающих" слешей, разноразмерных энтеров и путешействий вертикальной черты (она же "pipe symbol") по деке.
                                      2. Лучше перепробовать кучу "механических" клавиатур (так себе термин, но увы) и найти наконец-то комфортные для себя комбинации, а также подобрать макропад под нужды, к примеру, рабочего места, где софт любит какой-нибудь шорткат в виде Ctrl+Shift+Alt+F12 и подобное.

                                      Так как клавиатурная тема всегда вызывает конфликт мнений — повторно отмечу то, что вышеописанное — исключительно субъективное мнение автора комментария. Нравится "мембранка" за $10 и с "большим энтером" — пожалуйста, вкусы они такие.


                                      Отличия ANSI от ISO — https://deskthority.net/wiki/ANSI_vs_ISO

                                        +1

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


                                        ИМХО, ортолинейные клавиатуры должны стать стандартом.

                                          +1

                                          Каспслок кто-то вообще использует? Ну кроме как раскладки переключать? Просто бесит что Enter делают маленьким, зато caps lock обязательно полноразмерный

                                            0
                                            У меня за место CTRL работает.

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое