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

Я решил узнать, можно ли купить удобную клавиатуру в 2020 году. Краткий ответ: пришлось паять самому.




Недавно я купил механическую клавиатуру Vortex Core RGB. Мне понравилась механика, новое расположение курсоров и скобок, нормально привык к меньшему количеству клавиш. Но мне не хватало стабильности печати, поэтому я стал гонять тренажёр. Пришлось поставить руки «правильно», но они стали уставать от неестественно прямого положения.

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


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

Что я ищу? Суммируя статью про дизайн клавиатур:

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

В поисках эргономики


Подбив требования, я начал искать новую клавиатуру.

  1. В офисе я уже видел Microsoft Sculpt, на ней руки лежат правильно, но кнопки всё ещё как на печатной машинке.

  2. Изгиба можно добиться иначе, совсем разделив клавиатуру пополам, например, Ultimate hacking keyboard.

  3. Есть ортолинейные клавиатуры, у которых клавиши стоят ровно по сетке, например, Plank EZ. Нажимать клавиши удобно, но руки придётся ставить прямо, а хочется под углом.

  4. Можно разделить ортолинейную клавиатуру пополам, например, Levinson. Уже лучше, но есть ли ещё?



    Можно ли сместить кнопки вертикально, чтобы они легли ровно под пальцы? Конечно.
    Вариантов не очень много, но выбор есть.
  5. Model 01 keyboard крута, каждая клавиша уникальна, сделана под палец. Стоит $300, но снята с продажи, ждём новую.

  6. Ergodox EZ мне не понравилась: слишком большая даже на фото, не понимаю, что делать с таким количеством кнопок у большого пальца. С ценником тоже — $300+.

  7. Можно сделать шаг назад, не разделять, а просто правильно поставить клавиши. Так сделано в Atreus, но продажи ещё не начались (по плану в августе-сентябре).



Половину этих клавиатур можно купить только в разобранном виде, спаять придётся самому.

Сделать клавиатуру достаточно просто: нужен контроллер, кнопки, колпачки и доска, на которой всё держится. Даже плату делать не обязательно, кнопки к контроллеру можно присоединить проводами.

С софтом тоже просто: контроллер — это Arduino, а для него есть опенсорсный QMK, который стал стандартом с кучей функций.

DIY: осталось только припаять


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

  1. Много кнопок у Helix.

  2. Средне у Iris.

  3. Мало кнопок у Kyria.

  4. Совсем мало у Jian, но зато адаптирован к русской раскладке.

  5. Пальцы двигаются не по прямой, а по дуге, можно ли так поставить клавиши? Да, если у вас Dactyl-ManuForm. Надо будет напечатать корпус на 3D-принтере, платы внутри нет совсем, всё на проводах. Сборка не самая простая.


Больше всего мне понравилась клавиатура Iris (под номером 2 в этом списке). Платы этого типа делают не первый день, к четвёртой версии плате уже не нужен отдельный контроллер, ATmega32U4 встроен и не занимает места.



У клавиатуры есть приятные фишки: можно наклонить, клавиши под большим пальцем можно заменить на увеличенные или поставить пару крутилок. Заказываю.

Iris Keyboard: собираем сами


Сколько это стоит?


Купить все компоненты в одном месте не получится. Плата и корпус — на сайте из Америки, кнопки на Гикбордс, колпачки на Алиэкспресс. Кнопки можно найти и на Авито, в Москве всегда есть из чего выбрать. Всё вместе вышло на 14 тысяч рублей (но изначально я забыл купить боковину, которая стоила ещё 2 тысячи).


Можно сделать дешевле: не покупать корпус, а свитчи взять на Авито, так получится уложиться в 10 тысяч рублей.

Можно сделать дороже: взять всё самое крутое. Набор красивых клавиш запросто может стоить $150, крутые переключатели Zilents обойдутся ещё в $60. Это без учёта доставки, которая обычно стоит около $30 на позицию. В итоге можно собрать клавиатуру и за 30 тысяч рублей (? $450, дальше оценивайте по курсу).

Как это спаять?


Пока ехали все детальки, я посмотрел курс пайки, там всё просто. Для работы понадобится немного:

  • простой паяльник и подставка под него;
  • оловоотсос, чтобы перепаивать кнопки;
  • припой, чтобы скреплять;
  • флюс, чтобы чистить паяльник;
  • кислота, чтобы подготовить плату к пайке.


Рабочий стол в процессе

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



Плата крутая.

Встроенный процессор. Для большинства самодельных клавиатур надо припаивать Arduino, а он занимает кучу места, поэтому приходится обыгрывать его прямо в дизайне платы. У Iris с этим намного проще.

Шесть светодиодов уже встроено в плату, но можно допаять ещё под каждую кнопку.

Подключение через USB-C, платы соединяются через TRRS (это разъём как у наушников).

Поддерживает несколько видов переключателей: Cherry MX (и даже PCB Mounted), низкопрофильные Kailh choc (но только первой версии), Alps.

Ну и просто цвет красивый.



Не дожидаясь пайки, я вставил все клавиши и пощёлкал. Кайф, всё под рукой.



Позже я догадался, что корпус не картонный, а прозрачный, просто он обёрнут в бумагу против царапин. Ещё оказалось, что я забыл заказать боковую часть, потому что не стал разбираться, что значит Clear Acrylic Middle — Tented. Без этой боковинки можно спокойно работать, просто не получится поставить клавиатуру под углом.

Пошаговая сборка клавиатуры


  1. Вставляете угловые механизмы.

  2. Насаживаете на плату, выравниваете, припаиваете.

  3. Добавляете остальные кнопки, припаиваете.

  4. Прикручиваете низ корпуса, добавляете кейкапы. Готово!


На пайку первой половины ушло полтора часа, но в основном я разбирался с паяльником и температурой. Вторую половину собрал за 20 минут.

На фото видны переключатели двух цветов, это разные типы кнопок:

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

Смысл в этом такой: у кнопок shift, control, alt не нужен бугорок, это вспомогательные клавиши, они нажимаются вместе с какой-то другой. Заранее я не знал, где они стоят, поэтому позже пришлось все ещё пару раз перепаять, оловоотсос пригодился.

Дно корпуса ровное, а клавиатура слишком лёгкая и скользит по столу. Самые простые силиконовые капельки решат проблему.



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

Обзор Iris Keyboard: от эргономики до ништяков


Разделённая на две части


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

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



Правильное расположение клавиатуры убрало неприятные ощущения в суставах, которые были после обычных клавиатур.

С особым выравниванием кнопок


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



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

Высокая


Неожиданностью оказалась высота клавиатуры — 3 сантиметра. Это чудовищно много для комфортной работы. С высотой можно бороться тремя путями:

Уменьшить сам корпус. Убрать дно и приклеить коврик от мышки к плате (!), либо просто уменьшить расстояние, поставив новые распорки. Сам корпус может быть не акриловым в 3мм, а металлическим, получится ещё тоньше. Без корпуса высота уменьшается на треть.



Заменить переключатели на низкопрофильные, купить к ним низкие кнопки. Kailh chock поддерживаются, заказал, жду. С новыми клавишами и без корпуса высота уменьшится вдвое. Это уже почти как Apple Magic Keyboard.

Поднять руки. Я купил пару подставок для кистей, пока работаю так. Немного надоедает поправлять их.



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



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

Готовая к наклонам


Для клавиатуры можно заказать верхнюю, нижнюю и боковую части корпуса. Если заказать tinted-боковину, можно будет добавить ножки для наклона.



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



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

С кастомизированными кнопками


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



Или быть проще — совсем без надписей и дополнительных кнопок.



Самая важная характеристика кнопки — это её профиль. Их много разных.


Проще всего на ортолинейные клавиатуру найти кейкапы плоского DSA-профиля.



DSA мне не очень понравился, слишком одинаковые клавиши. Кнопки с наклоном интереснее, например, OEM-профиль с Алиэкспресс.



Для ортолинейных клавиатур выбор раскладок ограничен, потому что нужен Shift, Control и Enter размером в одну кнопку, а много где их нет в комплекте. В некоторых наборах можно взять буквенные кнопки от основного набора, а остальные докупить отдельно. Цена поднимается существенно, обычно выше $100 только за клавиши. Например, мне понравился GMK Nautilus, но нужный набор будет стоить $190. Это столько же, сколько стоит клавиатура сейчас.



Размером 60% от привычной


У клавиатуры меньше клавиш, нет ряда F1-F12, но ряд цифр остался, а значит не нужно сразу ломать все привычки. Иногда удобней нажать отдельную клавишу, чем уходить на другой слой, где цифры под пальцами. Если бы их не было, то шорткат скриншота на Mac стал бы ещё сложнее: вместо сmd + shift + 3 надо нажать сmd + shift + Fn + e.

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

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

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

Кнопки под большим пальцем можно заменить, варианта три.

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

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

  3. А можно вместо верхней кнопки поставить крутилку. Об этом отдельно.


Крутилки


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

  • скролить страницу (имитировать колесико мыши);
  • двигать курсор;
  • менять громкость.

Я выбрал движение курсора, на второй слой добавил громкость. Самым весёлым оказалось крутить Youtube, ведь курсоры его проматывают.

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

Сначала я добавил крутилки на обе стороны, но потом оставил только на правой, для левой не нашлось применения.

Раскладка


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



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

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

Сначала кажется, что невозможно запомнить. На самом деле всё делится на этапы:

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

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

Подписи для кнопок


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

Скобки и русский язык


Для программирования я поставил скобки вдоль центра. Удобно, но вместе с ними переехали и русские буквы Х и Ъ. Набирать их со второго слоя очень медленно.



В прошивке можно сделать так, чтобы короткое нажатие на левый shift набирало [, а на правый ], так нашлось место для Х и Ъ. Появилась новая проблема: чтобы набрать заглавную Х, надо нажать правый shift, а потом нажать левый. Для Ъ наоборот, но это приходится делать нечасто. Также можно набирать { и }.



Пользоваться правым shift я не привык, 90% опрошенных тоже. Пришлось попробовать и мне понравилось! Ломает голову, но разгружает руки.

Софт — QMK


В клавиатуре крутится софт QMK — quantum mechanical keyboard. Опенсорс, широко поддерживается, красота. Настраивать клавиатуру можно через конструктор на сайте или перепрошивать через терминал.

Конфигуратор на сайте


Сделать раскладку можно на сайте-конфигураторе config.qmk.fm.

Работает очень просто: перетаскиваете кнопки снизу наверх, жмёте скомпилировать (Compile), скачиваете (Firmware).



Через программу QMK Toolbox обновляете прошивку: выбираете файл, жмёте flash, нажимаете кнопку сброса на клавиатуре. Готово. У клавиатуры Iris кнопки сброса есть снизу платы, но можно повесить и на обычную кнопку в каком-нибудь слое.


Настроить крутилку на сайте не получится, только программировать. Об этом подробней.

Сборка на компе


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

Для установки QMK надо выполнить 4 команды
Установить brew:
brew install qmk/qmk/qmk

Запустить настройку:
qmk setup

Дать название вашей раскладке:
qmk config user.keyboard=clueboard/66/rev4
qmk config user.keymap=<github_username>


После установки у вас появится файл с вашей раскладкой.



Список клавиш можно найти на сайте QMK.

Если что-то поменяли, то достаточно выполнить:

qmk compile // скомпилирует вашу раскладку
qmk flash	// загрузит раскладку в клавиатуру 

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

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

void encoder_update_user(uint8_t index, bool clockwise) {
    if (index == 1) { // Right encoder
        if (clockwise) {
            tap_code(KC_VOLU);
        } else {
            tap_code(KC_VOLD);
        }
    }
}

Можно усложнить действия, добавив слои
void encoder_update_user(uint8_t index, bool clockwise) {
    if (index == 1) { // Right encoder
        if (layer_state_cmp(layer_state, _LOWER)) {
            if (clockwise) { // Стрелки вверх-вниз
                tap_code(KC_DOWN);
            } else {
                tap_code(KC_UP);
            }
        } else if (layer_state_cmp(layer_state, _RAISE)) {
            if (clockwise) { // Громкость
                tap_code(KC_VOLU);
            } else {
                tap_code(KC_VOLD);
            }
        } else {
            if (clockwise) { // Стрелки влево-вправо
                tap_code(KC_RGHT);
            } else {
                tap_code(KC_LEFT);
            }
        }
    }
}


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


В QMK много необычных возможностей. Три важных мы уже разобрали: слои, поддержка сплит клавиатур и rotary encoder (это так крутилки называются). Но внутри много интересного. Расскажу про парочку необычных примеров, что я использовал.

Space cadet shift


В обычной клавиатуре shift или alt работают только на зажатие. В QMK им можно добавить действие и на нажатие. Например, левый shift будет писать открывающую [, а правый закрывающую ]. Ещё я так настроил аlt/enter.

Макросы


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

Пара примеров. Обновление прошивки двумя командами можно свести до одной клавиши: вводим qmk compile, ждём пару секунд пока выполнится, вводим qmk flash и программно жмём кнопку reset. Весь процесс свёлся до одной клавиши.

Хоба
SEND_STRING("qmk compile\n");
SEND_STRING(SS_DELAY(2000));
SEND_STRING("qmk flash\n");
reset_keyboard();


Многое в программировании можно свести до ввода таких команд. Например, скопировать название класса в буфер, а потом объявить переменную:

var  SomeClassMock: SomeClassInterfaceProtocol!

Код для этого
// write var ClassNameMock: ClassNameMock
SEND_STRING("var ");		 
SEND_STRING(SS_LGUI("v")); 	 // Past from buffer
SEND_STRING("Mock: ");		 
SEND_STRING(SS_LGUI("v")); 	 // Past from buffer
SEND_STRING("Mock");	


Не получится уменьшить первую букву переменной, но можно переместить до неё курсор (alt + влево два раза) и удалить (через del), останется только ввести букву самому.

Дописываем
SEND_STRING(SS_LALT(SS_TAP(X_LEFT)));
SEND_STRING(SS_LALT(SS_TAP(X_LEFT)));
SEND_STRING(SS_TAP(X_DEL));


Вся ручная работа ушла, осталось скопировать класс, запустить макрос, ввести первую маленькую букву. Целая строка свелась до пары клавиш.

Потом по такому же принципу можно инициализировать переменную:

someClassInterfaceMock = SomeClassInterface()

А затем и сгенерировать шаблон для мока в Spry:


сlass SomeClassInterfaceMock: SomeClassInterfaceProtocol: Spryify {
    enum ClassFunction: String, StringRepresentable {
        case empty
    }
    
    enum Function: String, StringRepresentable {
        case <#empty#>
    }
}

В итоге, написание мока для зависимости у меня выглядит вот так:


Скорее всего, это можно сделать и в какой-нибудь программе, например, Keyboard Maestro, но есть и вот такая альтернатива. Из плюсов: подключив клавиатуру к любому компьютеру, вам не придётся настраивать окружение, всё уже работает.

Применений макросам много, надо просто поискать паттерны в своей работе.
Есть и другие фишки, но я их ещё не пробовал: auto shift, combos, tap dance, leader key и кучу всего привязанного к железу.

Итог


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

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

Есть и сложности. К новой раскладке привыкать не очень сложно, а вот хоткеи могут значительно поменяться и стать сложнее. Я стал упрощать, как сами хоткеи (cmd + shift + G для запуска тестов в Xcode это глупость), так и поменял раскладку, чтобы было удобнее нажимать их. 60% клавиатуры — хороший компромисс для тех, кто не готов пожертвовать цифрами, как в 40% клавиатуре.

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

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

Не бойтесь пробовать и менять привычные инструменты!
Планы на будущее: уже заказал и хочу попробовать пару других клавиатур. Это Atreus, он недавно вышел с кикстартера, и скоро начнётся нормальная продажа, и 40% Jian с нормальной русской раскладкой, но на него надо успевать записываться, групбай почти закончился.

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