Wie Key-Kombination außerhalb Applikation erkennen?

Alles rund um die Programmierung mit Qt
Antworten
MADsCIENTIST

Wie Key-Kombination außerhalb Applikation erkennen?

Beitrag von MADsCIENTIST »

Hallo liebe Community,

für mein Programm (!kein Keylogger) benötige ich die Fähigkeit, Tastenkombinationen oder prinzipiell Tastendrücke außerhalb der Anwendung zu erkennen!

1. Wie geht das?

Außerdem bin ich gerade damit beschäftigt, Key-Kombinationen in einem QSet<int> zu speichern, um diese dem Nutzer visuell darstellen zu können,
z. B. "STRG+SHIFT+A", nur funktioniert das ganze noch nicht so wie ich mir das erhofft habe.

Es ist nämlich so, dass trotz meiner Tastenlimitierung für das pressEvent, einige andere Tasten, z. B. '#' oder '+' auch gespeichert werden!
[ERLAUBTE TASTEN: a-z, A-Z, äÄ, öÖ, üÜ, STRG, SHIFT, ALT und F1 - F8; maximal kann man 4 Tasten zwischenspeichern]

Code: Alles auswählen

...
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
// Add pressed key
if((keyEvent->key() >= Qt::Key_A && keyEvent->key() <= Qt::Key_Z)
	|| (keyEvent->key() >= Qt::Key_0 && keyEvent->key() <= Qt::Key_9)
	|| (keyEvent->key() >= Qt::Key_F1 && keyEvent->key() <= Qt::Key_F8)
	|| keyEvent->key() == Qt::Key_Adiaeresis
	|| keyEvent->key() == Qt::Key_Odiaeresis
	|| keyEvent->key() == Qt::Key_Udiaeresis
	|| keyEvent->key() == Qt::Key_Shift
	|| keyEvent->key() == Qt::Key_Control
	|| keyEvent->key() == Qt::Key_Alt) {

	// Add (new) pressed key
	if(keysPressed.size() < 4 && !keysPressed.contains(keyEvent->key()))
		keysPressed += keyEvent->key();
	// on more than 4 pressed keys automatically clear set of keys
	else {
		keysPressed.clear();
		keysPressed += keyEvent->key();
	}
}
...
2. Wenn jemand auch dazu eine Idee hätte, würde ich mich freuen; Ich bin mir zwar nicht sicher, aber vielleicht
liegt es daran, dass ich den int-Wert der Keys speichere und in einer anderen Funktion wieder auslese, mittels switch-case!
Antworten