Мой протокол не заключён сам в себе, он всегда работает в паре с каким-то другим протоколом. Спецификация не ограничивает возможные протоколы-напарники. Примеры возможных:
-
USB для проводных клавиатур.
-
Bluetooth для беспроводных клавиатур.
-
Можно ШИМом по миниджеку передавать сообщения.
-
Клавиатурой может быть человек, который пишет сообщения на бумажках.
-
Я как-то описывал, как похожий протокол мог бы работать поверх Gemini.
Для спецификации разницы нет, как именно сообщения доставляются.
Сообщения (message) — что-то типа отчётов HID (HID report). Назвал их так, чтобы подчеркнуть двусторонность протокола: сообщения могут идти как от компа к клаве, так и от клавы к компу.
При подключении клавиатуры к компу, клавиатура ждёт от компьютера вопросов. Компьютер, когда посчитает нужным, спрашивает: ты кто? Клавиатура выдаёт такое (например; действительный формат данных приводить я нужным не считаю пока что):
Версия протокола: 1.0
Название: Сагарис
Производитель: Баунс
Описание: Полуаккордовая клавиатура
Версия клавиатуры: 2.6
Владелец: Баунс <bouncepaw@example.org>
Установленных профилей: 3
Максимальное число профилей: 6
Новые поля могут быть добавлены в новых версиях протокола. Разрешены любые другие поля. Если компьютер не знает поле, то его можно как угодно обработать: уведомить пользователя, отказаться работать с клавой, проигнорировать.
Далее компьютер говорит, что думает про подключение; это может занять сколько угодно времени, потому что ОС может, например, ждать выбора пользователя. Он может сказать что-то из этого (список, как водится, может быть расширен, но он должен быть обратно совместим).
-
Давай работать. Я буду говорить на твоей версии протокола.
-
Давай работать. Я буду говорить на протоколе версии 1.0.1.
-
Отказываюсь работать, потому что не знаю твою версию протокола.
-
Отказываюсь работать из-за настроек пользователя.
Далее клавиатура говорит, согласна ли она на такие условия. Если не согласна, то компьютер игнорирует дальнейшие сообщения клавиатуры в текущей сессии. Если согласна, компьютер и клавиатура входят в печатные отношения.