为了制作适用于所有键盘布局的基于位置的键盘快捷键,我需要识别一个物理键盘键,上面没有键盘布局。理想情况下,我想检索 QKeyEvent 的扫描码,因为这与键盘布局无关。
例如,如果我想将Shift+Q
映射到音量调低,Shift+W
映射到音量调高(美式键盘布局上相邻的两个键),我可以将它们映射到Shift+0x10
和Shift+0x11
,根据这个扫描码集。这样,它也适用于法语键盘布局,其中 Q 和 A 切换。它甚至适用于DVORAK键盘布局或其他外来的键盘布局,因为键盘布局将被忽略。
现在,问题是:如何检索QKeyEvent的扫描码,或任何其他说明物理键位置的参数,忽略键盘布局,这将适用于所有平台?我希望它适用于Windows,Linux和OSX。
QKeyEvent::nativeScanCode() 完成了工作,但它不适用于 OSX :\
您已经拥有了最多平台的方法。除了Qt还没有在OS X上实现它,至少从Qt 5.7开始。
随意修补您的Qt副本以包含HID事件点击以获取扫描码,请参阅例如此问题。