Получить ключевую позицию QKeyEvent (мультиплатформенный)

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам