Изменение нажатий клавиш USB-клавиатуры - PullRequest
2 голосов
/ 14 сентября 2010

Каждый раз, когда клавиша нажимается на обычной клавиатуре, числовой «код клавиши» отправляется на компьютер, например.32 или 51, которые представляют собой определенные клавиши.

Не относящиеся к моей клавиатуре по умолчанию, которую я использую для ввода этого сообщения, я хочу иметь возможность подключать клавиатуру через USB, и ее коды клавиш могут быть сдвинуты на несколькоконстанта C.

Таким образом, при нажатии клавиши «a» на этой боковой клавиатуре компьютер не получит код клавиши для «a», а скорее большее число, на которое компьютер не имеет запланированного ответа.

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

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

Я на Windows.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Я думаю, что вы ограничиваете себя гораздо больше, чем необходимо.

Для начала, ваше описание USB-клавиатур сильно упрощено.Ситуация немного сложнее, чем это.Например, вы фактически получаете последовательности нажатия клавиш / нажатия клавиш.(Также известный как make и break).

Следующее, что вы делаете предположения об управлении клавиатурой в ОС.Если вторая клавиатура утверждает, что это клавиатура USB, она будет обрабатываться драйвером ОС для клавиатур USB.Это не будет ожидать сдвинутых значений.Например, в Microsoft Windows задокументировано следующее поведение:

Избегайте установки 1 кода сканирования выше 0x79, так как код выпуска (ключ вверх) будет 0xFA или выше, а драйвер клавиатуры известенинтерпретировать такие значения как ответы от микросхемы 8042, а не как нажатия клавиш (коды сканирования).

Затем ОС будет предполагать, что дополнительная клавиатура предоставит дополнительные ключи, и будет обрабатывать ее напрямую.Например, для ноутбуков доступны цифровые USB-клавиатуры, и Windows просто обрабатывает их как дополнительные клавиши 0-9 + - / * =.Это не волнует, что они на отдельном оборудовании.В принципе, я не думаю, что эта вторая идея кейбординга сработает.

Теперь USB обычно рассматривает клавиатуру как особый случай более общего класса, который более гибок: HID = Устройства ввода человека..Например, USB-джойстики также являются устройствами ввода данных человеком, и типичная ОС не пытается интерпретировать кнопки джойстика.Игры должны обрабатывать их напрямую, как и ваше приложение.

0 голосов
/ 14 сентября 2010

Похоже, вам понадобится больше аппаратного решения, чем программного решения. Попробуйте это http://www.instructables.com/id/Hacking-a-USB-Keyboard/

...