1

すべてのキーボード レイアウトで機能する、位置ベースのキーボード ショートカットを作成するには、キーボード レイアウトを上に置かずに、物理的なキーボード キーを識別する必要があります。理想的には、QKeyEvent のスキャンコードを取得したいと考えています。これは、キーボード レイアウトに依存しないためです。

たとえば、ボリュームダウンボリュームアップ(US キーボード レイアウトで隣り合っている 2 つのキー)にマップShift+Qしたい場合、このスキャンコード セットに従って、これらをとにマップするだけで済みます。このように、Q と A が入れ替わるフランス語のキーボード レイアウトでも機能します。また、キーボード レイアウトは無視されるため、DVORAK キーボード レイアウトやその他の特殊なキーボード レイアウトでも機能します。Shift+WShift+0x10Shift+0x11

問題は、QKeyEvent のスキャンコード、またはキーボード レイアウトを無視して、すべてのプラットフォームで動作する物理キーの位置を示すその他のパラメーターを取得するにはどうすればよいかということです。Windows、Linux、OSX で動作するようにしたい。

QKeyEvent::nativeScanCode()はジョブを完了しますが、OSX では機能しません:\

4

1 に答える 1

1

あなたはすでにそれを行うための最もマルチプラットフォームな方法を持っています. ただし、少なくとも Qt 5.7 の時点では、Qt は OS X 用にまだ実装していません。

Qt のコピーにパッチを当てて、HID イベント タップを含めてスキャンコードを取得してください。たとえば、この質問を参照してください。

于 2016-07-14T15:00:43.803 に答える