Comments 76
А почему она должна стоить $1000? Делать подобные клавиатуры не сложнее чем обычные в промышленных условиях. Стоить они должны столько же сколько стоят обычные механические клавиатуры. Другой вопрос, как потом это продать. Нужно ещё убедить людей, сломать их стереотипы и доказать, что вот эти два непонятных куска пластика со странно расположенными кнопками эргономичнее чем их родная "печатная машинка". :)
За 1000$ — это как телефоны Vertu. Дорого, стильно, модно, эксклюзивно.
"Два куска пластика" при желании можно купить и дешевле $100,
А эргономика у каждого своя. В нее нельзя поверить. Ее можно только почувствовать на практике.
Вот я никогда не приму "два куска пластика". Такой клавиатурой ведь совершенно невозможно пользоваться одной рукой. А иногда надо (другая рука в это время что-то держит, например, саму клавиатуру).
А где вы увидели ценник в 1000 долларов? За тысячу можно наверно что-то невероятное по качеству собрать.
Из сплитов самые дорогие и охуенные клавы, типа Ergodox EZ, Moonlander, etc, стоят в районе 300-350$. Цена во многом обусловлена небольшим размером партий, гарантией и поддержкой на несколько лет, и использованием этичного труда (а не низкооплачиваемых рабов в Азии), который недёшево стоит.
Если самому собирать, то можно лёгко уложиться в 100-180$ за конфетку, на плате. Платы стоят долларов 20, микроконтроллеры копейки, корпуса от 15 до 50-60 (в зависимости от охуенности), набор свитчей 20-25, набор кейкапов тоже в районе 20-25. Ещё можно добавить hotswap sockets за 5-10 долларов, чтобы свитчи можно было на горячую заменять без проблем. Можно сэкономить на цене, если самостоятельно изготовить простой корпус за копейки.
Да я не на тот комментарий ответил. Хабр весьма глючил тогда, и я, видимо, не заметил, что reply оказался под другим комментарием. Простите меня :)
Я отвечал вот на этот комментарий:
https://habr.com/ru/post/515246/#comment_21958434
Можно купить всякие наборы с платой готовой, корпусом, куда остается только припаять свитчи и диоды. Стоят такие наборы по 30-40-50 долларов/евро.
2. HDMI — кабели и разъемы для клавиатуры — это как экскаватор в детской песочнице. Я уже молчу о том, что они весьма габаритные, а HDMI — кабели сами по себе гнутся просто ужасно и не предназначены для того, чтобы их постоянно гнули.
3. А с этой клавиатурой работать-то хоть можно? А то я за 25 лет к обычной клавиатуре привык и она меня во всем устраивает. Главное — не покупать дешевое.
4. Разъясните попутно, зачем носить клавиатуру от PC в рюкзаке (!!!!!!!!!!!!!!???????????) Если уж так приспичило, есть ведь гибкие клавиатуры, их хоть в трубочку можно сворачивать…
- Использована однокристалка ATmega32U4 со встроенным контроллером USB.
- Если посмотреть на хреновые HDMI кабели, то они помягче хороших, а в данном случае их электрические характеристики абсолютно не важны.
- -
- Если крепко подсесть на такую нестандартную раскладку, то скорее всего ее действительно придется носить с собой везде, где приходится работать за компьютером.
Клава — усб, hdmi — для соединения половинок, один из самых удобных в данном случае разъемов, кабели бывают и очень гибкие, работать с этой клавиатурой можно, носить с собой иногда очень полезно, потому что я вот ноут ношу и клавиатуру к нему иногда, из-за того, что на маке нет нет инсерта и прочих пейджапов, а нужно бывает.
А гибкую клавиатуру надо свернуть в трубочку и забить тому, кто ее придумал в попочку.
ЗЫ. У вас знаки препинания рассыпались там в комменте
Если уж так приспичило, есть ведь гибкие клавиатуры, их хоть в трубочку можно сворачивать…
Была у меня такая. Жутко неудобная штука, поскольку в угоду гибкости принесено в жертву удобство использования: даже в лучших вариантах клавиши болтаются на гибкой основе как..., а в худших клавиши сделаны заодно с основой из того же материала, что делает само нажатие на клавишу некомфортным и нестабильным (жмешь, а символ не вводится, нужно четко на середку клавиши давить, а поскольку клавиша естественным образом болтается, то попасть не всегда получается).
Уж лучше компактная с совершенно нестандартной и непривычной раскладкой, чем гибкая.
Оргстекло, если есть возможность, лучше резать лазером. Такие детали, как в статье, любая контора, занимающаяся лазерной резкой, изготовит по вашему вектору за 10 минут и возьмет недорого (скорее всего).
В качестве безумной идеи — добавить под левый мизинец отдельную клавишу Ctrl+Alt.
P.S. А в Windоws есть комбинация Ctrl+Alt+Tab.
Вы упускаете главную мысль — это полностью программируемая клавиатура. Вы можете любые раскладки и расстановки клавиш сделать себе, настроить несколько разных слоев с разным расположением клавиш — что угодно вообще сделать. Например, завести слой где Ctrl+Alt будет прямо под большим пальцев, вместе с парочкой других распространённых префиксов.
Смазка для переключателей – она уменьшает шумность и улучшает тактильные ощущения при печати в лучшую сторону. Коротко о том, как смазывать свитчи:
Если вы решили пойти по пути улучшения тактильных характеристик, то почему вы выбрали обычные дешевые гатероны? Ведь есть множество вариантов, те же тактильные и бесшумные Aliaz или например тихая серия тех же gateron — gateron silent
p.s. спасибо за статью, было интересно
Он: — Нравится?
Я: — Вот эти практически без звука и дают слабый тактильный эффект щелчка.
Он: — Так нравится или нет?
Я: — Да.
Он: — Бери такие же и не морочь мне голову.
Так у него дома я 1 мая все детали и заказал со своего смартфона. Не я выбрал, за меня выбрали.
Спасибо вам огромное за такую подробную статью! Разожгли во мне желание сделать себе нечто подобное. Как разработчику ПО, мне бы очень хотелось иметь такой инструмент. Особенно впечатлила возможность легко и очень гибко менять назначение клавиш!
С такой сильной кастомизацией уже из дома без такой клавы не выйдешь :)
Отличная стая!
Тоже захотелось такое попробовать.
Сейчас пользуюсь 65% клавой с brown cherry свичами. После хорошего уже не хочется пользоваться обычным офисным ширпотребом. Это и клавы и мышки касается.
Вставлю свои сумбурные пять копеек
1. Вместо решения с HDMI кабелем можно взять вторую ардуину (мы их промикрами в сообществе называем) и соединить их так, как обычно делают на сплит клавиатурах — понадобится всего 3 контакта и достаточно будет аудиокабеля. В документации QMK всё это есть. Благо стоят они копейки и не сильно дороже разъёмов hdmi. Дополнительный плюс — в случае чего можно будет просто подключить usb провод в промикру на другой половине и продолжать работать. Плюс актуален, ведь у этих контроллеров есть неприятная особенность — разъём держится на соплях и его легко можно оторвать неловким движением провода (чтобы снизить вероятность этого — используй провода с разъёмами на магнитах и держи стратегический запас контроллеров)
2. Если есть возможность — лучше провода припаивать не прямо к ножкам свитчей, а использовать сокеты от kailh (гуглить kailh hot-swap sockets). В результате получаем сплошные плюсы: паять проще (контактные площадки там больше), ножки у свитчей остаются чистыми, а также появляется возможность эти самые свитчи без пайки менять. Сокеты замечательно держатся на ножках за счёт силы трения — у меня больше одной клавиатуры так собрано и нареканий нет.
Так не будет работать переключение слоёв между половинками.
Переключение слоёв крайне удобно для маленьких сплитов. У меня на Corne половина пунктуации, стрелки, цифры, F-клавиши и ещё много чего на слоях.
Иметь свои модификаторы слоёв на каждой половине неудобно.
Это модификация проводка между клавиатурами, а не 2 отдельных клавиатур со своим подключением к компьютеру.
У меня походная Corne готовится как раз с модулями от Joric, к слову.
Одновременно иметь соединение с компьютером и с другой половиной гораздо сложнее, я не уверен, что nRF52 так может.
Ну и смысла особого в этом нет, раз уж канал между половинами есть.
Для чего тут атмега? https://github.com/joric/nrfmicro/wiki
Что вообще в схеме с синхронизацией между половинами должно делать второе подключение к компьютеру по проводу? Показывать в ОС вторую клавиатуру и ловить баги?
Второго подключения тоже нет, только одно. Поддерживать один канал к компьютеру и свой внутренний канал между половинками (неважно проводной это канал или беспроводной) полностью забота такой сплит-клавиатуры. Как две клавиатуры их подключать нельзя, т.к. невозможно синхронизировать слои на двух разных логических клавиатурах без клиентского софта.
Поддерживать второй радиоканал и не жрать батарею при этом умеют все чипы (central+peripheral), nRF5x уж точно. Для этого можно использовать или bleuart как в QMK-nrf52, или свой собственный сервис, как в bluemicro. (В проводном режиме для коммуникации достаточно ОДНОГО провода для duplex serial, плюс питание.)
На этих чипах кстати кроме хардкорной сишечки можно гонять circuitpython и писать прошивку на питончике, что довольно прикольно, при правильном подходе вся «прошивка» помещается на страничку и даже вроде как-то работает github.com/joric/nrfmicro/wiki/Circuitpython
У вас очень "дружелюбное" сообщество, статью закидали ссаными тряпками и сходят пеной на всех кто с ней приходит.
А как сокеты закрепить в данном случае, когда нет платы?
Не смешиваются одновременные нажатия в одном столбце, в одной строке, в квадрате 2х2 три нажатия соответствуют тому, что нажато?
Какая частота опроса в прошивке ~= задержки при вводе?
Вопрос по существу — у меня есть bluepill (stm32f103) плата и для неё доступна такая же настройка слоёв и клавиш «на лету» в QMK Toolbox или нет?
Вместо Blue Pill лучше использовать Black Pill (либо сверхдешёвые noname, либо от Robotdyn). Нет проблем с неправильным номиналом резисторов, и не попадались платы на клонах STM.
Для Blue Pill и других плат на STM32F103C8T6 см. подкаталог bluepill.
Не забудьте про резистор и про то, что на A11 и A12 висит USB.
Загрузчик удобно использовать STM32duino. Несколько видов HID-загрузчиков у меня не заработало почему-то.
www.keyboard-layout-editor.com/#/gists/853291256ec0f234fe6fb904c0697797
Зачем долго объяснять какой диод куда припаивать, если проще всего это показать схемой?
Принципиальная схема для того и придумана, чтобы объяснить что с чем соединять, и справляется она с этой задачей куда лучше текстового описания.
Предупреждение – 90 сжатых картинок: я постарался написать статью максимально «разжеванной» — понятной максимально широкому кругу лиц, в том числе — технически не подкованным и совершенно не разбирающимся в программировании.
Не вижу никакой корреляции между программированием и выполнением электрического монтажа. Это совершенно непересекающиеся друг с другом виды деятельности.
При чем тут программирование, я не понял вообще. Нужно скачать программу и из неё прошить ардуину. Все. Где тут программирование?
А фраза насчет «максимально понятной технически не подкованным» содержит в себе лукавство. Совершенно технически не подкованный в этой сфере условный кочегар сельской котельной и не будет такие вещи делать. Повторять это будут как раз те, кто так или иначе «подкован».
Я понимаю, что меня сейчас заминусят, но я это скажу. Выросло поколение «разработчиков», которые умеют лишь составить что-то из готовых «кирпичиков».
В комментах был вопрос про вторую ардуину. Тут не нужна вторая ардуина. Тут достаточно примитивной ATtiny2313-20PU в DIP-корпусе и кусочка фольгированного текстолита на котором от силы за полтора часа можно дремелем вырезать дорожки платы, под шаг 2,54 это не по силам только подслеповатому алкоголику с трясущимися руками.
Соединить «ведомую» часть клавиатуры с «ведущей» тремя проводами — питание, земля и TXD в сторону ведущей части.
Для задачи опроса кнопок хватит скорости передачи 1200 бит/с, на такой скорости можно и кварц не ставить, внутреннего генератора достаточно.
А для «ведущего» контроллера написать свою прошивку для такой элементарной задачи, как опрос матрицы кнопок и отправки пакета в компьютер можно за неделю совершенно не напрягаясь. В ней же и предусмотреть получение данных от второго контроллера. И выложить в статье готовую прошивку для «технически неподкованных».
Выросло поколение «разработчиков»
На неправильное поколение ещё Сократ жаловался 2,5 тысячелетия назад. Совсем не обязательно всё сводить к двум категориям: или ты глубоко погружаешься в предмет и через несколько лет становишься настоящим разработчиком, или у тебя вообще не может быть потребности собрать эту железку.
Цель статьи, насколько я могу судить, заключается в том, чтобы дать возможность дилетанту решить вполне определённую задачу — сделать клавиатуру под себя. Точка. Не изучить досконально в процессе цифровую схемотехнику и программирование микроконтроллеров, а сделать клавиатуру и начать её пользоваться.
Именно для этого предназначены готовые блоки. Зачем нужен онлайн-генератор плейтов, если любой настоящий разработчик напишет соответствующий скрипт для своего CAD за пару часов? Зачем нужен онлайн-генератор прошивок, если QMK можно собрать локально? Зачем вообще нужен QMK, если можно «написать свою прошивку для такой элементарной задачи, как опрос матрицы кнопок и отправки пакета в компьютер можно за неделю совершенно не напрягаясь»? Люди, толком не умеющие готовить, пользуются рецептами для мультиварок. Люди, не умеющие пользоваться ручным фрезером, собирают мебель из Икеи.
1. Установить программу и прошить из-под неё ардуину.
2. Установить среду разработки ардуино и из-под неё прошить предоставленный автором скетч.
По-моему, ни один из них не требует никакого знания. Кабель HDMI стоит примерно столько же, сколько и вторая ардуина, а удобство подключения тонким гибким кабелем вместо жесткого HDMI очевидно.
Вы кого под «дилетантом» понимаете?
Всех перечисленных и себя в первую очередь. Например, у меня весьма приблизительные представления об архитектуре ARM и о работе ChibiOS. Я не разработчик железа и не программист. Прикрутить к ChibiOS поддержку нового устройства или написать с нуля собственную клавиатурную прошивку — для меня задача не то чтобы непосильная, но я просто не вижу необходимости во всё это погружаться, когда настоящие разработчики для таких дилетантов, как я, всё красиво обернули и задокументировали.
Я могу себе представить, что для кого-нибудь другого, находящегося на начальном этапе, столь же тяжело и, возможно, вовсе не нужно разбираться с git, msys и C — нужно быстро через GUI удалённо сгенерировать прошивку под произвольную клавиатурную матрицу и собственную логическую раскладку. Появится необходимость (например, нужно будет сделать правильный сплит или наворотить функционал, недоступный через веб-генератор) копнуть глубже — дилетант соберет QMK из исходников.
Установить среду разработки ардуино и из-под неё прошить предоставленный автором скетч
Зачем автору изобретать велосипед и писать собственную клавиатурную прошивку в рамках задачи «дилетант для дилетантов о сборке собственной клавиатуры», когда есть QMK? Это же не «дилетант для дилетантов об основах программирования МК», а реализовать в одиночку хотя бы малую часть функционала (см. Software Features в документации) будет очень сложно.
Кабель HDMI стоит примерно столько же, сколько и вторая ардуина, а удобство подключения тонким гибким кабелем вместо жесткого HDMI очевидно.
Да кто ж спорит-то. Тут просто дело в том, что веб-генератор не поддерживает такие сплиты или в том, что в самом QMK поддержку сплитов только недавно оформили по-человечески, ещё год назад там сложночитаемый для новичка лес из костылей был.
настоящие разработчики для таких дилетантов, как я, всё красиво обернули и задокументировалиЕсли это действительно «настоящие разработчики», то почему бы им было не избавиться от развязывающих диодов на каждую кнопку? Да, я помню, что ATmega не имеет необходимого для этого режима выхода с открытым стоком. Но во первых на ATmega свет клином не сошелся, а во вторых это вполне обходится и на ATmega, если для сканирования переключать не состояние вывода, а его режим.
А расскажите, как можно избавиться от диодов и не потерять корректную регистрацию нескольких одновременно нажатых клавиш?
А вообще Ваш вопрос поначалу мне показался тривиальным, но при попытке сформулировать решение поставил в тупик, посыпаю голову пеплом.
Люди, не умеющие пользоваться ручным фрезером, собирают мебель из Икеи.А ещё есть люди, которые умеют пользоватся фрезером. Но не имеют места для фрезера и стола.
«написать свою прошивку «ведущего» контроллера (+ получение данных от второго) для такой элементарной задачи, как опрос матрицы кнопок и отправки пакета в компьютер»
?
А где можно найти трекпоинты на подобие тех что есть в среии ноутов thinkpad?
Просто хочется встроить один такой в свою клаву, посередине, и без него считаю делать клаву под себя нецелесообразно.
Вот честно, самый сложный момент для меня было понять, что и куда вы там припаивали.
Соглашусь с человеком, что именно ВОТ такой картинки и не хватает. ¯\_(ツ)_/¯
Спасибо огромное!
Собираю сейчас свою клавиатуру, и Ваша статья очень помогла прояснить некоторые моменты.
Даже накатал небольшую заметку на эту тему.
В формате ч2ч (чайник для чайника), про понятия, которыми эта прошивка оперирует.
Сейчас передо мной встал вопрос русификации прошивки.
И т.к. не хочу использовать QWERTY, а взять что-то более связанное с частотностью в английском языке.
А это вносит некоторые коррективы, с которыми надо разобраться.
Не счёт публикации проделанной работы на хабре — вопрос, интересен ли будет очередной сплит с некоторыми нюансами?
А tg-сообществе klava-org — да, опубликуюсь конечно.
Если же сделаю backtype (есть такой проект), то — да. Но для него пока не находится подходящих «свичей».
Даже накатал небольшую заметку на эту тему
Неплохо, но можно было бы проще. С привязкой к QMK терминология выглядит так:
- Matrix — матрица клавиш, ряды и колонки. На неиспользуемые позиции в матрице вставляем KC_NO.
- Layout — физическая раскладка. Определяет, где физически на клавиатуре расположены клавиши из матрицы. По физической раскладке мы можем узнать, например, что клавиши в верхнем левом углу подключена к 3-му ряду и 6-й колонке.
- Keymap — логическая раскладка. Описывает, какие сканкоды выдают клавиши из физической раскладки.
Плюс вам в карму за отличный гайд. Сам подумываю такое собрать, поэтому ваша статья очень кстати.
Подробная инструкция по изготовлению сплит клавиатуры на основе ATmega32U4. Аналог Iris / Jiran своими руками