2016-07-14 4 views
1

Um positionsbasierte Tastaturkürzel zu erstellen, die für alle Tastaturlayouts funktionieren, muss ich eine physische Tastaturtaste identifizieren, ohne das Tastaturlayout darüber. Im Idealfall möchte ich den Scancode des QKeyEvent abrufen, da dies nicht vom Tastaturlayout abhängig ist.Schlüsselposition von QKeyEvent (Multiplattform)

Zum Beispiel, wenn ich mag Shift+Q-abzubilden Volumen-down und Shift+W-Volumen-up (zwei Tasten, die an einem US-Tastatur-Layout nebeneinander sind) konnte ich nur Karte dieser Shift+0x10 und Shift+0x11, nach this scancode set. Auf diese Weise funktioniert es auch für französische Tastaturlayouts, bei denen Q und A umgeschaltet werden. Und es wird sogar für DVORAK-Tastaturlayouts oder andere exotische Tastaturlayouts funktionieren, weil das Tastaturlayout einfach ignoriert wird.

Jetzt lautet die Frage: Wie kann ich den Scancode von QKeyEvent oder einen anderen Parameter abrufen, der über die Position des physischen Schlüssels Auskunft gibt und das Tastaturlayout ignoriert, das auf allen Plattformen funktioniert? Ich möchte, dass es unter Windows, Linux und OSX funktioniert.

QKeyEvent::nativeScanCode() erhält die Arbeit erledigt, aber es funktioniert nicht für OSX: \

Antwort

1

Sie haben bereits die meisten Multi-Plattform Art und Weise tun. Außer dass Qt es für OS X noch nicht implementiert hat, zumindest ab Qt 5.7.

Fühlen Sie sich frei, Ihre Kopie von Qt zu patchen, um einen HID Ereignisabgriff einzuschließen, um die Scancodes zu erhalten, sehen Sie z. this question.

Verwandte Themen