Русский
Русский
English
Статистика
Реклама

Keyboard

Ортолинейная сплит клавиатура это что такое? Обзор Iris Keyboard

06.08.2020 18:12:42 | Автор: admin
За сто с лишним лет клавиатуры сильно изменились внешне: стали лёгкими, тонкими, есть даже проекционные со сканером. Но рынок ничего не меняет в их раскладке (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мм, а металлическим, получится ещё тоньше. Без корпуса высота уменьшается на треть.



Заменить переключатели на низкопрофильные, купить к ним низкие кнопки. Khail 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: ClassNameMockSEND_STRING("var "); SEND_STRING(SS_LGUI("v"));  // Past from bufferSEND_STRING("Mock: "); SEND_STRING(SS_LGUI("v"));  // Past from bufferSEND_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 с нормальной русской раскладкой, но на него надо успевать записываться, групбай почти закончился.

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

Подробная инструкция по изготовлению сплит клавиатуры на основе ATmega32U4. Аналог Iris Jiran своими руками

15.08.2020 14:04:40 | Автор: admin

Моя самоделка


image
Перед изготовленияем своей клавиатуры я наметил следующие цели:
1. Максимально возможный тактильный комфорт.
2. Добиться того, чтобы совершенно не было необходимости смотреть на клавиатуру при работе, чтобы она никоим образом не отвлекала внимание на себя, чтобы даже смотреть на нее было бессмысленно. Именно поэтому на моих колпачках нет надписей.
3. Клавиатура это мой рабочий инструмент, сосредотачиваемся на ее функционале и удобстве. Внешний вид совершенно неважен. Кто не может жить без RGB подсветки и внешней броской красоты нам с вами не по пути, эта статья совсем про другое. В этой статье я вас научу как недорого и просто сделать себе удобный и функциональный инструмент для работы.
4. Удобство перевозки. Сделать компактное и удобное для переноски устройство.

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


Муки выбора раскладки


Итак, поехали. Мы хотим сделать сплит-клавиатуру, гуглим Iris keyboard, выглядит она примерно так:
image
Можно было бы такую и купить, но на ней отсутствуют кнопки Х и Ъ и переучиваться на новое их расположение у меня нет никакого желания. Так клавиатура неплоха, но нам она не подходит. Наш соотечественник придумал удобный вариант jian keyboard, смотрим:
image
Но и он не удобен, получился концепт, годный лишь для работы в текстовых редакторах. На мой взгляд, он тут перестарался, устранив верхний ряд цифровых клавиш. Есть доработанный вариант jiran keyboard:
image
За этой работать будет уже комфортнее, в отличие от предыдущей. Мне при работе в Word клавиши курсора, F1-F12, блок Delete, PgDown и т.д. вполне комфортно нажимать через Fn клавишу. Правой руке намного меньше приходится тянуться к мышке это огромнейший плюс, который начинаешь понимать, только прочувствовав его. На этой основе можно начинать разработку своего варианта. Первый мой прототип выглядел вот так:
image
Могу сразу сказать пять клавиш под большой палец это много. Палец достает с трудом до четвертой кнопки, а до пятой приходится тянуться. Это я тогда пожадничал. И, забегая вперед, скажу очень не хватало курсорных клавиш. На нынешней раскладке у меня под большими пальцами по 4 кнопки, расположенные по дуге. Мне удобно:
image
Переходим по ссылке: keyboard-layout-editor и в вкладке Presets выбираем Ergodox. Кнопки можно удалять, добавлять, поворачивать и двигать по своему усмотрению. Потренируйтесь, там нет ничего сложного.
image
Когда освоитесь, переходите по этой ссылке на мой проект: ErgoRU
Тут вам нужны координаты кнопок по оси Y, точнее разница вертикальных рядов друг относительно друга. Но есть возможно важный именно для вас нюанс у большинства мужчин безымянный палец длиннее указательного, а у женщин немного иначе.
Википедия: Пальцевый индекс
Какое это имеет значение? Возможно, вам придется подкорректировать расположение вертикальных рядов под свои индивидуальные особенности. Мне было проще, необходимости в корректировке не было:
image
Это может показаться вам малозначительным нюансом, но из таких вот маленьких деталей и складывается конструктор под названием Моя идеальная клавиатура.
После многочисленных корректировок у меня получилось вот так:
image
У вас далеко не сразу, но постепенно выработается свой собственный вариант удобной раскладки. Я просто уверен, что эргономика клавиатуры не может быть универсальной, когда пальцы и тип выполняемой работы за клавиатурой у всех сильно отличаются.
Возможно, я приведу пример не самый удачный, но он показателен. Пилотам Формулы1 сиденья и спинки к ним ставят изготовленные по их слепку тела, а не так называемые спортивные, выпускаемые на заводском конвейере. В самом деле, почему?
Почему я реализовал отдельным блоком клавиши курсора помимо тех, которые нажимаются через модификатор МО(2)? Я проектировал клавиатуру универсальной, на которой можно еще и поиграть. Попробуйте поиграть в X3 terran conflict/X3 albion prelude с курсорами через модификатор и вы взвоете. Переназначить кнопки можно, я даже делал четвертый слой именно под игру, но получалось не очень удобно. В этой игре практически вся клавиатура задействована, кто играл тот знает.
Мы можем узнать получившееся количество кнопок:
image

Приступаем к покупкам


И вот теперь, зная количество нужных кнопок, пришло время выбирать и покупать комплектующие. Механические кнопки различаются между собой требуемой силой нажатия, громкостью и тактильными ощущениями. Вот статья про них:
МЕХАНИЧЕСКИЕ ПЕРЕКЛЮЧАТЕЛИ
А после прочтения я настоятельно рекомендую вам прошвырнуться по магазинам, где продаются клавиатуры с механическими переключателями и собственными пальцами ощутить разницу между синими, коричневыми и остальными свитчами. Меня полностью устроили коричневые Gateron, их я и купил. Но только не у наших барыг с наценкой 300%-500% и еще выше. На Алиэкспрессе есть все, нужно лишь хорошо постараться поискать.
Я не призываю покупать нужные нам комплектующие там, где брал я вы можете брать, где вам удобнее. Но ссылками я поделюсь.
Переключатели Gateron на Али, которые купил я:
Gateron
Существуют следующие типы колпачков для кнопок:
Все, что нужно знать при выборе профиля кейкапов
image
Я пробовал разные, но остановился на самых низких DSA, на них мне удобнее всего! Помните, у вас может и скорее всего будет иначе. Помните? Идем в магазин и пробуем, пробуем. Это важный кирпичик удобства вашей клавиатуры. Брал тут, качество хорошее:
PBT DSA
Следующее, что нам нужно, ATmega32U4 5Вольт 16 МГц. Их много модификаций есть:
Atmega32U4
Мне же достаточно будет этого с головой:
Pro Micro ATmega32U4 5V 16 МГц
Диоды. Я не заморачивался с беготней по радиомагазинам, заказал тоже на Али:
100 шт 1N4148 DO-35
Далее идут недорогие и необязательные, но очень важные нюансы нашей будущей клавиатуры.
Смазка для переключателей она уменьшает шумность и улучшает тактильные ощущения при печати в лучшую сторону. Коротко о том, как смазывать свитчи:

Я по наводке приобрел эту смазку, жалеть не пришлось:
Смазка
Резиновые колечки для колпачков.
image
Нужны для уменьшения шума от печати, брал белые 9х4х2.5, нареканий нет:
Резиновые колечки
Кабель Micro USB для подключения платы к компьютеру. Так-то у меня их полно, но нужен был именно угловой, с ним намного удобнее (смотри фото в начале статьи):
Кабель Micro USB

Клавиатуру я сделал разделенной на два блока. Эти блоки нужно было соединить проводами. Поначалу я соединил блоки шлейфом от компьютерного СD привода.
image
Временное решение, для постоянного использования не советую. Лучше сделать съемный соединительный кабель, проще будет в дальнейшем. Хорошо подошел кабель HDMI, у него 19 жил при нужных 12 (5 строк + 7 столбцов). Резать кабель мне очень не хотелось, и я приобрел разъемы для него:
разъем HDMI 19 Pin
Вопрос: можно ли использовать длинный кабель HDMI? Можно, и даже нужно! Просто посмотрите на фото:
image
Клавиатура не сползает с подлокотников. Запястья рук лежат на подставках под ладони. Каждая подставка двумя магнитами держится за свой блок клавиатуры. Провод HDMI ногам не мешает совершенно. Ничего никуда не уползает, получилось просто круто.
Вам, возможно, пригодятся такие переходники:
HDMI кабель-переходник 270 180 90 градусов
image
Вы можете выбрать любой другой способ соединения, какой вам больше подойдет. Смотрите, как выкрутился один из пользователей Реддита, только учтите, что в этом кабеле всего 10 жил:
image
Это я давненько сфоткал. Тот пост уже вряд ли существует, так что только в таком качестве.
Сложим мои расходы, получилось ~38,5$:
image

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

Делаем верхнюю панель и корпус клавиатуры


Возвращаемся к нашему онлайн-конструктору. Надо ввести данные, какой тип свитча мы используем:
image
И следующая картинка:
image
Сейчас нам понадобится вот эта вкладка:
image
Комбинацией Ctrl+A выделяем весь текст и копируем его в буфер обмена Ctrl+C. Открываем ссылку:
Plate & Case Builder
image
И получаем вот такое:
image
Не повезло, изображение расползлось. Не беда, поправим в Photoshop:
image
Отправляем печатать это на принтер. Измеряем линейкой размеры квадратов на бумаге везде должны быть 14 мм. А расстояние между квадратными отверстиями должно быть не менее 5 мм, иначе колпачки будут задевать друг друга. У меня сохранились распечатки промежуточных результатов:
image
Это мы только что распечатали трафарет, с помощью которого будет удобно делать разметку для отверстий под клавиши. Далее вы должны выбрать материал верхней панели вашей будущей клавиатуры: алюминий, стеклотекстолит, оргстекло, акрил, поликарбонат Материалов очень много всяких разных, я же выбрал оргстекло. Используйте материал толщиной не более 2 мм, иначе кнопки не будут держаться на пластине защелки не смогут зацепиться.
image
Только вот прежде, чем приступать работать с вашей будущей панелью, очень вам советую примерить кнопки на куске картона. Так вы получите примерное представление об удобстве расположения кнопок вашей будущей клавиатуры.
image
Когда вы наконец-то решите, что выбрали вариант, который полностью вас устраивает, можно будет приступать к изготовлению верхней пластины клавиатуры. У меня это было вот так:
image
image
Разметку на оргстекло можно наносить как процарапывая чертилкой, так и просто рисуя ручкой ее хватит. Далее я плавил отверстия паяльником, а доводил их до размера напильником. Можно поработать и дремелем. Не забывайте, посылкам ползти из Китая месяц. Торопиться некуда, поэтому я и не носился в поисках лазерной резки.
image

Это верхние пластины первого варианта, в которые вставляются кнопки. Нижние пластины точно такие же по размерам, только без отверстий под свитчи. Осталось только придумать способ крепления верхних пластин к нижним. Я реализовал крепление на стойках, как материнские платы в компьютерных корпусах. В нижних пластинах просверлил отверстия такого диаметра, чтобы в отверстия помещалась гайка М3.
image
И вклеиваем в эти отверстия наши гайки с помощью суперклея.
image
В гайки вкручиваем стойки.
image
Стойки я выбрал по высоте такие, чтобы впритык хватало высоты для свисающих с верхней пластины свитчей.
image
Чем меньше получится высота нашей клавиатуры, тем лучше для наших рук! Высота корпуса моей клавиатуры с резиновыми ножками менее 12мм:
image
Полностью высота составляет 25 мм:
image
В дальнейшем я планирую найти где-нибудь резину/резиновое уплотнение квадратного сечения и приклеить его по периметру нижней пластины, сделав таким образом стенку корпуса клавиатуры. Просто не успел еще.
Вариант 2 до обтягивания пленкой:
image
Далее совсем необязательная вещь я обтянул пленкой верхнюю панель клавиатуры. Но в паре мелочей она все же помогла: бликов от настольной лампы больше нет и теперь не видно светящий красным светодиод на работающей ардуине.
image
Объяснять, как клеить пленку не вижу необходимости. Все что требовалось от этой пленки не отвлекать на себя внимание при работе. И эту задачу она отлично выполняет. Куплена была на Али года четыре назад.
image
Материал, который пошел на подставки под ладони. Как называется, не имею ни малейшего понятия. Вспененное что-то там. Обернул скотчем, а сверху наклеил пленку.
image
Под скотч в двух местах подложил небольшие металлические шайбы, а напротив них к корпусу клавиатуры приклеил выломанные из древнего жесткого диска неодимовые магниты.
image
Теперь подставки под ладони никуда не денутся от клавиатуры магниты очень хорошо держат. И при необходимости убрать подставки совсем не сложно притяжение магнитов перебороть вы точно сможете. Очень советую вам также с магнитами сделать, не пожалеете.

Переходим к изготовлению прошивки


Возвращаемся к онлайн-редактору, нам нужна вот эта вкладка:
image
Комбинацией Ctrl+A выделяем весь текст и копируем его в буфер обмена Ctrl+C. С помощью скопированного текста мы можем увидеть, как примерно будет выглядеть наша будущая клавиатура. Переходим по ссылке:
Keyboard Layout 3D Viewer
image
Можно повращать камеру мышкой и поиграться с зумом. В общем, разберетесь.
Следующий этап, открываем в новой вкладке браузера ссылку онлайн-конструктора нашей прошивки для ардуины:
Keyboard Firmware Builder
Вставляем скопированное, как на скриншоте:
image
Автоматически получится такая корявая и непригодная для дальнейшего использования разводка электрических проводов.
image
Надо помочь алгоритму сработать правильно, сам он справиться не в состоянии. Для этого возвращаемся в онлайн-конструктор и приводим нашу клавиатуру к виду:
image
Заново открываем вкладку Keyboard Firmware Builder и вставляем скопированное:
image
Результат отличный:
image
То, что нужно. Вы должны добиться подобной разводки и у себя. Далее переходим к вкладке PINS, в ней мы укажем, какими контактами ардуины будем пользоваться. Смотрите внимательно, если вы купили такую же плату, как у меня, то у вас в наличии будут только такие контакты как на рисунке ниже:
image
Исходя из того, что мы имеем, выставляем в столбцах ROWS и COLUMNS пины, которые есть в наличии. Ниже на скриншоте пример расстановки:
image
Необязательно расставлять пины в том же порядке, как на картинке выше. Делайте в порядке, удобном вам. Главное, не ошибитесь и не укажите пины, которые отсутствуют на плате ардуины.
Переходим к вкладке KEYMAP, в ней мы зададим поведение кнопок:
image
Частично конструктор присвоил значения кнопкам за нас, доделаем остальное. Тут очень интересно, можно столько всего напридумывать! Начнем с элементарного:
image
И следом жмем:
image
И кнопке присваивается значение 3. Далее аналогично присваиваем значения остальным кнопкам. Вот пример, как сделать правую или левую клавиши Windows:
image

Это все у нас была основная раскладка (слой ноль) по умолчанию, давайте теперь сделаем второй слой.
image
Как пользоваться этой МО(1)? Она работает аналогично клавише SHIFT. Только клавиатурой выдаваться будет то, что мы запрограммируем на слое 1. Начинаем наполнять слой1:
image
Сделаем клавишу DELETE:
image
По умолчанию эта кнопка работает, как BACKSPACE. Но теперь, если мы ее нажмем, удерживая нажатой МО(1), то кнопка будет работать как DELETE. Вот так все просто. Аналогично присваиваем значения остальным кнопкам. Причем необязательно всем. Если мы не присвоили кнопке значение на слое 1, то она будет давать значение слоя ноль (который по умолчанию). Давайте сделаем мультимедийные клавиши управления громкостью.
image
VOLD, VOLU это регулировка громкости. Управление плеером, например Foobar2000: PLAY, STOP, PREV, NEXT. И это все глобальные клавиши, которые будут управлять плеером даже если вы при этом будете работать в WORD либо играть в какую-то игру.
Далее будет волшебство, недоступное обычным клавиатурам. Вспомните, как часто вам приходилось убирать руку с клавиатуры к мышке, чтобы прокрутить (проскроллить) колесиком мышки документ в WORD или страничку в браузере. Часто, наверное? Открываем ссылку:
Mouse Keys
Сейчас мы научим клавиатуру вести себя как компьютерная мышь.
image
image
Смотрите, что я могу сделать одной левой рукой! Я могу двигать курсором мыши (если честно, этим почти не пользуюсь), могу нажимать левую и правую кнопки мыши (периодически клацаю правую), кручу колесо мыши (использую все время, даже привыкать не пришлось!) и управляю плеером Foobar2000 и громкостью. Ладонь при этом ни на миллиметр не смещается в сторону.
image
С этим, я думаю, всем должно быть все понятно. А давайте сделаем, чтобы комбинация Ctrl+Alt+Del нажималась одной кнопкой! Не то чтобы очень надо, но знать, как делается полезно.
image
Следующая операция:
image
Снова модификатор:
image
Следующая операция:
image
Наконец-то уже сама кнопка:
image
Должно получиться вот так:
image
И подобных комбинаций можно придумать множество.

Давайте сделаем слой МО(2):
image
В слое МО(2) я у себя расставил клавиши F1 F12, клавиши курсора и PgDn/ PgUp/ Home/ End. Insert, как и Caps Lock, я счел ненужной клавишей и не стал вводить ее у себя.
image
Таким образом, я могу с помощью этого слоя, вообще никак не перемещая правую ладонь, пользоваться клавишами курсора и блоком PgDn/ PgUp/ Home/ End. Уж поверьте, это удобно! После этого смотреть на обычные стандартные клавиатуры даже не хочется.
Все мы играем в компьютерные игры, одна из моих любимых NFS Underground. Давайте создадим слой кнопок, предназначенный только для этой игры! Естественно, удерживать во время игры все время нажатой кнопку МО(3), чтобы рулить клавишами курсора будет очень неудобно. Вместо него используем модификатор TG(3) он аналогичен принципу работы клавиши Caps Lock. Нажали клавишу TG(3) и отпустили клавиатура остается в режиме работы слоя TG(3). Нажали и отпустили эту клавишу еще раз клавиатура вернется в режим работы слоя по умолчанию. Вот так все просто. Для примера давайте представим себе, что игра не позволяет изменять клавиши, а нам хочется настроить под себя поудобнее.
image
Я сделал себе вот так:
image
Для удобства я замылил на скриншоте неиспользуемые кнопки. На обеих половинках клавиатуры сделал клавиши курсора на случай если рука затечет и захочется дать ей отдохнуть. Не забыл в этом слое реализовать клавишу TG(3) чтобы можно было вернуться из этого слоя в слой по умолчанию. Сделал также в слое 3 клавишу МО(1) для управления мультимедийными кнопками. Ну а остальное в принципе и так понятно. Очевидно, с таким слоем кнопок играть точно будет комфортнее.
Идем далее. Всего слоев можно сделать 15 штук. Мне сложно представить, как их можно все задействовать. И еще тяжелее представить, как их всех запомнить. Я сейчас использую только 4 слоя и пока их достаточно.
Я вам рассказал лишь про малую часть способов кастомизации прошивки. Но того, что рассказал уже достаточно для вас, чтобы начали эффективнее работать с клавиатурой. Хотите нафаршировать свою клавиатуру больше смотрите там:
Коды клавиш
Как сохранить свои наработки, чтобы в следующий раз не начинать все заново:
image
И вот теперь мы можем забрать готовую прошивку с этой вкладки:
image
Теперь нам нужно залить прошивку в нашу ардуину. Проще некуда. Переходим по ссылке:
QMK Toolbox
image
А теперь качаем последнюю версию программы:
image
Инсталлируем программу, на всякий случай перезагружаем компьютер и с потрясением смотрим как вовремя нашей Windows10 приспичило обновиться.
Сейчас вам нужно будет взять в руки паяльник и припаять двумя проводками кнопку к ардуине к контактам GND и RESET.
image
Подключаем кабелем micro usb к компьютеру нашу плату на ней должен загореться светодиод. Запускаем программу QMK Toolbox. Выбираем файл прошивки *.hex, который мы недавно скачали.
image
Жмем на кнопку, которую мы перед этим подпаяли к ардуине, и ждем появления желтой строки на темном фоне программы. Как только она появилась, не тормозим и быстренько нажимаем на кнопку FLASH:
image
Если вы все же протормозили и появилась вторая желтая строка кнопка FLASH не начнет прошивку платы. Начинайте заново: нажимаем припаянную кнопку и т.д.

Переходим к пайке деталей


Пришло время рассказать вам, как правильно спаять электронные компоненты.
Для начала нужно распаять диоды на кнопках. Вам необходимо будет выучить маркировку диодов. Тут все просто: сторона диода, промаркированная нарисованным черным кольцом катод, другая анод. Что это такое и зачем оно нужно вы должны были выучить в школе.
image
Смотрите, что из себя представляет левая часть клавиатуры:
image
А теперь посмотрите на фото ниже:
image
Верхний ряд клавиш ESCAPE,1,2,3,4,5 мы соединили диодами. Диоды мы спаяли друг с дружкой катодами, а сами диоды припаяли к контактам кнопок анодами. Точно так же мы поступаем со строкой кнопок TAB,Q,W,E,R,T. Это второй ряд кнопок сверху. Диоды спаиваем между собой катодами, в общем, точно так же, как и верхний ряд кнопок. Остальные ряды спаиваем диодами точно так же. Следом распаиваем проволочки как на фото ниже.
image
Я специально паял разноцветными проводками от кабеля витой пары, чтобы можно было легко разобраться. Внимательно посмотрите на правый край фото. Я соединил синей проволокой свободные контакты ВЕРТИКАЛЬНОГО РЯДА клавиш: ESCAPE,TAB,ALT,CTRL,TG(3). С остальными вертикальными рядами поступаем совершенно точно также.
Когда вы все это спаяете, можно будет переходить к подключению ардуины. Вспоминаем эту картинку:
image
И сравниваем ее с этой картинкой:
image

Проволоку, соединяющую вертикальный ряд клавиш ESCAPE,TAB,ALT,CTRL,TG(3) соединяем проводом к контакту ардуины С6. Проволоку, соединяющую вертикальный ряд клавиш 1,Q,A,Z, TG(4) соединяем проводом к контакту ардуины D7. Проволоку, соединяющую вертикальный ряд клавиш 2,W,S,X,LShift соединяем проводом к контакту ардуины E6. Далее действуем по аналогии. Переходим к строкам. Спаянные между собой катоды диодов строки ESCAPE,1,2,3,4,5 подключаем к контакту ардуины D3. Спаянные между собой катоды диодов строки TAB,Q,W,E,R,T подключаем к контакту ардуины D2. Катоды диодов строки Alt,A,S,D,F,G подключаем к контакту D1. И далее аналогично. Правая половина клавиатуры готовится аналогично левой.
image
Если б не клавиши курсора, фото ниже не было бы таким запутанным:
image
Но мы то уже знаем, что на самом деле все просто строки кнопок соединяем диодами, а столбцы кнопок проволочками по схеме перед этим фото. И как подключить этот блок клавиатуры, вы тоже уже должны понимать сами.
Спаянные между собой катоды диодов строки UP,6,7,8,9,0,] подключаем к контакту ардуины D3. Спаянные между собой катоды диодов строки DOWN,Y,U,I,O,P,[ подключаем к контакту ардуины D2. И так далее. Проволоку, соединяющую вертикальный ряд клавиш UP,DOWN,LEFT,RIGHT соединяем проводом к контакту ардуины B2. Проволоку, соединяющую вертикальный ряд клавиш 6,Y,H,N, МО(1) соединяем проводом к контакту ардуины B3. И снова далее по аналогии.
Когда соберете конструкцию, запустите на компьютере Блокнот и проверьте как работают кнопки. У меня ни с первого, ни со второго раза нормально работать клавиатура не хотела я перепутывал провода, подпаивая их не на свои контакты ардуины. Было также, что я по неаккуратности коротил их между собой. Исправить несложно берете мультиметр и прозваниваете провода, какой куда ведет. Просто откройте эти картинки на экране монитора перед собой и проверяйте куда на самом деле ведут провода.
image

Вот и все. Основываясь на этой статье, вы без проблем сможете изготовить для себя клавиатуру, заточенную под вас и удобную лично для вас. Такую клавиатуру, которую вы не сможете купить ни за какие деньги нигде и никогда.
P.S. Если вы решитесь сделать свою клавиатуру, не стесняйтесь делитесь своими наработками! Мне всегда очень интересно посмотреть на новые идеи. Возможно, благодаря вам я смогу добавить к своей клавиатуре что-то новое и классное.
Подробнее..

Из песочницы Как жить без стрелок или не так страшен сплит

03.11.2020 20:15:07 | Автор: admin

"Как жить без стрелок" или не так страшен сплит...


КДПВ
Источник


Введение


В последнее время на Хабре появляется всё больше статей о кастомных клавиатурах вообще и об эргономичных сплит клавиатурах (эргосплит) в частности. И это хорошо, ведь, глядя на ассортимент клавиатур в магазинах электроники, можно подумать, что альтернативы стандартным клавиатурам нет, а это далеко не так. Однако
Не так давно вышла статья Эргономичная раздельная клавиатура. Iris. И знаете, какой комментарий набрал наибольшее количество голосов?


Что вы там этими клавиатурами набираете? Как жить без стрелок, PgUp/PgDn и прочего? А для почти всех IDE нужны F-клавиши.
Переключаться между десятком режимов, забивая ими голову, и скроллить через HJKL?
Каждый раз, когда вижу такие изделия, впечатление что это для того, чтобы было "как в кино у хакеров".
Эргономика должна быть не только для пальцев, но и для мозга.

Неужели с эргосплитами всё так плохо?


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



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


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


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


Примечание: данная статья основана в первую очередь на моем опыте работы с клавиатурой Jorne (спасибо, Joric), которая является адаптацией популярной Corne под раскладку Jian, и все нижеописанное касается в первую очередь именно её и подобных клавиатур.
Сейчас это направление кастомные клавиатуры, активно развивается и если вам интересно какие ещё бывают клавиатуры, взгляните, например, сюда.

Эргономика клавиш


Итак, преимущества эргосплит клавиатур с точки зрения эргономики расположения клавиш:


  1. Меньше клавиш. Меньше клавиш легче запомнить их расположение и меньше размер самой клавиатуры, то есть меньше нужно двигать руки.
  2. Разделение на две половинки. У каждого человека своя длина рук и ширина плеч. Кому-то удобнее чтобы руки были поближе друг к другу, кому-то нравится держать руки параллельно.
    Клавиатуру, состоящую из двух половинок, можно поставить так как удобно именно вам а не так как сделал это производитель. Кроме того, сплит клавиатура обычно занимает гораздо меньше места и между половинок можно расположить что-то ещё: трекбол, мышку...


    CoffeeИсточник


    Часто можно услышать, что сплит это неудобно, потому что:


    • Неудобно набирать одной рукой. Действительно, для тех, кто много работает с мышью и нажимает клавиши в основном одной рукой, лучше рассмотреть вариант компактной клавиатуры типа Planck EZ или Preonic, но если такая необходимость возникает редко, можно просто сдвинуть половинки.
    • Неудобно работать с клавиатурой на коленках. Вы действительно работаете на коленках? Ну ОК. Если моноблочность действительна важна, можно рассмотреть такие клавиатуры как Aterus или Jian. Jian можно собрать как сплит, так и как моноблок.

  3. Зеркальная симметрия. Большинство сплит клавиатур зеркально симметричны. Многие даже используют одинаковые печатные платы для правой и левой половинок: паяем свитчи с одной стороны правая половинка, с другой левая.
    Взгляните на свои руки они зеркально симметричны. Наш мозг хорошо понимает зеркальную симметрию и научиться работать на симметричной клавиатуре будет значительно проще чем на несимметричной.
  4. Ортолинейность. На Хабре уже было несколько статей о том, почему на клавиатурах сдвинуты ряды. Если коротко это было ограничение первых пишущих машинок. То есть этот сдвиг не только не несет никакого смысла, он затрудняет работу с клавиатурой. Вам нужно запоминать не только в каком ряду находится нужная клавиша, но и на сколько этот ряд сдвинут относительно "домашнего" ряда. При этом этот сдвиг несимметричен, то есть для правой и левой рук он разный. (Например, сравните расстояние между F и T и между J и Y. На ортолинейных клавиатурах это расстояние одинаковое)
    В то же время, если клавиши расположены ортолинейно, то есть выровнены по вертикали, попадать по клавишам становится гораздо легче.
  5. Вертикальный сдвиг. Согните свои пальцы под 90 градусов, как рекомендуют в пособиях по слепому набору и поставьте руку на стол (не на клавиатуру). Как расположились ваши пальцы? На одной линии или все же со сдвигом по вертикали? Вертикальный сдвиг учитывает разную длину наших пальцев.
  6. Thumb cluster. Или клавиши под большой палец. Большой палец у нас самый сильный. На стандартной же клавиатуре для больших пальцев выделена аж одна клавиша, причем одна на двоих. На самые же слабые мизинцы приходится больше всего клавиш, особенно на правый.
    На сплитах обычно выделены кластеры клавиш под большие пальцы и это позволяет снизить нагрузку на мизинцы. Есть даже клавиатуры, где на каждый мизинец приходится всего лишь три или даже две клавиши, но за это приходится платить мене удобной раскладкой.

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


Таким образом попадать по нужной клавише не глядя и имея перед глазами или в памяти раскладку не составляет никакого труда. Именно поэтому эргосплиты гораздо чаще можно увидеть с клавишами без надписей нет необходимости. Даже если раскладка еще не выучена, ее можно (и нужно, в процессе обучения) распечатать и повесть рядом с монитором. И работать, не глядя на клавиатуру. А когда обнаружите, что уже не помните, когда последний раз подглядывали в распечатку от нее можно избавиться. И произойдет это гораздо раньше, чем вы думаете.


Эргономика раскладки


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


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


Однако не все так плохо. Я хочу поделиться раскладкой, которая, с моей точки зрения, как раз и отвечает требованиям "эргономики для мозга".
Автором данной раскладки является автор клавиатуры Jian KgOfHedgehogs. Я внес некоторые модификации в раскладку, сделав ее более более удобной для себя.
Это обычная практика в мире кастомных клавиатур начать с какой-то готовой раскладки и затем оптимизировать ее под себя.
С оригинальной раскладкой можно ознакомиться по ссылке. Я же продолжу на примере своей раскладки.


Сначала опишу основные плюсы данной раскладки.


  1. Все клавиши стандартной клавиатуры. Довольно часто кастомные раскладки страдают тем, что на них не размещают "ненужные" клавиши. Но эти "ненужные" клавиши могут оказаться очень нужными в определенной программе. Если в раскладке присутствуют все клавиши стандартной раскладки то можно быть уверенным что ситуации "у меня нет нужной клавиши" не возникнет.
  2. Дублирование модификаторов с двух сторон. На первый взгляд может показаться что это разбазаривание ценных ресурсов клавиш и многие кастомные раскладки имеют лишь по одному модификатору, но в таком случае легко попасть в ситуацию, когда невозможно нажать какую-то комбинацию удобно и нужно выполнять кама-сутру йогу пальцами.
    Кроме того, модификаторы не просто дублируются, на левой половинке расположены левые Alt, Ctrl, Shift и Win, на правой, соответственно, правые. Иногда это имеет значение, например, я переключаю раскладки с помощью клавиш Ctrl: левый Ctrl английская раскладка, правый русская.
  3. Зеркальная симметрия модификаторов. Модификаторы на обеих половинках зеркально симметричны что значительно облегчает как запоминание раскладки так и использование клавиатурных комбинаций в дальнейшем.
    Кстати, на стандартных клавиатурах модификаторы также зеркально расположены с двух сторон, но расположение их несимметрично.
  4. Модификаторы не меняют своего положения на разных слоях. Это может звучать странно для пользователей стандартных клавиатур, но на кастомных клавиатурах можно встретить раскладки, на которых модификаторы расположены только на одном слое или меняют свое положение от слоя к слою.
  5. Система в расположение клавиш. Если есть понятная логика в расположении клавиш, их легче и быстрее запомнить.

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


Основной слой



Светлые клавиши точно такие же как на стандартной клавиатуре. Более темные специальные клавиши. Как вы видите, каждая из них заменяет две клавиши, кроме левой клавиши Win. Здесь нам на помощь приходит такая полезная опция QMK как Tap-Hold. При кратком нажатии клавиша работает как одна клавиша, при нажатии и удержании как другая. Например, клавиша при кратком нажатии сработает как клавиша Tab а при удержании как Left Ctrl.


Может возникнуть вопрос: а что, если нужно использовать автоповтор, который как раз и активируется удержанием клавиши, например нужно ввести много пробелов? У нас ведь при удержании клавиши Space она превращается в Shift. Но это решается очень просто: нужно лишь быстро нажать клавишу два раза, а уже после этого задержать её в нажатом положении. В этом случае активируется автоповтор как при обычном удержании клавиши. То есть мы, практически ничего не теряя, экономим по одной клавише на каждую сдвоенную.


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


Слой Raise



На этом слое слева расположены клавиши навигации и служебные клавиши, справа нампад (в оригинальной раскладке наоборот). Курсорные клавиши, а так же Home, End, Page Up, Page Down расположены так, что руку не нужно никуда перемещать достаточно зажать клавишу Enter/Raise с любой стороны как можно двигать курсор или листать страницы.


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


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


Слой Lower



Слой Lower содержит функциональные клавиши, символы и цифровой ряд. Как видите, все просто и логично. Нужно лишь пояснить, как получаются символы на домашнем ряду. QMK позволяет посылать компьютеру сразу комбинации клавиш, то есть когда вы нажимаете Lower + A QMK посылает комбинацию Shift + 1. Вообще говоря, возможности QMK довольно велики, но это тема для отдельной статьи.


Цифровой ряд здесь скорее не для ввода цифр, для этого удобнее использовать нампад на слое Raise, а для клавиатурных сокращений типа Win + 1 или Ctrl + 1.


Как же пользоваться


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


  • Набор текста: здесь отличия только в физическом расположении клавиш, но поскольку, как уже писалось выше, они расположены гораздо удобнее чем на традиционной клавиатуре, то после небольшого периода привыкания, если вы уже владеете слепым набором, или периода обучения, который будет меньше, чем на традиционной клавиатуре вы сможете спокойно и удобно набирать текст, комфортно расположив руки.
  • Верхний регистр: здесь, также как и на стандартной клавиатуре, нужно зажать клавишу Shift с одним маленьким большим отличием клавиша Shift находится там же, где и клавиша Space, то есть прямо под большими пальцами. Не нужно растягивать мизинцы и куда-либо тянуться.
  • Навигация: зажимаем большим пальцем клавишу Enter/Raise и вуаля клавиши навигации прямо под рукой, никуда переносить руку не нужно. Причём можно использовать как большой палец правой, так и левой руки, как кому удобнее. Я уже привык использовать для навигации одну руку. Кроме того, на стандартной клавиатуре блоки стрелок и Home, End, PageUp, PageDown находятся в разных местах, то есть при активной навигации руку нужно перемещать ещё и между этими блоками клавиш.
    Да, это другой паттерн использования зажать клавишу вместо перемещения руки, но освоить его не так уж сложно, зато когда вы его освоите, вы поймёте что клавиши навигации прямо под рукой это супер удобно.
  • Ввод цифр: поскольку нампад находится на том же слое что и клавиши навигации делаем ровно то же самое зажимаем клавишу Enter/Raise большим пальцем и можем набирать цифры на нампаде. Нампад удобнее цифрового ряда не зря же его в своё время добавили, на эргономичной же клавиатуре он ещё и гораздо доступнее прямо под рукой. То есть ввод цифр, так же как и навигация, на эргосплите гораздо удобнее.
  • Ввод символов: здесь вообще сказка символы находятся прямо под вашими пальцами, на домашнем ряду, нужно лишь зажать клавишу BaskSpace/Lower или клавишу Del/Lower, смотря что удобнее и можно вводить символы. То есть, так же, как на стандартной клавиатуре, вам нужно зажать модификатор, там Shift здесь Lower, но на эргономичной клавиатуры вы нажимаете модификатор большим пальцем и он находится в одном шаге от стандартного положения больших пальцев (на клавишах Space/Shift) и остальные пальцы остаются на домашнем ряду не нужно тянуться к цифровому ряду. Расположение символов такое же как на стандартной клавиатуре, так что запомнить не составит труда.
  • И самое интересное клавиатурные комбинации: С одной стороны, если в клавиатурных комбинациях участвуют функциональные клавиши или цифры то нужно дополнительно нажимать ещё клавишу модификатора слоя. С другой стороны, за счёт более удобного расположения клавиш модификаторов и их зеркального дублирования, практически любая клавиатурная комбинация нажимается гораздо легче и удобнее чем на традиционной клавиатуре.
    • Ctrl + буква, Ctrl + Shift + буква : сдвигаем мизинец противоположной руки на одну клавишу в сторону и зажимаем, другой рукой нажимаем букву. Если нужно дополнительно зажать Shift просто зажимаем его большим пальцем той же руки что и Ctrl. Нажимаются такие комбинации легко, не глядя на клавиатуру и через время часто используемые кобинации нажимаются на автомате.

    • Ctrl + Alt + буква, Ctrl + Alt + Shift + буква : с одной стороны мизинец зажимает Ctrl с другой Alt. При необходимости большим пальцем зажимаем Shift. С какой стороны зажать Ctrl а с какой Alt это как будет удобнее, но и такие комбинации нажимаются гораздо проще чем на стандартной клавиатуре и также не глядя.

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




Если обобщить использование клавиатурных комбинаций, то на большие пальцы приходится два модификатора Shift и модификатор слоя, на мизинцы три модификатора Ctrl, Alt и Win, но я не знаю клавиатурной комбинации, где последние три модификаторы использовались бы вместе, максимум два из трех.


У меня нет опыта работы на Mac, поэтому я не могу сказать, насколько удобно будет пользоваться подробной клавиатурой там, но думаю, если клавишу Ctrl заменить на Command а Win на Ctrl, то будет также удобно.


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


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


Краткое резюме


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

Заключение


Концептуальных отличий вышеописанной клавиатуры (и большинства кастомных клавиатур) от стандартной два:


  1. Изменение физического расположения клавиш на более естественное с точки зрения физиологии (разделение клавиатуры на две половинки можно отнести сюда же).
  2. Уменьшение количества клавиш и вынесение части клавиш на слои.

И если менять расположение клавиш алфавитно-цифрового блока производители в массе своей все ещё не рискуют, то клавиатуры с меньшим количеством клавиш, где функциональные клавиши и даже стрелочки (sic!) вынесены на отдельные слои, есть у многих популярных производителей, например Ducky, Vortex, HHKB, Leopold...


Так что использование слоев уже не экзотика, а почти уже мейнстрим.


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


  • Мне очень нравятся кейкапы SA профиля, но, когда я, наконец, купил их себе и поставил, оказалось, что для меня они слишком высоки и мне удобнее кейкапы пониже, такие как, например, CHERRY профиль.
  • Мне казались странными низкопрофильные свитчи и кейкапы, я смотрел на них как на какую-то диковинку. Но все же собрал ради интереса клавиатуру на низкопрофильных свитчах. Теперь это моя основная клавиатура. (Да, клавиатура, упомянутая в статье не первая моя сплит клавиатура, но всё вышесказанное применимо и к остальным.)

Так что, может вам тоже нужен эргосплит, но вы ещё об этом не знаете?..

Подробнее..

Аппаратный эмулятор клавиатуры и мыши с интерфейсом USB

12.01.2021 20:07:52 | Автор: admin
Для чего нужен аппаратный эмулятор клавиатуры и мышки? Многим часто приходится выполнять рутинную работу и возникает мысль как-то автоматизировать этот процесс чтобы компьютер сам кликал в окнах и нажимал кнопки клавиатуры в то время как вы не спеша пьете кофе или занимаетесь другими делами. Не всегда для этой цели подходит программная эмуляция и в таких случаях необходим аппаратный эмулятор.

Что же из себя представляет аппаратный эмулятор клавиатуры и мыши? Обычно это небольшое устройство подключаемое к компьютеру через USB порт и которое он определяет как клавиатуру и мышь. Кроме того предусмотрен канал передачи управляющих команд (обычно через тот же USB порт) по которому устройству приходят команды нажать или отпустить кнопку клавиатуры или переместить мышь и покликать ее кнопками. Таким устройством могут быть различные микроконтроллеры имеющие в своем составе модуль связи по USB и прошитые специальной программой эмулятора клавиатуры и мыши.
Для этой цели хорошо подходит отладочная плата Blue Pill.



На ней есть все необходимое микроконтроллер STM32F103C8T6 с интерфейсом USB который выведен на разъем microUSB и вся необходимая обвязка для микроконтроллера. Нужно только прошить микроконтроллер программой эмулятора. Также для этой цели подойдет другие отладочные платы и устройства с микроконтроллером STM32F103C8T6 например отладчик ST-Link в форм-факторе флешки. Использование готовых компонентов позволяет сделать этот эмулятор почти каждому.

Возможности эмулятора зависят от прошивки и у предлагаемой они таковы:

  • Эмуляция расширенной клавиатуры содержащей 230 кнопок.
  • Одновременное нажатие до 14 кнопок клавиатуры не считая кнопок модификаторов.
  • Эмуляция дополнительной мультимедийной клавиатуры.
  • Эмуляция стандартной мыши с 8 кнопками, колесиком и возможностью позиционирования курсора в пределах координат 0 32000.
  • Скорость работы до 500 эмуляций в секунду (2 мс. на каждую эмуляцию).

Видео работы эмулятора. На нем вначале показан код передающий команды аппаратному эмулятору, а затем код выполнен и эмулятор напечатал 200 раз слово Emulator.


Инструкцию по прошивке эмулятора, примеры, документацию, прошивку и т. д. можно найти на сайте emulator.ucoz.org
Подробнее..

Keyboa клавиатуры на максималках для ботов в Telegram

09.10.2020 14:15:38 | Автор: admin

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

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

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

Статья рассчитана на тех, кто знает основы Telegram Bot API и хотя бы немного знаком с фреймворком pyTelegramBotAPI.

Модуль требует > Python 3.5 и ставится через pip:

pip install keyboa

В официальной документации Telegram объект inline_keyboard определен как массив, состоящий из массивов кнопок (Array of Array of InlineKeyboardButton). То есть основной массив (список) - это клавиатура в целом, а его элементы (вложенные списки) - это ряды кнопок. Не переживайте, если определение кажется сложным - позже мы разберём его на простом примере.

Предположим, что сам бот у нас уже настроен:

import osfrom telebot import TeleBotfrom keyboa import keyboa_makertoken = os.environ["TELEGRAM_BOT_TOKEN"]uid = os.environ["TELEGRAM_USER_ID"] bot = TeleBot(token=token)

Создаём клавиатуру

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

fruits = [  "banana", "coconut", "orange",  "peach", "apricot", "apple",  "pineapple", "avocado", "melon"]

Создадим самую простую клавиатуру, в которой каждый элемент встанет на отдельный ряд:

kb_fruits = keyboa_maker(items=fruits, copy_text_to_callback=True)

Всё, что потребовалось - передать список в items. Оставить пустой сallback_data (ответную часть кнопки) мы не можем, ведь иначе не узнаем, что нажал пользователь. Поэтому добавляем текст каждой кнопки в её callback_data, устанавливая параметр copy_text_to_callback.

Отправим сообщение пользователю:

bot.send_message(  chat_id=uid, reply_markup=kb_fruits,  text="Please select one of the fruit:")

Распределяем кнопки по рядам

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

Указать количество кнопок в ряду

Определите параметр items_in_row, чтобы задать количество кнопок в ряду. Их число должно быть от одного до восьми. Больше кнопок нам не позволит добавить сам Telegram.

Создадим клавиатуру и отправим обновлённое сообщение:

kb_fruits = keyboa_maker(items=fruits, copy_text_to_callback=True, items_in_row=3)bot.send_message(  chat_id=uid, reply_markup=kb_fruits,  text="Please select one of the fruit:")

Использовать автоподбор

Если клавиатура создается динамически, мы не всегда знаем, сколько в ней окажется кнопок. Чтобы автоматически равномерно распределить их по рядам, установите параметр auto_alignment. Если выставить True, Keyboa попробует подобрать делитель в диапазоне от трёх до пяти, а можно задать свой диапазон в виде списка чисел от одного до восьми, например, [2, 3, 7].

Параметр reverse_alignment_range определяет, будет ли Keyboa искать делитель с начала или с конца диапазона, указанного в auto_alignment.

Распределить кнопки вручную

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

fruitscomplex = [  "banana",  ["coconut", "orange"],  ["peach", "apricot", "apple"],  "pineapple",  ["avocado", "melon"],]kb_fruits_complex = keyboa_maker(items=fruits_complex, copy_text_to_callback=True)bot.send_message(  chat_id=uid, reply_markup=kb_fruits_complex,  text="Please select one of the fruit:")

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

Управляем содержимым callback

Мы упоминали, что callback_data - это строка, которую Telegram отправляет вам после нажатия кнопки пользователем. По её содержимому вы можете понять, какая именно кнопка была нажата.

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

fruits_with_ids = [  {"banana": "101"}, {"coconut": "102"}, {"orange": "103"},  {"peach": "104"}, {"apricot": "105"}, {"apple": "106"},  {"pineapple": "107"}, {"avocado": "108"}, {"melon": "109"}, ]# or [# ("banana", "101"), ("coconut", "102"), ("orange", "103"),# ("peach", "104"), ("apricot", "105"), ("apple", "106"),# ("pineapple", "107"), ("avocado", "108"), ("melon", "109"), ]

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

kb_fruits = keyboa_maker(items=fruits_with_ids, items_in_row=3)bot.send_message(  chat_id=uid, reply_markup=kb_fruits,text="Please select one of the fruit:")

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

{"text": "banana", "callback_data": "101"}, ...

Этого достаточно, если мы используем числа только для обозначения фруктовых id. А если нужно принимать разные числовые параметры, например вес или цену? Как определить, к чему относится полученное число?

С Keyboa мы можем явно указать это при создании клавиатуры. Параметр front_marker добавляет одинаковый текст в начало callback_data каждой кнопки, а back_marker, соответственно, в конец. Рассмотрим на примере:

kb_fruits = keyboa_maker(items=fruits_with_ids, front_marker="&fruit_id=")

Теперь callback_data кнопок будет состоять из текста формата front_marker + value, например: '&fruit_id=101', '&fruit_id=102' и т. д. Такой подход позволит нам легко расшифровать строку и понять, какие получены данные и с какими значениями.

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

# коллбек, полученный после нажатия на кнопку, например "&fruit_id=102"selected_fruit_id = call.dataavailable_weight = [1, 2, 5, 10, 100, ]kb_available_weight = keyboa_maker(items=available_weight, copy_text_to_callback=True, front_marker="&weight=", back_marker=selected_fruit_id)

Теперь callback_data каждой кнопки будет выглядеть так:

'&weight=1&fruit_id=102', '&weight=2&fruit_id=102', '&weight=5&fruit_id=102'

Здесь мы используем front_marker и back_marker, чтобы обернуть передаваемое значение, указав тип текущего значения и добавив в callback_data уже полученную информацию. Имейте в виду, что у Telegram есть ограничение на длину callback_data в 64 байта, поэтому, если передаваемых параметров будет много - придётся сокращать названия или использовать аббревиатуры.

Объединение нескольких клавиатур в одну

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

У нее есть только один параметр - keyboards, представляющий собой набор уже созданных клавиатур. Вот, как это работает:

from keyboa import keyboa_maker, keyboa_combinercontrols = [["", "", "", "", ""], ]tracks = list(range(1, 13))keyboard_controls = keyboa_maker(items=controls, copy_text_to_callback=True)keyboard_tracks = keyboa_maker(items=tracks, items_in_row=4, copy_text_to_callback=True)keyboard = keyboa_combiner(keyboards=(keyboard_tracks, keyboard_controls))bot.send_message(  chat_id=uid, reply_markup=keyboard,   text="Please select the track number:")

Можно объединить сразу много клавиатур - главное, чтобы общее количество кнопок было не больше ста. Это ограничение Telegram.

Итог

В этой статье мы кратко рассмотрели создание клавиатур для ботов в Telegram с помощью Keyboa. Больше информации и описание остальных параметров можно найти на странице проекта в Github.

Буду рад вашим отзывам, идеям и конструктивной критике по развитию проекта.

Подробнее..

Перевод - recovery mode Слова в минуту

30.10.2020 02:05:23 | Автор: admin

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

Самый главно ПО на этом рынке в области обучения скоростному набору на клавиатуреСамый главно ПО на этом рынке в области обучения скоростному набору на клавиатуреобработка информацииобработка информации

Содержание

1 Алфавитно-цифровой последовательности

2 Stenotype

3 Числовые последовательности

4 Почерк

5 Чтение и понимание

6 Речь и слушание

7 Язык Признака

8 Morse код

9 Ссылки

Алфавитно-цифровой последовательности

Так как длина или продолжительность слов ясно переменные, с целью измерения текстового входа, определение каждого "слова" часто стандартизируется, чтобы быть пятью символами или нажатиями клавиши на английском, включая пробелы и пунктуацию. Например, под таким методом, прикладным к простому тексту Английский язык фраза "I ran" считается за одно слово, но rhinoceros и lets talk оба рассчитал бы как два.

Карат и другие. нашел, что одно изучение средних компьютерных пользователей в 1999, средняя норма (разряд) для транскрипции было 32.5 слова в минуту, и слова 19.0 в минуту для состава. В том же самом изучении, когда группа была разделена на "быстрые", "умеренные", и "медленные" группы, средние скорости были 40 wpm, 35 wpm, и 23 wpm, соответственно.

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

Средние профессиональные типы машинистки обычно в скоростях от 50 до 80 wpm, в то время как некоторые позиции могут требовать 80 до 95 (обычно минимума, требуемого для позиций отправки и других чувствительных к времени вакансий печатания), и некоторой расширенной работы машинисток над скоростями более чем 120 wpm. Машинистки с двумя пальцами, иногда также упомянутый как " охота и клюёт " машинистки, обычно достигают поддержанных скоростей приблизительно 37 wpm для запоминаемого текста и 27 wpm, при

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

Stenotype

stenotype машинкаstenotype машинка

Stenotype клавиатуры дают возможность обученному пользователю ввести текст с такой скоростью как 226 wpm или быстрее в очень высокой точности в течение расширенного периода времени, которое является достаточным для действий в реальном масштабе времени типа сообщения суда или закрытых заседаниях. В то время как нормы уволенного очень высоки - в некоторых случаях, только 10 % или даже меньшее количество студентов дипломированного-специалиста-stenotype обычно способно достигнуть скоростей 100-120 wpm в пределах шести месяцев, который является быстрее чем наиболее алфавитно-цифровые машинистки. Отчеты рекордов Мира Гиннеса дают 360 wpm с 97.23 точностью % как самый высокий достигнутую скорость, используя stenotype.

Числовые последовательности

Числовой вход или 10 ключевых скоростей - мера способности управлять цифровой клавиатурой, найденной на наиболее современных отдельных компьютерных клавиатурах. Это используется, чтобы измерить скорость для вакансий типа ввода данных информации номера относительно элементов типа совета денежного перевода, счетов, или проверок, как депонировано к сейфам. Это измерено в нажатиях клавиши в час (К\ЧАС). Много вакансий требуют некоторого К\ЧАС, часто 8,000 или 10,000.

Письмо

пример письмапример письма

Для взрослого населения (возрастной диапазон 18-60) средняя скорость копирования - 68 знаков в минуту (приблизительно 13 wpm), с диапазоном от минимума 26 к максимуму 113 знаков в минуту (приблизительно от 5 до 20 wpm).

Изучение полицейских отчетов показывало, что самая высокая скорость в диапазоне 120-155 символов в минуту, самый высокий возможный предел, являющийся 190 символами в минуту.

Согласно различным занятиям скорость почерка 3-7 классников изменяется от 25 до 94 знаков в минуту.

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

Чтение и понимание

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

Исследование, сделанное в 2012 измерило скорость, в которой темы читают текст громко, и нашли среднюю скорость поперек 17 различных языков, чтобы быть 18429 wpm или 863234 символов в минуту. Однако, для языков, которые используют Латинский или Кириллицы, число различного wpm, столь же низко как 16118 для Финского и столь же высоко как 22830 для Английского языка. Причина для этого - различные структуры слова на каждом языке (более длинные слова на таких языках как Финские и более короткие слова по-английски). Однако, число символов в минуту имеет тенденцию быть вокруг 1000 для всех проверенных языков. Для проверенных Азиатских языков, которые используют специфические системы письма (Арабский язык, Еврит, Китайский, Японский) эти числа более низки.

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

В то время как материалы корректуры, люди способны читать Английский язык в 200 wpm на бумаге, и 180 wpm на мониторе.

Речь и слушание

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

Представления Скольжения имеют тенденцию быть ближе к 100-125 wpm для удобного темпа, аукционисты могут говорить в приблизительно 250 wpm, и самые быстрые говорящие участники дебатов политики говорит от 350 и более чем 500 словам в минуту. Показ счетчиков слов в Internet, что различные вещи влияют на слова в минуту, включая нервозность.

Джон Мошитта, младший, был перечислен в Отчетах рекордов Мира Гиннеса, какое-то время, как всемирный самый быстрый спикер, являясь способным говорить в 586 wpm. Он с тех пор был превзойден Стивом Вудмор, кто достиг нормы в 637 wpm.

Язык Признака

В царстве Американского Языка Признака Американский Университет Языка Признака (ASLU) определяет мастерство сокращения для студентов, кто синхронизируют скорость подписания 110-130 wpm

Morse код

Morse код использует переменные последовательности длины коротких и длинных сигналов продолжительности (dits и dahs, разговорно называемого точками и черточками) чтобы представить исходную информацию, например последовательности для письма "K" и цифры "2" - соответственно ( ) and ( ). Эта изменчивость усложняет измерение скорости кода Morse, номинальной в словах в минуту. Используя сообщения телеграммы, средняя Английская длина слова - приблизительно пять символов, каждый составляющий в среднем 5.124 точечных продолжительности или бод. Интервал между словами должен также рассматриваться, являющийся семью точечными продолжительностями в США и пять на Британских территориях. Так что среднее Британское слово телеграфа было 30.67 точечных раз., так что скорость в бодах кода Morse - 5060 слово в норму (разряд) минуты.

Это - стандартная практика, чтобы использовать два различный за такие стандартные слова, чтобы измерить скорости кода Morse в словах в минуту. Стандартные слова: "ПАРИЖ" и "CODEX". В Morse закодируют "ПАРИЖ", имеет 50 точечных продолжительностей, в то время как "CODEX" имеет 60.

Хотя много стран больше не требуют, чтобы это для лицензирования, Morse все еще широко использовалось любительскими операторами радио. Опытные ветчины обычно посылают Morse в 20 словах в минуту, используя вручную используемые ручные клавиши телеграфа; энтузиасты типа членов Клуба CW Операторов обычно посылают и получают код Morse в, ускоряется к 60 wpm. Верхний предел для операторов Morse, пытающихся записывать код Morse, полученный ухом, используя бумагу и карандаш - грубо 20 wpm. Много квалифицированных операторов кода Morse могут получать код Morse ухом мысленно без того, чтобы записать информацию в, ускоряется к 70 wpm., чтобы записать Morse кодируют информацию вручную в скоростях выше чем 20 wpm, это обычно для операторов, чтобы использовать пишущую машинку или компьютерную клавиатуру, чтобы допустить выше копированию скорости.

В Соединенных Штатах лицензия коммерческого radiotelegraph оператора все еще выходится, хотя нет почти никакого запроса на это, так как для длинных судов связи расстояния теперь используют Глобальное Морское Бедствие на основе спутника и Безопасную Систему. Помимо письменной экспертизы, мастерство при получении Morse в 20 wpm простой язык и 16 wpm в группах кода должно демонстрироваться.

Быстродействующие соревнования телеграфии все еще проводятся. Самый быстрый оператор кода Morse был Теодора Русевелта Макелройа в 75.6 wpm использование пишущей машинки в 1939 мировом чемпионате.

См. также:

  1. Colemak клавиатура

  2. Dvorak клавиатура

  3. Instructograph

  4. Динамика Нажатия клавиши

  5. Morse код

  6. Скорость, печатающая соревнование

  7. Сенсорное печатание

Ссылки

1. Ahmed Sabbir Arif and Wolfgang Stuerzlinger. 2009.Analysis of Text Entry Performance Metrics. InProceedings of the IEEE Toronto International ConferenceScience and Technology for Humanity(TIC-STH '09). IEEE, Washington, DC, US, 100-105.

2. Karat CM, Halverson C, Horn D, Karat J (1999). "Patterns of entry and correction in large vocabulary continuous speech recognition systems".Proceedings of the SIGCHI conference on Human Factors in Computing Systems (CHI '99). New York, NY, US: ACM. pp.568575.doi:10.1145/302979.303160.ISBN0-201-48559-1.

3. Boulus-Rdje, Nina; Ellingsen, Gunnar; Bratteteig, Tone; Aanestad, Margunn; Bjrn, Pernille, eds. (2015).ECSCW 2015: Proceedings of the 14th European Conference on Computer Supported Cooperative Work, 19-23 September 2015, Oslo, Norway. p.288.doi:10.1007/978-3-319-20499-4.ISBN978-3-319-20498-7.S2CID8792939

Подробнее..

Перевод Анатомия клавиатуры

09.03.2021 12:08:26 | Автор: admin


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

Щёлкать иль не щёлкать, вот в чём вопрос


На представленной ниже фотографии показана бюджетная клавиатура, похожая на бесчисленное множество других, используемых сегодня в школах, офисах и дома. Схема расположения её клавиш является почти полной копией классической IBM Model M 102, но это справедливо для большинства современных клавиатур.

И корпус, и отдельные клавиши изготовлены литьём под давлением из АБС-пластика, потому что этот процесс изготовления недорог, а материал слабо подвержен износу.


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

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


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

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


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

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

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


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

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

Плата также содержит пару светодиодов, сообщающих о нажатии определённых клавиш, а именно Caps Lock, Num Lock и Scroll Lock.


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

Чип может быть стандартным микроконтроллером USB HID (human interface device), которых на рынке есть тысячи разновидностей (например, такая).


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

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

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


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

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


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

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

Какими бывают механические переключатели?



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

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


Внутри клавиатуры-бабочки Apple

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

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

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



На правах рекламы


Виртуальные серверы с новейшим железом, защитой от DDoS-атак и огромным выбором операционных систем. Максимальная конфигурация 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

Подробнее..

USB на регистрах interrupt endpoint на примере HID

10.04.2021 12:12:31 | Автор: admin

Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: isochronous endpoint на примере Audio device

Продолжаем разбираться с USB на контроллерах STM32L151. Как и в предыдущей части, ничего платформо-зависимого здесь не будет, зато будет USB-зависимое. Если точнее, будем рассматривать третий тип конечной точки interrupt. И делать мы это будем на примере составного устройства клавиатура + планшет (ссылка на исходники).
На всякий случай предупреждаю: данная статья (как и все остальные) скорее конспект того, что я понял, разбираясь в этой теме. Многие вещи так и остались магией и я буду благодарен если найдется специалист, способный объяснить их.

Первым делом напомню, что протокол HID (Human Interface Device) не предназначен для обмена большими массивами данных. Весь обмен строится на двух понятиях: событие и состояние. Событие это разовая посылка, возникающая в ответ на внешнее или внутреннее воздействие. Например, пользователь кнопочку нажал или мышь передвинул. Или на одной клавиатуре отключил NumLock, после чего хост вынужден и второй послать соответствующую команду, чтобы она это исправила, также послав сигнал нажатия NumLock и включила его обратно отобразила это на индикаторе. Для оповещения о событиях и используются interrupt точки. Состояние же это какая-то характеристика, которая не меняется просто так. Ну, скажем, температура. Или настройка уровня громкости. То есть что-то, посредством чего хост управляет поведением устройства. Необходимость в этом возникает редко, поэтому и взаимодействие самое примитивное через ep0.

Таким образом назначение у interrupt точки такое же как у прерывания в контроллере быстро сообщить о редком событии. Вот только USB штука хост-центричная, так что устройство не имеет права начинать передачу самостоятельно. Чтобы это обойти, разработчики USB придумали костыль: хост периодически посылает запросы на чтение всех interrupt точек. Периодичность запроса настраивается последним параметром в EndpointDescriptor'е (это часть ConfigurationDescriptor'а). В прошлых частях мы уже видели там поле bInterval, но его значение игнорировалось. Теперь ему наконец-то нашлось применение. Значение имеет размер 1 байт и задается в миллисекундах, так что опрашивать нас будут с интервалом от 1 мс до 2,55 секунд. Для низкоскоростных устройств минимальный интервал составляет 10 мс. Наличие костыля с опросом interrupt точек для нас означает, что даже в отсутствие обмена они будут впустую тратить полосу пропускания шины.

Логичный вывод: interrupt точки предназначены только для IN транзакций. В частности, они используются для передачи событий от клавиатуры или мыши, для оповещения об изменении служебных линий COM-порта, для синхронизации аудиопотока и тому подобных вещей. Но для всего этого придется добавлять другие типы точек. Поэтому, чтобы не усложнять пример, ограничимся реализацией HID-устройства. Вообще-то, такое устройство мы уже делали в первой части, но там дополнительные точки не использовались вовсе, да и структура HID-протокола рассмотрена не была.

ConfigurationDescriptor


static const uint8_t USB_ConfigDescriptor[] = {  ARRLEN34(  ARRLEN1(    bLENGTH, // bLength: Configuration Descriptor size    USB_DESCR_CONFIG,    //bDescriptorType: Configuration    wTOTALLENGTH, //wTotalLength    1, // bNumInterfaces    1, // bConfigurationValue: Configuration value    0, // iConfiguration: Index of string descriptor describing the configuration    0x80, // bmAttributes: bus powered    0x32, // MaxPower 100 mA  )  ARRLEN1(    bLENGTH, //bLength    USB_DESCR_INTERFACE, //bDescriptorType    0, //bInterfaceNumber    0, // bAlternateSetting    2, // bNumEndpoints    HIDCLASS_HID, // bInterfaceClass:     HIDSUBCLASS_BOOT, // bInterfaceSubClass:     HIDPROTOCOL_KEYBOARD, // bInterfaceProtocol:     0x00, // iInterface  )  ARRLEN1(    bLENGTH, //bLength    USB_DESCR_HID, //bDescriptorType    USB_U16(0x0110), //bcdHID    0, //bCountryCode    1, //bNumDescriptors    USB_DESCR_HID_REPORT, //bDescriptorType    USB_U16( sizeof(USB_HIDDescriptor) ), //wDescriptorLength  )  ARRLEN1(    bLENGTH, //bLength    USB_DESCR_ENDPOINT, //bDescriptorType    INTR_NUM, //bEdnpointAddress    USB_ENDP_INTR, //bmAttributes    USB_U16( INTR_SIZE ), //MaxPacketSize    10, //bInterval  )  ARRLEN1(    bLENGTH, //bLength    USB_DESCR_ENDPOINT, //bDescriptorType    INTR_NUM | 0x80, //bEdnpointAddress    USB_ENDP_INTR, //bmAttributes    USB_U16( INTR_SIZE ), //MaxPacketSize    10, //bInterval  )  )};


Внимательный читатель тут же может обратить внимание на описания конечных точек. Со второй все в порядке IN точка (раз произведено сложение с 0x80) типа interrupt, заданы размер и интервал. А вот первая вроде бы объявлена как OUT, но в то же время interrupt, что противоречит сказанному ранее. Да и здравому смыслу тоже: хост не нуждается в костылях чтобы передать в устройство что угодно и когда угодно. Но таким способом обходятся другие грабли: тип конечной точки в STM32 устанавливается не для одной точки, а только для пары IN/OUT, так что не получится задать 0x81-й точке тип interrupt, а 0x01-й control. Впрочем, для хоста это проблемой не является, он бы, наверное, и в bulk точку те же данные посылал что, впрочем, я проверять не стану.

HID descriptor


Структура HID descriptor'а больше всего похожа на конфигурационных файл имя=значение, но в отличие от него, имя представляет собой числовую константу из списка USB-специфичных, а значение либо тоже константу, либо переменную размером от 0 до 3 байт.
Важно: для некоторых имен длина значения задается в 2 младших битах поля имени. Например, возьмем LOGICAL_MINIMUM (минимальное значение, которое данная переменная может принимать в штатном режиме). Код этой константы равен 0x14. Соответственно, если значения нет (вроде бы такого не бывает, но утверждать не буду зачем-то же этот случай ввели), то в дескрипторе будет единственное число 0x14. Если значение равно 1 (один байт) то записано будет 0x15, 0x01. Для двухбайтного значения 0x1234 будет записано 0x16, 0x34, 0x12 значение записывается от младшего к старшему. Ну и до кучи число 0x123456 будет 0x17, 0x56, 0x34, 0x12.

Естественно, запоминать все эти числовые константы мне лень, поэтому воспользуемся макросами. К сожалению, я так и не нашел способа заставить их самостоятельно определять размер переданного значения и разворачиваться в 1, 2, 3 или 4 байта. Поэтому пришлось сделать костыль: макрос без суффикса отвечает за самые распространенные 8-битные значения, с суффиксом 16 за 16-битные, а с 24 за 24-битные. Также были написаны макросы для составных значений вроде диапазона LOGICAL_MINMAX24(min, max), которые разворачиваются в 4, 6 или 8 байтов.

Как и в конфигурационных файлах, здесь присутствуют секции, называемые страницами (usage_page), которые группируют устройства по назначению. Скажем, есть страница с базовой периферией вроде клавиатур, мышек и просто кнопок, есть джойстики и геймпады (искренне рекомендую посмотреть какие именно! Там и для танков, и для космических кораблей, и для подводных лодок и для всего чего угодно), даже дисплеи есть. Правда, где искать софт, умеющий со всем этим работать, я без понятия.

Внутри каждой страницы выбирается конкретное устройство. Например, для мышки это указатель и кнопки, а для планшета стилус или палец юзера (что?!). Ими же обозначаются составные части устройства. Так, частью указателя являются его координаты по X и Y. Некоторые характеристики можно сгруппировать в коллекцию, но для чего это делается я толком не понял. В документации к полям иногда ставится пометка из пары букв о назначении поля и способе работы с ним:

CA Collection(application) Служебная информация, никакой переменной не соответствующая
CL Collection(logical) -/-
CP Collection(phisical) -/-
DV Dynamic Value входное или выходное значение (переменная)
MC Momentary Control флаг состояния (1-флаг взведен, 0-сброшен)
OSC One Shot Control однократное событие. Обрабатывается только переход 0->1


Есть, разумеется, и другие, но в моем примере они не используются. Если, например, поле X помечено как DV, то оно считается переменной ненулевой длины и будет включено в структуру репорта. Поля MC или OSC также включаются в репорт, но имеют размер 1 бит.

Один репорт (пакет данных, посылаемый или принимаемый устройством) содержит значения всех описанных в нем переменных. Описание кнопки говорит о всего одном занимаемом бите, но для относительных координат (насколько передвинулась мышка, например) требуется как минимум байт, а для абсолютных (как для тачскрина) уже нужно минимум 2 байта. Плюс к этому, многие элементы управления имеют еще свои физические ограничения. Например, АЦП того же тачскрина может иметь разрешение всего 10 бит, то есть выдавать значения от 0 до 1023, которое хосту придется масштабировать к полному разрешению экрана. Поэтому в дескрипторе помимо предназначения каждого поля задается еще диапазон его допустимых значений (LOGICAL_MINMAX), плюс иногда диапазон физических значений (в миллиматрах там, или в градусах) и обязательно представление в репорте. Представление задается двумя числами: размер одной переменной (а битах) и их количество. Например, координаты касания тачскрина в создаваемом нами устройстве задаются так:
USAGE( USAGE_X ), // 0x09, 0x30,USAGE( USAGE_Y ), // 0x09, 0x31,LOGICAL_MINMAX16( 0, 10000 ), //0x16, 0x00, 0x00,   0x26, 0x10, 0x27,REPORT_FMT( 16, 2 ), // 0x75, 0x10, 0x95, 0x02,INPUT_HID( HID_VAR | HID_ABS | HID_DATA), // 0x91, 0x02,

Здесь видно, что объявлены две переменные, изменяющиеся в диапазоне от 0 до 10000 и занимающие в репорте два участка по 16 бит.

Последнее поле говорит, что вышеописанные переменные будут хостом читаться (IN) и поясняется как именно. Описывать его флаги подробно я не буду, остановлюсь только на нескольких. Флаг HID_ABS показывает, что значение абсолютное, то есть никакая предыстория на него не влияет. Альтернативное ему значение HID_REL показывает что значение является смещением относительно предыдущего. Флаг HID_VAR говорит, что каждое поле отвечает за свою переменную. Альтернативное значение HID_ARR говорит, что передаваться будут не состояния всех кнопок из списка, а только номера активных. Этот флаг применим только к однобитным полям. Вместо того, чтобы передавать 101/102 состояния всех кнопок клавиатуры можно ограничиться несколькими байтами со списком нажатых клавиш. Тогда первый параметр REPORT_FMT будет отвечать за размер номера, а второй за количество.

Поскольку размер всех переменных задается в битах, логично спросить: а что же с кнопками, ведь их количество может быть не кратно 8, а это приведет к трудностям выравнивания при чтении и записи. Можно было бы выделить каждой кнопке по байту, но тогда бы сильно вырос объем репорта, что для скоростных передач вроде interrupt, неприятно. Вместо этого кнопки стараются расположить поближе друг к другу, а оставшееся место заполняют битами с флагом HID_CONST.

Теперь мы можем если не написать дескриптор с нуля, то хотя бы попытаться его читать, то есть определить, каким битам соответствует то или иное поле. Достаточно посчитать INPUT_HID'ы и соответствующие им REPORT_FMT'ы. Только учтите, что именно такие макросы придумал я, больше их никто не использует. В чужих дескрипторах придется искать input, report_size, report_count, а то и вовсе числовые константы.

Вот теперь можно привести дескриптор целиком:
static const uint8_t USB_HIDDescriptor[] = {  //keyboard  USAGE_PAGE( USAGEPAGE_GENERIC ),//0x05, 0x01,  USAGE( USAGE_KEYBOARD ), // 0x09, 0x06,  COLLECTION( COLL_APPLICATION, // 0xA1, 0x01,    REPORT_ID( 1 ), // 0x85, 0x01,    USAGE_PAGE( USAGEPAGE_KEYBOARD ), // 0x05, 0x07,    USAGE_MINMAX(224, 231), //0x19, 0xE0, 0x29, 0xE7,        LOGICAL_MINMAX(0, 1), //0x15, 0x00, 0x25, 0x01,    REPORT_FMT(1, 8), //0x75, 0x01, 0x95, 0x08         INPUT_HID( HID_DATA | HID_VAR | HID_ABS ), // 0x81, 0x02,     //reserved    REPORT_FMT(8, 1), // 0x75, 0x08, 0x95, 0x01,    INPUT_HID(HID_CONST), // 0x81, 0x01,                  REPORT_FMT(1, 5),  // 0x75, 0x01, 0x95, 0x05,    USAGE_PAGE( USAGEPAGE_LEDS ), // 0x05, 0x08,    USAGE_MINMAX(1, 5), //0x19, 0x01, 0x29, 0x05,      OUTPUT_HID( HID_DATA | HID_VAR | HID_ABS ), // 0x91, 0x02,    //выравнивание до 1 байта    REPORT_FMT(3, 1), // 0x75, 0x03, 0x95, 0x01,    OUTPUT_HID( HID_CONST ), // 0x91, 0x01,    REPORT_FMT(8, 6),  // 0x75, 0x08, 0x95, 0x06,    LOGICAL_MINMAX(0, 101), // 0x15, 0x00, 0x25, 0x65,             USAGE_PAGE( USAGEPAGE_KEYBOARD ), // 0x05, 0x07,    USAGE_MINMAX(0, 101), // 0x19, 0x00, 0x29, 0x65,    INPUT_HID( HID_DATA | HID_ARR ), // 0x81, 0x00,             )  //touchscreen  USAGE_PAGE( USAGEPAGE_DIGITIZER ), // 0x05, 0x0D,  USAGE( USAGE_PEN ), // 0x09, 0x02,  COLLECTION( COLL_APPLICATION, // 0xA1, 0x0x01,    REPORT_ID( 2 ), //0x85, 0x02,    USAGE( USAGE_FINGER ), // 0x09, 0x22,    COLLECTION( COLL_PHISICAL, // 0xA1, 0x00,      USAGE( USAGE_TOUCH ), // 0x09, 0x42,      USAGE( USAGE_IN_RANGE ), // 0x09, 0x32,      LOGICAL_MINMAX( 0, 1), // 0x15, 0x00, 0x25, 0x01,      REPORT_FMT( 1, 2 ), // 0x75, 0x01, 0x95, 0x02,      INPUT_HID( HID_VAR | HID_DATA | HID_ABS ), // 0x91, 0x02,      REPORT_FMT( 1, 6 ), // 0x75, 0x01, 0x95, 0x06,      INPUT_HID( HID_CONST ), // 0x81, 0x01,                      USAGE_PAGE( USAGEPAGE_GENERIC ), //0x05, 0x01,      USAGE( USAGE_POINTER ), // 0x09, 0x01,      COLLECTION( COLL_PHISICAL, // 0xA1, 0x00,                 USAGE( USAGE_X ), // 0x09, 0x30,        USAGE( USAGE_Y ), // 0x09, 0x31,        LOGICAL_MINMAX16( 0, 10000 ), //0x16, 0x00, 0x00, 0x26, 0x10, 0x27,        REPORT_FMT( 16, 2 ), // 0x75, 0x10, 0x95, 0x02,        INPUT_HID( HID_VAR | HID_ABS | HID_DATA), // 0x91, 0x02,      )    )  )};

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

И еще одно поле, на которое хотелось бы обратить внимание OUTPUT_HID. Как видно из названия, оно отвечает не за прием репорта (IN), а за передачу (OUT). Расположено оно в разделе клавиатуры и описывает индикаторы CapsLock, NumLock, ScrollLock а также два экзотических Compose (флаг ввода некоторых символов, для которых нет собственных кнопок вроде , или ) и Kana (ввод иероглифов). Собственно, ради этого поля мы и заводили OUT точку. В ее обработчике будем проверять не надо ли зажечь индикаторы CapsLock и NumLock: на плате как раз два диодика и разведено.

Существует и третье поле, связанное с обменом данными FEATURE_HID, мы его использовали в первом примере. Если INPUT и OUTPUT предназначены для передачи событий, то FEATURE состояния, которое можно как читать, так и писать. Правда, делается это не через выделенные endpoint'ы, а через обычную ep0 путем соответствующих запросов.

Если внимательно рассмотреть дескриптор, можно восстановить структуру репорта. Точнее, двух репортов:
struct{  uint8_t report_id; //1  union{    uint8_t modifiers;    struct{      uint8_t lctrl:1; //left control      uint8_t lshift:1;//left shift      uint8_t lalt:1;  //left alt      uint8_t lgui:1;  //left gui. Он же hyper, он же winkey      uint8_t rctrl:1; //right control      uint8_t rshift:1;//right shift      uint8_t ralt:1;  //right alt      uint8_t rgui:1;  //right gui    };  };  uint8_t reserved; //я не знаю зачем в официальной документации это поле  uint8_t keys[6]; //список номеров нажатых клавиш}__attribute__((packed)) report_kbd;struct{  uint8_t report_id; //2  union{    uint8_t buttons;    struct{      uint8_t touch:1;   //фактнажатия на тачскрин      uint8_t inrange:1; //нажатие в рабочей области      uint8_t reserved:6;//выравнивание до 1 байта    };  };  uint16_t x;  uint16_t y;}__attribute__((packed)) report_tablet;


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

В процессе тестирования наткнулся на забавный побочный эффект: в Windows7 при нажатии на тачскрин вылезает окошко рукописного ввода. Я об этой фиче не знал.

Если к вам попало готовое устройство


и хочется посмотреть на него изнутри. Первым делом, естественно, смотрим, можно даже от обычного пользователя, ConfigurationDescriptor:
lsusb -v -d <VID:PID>

Для HID-дескриптора же я не нашел (да и не искал) способа лучше, чем от рута:
cat /sys/kernel/debug/hid/<address>/rdes

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

Заключение


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

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

Эргономичная раздельная клавиатура. Iris

14.10.2020 20:13:37 | Автор: admin


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


Мой первый комп появился 20 лет назад, тогда у меня был огромный ЭЛТ монитор. Весил он примерно 800 тонн, при своих 15 дюймах. Если сейчас на такой посмотреть, то у вас вытекут глаза. Может быть кто-то помнит модемы из 2000 года? Это жутко медленный модем, который трещал подключаясь по телефонной линии. Сейчас у нас есть 4g даже в часах. Даже молчу про процессоры, память, оперативку. Там развитие сумасшедшее.


А что там с клавиатурами?


Да, она стала беспроводной и гораздо тоньше. Но это не такие значительные изменения. С точки зрения эргономики изменений вообще ноль. И как мне кажется это говорит о какой-то закостенелости в айти. Если вы посмотрите на клавиатуру то вы поймете что это максимально неудобная, не эргономичная вещь. Ни с точки зрения формы ни с точки зрения раскладки


Если мы возьмем самую топовую клавиатуру. Например, Logitech Craft и сравним ее с клавиатурой 20 летней давности то больших изменений мы не увидим.




Почему эти клавиатуры такой формы?


Все просто, потому что клавиатуры, которым уже 30 лет выглядели точно так же. Вот, например, IBM M Model 1985 года выпуска.



А почему IBM M Model выглядит так?


Все просто, потому что клавиатуры, которым уже 46 лет выглядели точно так же. Вот, например, Apple 1 1976 года.



А почему клавиатура у Apple 1 выглядит вот так?


Все просто, потому, что печатные машинки, которым уже 124 года выглядели точно так же. Вот, например, пишущая машина Ундервуд (англ. Underwood), производившаяся с 1896 года.



Почему она выглядит так? Ну, вы уже поняли. Потому, что до нее 147 лет назад был прототип пишущей машинки Шолс и Глидден, первой коммерчески успешной пишущей машинки и первой с QWERTY-клавиатурой (1873).



Так почему наши клавиатуры такой формы? А все потому, что 147 лет назад никто не думал про эргономику. На тот момент времени нужно было просто сделать прототип, который должен был просто работать. Гораздо важнее было сделать ее компактной и надежной. Сейчас у нас таких проблем нет, все наши клавиатуры надежны и компактны. Но при этом эргономики в наших клавиатурах ровно ноль.


Давайте начнем с формы. Почему наши клавиатуры такой формы? Для того чтобы было удобно. Но удобно не тем, кто за ними работает. Так их удобней производить. Еще удобно людям, которые конструируют ноутбуки. Ведь удобней просто вписать все кнопочки в прямоугольник, чем что-то там выдумывать.


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


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


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


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


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


Ради удобства даже провода меняются. Вспомните как вы подключали монитор 20 лет назад. Был этот убогий VGA кабель. Который нужно было воткнуть правильно штырьками. Потом закрутить эти два болтика. Провода поменялись в угоду эргономики. Сейчас у тебя крошечный кабель, который ты можешь легко воткнуть любой стороной. Кстати, чтобы ты не заморачивался этим же кабелем, твой ноут будет и заряжаться. Все для твоего удобства. Только вот клавиатура как была неудобной так и осталась.


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


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


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


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



Нет, конечно.


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



Хотя пальцы у людей (у большинства) ровные, а не растут лесенкой, как все современные клавиатуры.


Почему IRIS?


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


Первой я купил клавиатуру, которая называлась Ergodone. Это клон довольно популярной и дорогой Ergodox.



Я даже научился слепой печати на ней, но не смог печатать сильно быстро.


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


Второй клавиатурой у меня была Ergo42.



Ergo42 была компактней, но я никак не мог распределить на ней всю раскладку, которую я хотел бы иметь без лишних слоев. Вы можете либо оставить нижний ряд для кнопок типа cmd, ctrl, alt, space, enter. При этом у вас не будет цифр в основном слое. Либо иметь цифры в основном слое, при этом не иметь удобно расположенных управляющих кнопок.


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


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


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



Кстати, у Iris есть аналоги. Самый близкий это Lily58 Pro. У нее на две кнопки больше.



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


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


Свитчи


Я перепробовал довольно много свитчей. На данный момент в моем топе однозначно стоят Zilents v2. Мне еще хочется попробовать Holy Pandas. В эту клавиатуру я купил Zealios. Стоят они довольно дорого. Но они мне очень понравились. Изначально я думал, что они будут значительно шумнее, но нет. Как оказалось они довольно тихие, и при наборе издают довольно глухой звук "тхок". Я рекомендую их смазать и проложить в них филминги, так мы избавимся от "пластмассового" звука.



Для того чтобы смазать свитч вам нужны: Switch Opener, смазка, самая обычная кисточка.





Когда смазываете свитчи я так же рекомендую прокладывать в них филминги. Это такие прокладки между двумя пластмассовыми частями свитча. С ними звук от печати становится значительно приятнее.


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



Сборка


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



Для того чтобы собрать клавиатуру нужно будет купить:


  1. Плату
  2. Корпус
  3. Провод для подключения двух половинок
  4. Провод для подключения клавиатуры к компьютеру
  5. Свитчи
  6. Кейкапы

(Опционально, можно еще поставить крутилку, хотсвапы, подсветку.)


Про хотсвапы


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



Но в IRIS нельзя вставить эти хотсвапы. У меня вставлены хотсвапы от Mill Max.



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


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


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


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


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


Корпус


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



По факту печатная плата держится на корпусе только на счет свитчей. Но не надо пугаться, держится это все очень прочно.


Подсветка


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


Кроме того тут можно поставить подсветку в сами свитчи, но из-за хотсвапов такого варианта нет.


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


Вставляем свитчи


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


При сборке нам нужно будет тестировать работает ли кнопка. Рекомендую для этого вот этот софт:


Для Linux xev


Для Mac OS Key Codes


Xev для линукса работает очень хорошо, показывает нажатие любой кнопки. Key Codes работает как-то странно, и некоторые кнопки не показывает, например, в моем случае не показывались модификаторы, хотя они работали.


Ощущения при печати


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


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


QMK


После GK64 это кажется чудом. Я могу быстро и удобно менять раскладку. Если вы выбираете себе клавиатуру, то я крайне рекомендую вам обращать на это внимание. Чтобы у нее была поддержка QMK.


Моя раскладка


Сейчас моя раскладка выглядит вот так:



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


Капс в моем случае это переключение языка.


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


Привыкание к клавиатуре


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


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


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


Вывод


Самой клавиатурой полностью доволен, Zealios v2 тоже произвели приятное впечатление. Количество кнопок на клавиатуре ровно такое какое нужно, мне удалось расположить все, что мне нужно, при этом есть довольно удобное переключение во второй слой. С высотой проблем нет, то если нужна высота ниже, то вполне решается низкопрофильными DSA капами. Если будете заказывать, не забудьте боковую панель.


Если вам интересна эта тема, вы так же можете посмотреть видео на моем youtube канале.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru