2016-04-17 1 views
0

Je suis un utilisateur de longue date de Objective-C et migre lentement vers Swift avec de nouveaux projets. J'utilise CocoaPods pour les plus grandes choses et je ne trouve pas de bonne bibliothèque pour ça.Touches de fonction de capture sous Mac OS X

J'ai donc ce code dans mon NSViewController viewDidLoad pour commencer:

_ = NSEvent.addGlobalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask) { 
    (event) -> Void in 
    print("Event is \(event)") 
} 

let event = NSEvent.keyEventWithType(NSEventType.KeyDown, 
            location: CGPoint(x:0,y:0), 
            modifierFlags: NSEventModifierFlags(rawValue: 0), 
            timestamp: 0.0, 
            windowNumber: 0, 
            context: nil, 
            characters: "\n", 
            charactersIgnoringModifiers: "", 
            isARepeat: false, 
            keyCode: 0) //NSF7FunctionKey 
NSApplication.sharedApplication().sendEvent(event!) 

La première capture d'événement fonctionne parfaitement après avoir vérifié mon application dans la liste d'accessibilité des Préférences Système. Partout dans OS X, il capture les touches. Maintenant, dans le docs il est dit pour les touches de fonction, je devrais utiliser keyEventWithType.

J'ai trouvé ce gist et j'ai remarqué qu'il traite la même instance sharedApplication, mais je ne sais pas comment attraper l'événement. Est-ce que je délègue d'une certaine manière? En outre, la constante F-clé est int et la méthode indique qu'elle veut seulement recevoir Uint16. Je peux le classer, mais je suppose que je l'utilise mal.

Répondre

0

L'a corrigé en utilisant un CocoaPods pod que j'ai trouvé plus tard. Fonctionne parfaitement.