Восстановление IBM Model M 122

Апгрейд стоковых клавиатур. Замена переключателей, контроллеров, проводов, корпусов и колпачков. Кастомные клавиатуры и изготовление устройств ввода с нуля.
Ответить
Аватара пользователя
quartz64
Профессионал
Сообщения: 191
Зарегистрирован: 03 авг 2017, 13:06
Репутация: 42
Откуда: Москва
Контактная информация:

Восстановление IBM Model M 122

Сообщение quartz64 » 07 сен 2018, 16:28

Полный альбом лежит на Imgur. Продублирую тут самое основное, вдруг пригодится кому-нибудь. Постоянно отвлекался на другие клавиатуры, только недавно удалось заняться этой.
Ещё в апреле приехали ко мне три клавиатуры из Италии. Среди них вот такая:
Изображение
Что любопытно — клавиатуру уже официально ремонтировали. Поверх первоначального стикера на корпусе был наклеен другой, просто с партномером, под ним — 1989 год, партномер 1394317. На другом стикере, который на пластине стоит 1996 год. Не знаю, где её эксплуатировали, но клавиши пришлось отмачивать три дня, затем каждую чистить содой.
Пробел сделан из ABS, как нам многих Model M британского производства. Его удалось отбелить, да и пожелтел он не сильно, только поцарапан слегка, но я всё равно заменил его на PBT юникомповский.
Вскрыл, как обычно, и обнаружил следы жидкости (эспрессо 20-летней выдержки). Пластину зачистил щёткой, мембрану отмыл спиртом — следов окисления не было нигде, кроме одной дорожки. Приклеил на скотч кусок тонкого медного провода. Медной ленты под рукой не было, но площадь контакта тут достаточно большая, так что можно рассчитывать на то, проблем не будет:
Изображение
Родной контроллер достался другой M-122, первого поколения, так что нужно было изготовить замену. Вместе с тремя клавиатурами продавец прислал Teensy 3.2. Казалось бы, это то, что нужно. Отпаял разъёмы для мембраны (их можно купить в Mouser, по 2-3 доллара, но незачем, когда родные есть), разместил всё на чипдиповской макетной плате (не смог найти близкую по габаритам на Алиэкспрессе). Испугавшись сложностей, связанных с поддержкой ARM в TMK/QMK, решил начать с Kiibohd. Там всё просто и удобно, отладочная консоль есть через виртуальный COM, можно координаты нажатой клавиши посмотреть. Но, во-первых — оказалось, что как-то криво работает kiibohd с бездиодной матрицей, при возникновении ghosting'а почему-то сбрасываются все нажатые клавиши, но самое главное — заточено там всё под настройку через web-интерфейс.
Надо переходить на привычный QMK, но ARM-контроллеры поддерживаются там через ChibiOS и не полностью: не работает bootmagic и некоторые фичи вроде tap dance. Из-за моей криворукости у меня не заработало вообще ничего, и плата на пару месяцев просто отправилась в ящик, Teensy 3.2 я потом отпаял и отдал знакомому. Потом увидел в блоге 40% club наглядный пример клавиатуры на дешёвой ARM STM32 плате Blue Pill под TMK, посмотрел характеристики (GPIO хватает под матрицу 20x8) и решил повторить авантюру. Заказал на Aliexpress для экспериментов пару плат, они стоят смехотворные $2.5. Там нужно было в цепи USB перепаять один резистор (это врождённый дефект всех Blue Pill). Прошил загрузчик STM32duino таким же копеечным клоном программатора ST-Link, собрал на макетке однокнопочный пример — работает! Загрузчик запускается не при нажатии кнопки на плате, а просто на несколько секунд при подаче питания. Процесс прошивки даже упростился: запускаем скрипт, он ждёт появления устройства с определённым ID, вытаскиваем USB и вставляем снова.
Изображение
Припаял его на плату, развёл, прошил — клавиатура выдаёт кучу повторяющихся символов. Стало понятно, что задействовал неправильные ноги. Заглянул в схему, так и есть — на B3, B4 и A14 висит JTAG. Нашёл, как отключить (напоминаю, что я не программист и в C практически беспомощен), и всё завелось. Оказалось только, что пинов теперь хватает впритык под матрицу, светодиоды уже не добавить. Один день ушёл на то, чтобы поправить раскладку и портировать нужные мне макросы из QMK в TMK. Ветку разместил на GitHub. На следующий день перенёс всё в QMK (там удобнее макросы и всякие трюки с назначением двух функций на клавишу), всё собралось с первого раза, вот только не работает, так что пока клавиатура живёт под TMK.
Урок — ARM+TMK работает, стоят Blue Pill и Maple Mini в сравнении даже с неоригинальным Teensy 2.0++ сущие копейки, так что если нужно больше 24 GPIO, то Blue Pill вполне можно использовать. С QMK непонятно пока что. Портировал вчера, всё скомпилировалось с первого раза, вот только не работает.
Потестирую клавиатуру некоторое время, но потом скорее всего продам. Осталось только разъём Type C поставить в корпус. Обилие выделенных клавиш под макросы чрезвычайно удобно, но душа лежит больше к Ergodox.
Изображение

Аватара пользователя
NickSin
Мастер
Сообщения: 444
Зарегистрирован: 12 апр 2017, 21:30
Репутация: 46
Откуда: Кронштадт
Контактная информация:

Re: Восстановление IBM Model M 122

Сообщение NickSin » 10 сен 2018, 15:58

Спасибо за очередную ретроспективу с современным новшеством)
Я заметил, что пару ссылок немного не так сделаны и не удается перейти на оригинал.
А чего так хочется на QMK ? Разве в TMK не достаточно функционала для того, чтобы замапить любой макрос?

Аватара пользователя
quartz64
Профессионал
Сообщения: 191
Зарегистрирован: 03 авг 2017, 13:06
Репутация: 42
Откуда: Москва
Контактная информация:

Re: Восстановление IBM Model M 122

Сообщение quartz64 » 11 сен 2018, 13:11

NickSin писал(а):
10 сен 2018, 15:58
Я заметил, что пару ссылок немного не так сделаны и не удается перейти на оригинал.
Наверное, http://www.40percent.club/ побилась из-за символа процента.
NickSin писал(а):
10 сен 2018, 15:58
А чего так хочется на QMK ? Разве в TMK не достаточно функционала для того, чтобы замапить любой макрос?
Ради унификации макросов с Ergodox. Функционал в итоге тот же, но обвязка отличается. QMKшный SEND_STRING позволяет повысить читаемость кода макросов за счёт компактности. Пример (переключаемся на русскую раскладку по Ctrl+0, набиваем Compose-последовательность для левых и правых «ёлочек», ставим курсор между ними):

Код: Выделить всё

TMK: MACRO( D(LCTL), T(0), U(LCTL), T(RALT), D(LSFT), T(COMMA), T(COMMA), U(LSFT), T(RALT), D(LSFT), T(DOT), T(DOT), U(LSFT), T(LEFT), END )
QMK: SEND_STRING(SS_LCTRL("0")SS_TAP(X_RALT)"<<"SS_TAP(X_RALT)">>"SS_TAP(X_LEFT));
Ну и всякие трюки вроде Leader Key и Layer Tap-Toggle.

Аватара пользователя
NickSin
Мастер
Сообщения: 444
Зарегистрирован: 12 апр 2017, 21:30
Репутация: 46
Откуда: Кронштадт
Контактная информация:

Re: Восстановление IBM Model M 122

Сообщение NickSin » 12 сен 2018, 10:10

quartz64 писал(а):
11 сен 2018, 13:11
Наверное, http://www.40percent.club/ побилась из-за символа процента.
Может быть. Просто кто-то может быть не в курсе, о каких стайтах идёт речь)
quartz64 писал(а):
11 сен 2018, 13:11
Ради унификации макросов с Ergodox. Функционал в итоге тот же, но обвязка отличается. QMKшный SEND_STRING позволяет повысить читаемость кода макросов за счёт компактности. Пример (переключаемся на русскую раскладку по Ctrl+0, набиваем Compose-последовательность для левых и правых «ёлочек», ставим курсор между ними):
А вот в чем дело, тогда понятно)

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей