Подключаем старую венгерскую клавиатуру Videoton по USB

в 6:50, , рубрики: stm32, USB-HID, vdn 52521, videoton, ненормальное программирование, старое железо

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

Videoton VDN 51521 (TYP: 52501)
Videoton VDN 51521 (TYP: 52501)

По всей видимости, от какого-то венгерского терминала Videoton. Весу, надо сказать, она немалого и кнопки нажимаются так же, как и в IBM Model M - мягко, приятно, с легким щелчком. Если я правильно понял, то клавиатура — на датчиках Холла, а может быть и нет, да и не особо важно. Разрыв не затуманенного БК'шками 0010-01 мозга начинается при внимательном взгляде на раскладку клавиатуры - русская тут привычная ЙЦУКЕН, а вот английская - фонетическая JCUKEN, что лично меня сперва поставило в ступор. Для набора какой-либо простой команды, типа DIR, скорость печати упала примерно до одного символа в пол-минуты. Потом я конечно понял чит - произносить про себя английское слово, в мозгу его транслитирировать, и уже как-бы печатать его по-русски ориентируясь на русские буквы - тогда скорость печати немного возрастает. Вообщем, забавная штука и пора бы уже её подключать к компу. Гугл про распиновку разъема конечно ничего не знает, ровно как и не знает от какого конкретно она терминала, поэтому вскрываем и смотрим кишочки:

Без верхней крышки
Без верхней крышки
Провод уходящий на разъем
Провод уходящий на разъем

Хорошо, что без всяких микропроцессоров, просто стандартная логика, значит не надо подключать логический анализатор. То, что там параллельный, а не последовательный интерфейс, было понятно с самого начала, по количеству контактов в разъеме. Значит, срисовываем на глаз приблизительное место соединения кабеля с клавой:

Приблизительная схема
Приблизительная схема

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

#define VDN_BREAK               0x01
#define VDN_ESC                 0x59
#define VDN_OFFLINE             0x41
#define VDN_ONLINE              0x11
#define VDN_MPON                0x19
#define VDN_PAR                 0x21
#define VDN_ROLL                0x29
...skip...

Закапываем обратно комп с LPT и дельфями туда, где взяли. Берем какой-нибудь микроконтроллер STM32 с USB-device на борту и какую-нибудь чистую плату, с посадочным местом для этого микроконтроллера. Вкуриваем немного мануал по этому STM32, находим у него ноги, которые толерантны к 5V TTL логике, их и используем для подключения к нашей пяти-вольтовой клавиатуре. Далее паяем контроллер на плату, колхозим что-нибудь с питанием для микроконтроллера. Да, например, с помощью обычного линейного стабилизатора 3.3V, не долго думая. Соединяем все небольшим количеством МГТФ, немного вкуриваем про дескрипторы HID-устройств, рисуем в CubeMX ножки и сразу включаем USB. Затем чуть-чуть разбавляем говнокод, сгенерированный CubeMX, своим говнокодом, и включаем конструкцию:

Вон на той белой платке stm32 перебирает строки/столбцы
Вон на той белой платке stm32 перебирает строки/столбцы

Вот и всё, получили стандартную USB-клавиатуру с интересной английской раскладкой, винтажным внешним видом, мягким ходом клавиш и прикольными щелчками:

Можно поставить на рабочее место и попросить кого-нибудь подретактировать какой-то текст - реакция бесценна. Правда не особо придумал, на что в USB клавиатуре забиндить кнопки типа OFF LINE, ON LINE, MP ON, PAR, ROLL, DPLX, SEND, VAL DUP и тд, но но это уже совсем другая история (C)

Автор: Сергей

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js