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

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

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 и тд, но, но это уже совсем другая история ©

© Habrahabr.ru