В прошлом году мне попалось выступление Мэтта Адерета про использование Clojure для создания прошивок, предназначенных для самодельных клавиатур.

Хотя этот доклад делался на конференции, посвящённой Clojure, я полагаю, что его стоит посмотреть любому, у кого есть склонность к программированию и к технике.



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

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

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

  • Оптимизация. Я — программист и много работаю за клавиатурой. Учитывая то, что клавиатура — это инструмент, которым я пользуюсь каждый день, даже небольшие улучшения в эффективности её применения способны ускорить мою работу и снизить время, необходимое на то, чтобы мои мысли превратились бы в программный код.
  • Улучшение эргономики. Я уже искал эргономичную клавиатуру, так как заболевания, вызванные повторяющимися движениями, довольно широко распространены среди программистов. Несколько заинтересовавших меня моделей, которые можно купить, стоят довольно дорого (например — Kinesis за примерно $300). Я понял, что если смогу создать собственную клавиатуру — значит — у меня может получиться что-то такое, что отличается отличной эргономичностью.
  • Полезное применение 3D-принтера. Заветная мечта каждого владельца 3D-принтера — сделать с его помощью что-то осмысленное. Что-то, что будет работать и приносить пользу. Есть одна известная шутка про 3D-принтеры, которая заключается в том, что тот, кто обзавёлся таким принтером, всё время печатает какие-то детали для самого этого принтера, но не делает ничего другого, имеющего хоть какую-то ценность.

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

  1. Клавиатура должна быть ортолинейной (клавиши должны быть расположены прямо, а не в шахматном порядке). Пальцы, когда их сгибают и разгибают, двигаются по прямой. Поэтому имеет смысл обзавестись клавиатурой, клавиши на которой расположены в виде прямых колонок и рядов. Попробуйте сжать и разжать пальцы — и вы сами увидите то, о чём я говорю.
  2. Клавиатура должна быть разделённой. Использование такой клавиатуры позволяет расположить запястья и предплечья под такими углами, которые удобны для конкретного человека. Обычные клавиатуры принуждают нас размещать руки так, чтобы их положение соответствовало бы устройству клавиатуры, что вызывает ненужное напряжение в руках.
  3. Клавиатура должна иметь группы клавиш, рассчитанные на большие пальцы. Большой палец гораздо сильнее и гибче других пальцев благодаря суставу, который находится в его основании (первый пястно-запястный сустав). Группы клавиш, рассчитанные на большие пальцы, позволяют снять нагрузку по выполнению некоторых операций с других пальцев и перенести её на большие пальцы. Это увеличивает эргономичность клавиатуры, позволяет работать с ней гораздо эффективнее, чем с обычными клавиатурами. (После того, как я поработал с готовой клавиатурой, могу сообщить о том, что способен использовать большие пальцы для работы со следующими клавишами: Shift, Tab, [, ], {, }, |, ,`, ~, Return, Delete, да и ещё с некоторыми. А мои мизинцы больше не устают так, как раньше!).
  4. (Необязательное пожелание) Форма клавиатуры должна соответствовать анатомическим особенностям кисти. Если взглянуть на форму наших рук, то ясно, что в плоских клавиатурах нет никакого смысла. Искривлённые клавиатуры, повторяющие форму рук, гораздо удобнее обычных.

После того, как я провёл некоторые изыскания, я решил сделать себе клавиатуру Dactyl Manuform 5x6.


Процесс создания клавиатуры


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

  1. Создание корпуса клавиатуры. У меня уже есть некоторый опыт 3D-печати, поэтому я решил сам напечатать части корпуса клавиатуры. В большинстве подобных проектов, которые мне доводилось видеть, тоже используется 3D-печать.
  2. Установка переключателей (механизмов клавиш) и верхушек клавиш в корпус. Механические переключатели клавиш можно во множестве найти в интернете. Большинство корпусов самодельных клавиатур спроектировано так, чтобы в них можно было бы установить стандартные клавиши. Я, в итоге, остановился на этих переключателях. Они подойдут тем, кому нужна достаточно тихая клавиатура, обеспечивающая хорошие тактильные ощущения.
  3. Пайка. Это, вероятно, самая сложная часть работы, так как в проводах довольно просто запутаться. При создании «проводной» части клавиатуры строят решётку из проводников, к которой и подключаются клавиши. У переключателей имеется по два штырька. Один подключается к проводу напрямую, а второй — через диод (электрический аналог клапана одностороннего действия). Затем решётка из проводов подключается к микроконтроллеру (к миниатюрному компьютеру), который запрограммирован так, чтобы определять то, какая именно клавиша нажата, анализируя прохождение электрического тока по решётке.
  4. Прошивка устройства. На этом шаге на микроконтроллер устанавливают программное обеспечение. Большинство тех, кто создаёт самодельные клавиатуры, используют на данном этапе QMK.

Трудности


  1. Печать клавиатуры заняла немало времени (24 часа). Любая ошибка в процессе печати может привести к серьёзным потерям времени и пластика для 3D-печати. Я, когда делал мою вторую модель клавиатуры, решил использовать полупрозрачный пластик. Но он оказался гораздо более хрупким, чем тот, к которому я привык. Когда я снимал первую готовую деталь корпуса со стола принтера, она разломилась пополам. Это была одна из тех немногих ошибок, которые я совершил при печати корпуса клавиатуры.
  2. Пайка — непростое дело, если, как я, не очень-то умеешь паять. Я часто обжигался, расплавил в нескольких местах корпус клавиатуры. Очень сложно было добраться до мест пайки, расположенных в некоторых из углов корпуса.
  3. Иногда переключатели не очень хорошо входят в предназначенные для них отверстия. Поэтому порой приходится тратить немало времени на возню с напильником и на подгонку деталей.
  4. Если попытаться сэкономить и купить дешёвый микроконтроллер, вроде того, что купил я, может случиться так, что если этот контроллер прижать чуть сильнее, чем нужно, от него отвалится питающий кабель.
  5. После того, как клавиатура готова, ещё в течение нескольких месяцев может случаться так, что какие-то контакты в её проводной части вдруг, посреди рабочего дня, перестают работать. Поэтому вместо того, чтобы заниматься своими обычными делами, приходится тратить время на поиск проблем в электрических цепях клавиатуры.
  6. С первого раза разобраться с проводами и деталями, которыми набита клавиатура, может быть не так уж и просто. (Я, когда впервые паял клавиатуру, подключил диоды параллельно, а не последовательно).

Результаты


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

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

Вот — STL-файлы для печати подставок под запястья, а вот — файлы для печати корпуса клавиатуры.


Я определённо рекомендую этот проект всем, кто пользуется клавиатурой!

Какой клавиатурой вы пользуетесь? Хотите сделать себе какую-нибудь особенную клавиатуру?

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


  1. Hisoka
    17.10.2021 18:01
    +5

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

    А так напомнило, как сидя на даче в отпуске подумал что неплохо бы на старом ЭЛТ-телевизору, который имелся на даче, в старые консоли поиграть. Начал искать из новоделов, что умеют и сегу, и денди, но из комментариев понял что всё не очень гладко, как в части эмуляции, так и в части геймпадов(лаги + зачастую для денди не аутентичные)

     Поразмыслил и решил делать всё сам - эмуляцию на малинке с ретропайем + переходник оригинальных геймпадов на усб с помощью какой-нибудь Arduino Micro (дешманских китаев Micro Pro). И не писал бы этого, если бы всё было легко. Малинка с половины пинка заработала, а вот с конвертером пришлось повозиться.

    Сначала сделал прототип прошивки, чтоб проверить работу и запустил на имевшейся микро про - всё заработало как надо. Решил заказать под это дело новую, чтоб одна оставалась для будущих прототипов. Но офигел от цен на али, т.к. брал пару лет назад за не полные 200р, а в момент разработки выходила цена в ~600 с доставкой. Сказал я "данунахрен" и пошёл за AT90USB162, т.к. есть хардварный usb, и цена в магазе около дома меньше 300р. Но вот взять платку-переходник под qfn не додумался.

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

    Далее прикручивал поддержку AT90 к среде ардуины(т.к. нравится реализация подключаемых HID, которые сделаны более красиво чем всякие LUFA), основываясь на каких-то старых версиях MattairTech плат.

    В результате добился работы переходника и получил связку 2xСега + 2xДенди (4 геймпада одновременно) в USB. Для желающих повторить - прошивки и всё необходимое на гитхабе: https://github.com/Marisa-Chan/AT90RetroPads

    Прошивку можно легко переделать под леонардо/микро, путём тупо смены номеров ножек.

    В результате теперь имею всё необходимое, чтоб свободно использовать AT90 в своих проектах.

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

    P.S.S. Из хорошего - развёл геймпады для денди так, чтоб можно было подключить как 9 штырьков, так и 15.


    1. chelovek-jpeg
      20.10.2021 08:08

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


      1. Hisoka
        20.10.2021 15:05

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

        Геймпады 8bitdo давно хотел взять, но уже не помню кто меня отговорил, т.к. в блютус падах лаг есть и что это существенно ощущается в сравнении с проводным. И вспоминая свою ипегу для смарта, и то, как я офигевал от того что не могу прожать на ней то, что в детстве без сейв-лоадов проходил... в общем решил сделать проводное решение - USB всяко быстрее чем BT отработает + геймпады точно необходимых форм. И действительно, то что тяжело было на падах PS-подобных, в лёгкую прожалось на сеговском. И это не говоря про 6 кнопок.

        С покупными геймпадами USB/BT ещё большой вопрос в частоте опроса/формирования пакета HID. А то вдруг там 50мс заложено для борьбы с дребезгом контактов. И частота формирования пакета 30 всего.


  1. kilokanat
    17.10.2021 20:21

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


    1. northzen
      17.10.2021 21:37

      Где?


      1. kilokanat
        17.10.2021 22:48
        +2

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

        Самодельная эргономичная клавиатура CatBoard ][ https://habr.com/p/185500/

        Клавиатура своими руками под свои руки https://habr.com/p/177347/


        1. iShrimp
          18.10.2021 17:36

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


          1. SquareRootOfZero
            21.10.2021 09:59

            Существуют «аналоговые» свитчи, регистрирующие силу нажатия:
            wooting.io
            steelseries.com/innovation/omnipoint-switches
            Ну и вообще, можно загуглить «analog keys» или «pressure sensitive keys». Правда, непохоже, чтобы они продавались отдельно от клавиатур. Ну и фиг знает, насколько это большой челлендж — выпаять их из оригинальной клавиатуры, вкорячить во что-то вроде описанного в посте и завести это всё под QMK.


          1. alnite
            25.10.2021 11:45

            На Хабре была статья про MIDI-гитару Sensy. Там тоже подбирали хорошие сенсоры.


  1. demoded
    17.10.2021 22:41
    +4

    еще одна причина завести сплит :)


    1. zetroot
      17.10.2021 23:06

      А что это за клава у вас? Это серийный образец? Выглядит отлично! Сам с недавних пор смотрю на ортолинейные сплиты...


      1. demoded
        17.10.2021 23:19

        это такой-же Dactyl Manuform, только я печатал вариант 6х6, чтобы был ряд функциональных клавиш.


      1. onlinehead
        18.10.2021 16:54

        Из собственного опыта советую вам сначала попробовать где-то ортолинейную клавиатуру и тем более ортолинейный сплит, а потом покупать\собирать. Далеко не всем подходит, особенно если вы никогда не учились правильному десятипальцевому методу набора и не горите желанием переучиваться (как выяснилось это может быть весьма и весьма затратно по времени и терпению).
        Я собственно себе собрал один ортолинейный сплит ( и понял, что мне с моим способом набора (неправильным, но за 20+ лет вшитым в подкорку) сплит неудобен. После чего собрал себе уже полностью кастомную (от платы до прошивки, потому что захотелось сделать все свое и на pi zero, с дисплеями и всем таким, под что готовых клавиатурных прошивок не было, по крайней мере полгода назад) ортолинейную монолитную, без сплита и… опять не особо зашло. Просто по причине того, что под нее надо сознательно переучиваться достаточно долгое время. Плюс полноценно переучиться достаточно сложно, т.к. ломаешься к примеру о рабочий ноут.
        В итоге, это было очень интересное приключение, которое оставило приятные впечатления и кое какие знания, вроде умения разводить несложные платы и немного писать код под pi zero, но вот своей удобной клавиатуры для ежедневного использования не получилось.


  1. teuchezh
    18.10.2021 09:08

    В одной из последних статей задавал вопрос
    Собсна, итог:
    image


  1. Onefabis
    18.10.2021 15:25
    +2

    У меня тоже немного похожая


    1. kilokanat
      22.10.2021 12:33

      Какая прелесть) шар похоже от Logitech Marble? колёсики похоже алиэкспрессовские. С удовольствием бы детально изучил дневник сборки такого агрегата, особенно в части прикручивания трекбола в прошивку. На Хабре вот чего нет, так это освещения вопросов реализации таких кастомов, а оф.документация qmk малопонятна для тех, кто не умеет в С/английский технический. Познакомите с Вашим проектом?


  1. shashurup
    20.10.2021 10:59

    Итоги эксплуатации:

    1. Ортолинейка напрягает, до сих пор по VBNM промазываю регулярно. И это при том, что я слепой печати учился на MS Natural и без проблем переключаюсь в ноутбучный режим, при необходимости. Короче, сомнения у меня относительно ортолинейки.

    2. Cherry MX Red. Печатать текст - да, прикольно, а вот модификаторы жать уже не так прикольно, даже большим пальцем. Думаю, если решу тему продолжать, то нужно попробовать что-то типа kailh.

    3. Сплит - однозначный вин. Но тут, у меня даже вопроса не возникало - давно пользуюсь всякими ms natural.

    4. Клавиши под большие пальцы - тоже очень правильно.

    5. Совмещение модификаторов с обычными клавишами - очень удобно. Появились дополнительные модификаторы. Очень прикольно повесить скобки на шифты - как у space cadet.

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


    1. seraz
      22.10.2021 14:29

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

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

      низкопрофильные клавы тоже морока найти. да и низкопрофильной назвать почти 2.5 см высоты... а они еще и щелкают!

      потом увидел блади а4теков., аналоговые со светодиодиками и фотодетектерами или что там внутри. круть. но там и щелчки, и высота стандартны. еще и гравировка кейкапов будто руны или готика/death metal обложка альбома. крч, на любителя


  1. germiningeld
    08.11.2021 12:05

    Подскажите, как закрепляли микроконтроллер? В файле для корауса китайская arduino nano как-то не очень умещается.

    Можно пожробнее про прошивку через QMK? Весь день курю мануалы и не понимаю как прошиться. Скачал hex для ergodox, залил через arduino ide на контроллер, хочу проверить работоспособность. По идее, если замкнуть пины от ряда и от колонки то должен быть какой-то эффект?