Предыстория и предпосылки


Пару лет назад я, будучи стандартным пользователем «qwerty-йцукен», стал всё больше замечать, что процесс набора на этой паре раскладок имеет ряд неудобств, и чем больше я об этом думал, тем более раздражающими они казались.

На каждой раскладке свой набор символов, из-за чего для некоторого набора нужно было переключать раскладку, вводить символ, а после возвращаться на прошлую; на каждой раскладке своё расположение для одних и тех же символов; некоторые востребованные символы и вовсе доступны только через комбинации с alt; ужасное расположение «ё» на русской раскладке; ну а об общем позиционировании букв на «qwerty» вы наверняка уже читали ранее, как и о полулегенде о намеренно сложном для набора расположении, как костыле для обхода западания клавиш на первых пишущих машинках.

Тогда я стал искать, что же предлагают альтернативные раскладки. Как оказалось, они все пытаются решить только последнюю проблему. Бесспорно, весьма успешно, но только одну-единственную проблему. И только для английского языка. Для русского найденные раскладки выглядели крайне сомнительно и, как мы убедимся позже, едва ли были лучше стандартной. Также многие английские раскладки, очевидно, разрабатывались с оглядкой на «qwerty», не создавая альтернативу, а попросту немного изменяя стандартный вариант позиционирования.

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

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

Как и в любом проекте – первые версии были откровенно плохи. От одних решений приходилось сразу отказываться, к каким-то искать другие подходы, какие-то додумывать до нужного вида. И всё это, конечно же, должно быть обосновано, ведь просто «накидать из головы» несложно, но результат, увы, в таком случае будет соответствующий.

Решения, которые будут описаны ниже взвешены, множество раз обдуманы и, по возможности, будут ссылаться на какие-либо цифры и факты, а не на собственное желание сделать «так-то». Собственное желание обозначено именно в предпосылках, а реализация уже должна опираться на объективные данные.

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

Пост написан с точки зрения процесса создания проекта, с объяснениями некоторых моментов от первого лица. Более формальное описание, по общему объёму эквивалентное тексту ниже, с описанием реализации и некоторыми «узкими» моментами, содержится в readme к проекту.

Периодически я буду ссылаться на подсчёты, сохранённые в external/calculation.xlsx файле, взгляд на который, по ходу прочтения, также рекомендуется для большего понимания.

Текущая версия является единой фонетической двускриптовой клавиатурной раскладкой. О каждом прилагательном мы ещё поговорим.

Раскладку можно логично разделить на две взаимосвязанные части: буквенная раскладка стандартного вида и символьная раскладка с некоторыми особенностями и функциями.

Буквенная раскладка


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

Как можно понять, насколько удачное расположение символов? Выделить объективные критерии удобства. Ими стали:
  • чередование рук
  • минимизация вероятности использования одного пальца на два набора подряд *
  • равномерная нагрузка рук и пальцев
  • минимизация дополнительных движений
Звучит до нелепости просто и очевидно, но именно это и определяет удобство процесса набора для конечного пользователя.

Для последнего критерия буквенная часть клавиатуры была разделена на «группы удобства». Самой объективной группой является первая – домашние позиции пальцев, всем известный набор «фыва олдж» (в «йцукен» представлении). На неё мы и будем обращать внимание впоследствии.

Частотные анализы


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

Этап подбора анализов оказался несколько разочаровывающим, и впоследствии я к нему возвращался не раз, с целью как-либо улучшить и дополнить его. Но каждый раз я находил только новые копипасты и ссылки на одни и те же анализы, не все из которых даже являются полноценными анализами, имеют свои допущения, а некоторые и вовсе были откровенно ложны. После отбора достоверных анализов, чтобы хоть как-то расширить выборку, был написан небольшой пакет на python для создания частотных анализов (о чём был мой первый пост) и выполнены собственные анализы.
Итоговая выборка – 13 символьных частотностей для английского языка, 8 для русского, 6 биграммных частотностей для английского и 4 для русского.

Так как объём данных, на которых основывались анализы, весьма разнился, было бы некорректно учитывать их просто по среднему арифметическому, а в случае полноценной оглядки на объём – анализ с максимальной базовой выборкой просто бы перекрывал данные от прочих. Потому дабы немного сгладить значения объёмов я взял их кубические корни, от которых уже и подводил средние значения частотностей *.

Результаты "мета-анализа"








Ссылки на все использованные анализы, в порядке объёма выборки по убыванию
Английский язык; базовая частотность:

Русский язык; базовая частотность:

Английский язык; парная частотность:

Русский язык; парная частотность:


Создание раскладки


На основе выделенных критериев и собранных анализов в excel'е был создан лист с автоматическим подсчётом значений, на основе введённой раскладки.

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

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



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

Значения по критериям


Давайте взглянем на автоматически рассчитанные значения созданной раскладки:
  • чередование рук – 70.58% и 71.23%
  • вероятность «чистого» повторного нажатия одним пальцем – 2.55% и 4.54%
  • равномерность нагрузки рук – 48.36/51.64% и 52.35/47.65%
  • максимальная разница нагрузки пальцев – 4.86% и 8.98%
  • использование «домашней» группы – 64.95% и 58.07%
Конечно, это мало о чём говорит, поэтому давайте для примера взглянем на аналогичные цифры, на тех же входных данных, для некоторых популярных раскладок.

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

йцукен (ru)
  • чередование рук – 53.50%
  • вероятность «чистого» повторного нажатия одним пальцем – 19.17%
  • равномерность нагрузки рук – 53.53/46.47%
  • максимальная разница нагрузки пальцев – 29.72%
  • использование «домашней» группы – 33.86%
Занимательный факт: две трети всех нажатий в «йцукен» приходятся на указательные пальцы. А подобная сгруппированность популярнейших символов в результате приводит к тому, что и каждое пятое нажатие будет выполняться одним и тем же пальцем. О каком «десятипальцевом наборе» в такой ситуации может идти речь?

яверты (ru)
* Учитывались только буквы основного буквенного блока.
  • чередование рук – 48.11%
  • вероятность «чистого» повторного нажатия одним пальцем – 8.98%
  • равномерность нагрузки рук – 53.40/46.87%
  • максимальная разница нагрузки пальцев – 13.09%
  • использование «домашней» группы – 25.92%
qwerty (en)
  • чередование рук – 52.60%
  • вероятность «чистого» повторного нажатия одним пальцем – 7.08%
  • равномерность нагрузки рук – 58.69/41.31%
  • максимальная разница нагрузки пальцев – 20.17%
  • использование «домашней» группы – 25.70%
workman (en)
  • чередование рук – 55.96%
  • вероятность «чистого» повторного нажатия одним пальцем – 2.91%
  • равномерность нагрузки рук – 51.49/48.51%
  • максимальная разница нагрузки пальцев – 11.14%
  • использование «домашней» группы – 63.71%
colemak (en)
  • чередование рук – 58.64%
  • вероятность «чистого» повторного нажатия одним пальцем – 1.26%
  • равномерность нагрузки рук – 48.38/51.62%
  • максимальная разница нагрузки пальцев – 12.05%
  • использование «домашней» группы – 64.95%
dvorak (en)
  • чередование рук – 70.67%
  • вероятность «чистого» повторного нажатия одним пальцем – 2.61%
  • равномерность нагрузки рук – 43.30/56.70%
  • максимальная разница нагрузки пальцев – 9.48%
  • использование «домашней» группы – 58.92%

Больше раскладок и их значений вы можете найти в упоминавшемся .xlsx файле. Здесь перечислены лишь основные показатели наиболее важных к упоминанию раскладок.

Исходя из этих значений вы можете отметить, насколько слабо́ стандартное позиционирование буквенных символов. В качестве лидера, среди именитых раскладок, можно выделить «dvorak», с отличными показателями по доброй половине критериев. О русских раскладках говорить нечего, ибо альтернатив особо-то и нет, а ужасающие показатели имеющихся вы видите сами.

Символьная раскладка


Требования к символьной раскладке, включая уже озвученные ранее:
  • единство символов для любой буквенной раскладки
  • разграничение между буквенным и символьным слоями
  • группировка символов по логическим категориям
  • расширенный набор символов; добавление диакритических символов
  • расположение с учётом «групп удобства»
Так как базовые нажатия в «буквенном блоке» у нас все отданы исключительно буквенным символам, даже несмотря на то, что клавиш больше, чем букв, в случае английского языка, а расположение символов в цифровом ряду вызовет огромные неудобства, лучшим вариантом будет расположение под модификаторами.

Опробовав различные варианты, я выбрал двух финалистов, что открывает сразу 66 позиций для расположения в буквенном блоке. В качестве модификаторов был выбранalt и, тут мы подошли к самому потенциально отпугивающему моменту проекта, длинные нажатия. Не спешите закрывать страницу. Я действительно считаю это решение хорошим, и пользуюсь им уже более года, начиная с первых попыток создания этого проекта, и за это время я ни разу о нём не пожалел. То, что я называю «длинным» нажатием на деле занимает 0.15с, и может быть легко перенастроено в процессе использования на любое другое значение. Мне, на текущий момент, значение в 0.12с кажется наиболее оптимальным.

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

Озвученные ранее позиции были заполнены следующим образом:



Зелёным выделен основной набор символов, используемый повсеместно, и присутствовавший на «qwerty-йцукен». Серым выделен дополнительный набор символов из числа более или менее востребованных. Синим – базовые навигационно-управляющие команды. В углу, под извечным «ъ», расположились комбинируемые акут и гравис, в первую очередь как маркёры основного и побочного ударений.

Итак, что мы имеем по изначальным условиям:
  • символы образуют собственный единый и независимый от буквенной раскладки слой
  • символы сгруппированы по категориям
  • включены дополнительные символы и команды, из числа потенциально востребованных
  • распределение с учётом «групп удобства» соблюдено
И, чтобы долго не затягивать, давайте познакомимся со вторым потенциально спорным моментом и перейдём к цифровому ряду:



Да, здесь немного переназначены привычные enter/caps/backspace.
На самом деле просто esc и backspace опустились пониже на одну-две клавиши, из-за чего доступ к ним значительно упростился (новый "enter as backspace" с шифтом работает ещё и как delete), а enter переехал на противоположную сторону. Это второй упоминавшийся потенциально спорный момент, но, повторюсь – это направлено исключительно на повышение удобства, в чём вы можете убедиться сами прямо сейчас – поставьте пальцы на домашние позиции и посмотрите, как к каким клавишам, из перечисленных, вы тянетесь, и насколько предложенный вариант удобнее.
Чуть опустевший backspace теперь выполняет функции медиа-управления.
Функция caps lock перекрыта, но так как она может представлять интерес для отдельных пользователей, она может быть назначена на бывший esc в настройках.
На этом спорные моменты закончились, а вот пост ещё нет. Впереди непосредственно цифровой ряд и особенно радующие меня языковые модификации.

Цифровой ряд


Базовые значения клавиш-цифр не изменились, а на позициях бывших - и = расположены кнопки пользовательского ввода, которые будучи пустыми выполняют функцию увеличения или уменьшения текущего выделенного числа. Если определены пользователем – отправляют назначенный символ или их комбинацию.

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

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

Языковые модификации


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

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

Модификации «привязаны» к письменности и учитываются раздельно. В отображении выше показан вид с основными модификациями для латиницы и кириллицы.

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

Что же, перейдём к самому разбиению и результатам.

Стоит предварительно внести ясность: буквы с диакритикой в разных языках могут являться как отдельными алфавитными символами, так и просто буквами с добавленной диакритикой.
Пример: ñ в испанском языке графически эквивалентна n + диакритическая тильда, однако в алфавите закреплена как самостоятельная, отдельная буква. Или, более близкий пример – наши привычные й и ё.

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

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

12 доступных символов разбиты на две категории – самостоятельные символы и символы упрощённого набора. Самостоятельные символы – ł đ ı ß ø æ œ, с небольшой оговоркой для ł, доступны из любых модификаций, что, следовательно, позволяет использовать языки, доступ к которым они открывают также из любых модификаций. Символы упрощённого набора – те, которые могут быть реализованы в виде с комбинируемой диакритикой, и именно они будут меняться при выборе модификации, в зависимости от потребностей выбранного языка.

Пара комментариев к ñ и đ и оговорка об ł
– n с тильдой. Данный символ сам по себе, без прочих, открывает упрощённый набор для испанского языка и всех языков, на которые повлиял последний – испанидад. Из-за этого он занял свободное место в модификациях, в которых количество символов упрощённого набора закончилось на четырёх, потенциально расширяя область применения данных модификаций.
ł – l с диагональным штрихом. Ситуация зеркальная по отношению к предыдущему символу – символ, хоть и является буквой с диакритикой, находится в категории самостоятельных, т.к. не может быть корректно отображён в виде с комбинируемой диакритикой. Также он имеет достаточно ограниченное использование, и от него не зависят прочие символы. Из-за этого, в модификациях, требующих 6 дополнительных символов, последнее место было отдано от "ł". Но таких модификаций не так много, что не делает этот факт чересчур значимым.
đ – d со штрихом. Как и предыдущий – не может быть корректно отображён в комбинированном виде. Вдобавок, он имеет свои особенности для двух конкретных модификаций – исландский/староанглийский и язык мосси. Всё дело в том, что в данных модификациях используются собственные вариации данного символа, имеющие собственное название и применение. Во всех модификациях, помимо оговоренных выше, это đ Đ, для исландского/староанглийского это ð Ð, для мосси – ɖ Ɖ. Обратите внимание, что варианты в верхнем регистре, несмотря на единое начертание, являются разными юникод-символами.

Расположением символов упрощённого набора по «динамическим» позициям были составлены модификации для латинской письменности. При позиционировании символов были попытки располагать одинаковые или графически близкие символы на одинаковых позициях, но это не всегда представлялось возможным. Итоговое количество – 31 модификация, 24 из которых составлены с 5 динамическими символами, а 7 – с 6.

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

Полностью поддерживаемые языки
Языки, никоим образом не зависящие от выбранной модификации, и полноценно доступные к набору. Английский, французский, вьетнамский, португальский, итальянский, индонезийский,…

Полностью поддерживаемые языки «из коробки»
Языки, доступные к набору из любой модификации, при этом имеющие упрощённый набор из основной. Испанский, немецкий, шведский, датский, финский, норвежский,…

Диакритически поддерживаемые языки с опциональной модификацией для упрощения набора
Позвольте на примере – турецкий: язык может быть использован с любой модификацией (к примеру, с основной ñ å ä ö ü), при наборе дополнительных символов в два нажатия через диакритические символы, но при выбранной турецкой модификации (ç ş ğ ö ü) эти же символы становятся доступны через одинарное нажатие, не теряя общей функциональности.
К этой категории поддержки относятся турецкий, румынский, хорватский (гаевица), словенский, эстонский,…

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

Модификационно поддерживаемые языки
Языки, полноценный набор на которых возможен только на специальных модификациях. Ещё раз отмечу, что специальные модификации сохраняют все возможности набора на языках предыдущих категорий.
Согласно w3techs.com в этой категории нет языков с долей использования в интернете более 0.05%

Неподдерживаемые языки
Языки с основной письменностью отличной от латиницы и кириллицы. Для всех из них поддерживаются все варианты романизации (в том числе, из разряда недоступных на стандартной ISO basic Latin).

Теперь о кириллических модификациях.

Так как в кириллическом наборе дополнительных языковых символов отсутствуют единые «над-символы», использование которых может быть востребовано из любой модификации, а также учитывая, что все символы являются самостоятельными, ввиду того факта, что комбинируемая диакритика крайне печально работает с кириллицей – все 12 мест являются динамическими.
Это позволило объединить в группах целые ряды языков, итоговое количество которых – 4 группы + 1 отдельный язык. Также это влияет на то, что здесь нет «основной» модификации, хотя, фактически, из-за расположения по востребованности, её место занимает группа «украинский, белорусский, ...».

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

Завершение


Proof of concept


С полной реализацией данной раскладки можно ознакомиться и опробовать на гитхабе. Текущая версия доступна к использованию на Windows, а также существует переложение на Android. Помимо реализации концепта, которому посвящён весь текст выше, также имеется различная вспомогательная внутренняя и внешняя функциональность, относящаяся непосредственно к использованию, и освещённая в соответствующих разделах readme.

Итоги


Преимущества:
  • лучшие объективные показатели удобства набора на двух раскладках
  • символьно-единая фонетическая двускриптовая система набора
  • расширенная символьная поддержка
  • поддержка языковых модификаций, сохраняющих все преимущества единой системы, и в то же время снимающих все ограничения унификации с отдельных языков
  • дополнительный внутренний и внешний функционал
Итоговый охват полностью поддерживаемых языков – 88.89% интернета, согласно данным w3techs.com за 19.10.2021.



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

Комментарии (38)


  1. OldFisher
    19.10.2021 11:32
    +3

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


    1. TLHE Автор
      19.10.2021 11:45

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

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


    1. Spectrum-Hyena
      20.10.2021 09:08

      Присоединяюсь, мизинцы, хоть и подвижные пальцы, но довольно слабые. В этом отношении стандартный ЙЦУКЕН даже лучше, потому что частые буквы сконцентрированы по центру. Стоит глянуть на ДИКТОРа и раскладку Зубачева, а так же на англоязычные раскладки в принципе, которые были автором упомянуты, но, видимо, факт разницы нагрузки на пальцы был незамечен или проигнорирован


      1. TLHE Автор
        20.10.2021 09:38

        Присмотрюсь к замечанию и озвученным раскладкам. Действительно, снижение нагрузки на мизинцы имеет место, и этот отдельный критерий можно улучшить.

        Но про «йцукен» совсем не соглашусь, так как усиленная нагрузка на центр попросту превращает десятипальцевый набор в двупальцевый для 2/3 набора, а это уж совсем крайность.


  1. warhamster
    19.10.2021 11:34

    А какая будет разница в скорости со стандартной QWERTY и какое время обучения для достижения такой разницы?


    1. TLHE Автор
      19.10.2021 11:55

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

      Судя по цифрам в подсчётах, разница должна быть значительной, и совсем не в пользу «qwerty». Если не ошибаюсь, текущий рекорд скорости набора поставлен на «colemak» (upd: ошибаюсь, на самом деле «dvorak», но сути не меняет), у которого, по цифрам в посте, также хорошие значения, что немного подкрепляет зависимость этих показателей и скорости набора.

      По поводу времени обучения, очень навскидку озвучу "месяц, до полноценного перехода". Но, конечно, всё индивидуально.


      1. gremlin244
        19.10.2021 22:43

        Я вполне допускаю что это так. Но у меня вот какой вопрос, как к вашей раскладке, так и к двораку тому же. А скорость печати действительно надо ускорять? Ну то есть вот вы уперлись на qwerty в какой-то предел, и почувствовали, что как-то медленно я печатаю, хотелось бы быстрее? Просто я вот как то ни разу не замечал чтобы у меня производительность труда уперлась в скорость печати. Не знаю, возможно это актуально для писателей, переводчиков, копирайтеров хабра в конце концов. Но явно сильно не для всех.
        Я если что без всяких претензий, у меня наоборот вызывает уважение, что вы решили что можно получше, и таки сделали получше, как минимум для себя, а не просто теоретизировали.


        1. TLHE Автор
          20.10.2021 08:38
          +1

          Полностью с вами согласен, и даже в основном тексте, несмотря на немалый объём, я ни разу не упомянул этот параметр. Я делал упор на удобство набора, так как считаю этот параметр важным для производительности, когда сам процесс набора не является звеном между вами и результирующим текстом, будь то код, сообщение в мессенджере, али ещё что. А скорость является приятным следствием удобства, во всяком случае, как я вижу. Набрать текст не за 5с, а за, условные, 3с – безусловно приятнее, и продуктивнее на дистанции, но это не было самоцелью.


        1. Spectrum-Hyena
          21.10.2021 19:51

          вот вы уперлись на qwerty в какой-то предел

          Можете по этому поводу не переживать, все рекорды скорости печати поставлены именно на QWERTY, да и в целом на стандартных раскладках, у нас он на ЙЦУКЕНе, не смотря на то, что это явно не оптимальные раскладки.

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


          1. Steve_Key
            21.10.2021 20:04

            Более того, часто рекорды скорости набора ставят люди, не владеющие слепым набором, набирающие 3-мя, 4-мя и до 7 пальцами.


      1. Kuklachev
        20.10.2021 08:53
        +1

        Так это же ключевой тест. В чем тогда смысл перехода? Мне кажется, интересны 2 показателя - разница в скорости обучения в сравнении с qwerty и разница в итоговой скорости печати. Насколько я в курсе, в среднем обучение слепому набору занимает несколько десятков часов. И скорость становится около 200-250 зн/мин. Я печатаю грубо говоря 450-500 зн/мин. Интересно, какие будут эти значения для альтернативных раскладок.


        1. TLHE Автор
          20.10.2021 09:09

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

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


          1. Kuklachev
            20.10.2021 11:59
            +1

            Дело в том, что удобство - очень относительная вещь. Зачастую удобство - дело привычки. Большинство работающих за компьютером не умеют набирать слепым методом. И для них это неудобно. Но стоит чуть поучиться (буквально несколько дней), и набирать вслепую становится внезапно удобно. Поэтому чтобы доказать тезис, что альтернативная раскладка удобнее и лучше, подходят как раз мои 2 критерия - начальная скорость обучения человека с нуля, а также финальная скорость набора, когда уже идет набор слепым методом.

            Грубо говоря, вы не можете быстро и эффективно набирать текст, ради которого нужно ломать пальцы,

            Если многие (я, например) набирают 500 знаков в минуту, причем это далеко не рекорд, обычный рабочий показатель для профессионала за компьютером, значит, не так уж и неудобна текущая раскладка. И только прямые измеримые показатели могут подтвердить разницу между раскладками.


            1. TLHE Автор
              20.10.2021 15:24
              -1

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

              Скорость обучения – показатель в себе, совершенно не связанный ни с чем из упомянутого. Он зависит только от предшествующего опыта и прочих личных факторов, связанных непосредственно с обучением.
              К примеру, переход с «qwerty» на «qwpr» довольно прост и быстр, но абсолютно ничего не говорит об удобстве этих раскладок.

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

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


  1. amarao
    19.10.2021 12:29
    +2

    Очень, очень хорошая работа. У меня к подсчёту статистики есть одно замечание - вы использовали тексты, правильно? При том, что тексты важны, у меня из открытых окон прямо сейчас:

    • браузер - текст

    • терминал - шелл

    • редактор - код

    • терминал - шелл

    • im - текст

    • редактор в режиме ревью - комбинация код и текст.

    Т.е., реалистично, исходные тексты тоже надо включать в посчёт вероятностей для пар символов.


    1. TLHE Автор
      19.10.2021 12:42

      Спасибо, очень приятно слышать.

      Да, я ориентировался на те анализы, что смог найти/сделать сам, и этот этап полностью зависим от того, что на текущий момент есть в интернете. Когда появятся новые анализы, особенно опирающиеся на данные из разных сфер применения – с радостью добавлю их к текущим, и пересчитаю значения.

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

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


      1. amarao
        19.10.2021 13:11
        +2

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

        Насчёт частотных комбинаций для кода - возможно, определённые вещи окажутся совершенно на другом уровне. Например, в обычном тексте мы редко имеем диграфы вида != , >=, ->, скобки оказываются в совершенно другом уровне по востребованности, '_' становится едва ли не буквой на уровне пробела (особенно, в языках_с_snake_case).

        В контексте написания кода, я бы даже согласился с отдельным слоем "для программирования", где только английский и символы, которые часто используются, возможно, даже, language-specific.

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


        1. TLHE Автор
          19.10.2021 13:34

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

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

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

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


  1. aamonster
    19.10.2021 12:39
    +4

    Очень интересно (хотя и трудно проверить на практике).

    Но помимо замечания @OldFisherнасчёт того, что пальцы не равны между собой, хотел бы отметить ещё один момент.
    Быстрый набор реального текста делается "аккордами" – бьёшь последовательно несколько букв. И imho имеет смысл оценивать не чередование рук и так далее, а именно удобство исполнения и (главное) "вбивания в подкорку" таких аккордов.

    Удобно набиваемый "аккорд" – не обязатально правой-левой-правой-левой.


    1. TLHE Автор
      19.10.2021 12:57

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

      Я ещё обдумаю вашу мысль, но на текущий момент мне представляется удобным "одноруким" аккордом только набор пары символов (не более) разными пальцами и в одном ряду. А это следствие критериев «группы удобства» и «чередование пальцев», срабатывающих после критерия «чередование рук».


      1. aamonster
        19.10.2021 19:01

        Не, про "предусмотреть все" (в смысле – вручную) – даже мысли не было. Скорей была мысль "прогнать тесты, что быстро набивается" (заставить человека вводить цепочки случайных символов на стандартной раскладке – причём по памяти, скажем, программа показала 5 символов на экране, глянул и быстро ввёл, время отсчитывается от первого введённого символа) + собрать статистику "что часто встречается в тексте" и попытаться объединить их.
        Т.е. уйти от эвристик "чередование рук/..." к реальным замерам.


  1. IvanKlut
    19.10.2021 18:30
    +1

    Поражаюсь усидчивости автора, чтобы все это проанализировать и придумать. Сам несколько недель пробую Colemak, вроде как-то логичнее для слепой печати, но как только забываю, начинаю набирать привычные клавиши.


  1. shagrath_000
    19.10.2021 18:47
    +2

    Имеются весьма обоснованные опасения что после 5 и более лет активного использования qwerty в технике слепой печати переход на альтернативную раскладку даст плодотворные результаты - как минимум по причине глубоко въевшейся механической памяти.

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


    1. TLHE Автор
      19.10.2021 19:10

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

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

      Вопрос пользования чужими машинами подвешен для любых раскладок отличных от «qwerty». Хотя теоретически, можно было бы подумать о простеньком ahk-скрипте с нужной вам раскладкой, который не требует изменений настроек ввода владельца машины. Запустили на время вашего пользования, и никаких изменений после себя не оставили. Применимо к любым альтернативным раскладкам.


  1. MichaelBorisov
    19.10.2021 19:02

    Насколько я понимаю, оптимизировали вы расположение букв на клавиатуре вручную, перебрав несколько комбинаций и вычислив для них результаты с помощью екселя?

    Возможно, ваш результат не является оптимальным. Есть современные методы, такие как "Алгоритм имитации отжига" и "Генетический алгоритм", которые, возможно, могли бы найти и более выгодное расположение клавиш по вашим критериям.

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


    1. TLHE Автор
      19.10.2021 20:32

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

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


  1. flyer2001
    20.10.2021 10:04
    +1

    Спасибо за интересную статью. А раскладку Диктор не измеряли по характеристикам? Пересел на нее лет 6 назад, и обратно не хочу))


    1. Kuklachev
      20.10.2021 12:29

      И как результаты? Насколько увеличилась скорость печати?


      1. flyer2001
        20.10.2021 12:51
        +1

        Тут сложно однозначно ответить. Пока я переходил с ЙЦУКЕН на Диктор, активно занимался в клавогонках. Меньше, чем за 2 месяца преодолел планку 500 зн/мин (554). https://klavogonki.ru/u/#/366695/journal/ хотя до этого на обычной раскладке не мог пробить отметку в 498 зн/мин (активно пытался).

        Но это пиковая скорость. Держаться на такой скорости больше нескольких минут вряд ли получится. Но в целом переход на другую раскладку получается дал прирост и в пиковой скорости. И как мне кажется во многом из-за большей сбалансированности раскладки в плане частотности, активной смены рук и пальцев + меня подкупило, что некоторые знаки пунктуации используются чаще некоторых букв. Ну и приятнее всего, когда ты спокойно печатаешь в средней скорости 300 зн/мин, ощущая полный контроль и не уставая.


    1. TLHE Автор
      20.10.2021 14:31
      +1

      Как раз сейчас на неё смотрю, по наводке @Spectrum-Hyena – отличные показатели буквенной части. Удивлён, как она прошла мимо меня. 74.75% чередования рук, 3.14% повторения нажатия. Немного хуже с использованием домашней группы (52.6%), и нагрузка на пальцы слишком напирает на указательные (43.4% в сумме). Разница нагрузки рук 8.88%.

      Исключительно буквенная часть, конечно же.


  1. Steve_Key
    20.10.2021 23:06
    +1

    Вызывает уважение проделанный труд автора.
    Очень интересно, что такую раскладку можно использовать почти на любых языках.
    Я бы диакритику ввёл через «мёртвые» клавиши.
    И да — цифровой ряд удобно использовать как раз для знаков препинания, а цифры вводить, если не на NumPad-е, то на его аналоге «в слое», на основной позиции слепой печати.
    Ну, и Enter-BackSpace у меня «зеркально» расположены (от статьи): Enter, привычно, справа (правда, на одно «клавишеместо» ближе к мизинцу), а BS — на места бывшего CapsLock-а.

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

    Я-то пользуюсь всего-навсего единой фонетической раскладкой ЙЦУКЫН-JCUKYN (основная — русская с «рокирнутыми» тремями парами букаф) и без всякой диакритики. Правда, добавил некоторые unicode-символы.

    Моя самодельная, саморазработанная «под свои руки» клавиатура выглядит вот так: https://klava.wiki/hypha/клавиатуры/kkeyb (не обращайте внимания на надписи на колпачках — они просто стандартные), а раскладка — вот так: https://klava.wiki/hypha/раскладка/эйцукын
    В выборе раскладки большую роль сыграла 30+летняя привычка.

    И да, «про скорость» — это не ко мне. Я — про удобство.


    1. TLHE Автор
      21.10.2021 09:24
      +1

      Отдельное спасибо за комментарий к небуквенной части.

      Идея с мёртвыми клавишами отличная, добавлю её к текущей реализации.

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

      Из эргономичных клавиатур присматриваюсь для себя к компактной готовой «ZSA Moonlander», но пока только в планах.

      Расположение групп цифр/f-клавиш/... в виде блоков, а не ряда, как я понимаю, обусловлено разделением «зон ответственности» рук, а были другие предпосылки?


      1. Steve_Key
        21.10.2021 18:39
        +1

        Цифры у меня, как можно заметить, есть на двух руках. Как и блоки редактирования (стрелки курсора, клавиши навигации). Чтобы можно было любой рукой работать (левой, к примеру, когда в правой мышка). Цифры для левой руки мне показалось удобнее расположить «по-телефонному», а для правой привычно — «по-калькуляторному».
        F-ки расположены на тех же местах, что и цифры (для мнемоники), но слева они «чистые» и с Alt-ом, а справа — с Ctrl и с Shift-ом. По два модификатора с F-ками нажимать мне, как правило, не нужно.
        Клавиатура проектировалась в рассчёте на «слепой 10-пальцевый набор», номинально на клавиатуре должны быть обе руки.


      1. Steve_Key
        21.10.2021 18:42

        Да, кстати, если на колпачки наносить обозначения, то, IMHO, не нужно «рисовать» основную раскладку (при множестве слоёв будет хаос-неразбериха), а только спец-символы и «редкие». А диакритика через «мёртвые» клавиши хороша тем, что получается некая наглядность-мнемоничность: нажал ~ и n — получил соотв. символ, не нужно запоминать (предполагается, что раскладка выучена наизусть, набор слепой).


        1. TLHE Автор
          21.10.2021 19:30

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


          1. Steve_Key
            21.10.2021 20:02

            Обычной тильды для знаков вида õñ, обычного грависа для ò, обычного апострофа для ó и т. д. для ô ÿ ö ŏ ő. А как иначе я, как «средний» пользователь, должен их запоминать? Лучше уж тогда из «Таблицы символов» вводить, наглядно.

            Но это только моя идея, можно, конечно, любой символ сделать «мёртвым» и вводить всякие-разные, по желанию.


            1. TLHE Автор
              22.10.2021 11:31
              +1

              Дело в том, что из 24 диакритических символов желаемого охвата, лишь немногие представляют интерес как отдельные символы. Седиль ç, диэрезис ӧ, гачек ǒ, и прочие потенциально востребованные диакритические символы в некомбинированном виде будут просто лежать мёртвым грузом. Также возникнет вопрос с расположением – либо переносить все «мёртвые» клавиши в цифровой ряд текущей диакритики, что усложнит доступ к их базовому представлению, по сравнению с текущим видом, особенно к таким как точка или кома, либо располагать их хаотично по всему символьному слою, что совсем не радует. К тому же, комбинируемые символы с вариантами надстрочного и подстрочного написания будут предполагать три варианта охвата – "символ, sup, sub", в то время как символы с единственным вариантом будут вносить сумятицу в это правило.

              Конечно, я не предполагал, что кто-либо, кроме профильных специалистов, будет запоминать весь набор диакритики. Она тут расположена "по требованию". К примеру, потенциальному пользователю со знанием эсперанто понадобятся лишь бревис и циркумфлекс, со знанием французского – диэрезис, седиль и циркумфлекс, и так далее. В запоминании позиций 1-3 (крайне редко – 4) диакритических символов, когда они действительно востребованы для конкретного пользователя, нет ничего сложного.

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


              1. Steve_Key
                22.10.2021 15:45

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