/dev/AlphaSierra
611 subscribers
522 photos
9 files
413 links
Заметки про клавиатуры и прочее.

Канал с красивыми картинками @kbdAE
Download Telegram
ZMK мышка: анонс

Я давно хотел трекбол на ZMK, но не хотел использовать 3D-печатный корпус, поэтому пришлось встраивать ZMK в готовое устройство. Для этого нужно либо подходящее железо, либо разрабатывать свое, что существенно усложняет задачу: замена сенсора тянет за собой замену всей корзины шара. Писать драйвера для сенсора или портирование ZMK на китайский STM32 писать тоже не хотелось.
После долгого изучения оптимальным оказался набор nRF52840 + PAW3395, часто встречающийся в китайских игровых мышках. В трекболах же обычно стоит слишком бюджетное железо, поэтому выбор пал именно на мышки. Хотелось, чтобы любой человек с программатором за 200 рублей мог перепрошить свою мышку и получить изделие заводского уровня с открытой прошивкой. Пул подходящих моделей достаточно большой. Сейчас не работает только родной донгл, но функционируют USB (1000 Hz), BT/ZMK dongle (125 Hz) и ESB (1000 Hz).


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

#zmkMouse
👾24
/dev/AlphaSierra
ZMK мышка: анонс Я давно хотел трекбол на ZMK, но не хотел использовать 3D-печатный корпус, поэтому пришлось встраивать ZMK в готовое устройство. Для этого нужно либо подходящее железо, либо разрабатывать свое, что существенно усложняет задачу: замена сенсора…
ZMK мышка: поддерживаемые мышки

По идее подходит любая мышь на nRF52833/nRF52840 + PAW3395/PMW3610. Ищу видео с разборкой. Очень желательно, чтобы на плате были пады для прошивки (VDD | GND | DIO | CLK), иначе придется снимать чип с платы и прошивать отдельно. У VGN и VXE чип залит компаундом, похожим на эпоксидную смолу, поэтому снять его проблематично, но пады прошивки есть. Разная экзотика вроде дисплеев или оптических энкодеров усложняет полноценное портирование ZMK, но в базовом случае проблем быть не должно.
Ниже список, который мне удалось собрать.

* VGN f1 pro/pro max/moba

* VXE R1 Pro/R1 Pro Max

* LAMZU Atlantis Mini 4K / Maya

* Pulsar X2V2

* Hitscan Hyperlight

* Zaopin z2

Если можете его дополнить — свяжитесь со мной!


#zmkMouse
👾11
/dev/AlphaSierra
ZMK мышка: поддерживаемые мышки По идее подходит любая мышь на nRF52833/nRF52840 + PAW3395/PMW3610. Ищу видео с разборкой. Очень желательно, чтобы на плате были пады для прошивки (VDD | GND | DIO | CLK), иначе придется снимать чип с платы и прошивать отдельно.…
ZMK мышка: находим нужные пины

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

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

Был взят другой работоспособный чип nRF52840. Произведено измерение падения напряжения на всех его пинах, и полученные данные были занесены в таблицу. Значения заметно различались между разными группами пинов.

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

Естественно, таким образом измерять падение напряжения на пинах сенсора и других активных элементах не имеет смысла. Самое главное на этом этапе — найти хотя бы одну кнопку, на которую может быть назначен вход в режим DFU (Device Firmware Update).

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

Используя пады (VDD/DIO/CLK/GND), подключается программатор. При необходимости предпринимается попытка сохранения оригинальной прошивки. Затем производится стирание чипа и прошивка бутлоадера.

Следующий этап — использование данных о диапазонах возможных пинов для создания тестовой прошивки с прямым опросом пинов (direct pin). Прошивка должна записывать имя пина при его замыкании. Затем производится замыкание интересующих пинов.

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

На текущий момент пинаут известен для VGN F1 MOBA и VXE R1 Pro. Он является идентичным, предполагается, что схемотехника в других мышках может быть аналогичной.

#zmkMouse
👾6
/dev/AlphaSierra
ZMK мышка: находим нужные пины Как известно, существуют три способа выполнения задачи: правильный, неправильный и с помощью перебора и комбинирования предыдущих вариантов. Самый простой и правильный способ — снять чип с платы, прозвонить все пады под ним…
ZMK мышка: схемотехника

Написанное ниже актуально для изученных на данный момент VGN F1 MOBA и VXE R1 Pro.

Первичное питание МК и сенсора обеспечивается внешним импульсным DC/DC-преобразователем с выходным напряжением 2.0 В. У сенсора и МК также есть свои встроенные DC/DC-преобразователи. nRF52 использует низковольтный DC/DC №1.

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

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

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

Для зарядки АКБ используется TP4056. Сигнал об окончании цикла заряда (CHRG) с TP4056 поступает на дискретный вход МК для программной обработки и индикации. Текущий уровень заряда АКБ отслеживается путем измерения напряжения на АКБ через резистивный делитель, подключенный к АЦП МК.

На плате реализованы различные схемные решения для обеспечения защиты от повышенного напряжения.

На плате отсутствует защита от электростатического разряда (ESD).


#zmkMouse
👾3
Zed, Helix, Kakoune, Xi и Lapce

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

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

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

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

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

Одно время я сидел на Sublime Text. Он был действительно хорош. Потом вышли Atom и VS Code. По сравнению с Sublime они были очень медленные, у них было мало плагинов. В какой-то момент Atom исчез, а у VS Code заметно подтянули производительность, да и сообщество выросло. Теперь под него есть вообще все. А главное что все это синхронизируется между разными устройствами, и работает прямо в браузере. Так как он построен на веб-технологиях в нем можно сделать предпросмотр чего угодно, хоть 3д модели и видео крути. Но, конечно, все еще чувствуется, что он не очень быстрый.

Xi — поначалу звучали грозные заявления о том, что сейчас мы построим новый стандарт индустрии, но потом энтузиазм разработка закончился и проект свернули. Появился преемник Lapce. У него, к сожалению, очень маленькое сообщество, и не то чтобы он сильно продвинулся за 3 года, хотя в нём были интересные идеи. Документации фактически нет.

Kakoune — тоже вроде интересный проект, но у него маленькое сообщество, да и в целом мне как-то не зашёл интерфейс.

Helix — интересное переосмысление Vim. Многое работает приятно прямо из коробки. Есть подсказки прямо на экране, которые сильно упрощают первое знакомство. Но при этом нет поддержки non-Latin раскладок и плагинов.

Zed — действительно быстрый и приятный редактор. У него очень долгое время не было версии для Windows, но какое-то время назад её наконец добавили. Буквально пару дней назад добавили цветные скобки. Мне действительно нравится Zed, я активно использую его последнее время. Но отладчик не очень удобен, рефакторинг тоже не полноценный. Плагинов мало (практически нет), и то, что их надо писать на Rust, не позволяет надеяться, что их станет сильно больше. Отдельно хочется отметить, что Zed, написанный на модном языке, весь из себя такой производительный, не смог открыть 7 ГБ TXT-файл, а предпросмотрщик в Total Commander открыл его даже не задумываясь. Не то чтобы это часто нужно — просто забавный факт. Файлы в 2 ГБ Zed открывает без проблем.

Зайти сейчас на рынок текстовых редакторов очень сложно. Даже если у тебя есть какая-то уникальная функция, то, скорее всего, её со временем портируют в другие редакторы (как это произошло с Sublime). Наверное, самое важное для редактора — это возможность легко создавать плагины и большое сообщество. За последнее время можно отметить только появление VS Code. У него это получилось во многом из-за больших финансовых вливаний со стороны Microsoft и из-за использования доступностых веб-технологий. Я не вижу причин, почему Zed или Helix могли бы в ближайшее время занять существенную долю рынка.
👾16
/dev/AlphaSierra
Наброски #18: РИСАТЕНО-брелок Появилась идея сделать небольшую партию брелков с открывалкой для лимонада в виде РИСАТЕНО. По материалам: титан/тимаскус/нержавеющий дамаск/макуме. Хотелось бы конечно титан с авторским финишем, но пока я не уверен что наберется…
Наброски #19: донгл из Pebble

Вышли новые умные часы Pebble 2 Duo и они теперь с открытым исходным кодом по прошивке и железу. В качестве основного процессора там используется nRF52840. Так что в целом ничего не машает использовать их как ZMK донгл. Понятно, что это не очень оправдано экономически, но все же возможно.


#Наброски
👾5
Наброски #20: reset это gpio

Пин P0.18 на nRF52 может быть использован не только в качестве Pin Reset, но и как стандартный GPIO, в зависимости от состояния регистра CONFIG_GPIO_AS_PINRESET.

Если в бутлоадере отключить CONFIG_GPIO_AS_PINRESET и назначить на P0.18 кнопку DFU, то замыкание этого пина на землю при подаче питания будет переводить МК в режим прошивки. При этом P0.18 можно будет использовать как обычный GPIO в ZMK. Его можно задействовать для переключения BT-профилей, индикации заряда батареи или для перехода в глубокий сон.

Однако использование P0.18 в качестве DFU-кнопки накладывает ограничение на его использования для пробуждения МК из глубокого сна. Замыкание пина на землю в этом случае будет инициировать режим DFU вместо пробуждения. Если же пин используется в составе матрицы клавиатуры, то никаких проблем не возникает.

При использовании &bootloader в конфигурации ZMK можно программно снять с пина P0.18 функцию DFU. Это позволяет полноценно использовать пин, в том числе и для пробуждения микроконтроллера.

На n!n v2 пины P0.14, P0.16 и P0.18 замкнуты между собой, это сделано для упрощения разводки печатной платы.

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

#Наброски
👾4
Термосы

На улице уже достаточно холодно, поэтому можно поговорить про термосы.

Есть два основных мировых производителя термосов — Stanley и THERMOS. В России также существуют два крупных производителя: АМЕТ и Арктика. Они, конечно, сохраняют меньше сохраняют тепло, но цены вполне сопоставимы. Что касается цветового разнообразия и возможностей кастомизации, западные производители предлагают гораздо больше свободы выбора. Впрочем, у "Арктики" есть весьма приятные дизайны, например, в серии "Этно", хотя это скорее термокружки.

Термосы объемом меньше 1 литра довольно бесполезны — стоит ли носить с собой такую тяжесть ради пары чашек чая на природе? Чем больше объем, тем дольше сохраняется тепло. У термоса обязательно должна быть ручка для удобного наливания и переноски. Пробка только винтовая, никаких кнопок — они ненадежные и непрактичные. Сегодня большинство нормальных термосов позволяют налить напиток, повернув пробку на пол-оборота.

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

Отечественные производители готовы продавать буквально каждую резиночку отдельно. У THERMOS с этим тоже неплохо, хотя чаще детали продаются блоками. Ассортимент доступных запчастей у Stanley самый скромный, но он, все же, присутствует.

И, конечно же, все эти новодельные термосы не идут ни в какое сравнение с китайским термосом бренда "Олень" со стеклянной колбой.
👾16
/dev/AlphaSierra
Термосы На улице уже достаточно холодно, поэтому можно поговорить про термосы. Есть два основных мировых производителя термосов — Stanley и THERMOS. В России также существуют два крупных производителя: АМЕТ и Арктика. Они, конечно, сохраняют меньше сохраняют…
Stanley Classic 1.4L

У Stanley наблюдаются определенные проблемы с модельным рядом. Есть две очень похожие серии Adventure To-Go и Classic. Из отличий разве то что у Classic есть ручка, точнее даже два варианта ручки на выбор, хотя конструкция одинаковая, заявлено разное время удержания тепла. Я, конечно же, выбрал Classic в веселой расцветке.

По большей части термос мне нужен для чая. Некоторые предпочитают термосы со встроенным ситечком для чая, но Stanley такую опцию не предлагает. Отдельные ситечки, которые просто бросаются в колбу и звенят на каждой кочке, я даже не рассматривал. Более того, даже штатно закрепленное ситечко бесполезно: после заваривания чая термос все равно требует тщательной промывки, и есть в нем ситечко или листья прямо в колбе плавают — не имеет значения. Гораздо удобнее хранить в термосе только кипяток, а сам чай заваривать в чашке — так и вкус насыщеннее, и термос остается чище.

К самому изделию нареканий практически нет, можно отметить лишь отсутствие защитных резиновых покрытий на дне крышки-кружки и на дне колбы. Из-за этого они могут скользить на некоторых гладких поверхностях и царапаться. Я решил эту проблему, наклеив на дно стикеры. В остальном термос показал себя отлично: он очень долго держит тепло.
👾7
XML vs JSON vs YAML vs TOML

Довольно удивительно видеть, что в новых проектах продолжают использовать формат JSON. Ещё более удивительно видеть его в Zed, который написан на Rust, при том что Rust продвигает формат TOML.

Многие ошибочно считают, что JSON человекочитаемый формат, но это справедливо разве что по сравнению с XML. Существуют два отличных формата — YAML и TOML, — которые лишены бессмысленного нагромождения скобочек и тегов, а также поддерживают комментарии. Но, несмотря на наличие парсеров для обоих форматов в любом современном языке программирования, разработчики с упорством, достойным лучшего применения, продолжают везде использовать JSON.
👾17
Слепые шахматы

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

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

Мы создавали игру только для себя, не рассчитывая на успех. Но теперь в нее играют миллионы, проводятся международные турниры, а Международная шахматная федерация включила Слепые шахматы в официальный список дисциплин.
👾14
/dev/AlphaSierra
Наброски #20: reset это gpio Пин P0.18 на nRF52 может быть использован не только в качестве Pin Reset, но и как стандартный GPIO, в зависимости от состояния регистра CONFIG_GPIO_AS_PINRESET. Если в бутлоадере отключить CONFIG_GPIO_AS_PINRESET и назначить…
Наброски #21: reset это gpio #2

Выложил подробный гайд: какие файлы нужно менять, чтобы сделать P0.18 обычным gpio пином.

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

#Наброски
👾4
ZMK мышка: проект UFA

Опубликовал документацию со ссылками на все необходимое для перепрошивки мышек на ZMK. За прошедшее время уже проверено 3 мышки: VGN F1 MOBA / VXE R1 Pro / Zaopin z2.

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

#zmkMouse
👾4
Keychron выпускает низкопрофильные клавиатуры на zmk

Линейка состоит из 3х моделей: b1, b5, b6. Последние две близки к 100% и поэтому интереса не представляют, а вот b1, куда интереснее, она очень похоже на клавиатуру среднего ноутбука. А за счет zmk можно попробовать сделать какую-то вменяемую раскладку. Клавиатура использует nRF52840. Исходники: arm и shields.

Конечно очень хотелось бы чтобы они выпустили 40%, да еще и на ulp свитчах, вместо ножничного механизма, но даже сейчас это выглядит довольно интересно за свои $40.
👾16
/dev/AlphaSierra
Keychron выпускает низкопрофильные клавиатуры на zmk Линейка состоит из 3х моделей: b1, b5, b6. Последние две близки к 100% и поэтому интереса не представляют, а вот b1, куда интереснее, она очень похоже на клавиатуру среднего ноутбука. А за счет zmk можно…
Keychron zmk 2.4G dongle

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

В ZMK (модуль ESB Split Transport) предполагается, что донгл является мастер-устройством. Это порождает ряд проблем: например, вы не можете просто подключить кабель к клавиатуре и продолжить работу, так как она остается слейв-устройством.

Keychron же использует другой подход, характерный для большинства стандартных беспроводных решений: мастер-устройством выступает сама клавиатура. Она просто переключает выходной поток между интерфейсами USB, Bluetooth или Dongle.

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

#ZMKdongle
👾5
/dev/AlphaSierra
Vortex Core #2: поколения В данном посте я не выделяю RGB версию в отдельное поколение, а просто сравниваю изменение физической раскладки семейства Core. Внешне две версии отличались только цветом плейта, у RGB он белый, а обычной черный. Несмотря на то…
Vortex Core Plus

Спустя 9 лет Vortex выпустили обновленную версию Core. Теперь она беспроводная, работает на батарейках и поддерживает VIA.

Если оригинальный Core был максимально компактной безрамочной MX-клавиатурой, то в новой версии появился спорный «нарост» над верхним рядом клавиш, добавился наклон 5°, а в качестве переключателей теперь используются Gateron KS-33. Если у старого Core были стильные оверледженд кейкапы, то у нового — максимально унылые капы с базовыми символами. Впрочем, судя по внешнему виду, кейкапы со старой версии вполне можно переставить на новую.

Из положительных изменений: добавили шумоизоляцию (пенку) между плейтом и платой, а также между платой и корпусом. На смену Micro-USB наконец-то пришел USB Type-C.

Но в целом целесообразность покупки Vortex Core Plus вызывает вопросы. За те же деньги можно взять KBDfans Agar Mini, где фрезеровка интереснее, есть поддержка EC-переключателей, оверледженд-капы и даже поддержка ZMK (только в MX-версии).

#VortexCore
👾6