Основная проблема заключается в следующем: у меня есть мини-клавиатура, которую я использую для проекта Raspberry Pi, и, поскольку на клавиатуре есть только одна клавиша shift, ctrl и alt, это означает комбинации на левой стороне клавиатуры, такие как shift-A и Ctrl-C довольно неловко, не бросая его.

Мое намеченное решение состоит в том, чтобы добавить отдельную кнопку для имитации второй клавиши Shift. С RPi и некоторой базовой электроникой и опытом программирования это довольно просто в теории. По крайней мере, для большинства ключей. Но так как клавиша Shift является своего рода клавишей "модификатора" ...

Вопрос заключается в том, обрабатывают ли операционные системы каждое нажатие клавиши отдельно или работа клавиатуры заключается в том, чтобы отправить заглавную букву A, когда пользователь нажимает клавишу shift-A? Можно ли использовать второй ввод для имитации клавиши Shift, а затем нажать клавишу A на клавиатуре, чтобы операционная система напечатала заглавную букву A? Общий ответ приветствуется, но если он зависит от операционной системы, рассматриваемая ОС - это Raspbian Stretch, основанная на Debian Stretch.

1 ответ1

3

Большинство современных клавиатур имеют интерфейс USB HID; Есть исключения, но ваш случай с малиновым пи явно USB.

В случае USB-клавиатуры состояние клавиш-модификаторов передается отдельной битовой маской состояний, передаваемой при сообщении об обычных клавишах, см., Например, https://wiki.osdev.org/USB_Human_Interface_Devices для конкретных битов и клавиш. (Это отличается от клавиатур PS/2, где клавиши-модификаторы имели свои собственные коды сканирования).

Если вы можете найти код, который интерпретирует события и понять, как он использует биты модификатора, вы можете изменить логику, чтобы посмотреть и на другие вещи. Вы также можете потенциально просто побитовый ИЛИ в своих собственных альтернативных состояниях ввода поверх сообщаемых клавиш-модификаторов (так как "1" обозначает нажатую клавишу).

Для некоторых более простых типов клавиатур, использующих переключатели, вы также можете подключить отдельную кнопку параллельно с существующей клавишей-модификатором; но это может быть сложно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .