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();
}
}
...
liegt es daran, dass ich den int-Wert der Keys speichere und in einer anderen Funktion wieder auslese, mittels switch-case!