⌨️СофтИдеальный ПротоколБаунс

Пока не комментируйте, я не дописал ещё.

Я раскидал секции содержания по подгифам. Обсуждение давайте вести здесь. Интересно, как пойдёт такая структура, не пробовал.

софт/идеальный_протокол/баунс/передача_информации

Мой протокол не заключён сам в себе, он всегда работает в паре с каким-то другим протоколом. Спецификация не ограничивает возможные протоколы-напарники. Примеры возможных:

  • USB для проводных клавиатур.

  • Bluetooth для беспроводных клавиатур.

  • Можно ШИМом по миниджеку передавать сообщения.

  • Клавиатурой может быть человек, который пишет сообщения на бумажках.

  • Я как-то описывал, как похожий протокол мог бы работать поверх Gemini.

Для спецификации разницы нет, как именно сообщения доставляются.

Сообщения (message) — что-то типа отчётов HID (HID report). Назвал их так, чтобы подчеркнуть двусторонность протокола: сообщения могут идти как от компа к клаве, так и от клавы к компу.

При подключении клавиатуры к компу, клавиатура ждёт от компьютера вопросов. Компьютер, когда посчитает нужным, спрашивает: ты кто? Клавиатура выдаёт такое (например; действительный формат данных приводить я нужным не считаю пока что):

Версия протокола: 1.0
Название: Сагарис
Производитель: Баунс
Описание: Полуаккордовая клавиатура
Версия клавиатуры: 2.6
Владелец: Баунс <bouncepaw@example.org>

Установленных профилей: 3
Максимальное число профилей: 6

Новые поля могут быть добавлены в новых версиях протокола. Разрешены любые другие поля. Если компьютер не знает поле, то его можно как угодно обработать: уведомить пользователя, отказаться работать с клавой, проигнорировать.

Далее компьютер говорит, что думает про подключение; это может занять сколько угодно времени, потому что ОС может, например, ждать выбора пользователя. Он может сказать что-то из этого (список, как водится, может быть расширен, но он должен быть обратно совместим).

  1. Давай работать. Я буду говорить на твоей версии протокола.

  2. Давай работать. Я буду говорить на протоколе версии 1.0.1.

  3. Отказываюсь работать, потому что не знаю твою версию протокола.

  4. Отказываюсь работать из-за настроек пользователя.

Далее клавиатура говорит, согласна ли она на такие условия. Если не согласна, то компьютер игнорирует дальнейшие сообщения клавиатуры в текущей сессии. Если согласна, компьютер и клавиатура входят в печатные отношения.

Cannot transclude hypha софт/идеальный_протокол/баунс/устройство because it does not exist

софт/идеальный_протокол/баунс/кируна

Меня попросили пояснить, что такое кируна. Вот, что я сказал:

Представь компактный способ кодирования всех взаимодействий с клавишей, в том числе вводимые символы уникода, слои, моды, вот это всё. Я назвал это кирунами
Отдельное слово нужно, чтобы не путать с кикодами, которые очень завязаны на HID и классическую архитектуру клавиатур. Если названия разные, понятно, что понятия, скорее всего, разные

Cannot transclude hypha софт/идеальный_протокол/баунс/настройка because it does not exist

софт/идеальный_протокол/баунс/имплементация

По сути, прототип сделать несложно. На ардуине вполне реально накалякать за приемлимое время. Это со стороны клавиатуры.

Драйвер для пк — вот, где соль.

Симулятор нажатий

Самый простой способ написать драйвер: программа решает, какую клавишу надо нажать, и нажимает её через какую-нибудь другую программу.

Винда

Не смею лезть в этот лес.

macOS

GNU/Linux/X11

Есть программа xdotool, через неё можно. Например, так можно нажать клавишу e:

xdotool key 'e'

UPDATE. Писать драйвера даже под QMK можно, смотри статью, и там ищи по странице raw HID mode.

Subhyphae