Получить физическую раскладку клавиатуры программно - PullRequest
2 голосов
/ 18 января 2011

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

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

Ответы [ 2 ]

3 голосов
/ 18 января 2011

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

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

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

в любом случае, взгляните на keyboard input section of the MSDN

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

2 голосов
/ 18 января 2011

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

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

...