Вакидзаси

Для прочтения этой статьи надо знать слова фингер и тамб. Тамб — большой палец руки или клавиша, которую надо нажимать этим пальцем. Фингер — любой остальной палец руки или клавиша, которую надо нажимать этим пальцем. Эти термины придумал я, но они успешно применяются в нашем скромном сообществе.

Введение

Мне не нравятся стандартные клавиатуры. Они неудобные и неприкольные. У многих людей от таких клавиатур начинаются болезни. Вот это всё ведёт к тому, что нужны эргономичные клавиатуры. Эргоклавы, собранные самостоятельно, — ремесло 21 века.

Клавиатурой, которая толкнула меня на путь клавиатурщика, была Кошкоклава. На хабре есть хорошая статья от автора клавиатуры. Там есть про эргоклавы в целом много всякого.

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

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

Аккордовые клавиатуры

Аккордовые клавиатуры от обычных отличаются тем, что для написания символа требуется не нажатие одной кнопки + нажатие любого количества модификаторов, а нажатие любого количества кнопок.

Представьте клавиатуру с тремя кнопками. Чтобы написать a, нужно нажать одну кнопку, b — вторую, c — третью, а потом сложнее: d пишется нажатием первой и второй кнопки одновременно. Ну и так далее.

Идея Вакидзаси

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

Меч
вакидзаси

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

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

Какие бывают аккорды

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

Есть пять доступных комбинаций тамбов, то есть доступных аккордов 2^8 * (5 + 1) = 1536. Это больше, чем на стандартной клавиатуре! Также есть два слоя раскладки (латиница и кириллица), что увеличивает количество аккордов вдвое!

Итого: 3072 аккордов с одной руки.

Мощь безграничная.

Вот такую смысловую нагрузку я дал тамбам:

Эти названия не эквивалентны тому, что есть на обычных клавиатурах. Это просто мнемоника, которая показывает, что:

  1. Аккорды с левым тамбом включают в себя большие буквы, но не всегда так.
  2. Аккорды с центральным тамбом включают в себя символы, но не всегда так.
  3. Аккорды с правым тамбом включают в себя функциональные клавиши, такие как Page Up, Home, etc.
  4. Аккорды с левым и центральным тамбом работают как аккорды с просто левым тамбом, но также отправляется нажатие кнопки Ctrl.
  5. Аккорды с центральным и правым тамбом отправляют не одни символы, а целые слова или их кусочки.

Прошивка

Многие любители клавиатурных дел берут за основу прошивки чудный фреймворк QMK, но я посчитал его излишним, и написал всё почти с нуля, взяв за основу библиотеки Ардуино. Ну, написал, работает хорошо. Та часть прошивки, которая про раскладку, генерируется автоматически по описанию.

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

Про генерацию раскладки можно прочитать подробнее в другой моей статье.

Исходный код вакидзаси можно прочитать в репозитории bouncepaw/wakizashi.

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

Раскладка

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

Вот кусочек раскладки для латиницы:

Одиночные нажатия. Как на обычной клавиатуре, короче:
oape  OAPE  8421
hsni  HSNI  :"-;
 000   100   010

Это вертикальные нажатия. То есть, чтобы их нажать, нужно нажать обе
кнопки под фингер:
rldu

Некоторые аккорды пишут сразу несколько букв:
1100
0000 = Th
 100

Функциональные клавиши тоже есть:
0100
0010 = Enter
 000

Чтобы сменить раскладку, надо нажать верхние четыре клавиши:
1111
0000
 000

Не буду все тут описывать. Исчерпывающее описание есть в репозитории,
упомянутом выше.

Симуляторы

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

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

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


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

Фундаментальные косяки

  1. Сложно нажимать на самый дальний тамб (следствие из ортолинейности клавиатуры и размеров сетки, куда ставил свичи). Из-за этого:

    1. Сложно писать макросы. Настолько, что гораздо проще написать слово по кусочкам.
    2. Функциональные клавиши тоже неудобно писать.

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

    Ещё можно разместить тамбы поудобнее. Рекомендую людям, которые будут повторять вакидзаси, сделать и то, и то.

  2. Мало кнопок. Это не косяк, а так задумано, но из-за этого есть прямо косяки:

    1. Нет места для привычных модификаторов (меня интересуют пять: левые Shift, Ctrl, Alt, Super|Cmd|Win и правый Alt). Для первых четырёх модификаторов предусмотрены аккорды, включающие соответствующие режимы, которые отправляют модификаторы, пока его не выключишь (аккордом, естественно).

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

      Ctrl ещё легко отправляется, но что касается Alt и Super|Cmd|Win, для них надо включать этот дурацкий режим, а потом ещё отключать. Таким образом, быстрый хоткей ⌘C (копировать) превращается в следующее:

      1. Аккорд 0001 0000 001.
      2. Аккорд 0110 0000 000.
      3. Аккорд 1111 0000 000.

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

      Мне рекомендовали сделать так, чтобы режим включался только на один следующий аккорд. Что же, это выход. Наверняка, это удобно.

    2. Много аккордов с большим количеством кнопок. Если бы я добавил сверху ещё ряд клавиш, то простых аккордов было бы в разы больше.

Несмотря на это (а это это нельзя не смотреть), Вакидзаси несомненно хороша:

Преимущества

  1. Всё рядом. Раньше я ругал верхнюю клавишу для мизинца, но потом выяснилось, что с ней всё в порядке. Ещё я ругал правый тамб. Пускай он далеко, но фактически он всё ещё «под пальцем», для него не надо двигать руку.
  2. Легко подключается к компьютеру. Мой макбук сразу признал в Вакидзаси клавиатуру, всё работает хорошо. Линукс тоже хорошо понимает. Увы, на винде нет ничего святого, при подключении ОС начинает искать драйвера, хотя какие драйвера нужны для стандартного клавиатурного протокола?
  3. Я использовал самые лёгкие свичи на рынке (Gateron Clear), поэтому легко нажимать на любое количество кнопок за раз.
  4. Легко изменять раскладку. Надо отредактировать CSV-файлы, а потом запустить весь процесс одной командой в консоли: make.
  5. Аккорды легко учатся.

Выводы

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

  1. Аккордовые клавиатуры круты!

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

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

  2. Клавиатуры интересно делать.

    Я буду делать другую. У меня уже есть идеи.

  3. Кнопки для модификаторов нужны.

    Хотя, есть люди, которым и без них хорошо. Многие всю свою жизнь проводят в редакторе vim, где почти всё делается без модификаторов, но я пользуюсь редактором GNU Emacs, где без модификаторов никак.

  4. Вакидзаси хороша для набора текста, но не для работы с компьютером.