Получите физическую компоновку клавиатуры программно

StackOverflow https://stackoverflow.com/questions/4719488

  •  12-10-2019
  •  | 
  •  

Вопрос

Есть ли способ программно выяснить, какую клавиатуру есть у компьютера (т.е. где находятся ключи, и какие дополнительные ключи присутствуют в каких местах)?

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

Это было полезно?

Решение

Нет механизма, с помощью которого клавиатура может рассказать Windows, как выглядит ее физическая макет. Легко увидеть с версией Windows на экране клавиатуры, osk.exe. Похоже, он в состоянии угадать форм-фактор машины (ноутбук против рабочего стола), но на моем ноутбуке он не соответствует расположению клавиатуры.

Используйте макет Osk.exe в качестве шаблона, чтобы никто не мог жаловаться, что ваш не совсем соответствует.

Другие советы

При подключении к компьютеру клавиатуры отправляют «коды сканирования» в операционную систему. В Windows коды сканирования затем преобразуются в виртуальные ключи (аппаратное независимое отображение клавиатуры), затем в реальные символы.

а MapVirtualKeyEx() Функция API Windows позволяет переводить между кодами сканирования, виртуальными клавишами и символами. Он также должен быть в состоянии сказать вам, если ключ не существует.

вместе с GetKeyboardLayout() Что сообщает вам, какой Keybaord активен в любой момент времени (макет клавиатуры может быть различной для различных запущенных приложений), он должен позволить вам создать довольно точную карту клавиатуры.

В любом случае, посмотрите на keyboard input section of the MSDN

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top