Sous Mac OS X 10.6, NSEvent
utilise une méthode de classe +modifierFlags
pour déterminer les indicateurs de modification actuellement activés. Dans 10.5, en utilisant [[NSApp currentEvent] modifierFlags]
seulement mises à jour après le déplacement de la souris. Est-il possible d'obtenir de façon asynchrone les drapeaux de modificateur?Les drapeaux du modificateur NSEvent ne sont pas mis à jour tant que la souris ne se déplace pas
2
A
Répondre
2
Selon un commentaire sur this blog post, vous pouvez utiliser CGEventCreate() et CGEventGetFlags().
CGEventRef event = CGEventCreate(NULL /*default event source*/);
CGEventFlags mods = CGEventGetFlags(event);
if (mods & kCGEventFlagMaskShift)
NSLog(@"Shift key is being pressed");
Les drapeaux modificateurs renvoyés par CGEventGetFlags() (CGEventFlags) sont les mêmes que ceux NSEvent.
2
GetCurrentKeyModifiers()
. C'est une fonction C mais elle est disponible dans les applications Cocoa (elle fait partie du framework Carbon, mais est toujours disponible sur les systèmes 64 bits, IIRC). Notez que les indicateurs qu'elle utilise ne sont pas égaux aux drapeaux Cocoa. changer de manière appropriée.
Questions connexes
- 1. wxWidgets ne se mettra pas à jour jusqu'à ce que la souris se déplace
- 2. Blend - Les PropertyChanges ne sont pas mis à jour
- 3. La commande DetailsView Update ne se met pas à jour tant que tous les champs ne sont pas présents!
- 4. ne sont pas mis à jour après SubmitChanges()
- 5. Les UILabels ne sont pas mis à jour lors du premier chargement de la vue.
- 6. WPF Les graphiques du calendrier ne sont pas mis à jour
- 7. curseur de la souris ne change pas si un pointeur ne se déplace pas dans les navigateurs basés sur Webkit
- 8. Les modules Python ne sont pas mis à jour après le redémarrage du module principal
- 9. Les éléments du client ne sont pas mis à jour lorsque le formulaire est publié
- 10. - (void) scrollWheel: (NSEvent) theEvent ne fonctionne pas
- 11. Boucle ne met pas à jour les zones de liste tant que l'opération n'est pas répétée
- 12. JComponent.revalidate() ne se met pas à jour tant que le code n'est pas terminé
- 13. Les applets ne se sont pas chargées
- 14. UITableViewCell ne se déplace pas de haut en bas
- 15. Les formulaires C# windows ne sont pas mis à jour dans la méthode
- 16. getopt_long() et les paramètres qui ne sont pas des drapeaux?
- 17. Pourquoi AutoScrollMinSize ne prend-il pas effet tant que je ne souris pas?
- 18. - (void) keyDown: l'événement (NSEvent *) ne fonctionne pas
- 19. Python ne se mis à jour la ligne
- 20. Problème lors de l'exécution de MVC où les fichiers javascript ne sont pas mis à jour
- 21. jQuery: HTML ne sont pas mis à jour après la manipulation <img src> chemins
- 22. Mon fichier -tpl ne sera pas mis à jour!
- 23. Les privilèges de PostgreSQL 8.3 ne sont pas mis à jour - mauvaise utilisation?
- 24. ASP.NET: App_Code Les fichiers de classe ne sont pas mis à jour après modification
- 25. continuer à suivre événement glisser la souris, même après le curseur se déplace hors du film
- 26. Les valeurs Selenium Dom ne sont pas mises à jour
- 27. Le contrôleur de navigation et l'affichage ne sont pas mis à jour lors de la navigation
- 28. La liaison WPF CommandParameter ne se met pas à jour
- 29. Le niveau de batterie ne sera pas mis à jour
- 30. Datagridview datacolumn ne sera pas mis à jour (propriété imbriquée)
Est-il disponible uniquement sur les systèmes 64 bits? J'essaie de cibler les systèmes 32 bits exécutant 10.5. –
Alexsander Akers: Non. Il est disponible depuis l'époque de CarbonLib sur Mac OS, y compris sur tous les systèmes 32 bits entre maintenant et maintenant; il a mentionné la compatibilité 64 bits parce que beaucoup de gens, en voyant une fonction Carbon suggérée, vont bondir et crier "Carbon n'est pas disponible en 64 bits!". –