2016-03-01 4 views
0

J'ai besoin de vérifier l'état de la touche shift, quand elle est enfoncée ou non, je fais les choses différemment.Comment puis-je obtenir l'état de la touche shift, down ou up?

Mais le

- (void)flagsChanged:(NSEvent *)theEvent 

et

[NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask 

             handler:^NSEvent *(NSEvent * event) 

Je préfère utiliser le moniteur, mais je ne peux obtenir l'événement la touche enfoncée, comment puis-je assurer que si la touche Maj enfoncée tient vers le bas?

Mon idée approximative est de déclarer un booléen, et lorsque j'appuie sur une touche enfoncée, affectez la valeur booléenne à OUI, lorsque la touche est enfoncée, affectez bool à NON.

Mais je ne peux pas obtenir l'événement clé, quelqu'un sait comment obtenir l'événement clé, quoi de mieux, si vous avez une meilleure idée, s'il vous plaît aidez-moi merci.

Répondre

2

Vous pouvez voir comment projet MASShortcut gère ce problème autour de la ligne 400 à https://github.com/shpakovski/MASShortcut/blob/master/Framework/MASShortcutView.m

EDIT

NSEventMask eventMaskDown = (NSKeyDownMask | NSFlagsChangedMask); 
    eventMonitorDown = [NSEvent addLocalMonitorForEventsMatchingMask:eventMaskDown handler:^(NSEvent *event) { 
     // The event object contains the key that was pressed 
    } 

    NSEventMask eventMaskUp = (NSKeyUpMask | NSFlagsChangedMask); 
    eventMonitorUp = [NSEvent addLocalMonitorForEventsMatchingMask:eventMaskUp handler:^(NSEvent *event) { 
     // The event object contains the key that was released 
    } 

Voir Modifier flags pour plus d'informations sur le site Web d'Apple.

+0

désolé, je veux obtenir le rappel de l'événement touche Maj, et je n'ai pas trouvé la réponse dans le lien, merci tout de même. – melody5417

+0

J'ai modifié ma réponse pour la rendre plus précise. – Xvolks

+0

vraiment merci, mais comment puis-je distinguer l'événement de clé vers le bas de l'événement de clé vers le haut. Je savais à la fois que la touche majuscule et la touche majuscule appellent cela, mais je veux les distinguer, parce que la touche enfoncée et la touche enfoncée, je ferai quelque chose de différent. Et désolé pour mon pauvre anglais, j'espère que vous pouvez attraper ce que je veux exprimer. – melody5417