201Fermer203
FarewellLe 25/07/2016 à 20:39
cheeky

Soit la doc suivante sur les modifiers de Windows : https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms646309
Soit la doc suivante sur les évènements claviers de Qt : http://doc.qt.io/qt-5/qkeyevent.html#public-functions

Soit le code suivant, du niveau CE1-CE2 :
#include <windows.h>
...
quint32 modifiers = keyEvent->nativeModifiers() & 0x000F; // Clear possible MOD_NOREPEAT ?
...
        // Display the name of the pressed modifiers
        if ((modifiers & MOD_CONTROL) != 0) {
            buttonText += tr("Ctrl + ");
        }
        if ((modifiers & MOD_ALT) != 0) {
            buttonText += tr("Alt + ");
        }
        if ((modifiers & MOD_SHIFT) != 0) {
            buttonText += tr("Shift + ");
        }
Le code est donc censé afficher une combinaison de "Ctrl + ", "Alt + ", "Shift + " dans un bouton, c'est très basique.
Résultat :
- quand j'appuie sur Alt, le bouton affiche Alt +
- quand j'appuie sur Ctrl, le bouton affiche Shift +
- quand j'appuie sur Shift, le bouton affiche Ctrl +
- Shift droit, AltGr et Ctrl droit déconnent complètement


Si je remplace keyEvent->nativeModifiers() par keyEvent->modifiers(), qui renvoie les modifieurs de Qt, alors mon code marche comme attendu.
Ca m'ira, parce qu'il est aisé de faire la conversion en sens inverse. Mais quand même, ça me chagrine ce truc, j'espérais trouver les modifieurs d'origine, tout simplement. En espérant que ça ne me joue pas un tour du même genre pour les Virtual Keys (les autres touches du clavier).

Ou je rate un truc énorme, ou Qt déconne. Mais comme le gestionnaire de clavier de Qt marche quand même bien dans l'ensemble, je dois rater un truc énorme.
Merci bien pour votre aide cheeky