获得QKeyEvent(多平台)的关键位置

时间:2016-07-14 14:52:49

标签: qt keyboard qt4 qkeyevent

为了制作适用于所有键盘布局的基于位置的键盘快捷键,我需要识别物理键盘键,而不需要键盘布局。理想情况下,我想检索QKeyEvent的扫描码,因为这不依赖于键盘布局。

例如,如果我想将Shift+Q映射到音量降低,将Shift+W映射到音量升级(两个键是在美国键盘布局上彼此相邻)根据this scancode set,我可以将这些映射到Shift+0x10Shift+0x11。这样,它也适用于法语键盘布局,其中Q和A被切换。它甚至适用于DVORAK键盘布局或其他异常键盘布局,因为键盘布局将被忽略。

现在,问题是:我如何检索QKeyEvent的扫描码,或任何其他参数,告诉物理键的位置,忽略键盘布局,这将适用于所有平台?我希望它能在Windows,Linux和OSX上运行。

QKeyEvent::nativeScanCode()完成了工作,但它不适用于OSX:\

1 个答案:

答案 0 :(得分:1)

您已经拥有最多平台的方式。除了Qt还没有为OS X实现它,至少从Qt 5.7开始。

随意修补您的Qt副本以包含HID事件点按以获取扫描码,请参阅例如this question