すべてのキーボード レイアウトで機能する、位置ベースのキーボード ショートカットを作成するには、キーボード レイアウトを上に置かずに、物理的なキーボード キーを識別する必要があります。理想的には、QKeyEvent のスキャンコードを取得したいと考えています。これは、キーボード レイアウトに依存しないためです。
たとえば、ボリュームダウンとボリュームアップ(US キーボード レイアウトで隣り合っている 2 つのキー)にマップShift+Q
したい場合、このスキャンコード セットに従って、これらをとにマップするだけで済みます。このように、Q と A が入れ替わるフランス語のキーボード レイアウトでも機能します。また、キーボード レイアウトは無視されるため、DVORAK キーボード レイアウトやその他の特殊なキーボード レイアウトでも機能します。Shift+W
Shift+0x10
Shift+0x11
問題は、QKeyEvent のスキャンコード、またはキーボード レイアウトを無視して、すべてのプラットフォームで動作する物理キーの位置を示すその他のパラメーターを取得するにはどうすればよいかということです。Windows、Linux、OSX で動作するようにしたい。
QKeyEvent::nativeScanCode()はジョブを完了しますが、OSX では機能しません:\