2016-07-14 9 views
1

Чтобы сделать быстрые клавиши на основе положения, которые работают для всех раскладок клавиатуры, мне нужно определить физическую клавиатуру, без раскладки клавиатуры поверх нее. В идеале я хотел бы получить scancode QKeyEvent, потому что это не зависит от клавиатуры.Получить ключевую позицию для QKeyEvent (multiplatform)

Например, если я хотел бы карту Shift+Q к объему вниз и Shift+W к объему до (две клавиши, которые находятся рядом друг с другом на раскладке клавиатуры) я мог бы просто сопоставить их с Shift+0x10 и Shift+0x11, в соответствии с this scancode set. Таким образом, он также будет работать для раскладки французской клавиатуры, где переключаются Q и A. И это даже будет работать для раскладок клавиатуры DVORAK или других графических макетов клавиатуры, поскольку раскладка клавиатуры будет просто проигнорирована.

Теперь возникает вопрос: как я могу получить scancode QKeyEvent или любой другой параметр, рассказывающий о позиции физического ключа, игнорируя раскладку клавиатуры, которая будет работать на всех платформах? Я хочу, чтобы он работал на Windows, Linux и OSX.

QKeyEvent::nativeScanCode() получает работу, но она не работает для OSX: \

ответ

1

У вас уже есть самый мультиплатформенный способ сделать это. За исключением того, что Qt еще не реализовал его для OS X, по крайней мере, с Qt 5.7.

Не стесняйтесь исправлять вашу копию Qt, чтобы включить HID-событие, чтобы получить scancodes, см., Например, this question.

 Смежные вопросы

  • Нет связанных вопросов^_^