2016-07-14 43 views
1

爲了製作適用於所有鍵盤佈局的基於位置的鍵盤快捷鍵,我需要確定一個物理鍵盤鍵,而不必在鍵盤佈局之上。理想情況下,我想檢索QKeyEvent的掃描碼,因爲這不是鍵盤佈局相關的。獲取QKeyEvent(多平臺)的關鍵位置

例如,如果我要映射Shift+Q降低音量Shift+W體積增加(二密鑰,其相鄰的美式鍵盤佈局),我可能只是這些映射到Shift+0x10Shift+0x11,根據this scancode set。這樣,它也可以用於切換Q和A的法語鍵盤佈局。它甚至可以用於DVORAK鍵盤佈局或其他異常的鍵盤佈局,因爲鍵盤佈局將被忽略。

現在,問題是:如何檢索QKeyEvent的掃描碼或任何其他參數,以告知物理鍵的位置,而忽略鍵盤佈局,這些參數將適用於所有平臺?我希望它可以在Windows,Linux和OSX上運行。

QKeyEvent::nativeScanCode()能夠完成任務,但它不會對OSX工作:\

回答

1

您已經做它的大多數跨平臺的方式。除了Qt還沒有在OS X上實現它,至少從Qt 5.7開始。

隨意修補您的Qt副本以包含HID事件點擊以獲得掃描碼,請參閱this question