Видеомонтажеры, звукооператоры, стримеры, геймеры часто используют в своей деятельности специализированные пульты или программируемые клавиатуры. И я решил копать в этом направлении.
В итоге на маркетплейсах была найдена вот такая клавиатура на 24 программируемых клавиши.
Описание к ней было довольно скудным, заявлялась возможность записи неких макросов в память устройства и то, что устройству для работы не требуются никакие спецдрайвера (определяется как обычный HID). Стоила она в районе 2т.р. (сейчас по акции можно найти за 1.5).
Несмотря на скудное описание, я решил заказать эту штуковину и заняться ее изучением.
Итак, что же я получил за свои 2т.р.
Производитель: SayoDevice (SayoDevice.com)
Вполне добротная механическая клавиатура на 24 клавиши на красных свитчах.
В комплекте двухметровый USB type C и инструкция на китайском.
Клавиатура умеет:
1. Выполнять нажатие различных сочетаний клавиш
2. Хранить в памяти 128 шаблонов текста (длина до 28 символов)
3. Хранить в памяти 128 паролей (длина до 28 символов)
4. Хранить в памяти до 32 скриптов (включаем запись действий, программа запоминает и может повторить)
5. Хранит в памяти до 5 раскладок клавиатуры (1 основная, на переключение остальных требуется выделять клавиши). При использовании всех 5 слоев можно назначить на клавиши 100 различных действий.
6. Для каждой раскладки и каждой клавиши можно настроить подсветку (цвет, поведение), но зачем...
Так выглядит интерфейс программы:
Я быстренько придумал раскладку для первого слоя:
Записал настройки в клавиатуру, начал тестировать... И... ничего не работает =(.
Программа охотно ест строки с кириллическими символами, записывает их в клавиатуру, но та ,в свою очередь, печатает белиберду. "&НаКлиенте" превращается в "&↔0→;85=B5". Смена кодировки, таймингов в настройках не дали ничего.
Это был провал.
Продавец клавиатуры предпочел не отвечать на мои вопросы, а какой-либо формы обратной связи на сайте производителя нет.
Погрустил... и пошел искать софтовое решение для железки, которая сама должна решать софтовую задачу...
В программе от производителя была замечена станица "Backup", а как известно где Backup, там и Restore. А между этими процедурами конфиг можно поменять ручками.
Сохраняю бэкап, открываю файл и вижу вот такой красивый JSON:
И вот тут я понял, что успех неизбежен. Уж сформировать правильный JSON и загрузить его в устройство я точно смогу. Это одна из тех задач, которые решаются в голове за минуту, а потом несколько часов уходит на то, чтобы это решение записать. Ах да. Я же все это ради ускорения процесса записи и затеял!
Утром следующего дня я сел за расшифровку этого файла. Структура его оказалась весьма простой. Непонятно было только, какие числовые значения надо подставить для вывода конкретных кириллических символов.
Я пошел от обратного, и задался вопросом "А как она вообще печатает нужную строку, не зная текущую раскладку системы?". Ведь клавиатура лишь передает в систему код нажатой клавиши, а ОС уже сама преобразует его в определенный символ в зависимости от текущей раскладки. Также исходя из данных в файле я знал, что числовые представления набираемых символов имеют длину не более трех знаков.
Сложив дважды два стало понятно, что это самый обычный Alt-код! Набирая на клавиатуре Alt+38(на Numpad) мы всегда получим символ "&", независимо от раскладки. Точно также можно набирать и другие символы. Я чувствовал себя Аланом Тьюрингом, расшифровавшим Энигму.
Вскоре передо мной красовалось окно готового кодировщика:
Получив из кодировщика готовый файл я загрузил его в клавиатуру и увидел в настройках программы вот что:
Ранее программа корректно отображала кириллицу, но клавиатура печатала белиберду. Теперь же программа отображает белиберду... Так может клавиатура сможет нормально печатать?
Давайте проверим! Если встроенное видео не отображается, то вот прямая ссылка на youtube.
Как видно, все работает! Ну почти всё. Длина названия некоторых БСПшных модулей превышает 28 символов - последние несколько символов до точки приходится добивать руками. Возможно, что это ограничение удастся преодолеть с помощью записи скриптов.
Спасибо, если вы вдруг дочитали это повествование.
К статье прикрепляю обработку для кодирования файлов и готовый конфиг, который можно загрузить в клавиатуру. Тестировалось на платформах 8.3.6, 8.3.8, 8.3.14.