-Музыка

Винтаж, ретро клавиатура

Дневник

Пятница, 09 Июня 2017 г. 02:23 + в цитатник

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


Разумеется, хипстерский фетиш по механической клавиатуре, хождения по авито и алиэкспрессам были. Естественно, бесплодные, поскольку теряется весь 🕎✡️🔯замысел: я на конторе не дрогнувшей рукой сунул клавиатуру помыться под краном, напрочь забыв, что просохнуть-то она просохнет, но графитовая мембранная подложка окисляется даже без воды. Ну и конечно же, клавиатура приказала долго жить (фейспалм🤦), чип под китайской чёрной каплей на маленьком огрызке платы закоротило. Видел клавиатуры на AT89C51 DIP😊, его хоть впрямую короти - не вылетит, ибо защитные диоды, а в клавиатурных чипах матрица сканируется портами без защитных диодов.


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


Здесь нужно обязательно вставить фразу про то, что вещи нынче уже не те: качество ущербное, ресурс никакой — да хоть та же моя клава жива 10 лет, прожжённая паяльником в 4-х местах, энкодер дребезжит, пробел уже блестит от стертости, на полиимидной гибкой плате с контактами я карандашом восстанавливал дорожки после мойки, и в итоге она всё же работает, потому как не отработала ещё свои 3 т.₽. То есть, идём против экономической тенденции ломких вещей продлением срока службы.


В поисках дармового решения было добыто 3 клавиатуры, соответствующие внешним критериям олдскульной ретро винтажной механической клавиатуре, как например, вожделенная многими IBM Model M — DIN-разъём (AT), витой провод как у телефона, отсутствие кнопок  Win   и  Menu , тёмно-серые функциональные клавиши, и конечно же, бежевый цвет, слоновая кость. Для индексации приведу их маркировки:


Мембранная клавиатура
• Silitek SK-8801B-1A
• MSC MKB931
• HP C3754A (HP Vectra keyboard).

Но увы, настоящая механическая клавиатура по фото не ищется, нужно щупать клавиши, щелчок, клац, и весить она может не менее 1...2 кг. А у Hewlett-Packard даже разъём PS/2 (mini DIN), что уж говорить о том, что корпорация смекнула, что пора переходить на мембраны.


Разборке подверглась клавиатура Silitek SK-8801B-1A, пусть будет geek porn музейный. Другие мне даже не было интересно разбирать.


Keyboard Silitek SK-8801B-1A

Мой экземпляр клавиатуры был умеренно грязен, не закурен, не хватало только одной резинки под клавишей. Разумеется, в процессе она была переставлена на самую малоиспользуемую кнопку  Scroll Lock .


3_MG_3290 (700x466, 164Kb)

Разобрав кожух на 6 винтах, я обнаружил, что сама клавиатура не больше, чем механическая Oriental Tech OK-100m. А весь наружний кожух не более, чем закос под тот же IBM Model M, дань моде того времени.


Клавиатура изнутри

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


Silitek SK-8801B-1A_5 (700x466, 126Kb)

Клавиатура всё же близка к механической за счёт толкателя с крестом (крестовидным выступом) под каждой клавишей. Значит, Ляо не поленился вставить каждый пластиковый толкатель в отверстие.


Silitek SK-8801B-1A_6 (700x466, 173Kb)

Приятно, что полноразмерная плата вообще есть внутри. На контактах платы нанесено графитовое покрытие для пущего контакта.


Silitek SK-8801B-1A_7 (700x466, 146Kb)

Светодиоды прямоугольной формы с мутной линзой и изоляцией — опять, дань моде 1980-х.


Silitek SK-8801B-1A_8 (700x466, 148Kb)

Обратная сторона платы даёт нам оценить количество перемычек, установленных Ляо вручную, выводных элементов, точек пайки, DIP-контроллер SK-8801/2 и связующая логика.


Silitek SK-8801B-1A_9 (700x466, 154Kb)

А вот столько винтов вкрутил Ляо для сборки одной клавиатуры. Технологичность всё же присутствует, всё садится на свои посадочные места, но больше 10 винтов на клавиатуру — и мне ещё будут петь про то, что 14 винтов для изделия это много😊?


Silitek SK-8801B-1A_10 (700x466, 126Kb)

Китайскому дядюшке Ляо было не западло обжать 5 контактов для шнура, который приходит на плату с ответным разъёмом. А значит дядюшка был минимум в трёх-четырёх ипостасях, простые работяги, которые одевали муфту на шнур, оборачивали провод вокруг швабры и грели, чтобы он принял форму телефонного витого провода. Паяли плату, крутили винты...


Silitek SK-8801B-1A_11 (700x466, 185Kb)

Заземление присутствует, экранировка, потому как любая клавиатура есть матрица, которая опрашивается с частотой порядка 200 Гц (предположение!), быть может, килогерцы, и без экранировки очень хорошо хезает в эфир, ведь дорожки длинные, работают как антенны.


Silitek SK-8801B-1A_12 (700x466, 105Kb)

Наличествует переключатель режимов AT/XT. Отличие интерфейсов с одинаковым разъёмом DIN в ответной части клавиатуры — на 286 (AT) материнках микросхема 8041/8042 как раз таки отвечает за интерфейс клавиатуры и позже, мыши на порту PS/2, генерацию прерывания INT 09h. На современных PS/2 и USB-клавиатурах связь с клавиатурой двухсторонняя — нужна лишь для включения лампочек Num/Caps/ScrollLock. На PC XT была раскладка попроще и связь односторонняя, скан-коды другие. Позже эту 8041/8042 интегрировали в чипсет, и BIOS научился сам определять USB-клавиатуру/мышь, эмулируя PS/2 для систем типа MS-DOS. Так появился странный параметр в настройке BIOS: USB Keyboard (Mouse) feature, позволяющий до инициализации USB-контроллера и загрузки ОС использовать клавиатуру/мышь, будто это AT или PS/2. И даже сейчас, в UEFI в разделах CSM позволяет гибко настроить инициализацию PS/2 (если нужна, клавиатура моргнёт лампочками при перезагрузке). Более того, наследие живо, и в каждой Windows 10 есть драйвер i8042prt.sys, берущий своё начало от микроконтроллера Intel 8042 1977 года. И кстати, в UEFI (на 81 чипсете) также пофиксен древний баг PS/2: при перезагрузке клавиатура должна быть вставлена в разъём, иначе в процессе не определится. При отключении клавиатуры из работающего ПК нельзя нажимать кнопки, иначе в скан-кодах собьётся порядок посылки битов, и повторно вставив её, она уже не будет отзываться. Видимо, прикрутили сброс счётчика по таймеру, хз.


Такой вот AT-костыль архитектуры x86, помогающим многим организациям с секретностью: один PS/2 есть почти на всех материнках из-за того, что админы из соображений безопасности и утечки данных отключают USB полностью, вплоть до питания порта, а не только в реестре, лишая холопов любой возможности вставлять флешки и прочий мусор в порты, только ввод, только клавиатура, консоль, только хардкор навсегда.


Silitek SK-8801B-1A_13 (700x466, 132Kb)

В заключение скажу, хоть клавиатура и не механическая, мне в любом случае приятно иметь в коллекции ВЕЩЬ, добротно сделанную, на которую дядюшка Ляо тратил время, которая стоила каких-то денег в своё время, которая работает и поныне, пусть и без клавиши  Win . Механическую всё же хочется, я помню детство и ощущение печатной машинки, и будто набиваешь — делаешь дело серьёзное, а не просто секретутка на ширпотребе. Ну сейчас много маркетинга стало, алиэкспресс кишит разномастными механическими клавиатурами и переключателями под Cherry MX с RGB-подсветкой, но это для геймеров и прочих ЛГБT, и даже если делать самому суровую механическую DIY-клавиатуру, она так на так встанет дороже покупной — переключатели чего-то стоят. Даже для нищeёбoв есть варианты с ASDW-механикой посреди остальных на мембранах. Из реальных аргументов за свежую механику — программируемые контроллеры (по типу ШТРИХ-М), зашивка скан-кодов, разблокировка 4KRO, 6KRO и NKRO (количество одновременно нажатых клавиш, не думаю, что в музейных механических клавиатурах это было важно), частота опроса матрицы, в мембранках она ниже из-за подавления дребезга, а значит, и время отклика выше (тормознее, хуже). И для совсем потре6лядcких фимозников — признак элитарности, бесшумные переключатели Cherry MX Silent Black, когда за клавиатуру переплачиваешь 30-кратный ценник, чем за офисную дешёвку, брезгливо смотря на двухсотрублёвый хлам, который по ощущениям нажатия как трясина😏.


В следующих постах на электронную тему я однажды расскажу про свои исследования и изыскания возможности подключить две клавиатуры к одному компьютеру раздельно, как разные устройства, каждую со своей раскладкой, чтобы на одной был EN, а на другой — пакистанский, например. Или смайлы. Про недружбу VB6 и Unicode (эмодзи). Про MKey, которая сильно спасает, про программируемые клавиатуры для лакеев типа кассиров, на которых скан-коды можно шить из винды, про ATMEL-транслятор-изменятор скан-кодов между портом PS/2 и клавиатурой (почти что логгер, но изменятор), про попытки программного отлова через RawInput, DirectInput. Но это позже, а пока надо пойти создать добавленную стоимость, пофрезеровать, а то расслабон в мёртвый сезон🙃.

Рубрики:  этот удивительный мир вокруг нас

Метки:  

Музейности и VB6 пост

Дневник

Четверг, 13 Апреля 2017 г. 03:03 + в цитатник
Месяц не писал, занят😬. Ха, идеальный смайл))
Чем поделиться? Находкой, списанной. Предыстория такова, что работаючи в ЦАПе в начале 2010-х, как новобранцу, мне досталась машинка Compaq DeskPro какая-то там в десктоп форм-факторе, на ней была наклейка мол Windows 98 compatible и ключ этой самой винды. Так как в почтовом ящике в принципе не предусмотрены каналы связи (и да, теперь я в этом секу, ибо безопасники местные были профаньё по меркам тех людей, с кем сейчас общаюсь, судя по методам отлова любителей интернетов на рабочих местах), о левых операционках на рабочих машинах знать не знали ни мокрый софт, ни даже органы. К чему это всё? На ней давно стояла XP, внутри был Pentium III 700 MHz (Coppermine) 128 SDRAM133 и 80ГБ НЖМД, но что самое удивительное, так это nVidia Quadro 64 МБ какая-то там пассивная. Датировалась машинка изготовлением 2000 года, в ней села батарейка и каждый день я в противовес нефединскому голосу включал её, и она издавала полуваттным динамиком весьма недвусмысленные намёки на сброс настроек BIOS. Херня вопрос, через время я сменил батарею и видеокарту на двухголовую, а к чему вся эта речь? Суть в том, что эта вот DeskPro сейчас кажется рухлядью, даже в далёком 2010 уже таковым являлось, поскольку 2...4 ГБ ОЗУ на 775 сокете являлось стандартом де-факто (жирные годы и долгоиграющая платформа), а представьте, 2000 год. Вот выбито свежее финансирование, и в госконтору ставят вожделенные после Pentium I и автокада/пикада для доса с галиматейным спулером на LPT-принтеры нормальные современные машины. И для сравнения - в 1999 году родители обновили мне комп (буквально за год до описываемых событий) на ASUS P2B с Celeron 333 и 64 МБ ОЗУ + 5 ГБ НЖМД и двухмегабайтной немощной видеокартой. В новом корпусе, однако апдейт 70% железа уже считай новый комп, но у него оставался 4x Creative CD-ROM + ISA SB16 (!), 5,25" флопповод и 400 МБ НЖМД от «четвёрки». В 2002-ом году он успешно дал дуба от моих кривых рук накануне Комтека, и взамен был приобретён Celeron Tualatin 1000 МГц с 256 ОЗУ на мамке Epox (я его мебелировал в конце, и он с переменным успехом показывал нам с лярвой киношки, а я боролся за бесшумность). Но это потом он обзавёлся 40 ГБ НЖМД (потом 120...), 512 ОЗУ и той самой двухголовой Radeon 8500 64МБ. Представьте себе, насколько топовой машинкой был DeskPro в своём 2000-м, когда средний размер жёсткого диска был 20 ГБ, а о 64 МБ видео можно было во снах грезить.

Но нет, читатель, это всё лишь вступление.

Досталась недавно причудливая машинка из встроенной техники - комплекса радиоконтроля, на мамке ASUS TX97E первый пентиум MMX, года 1998 сборки, вполне по тем временам оправданная штука. С двумя LPT-портами, АЦП в виде звуковой карты, подключающаяся к AT и ATX БП, с каркасом на винтах ГОСТ 17473. На ней работала радиософтина, которую я уже не увидел. Но самым необычным для меня стало вот это:
_MG_2610 (700x556, 102Kb)
_MG_2614 (700x466, 235Kb)
_MG_2618 (267x700, 78Kb)
COMPAL LM-LT220 (700x466, 122Kb)
COMPAL TVC02 GKRTVC02 LM-LT220 (700x548, 132Kb)
Это видеопара Compal TVC02 и LCD-дисплей Compal LM-LT220. Однозначно в музей ибо время на включение и проверку работоспособности надо где-то найти. С проприетарным разъёмом и шиной передачи данных в дисплей (VGA тоже поддерживается). Питание тоже по шине. Видимо, какое-то бюджетное решение, однако, 1998 год и это самая ранняя ЖК-панель, которую я держал в руках (вру, ноутбук 486 с ч/б пассивной матрицей был). Умельцы приделали к ней вывод неизвестно чего, скорее всего это продублированные кнопки управления (матрица работала в составе комплекса), что интересно - в интернетах, кроме как на eBay, упоминаний про Compal совсем немного, и решение, выходит, совсем не бытовое. Драйверов нет, если только не на дискетках, фирмы уже нет, и вот он закрадывается вопрос - панель всё же ЖК, цветная, это ж каких бабок она стоила в 1998 и сколько в итоге стоил подобный комплекс? Однозначно в музей или на дачу, а может как информационный дисплей/стенд, но шина связывает руки - вариант запихнуть в Atom 525 как метеостанцию (пха!) сразу же отметаю ибо Atom может позволить себе современную ОС Win10. Вот такие чудеса.


По VB6, как в заголовке поста, хочу рассказать об одном успехе. Программа KCam 4 при всей своей пригодности и простоте, является топорной прогой на VB6, где люди рисуют лишь эскизы, и оная один из них. Суть моей претензии проста: раз есть у меня возможность подключить к ПК множество устройств по COM-порту или переходникам USB-COM, которые позволяют отсылать всё, что угодно, а не просто дёргать пины LPT, почему бы не прикрутить больше функционала к станку? Например, очень не хватает аппаратного Keyboard jog (пульт управления), ибо когда ты находишься далеко от терминала и ловить 0 заготовки неудобно с клавиатуры, выручает пульт. Большинство китайских контроллеров станка (STEP-DIR) имеют пины для подключения пультов, но пульты эти оказываются неконтроллируемы персональным компьютером и KCam, ибо координата не меняется в программе. Разве что использовать MaxStepper от Kellyware или его клоны. Он действительно полностью работает по UART и даже доставляет памятью команд (независимость от тормозов и зависаний LPT), но это не наш метод. Даже Arduino GRBL не наш путь - будем писать всё своё.
Увы, KCam4 не предусматривает расширяемость, а равно это тупо мышкой по экрану елозить без горячих клавиш управления. Дело усугубляет подключение к станку по RDP, и аппаратная PS/2 клавиатура, подключенная прямо к станку, будет слать символы в экран входа (пока работает RDP), и хотя в KCam предусмотрена работа под Game-порту, джойстика отродясь не было, да ещё и не работает оно. Даже самое простое - при перестановке заготовки не хватает зелёной кнопки повторения G-кода (PLAY). Я просил у Kellyware обратить внимание на эту проблему, но кажется, автор молчит уже сколько-то времени. И вот успех нашёл меня.
Сделано было следующее: в станке стоит моя плата с USB-UART CH340G на борту, релюшками для переключения питания шпинделя, общего питания и подсветки, а также заделом под тахометр и иные фенечки типа ваттметра, которая может помочь реализовать вышеописанное - зелёную кнопку на одном из пинов (их число, кстати, очень ограничено, ATMega8 всё же). Эта плата анализирует кнопки, и если нажата аппаратная PLAY, запустить G-код повторно. Но кнопка PLAY в KCam не содержит ни хоткея, который бы SendKeys мог сэмулировать, ни пункта меню - тупо графическая кнопка TButton без заголовка!
Итак, плата сканирует клаву, посылает нужный символ в UART-COM-порт компьютера, а моя самописная прога отлавливает команду и должна что-то сделать. А делает она это следующим образом: в WinAPI всё же есть функции работы с окнами: FindWindowX, SendMessageS, EnumChildWindows, apiGetWindowText, GetParent, PostMessage, сырцы могу дать, с помощью этих заклинаний мы находим процесс KCam, посылаем ему F4 (модальное окно CNC Controls), а затем циклом перечисляем все имеющиеся кнопки в окне, попутно записывая их порядковые номера (instances, как это делает Au3info), получаем hWnd каждой из них - делается один раз на весь сеанс, и путём подсчёта номеров от кнопок с текстом (Caption, GetWindowText) находим желанную кнопку. Запоминаем её hWnd и путём PostMessage посылаем ей WM_LBUTTONDOWN и WM_LBUTTONUP. При этом кнопка в программе KCam оказывается в нажатом и поднятом положении. SendMessage здесь не пляшет, поскольку ожидает отклика от программы, а PostMessage посылает сообщение в пустоту. Не виснет нажатие кнопки в чужом окне.
Таким образом, при длительном удержании аппаратной кнопки "влево", мы посылаем в UART 2 события: нажатие и отпускание, например «L» и «l» одним (тремя) байтом. Отлавливаем их, и на основе каждого события шлём в hWnd чужого окна PostMessage WM_LBUTTONDOWN и WM_LBUTTONUP. Вуаля. Так что даже самый неудобный интерфейс можно обуздать, ибо это не переписывание KCam снуля. При должной аккуратности обращения с KCam можно действительно безглючно управлять кареткой с пульта и ловить ноль заготовки. Лебедев говорит софтверизация, я выбираю обратный путь.
KCam4 helper (563x345, 49Kb)
Рубрики:  здесь и сейчас

Метки:  

 Страницы: [1]