Ich versuche zu lernen, für den Mac zu programmieren. Ich bin seit einiger Zeit ein Java-Typ, also hoffe ich, dass das Problem, auf das ich stoße, ein einfaches Missverständnis von Cocoa ist.addGlobalMonitorForEventsMatchingMask gibt nur die Mausposition zurück
Ich habe den folgenden Code bekommt:
-(IBAction)beginEventMonitor:(id)sender {
_eventMonitor = [NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseUpMask)
handler:^(NSEvent *incomingEvent) {
//NSWindow *targetWindowForEvent = [incomingEvent window];
NSLog(@"Got a mouse click event at %@", NSStringFromPoint([incomingEvent locationInWindow]));
}];
}
-(IBAction)stopEventMonitor:(id)sender {
if (_eventMonitor) {
[NSEvent removeMonitor:_eventMonitor];
_eventMonitor = nil;
}
}
Dies ist ein einfacher Haken, mir zu sagen, wenn ein Mausklick auf globaler Ebene geschieht. Der Handler funktioniert, aber der Inhalt von incomingEvent scheint auf nichts eingestellt zu sein. Die einzige nützliche Information, die ich finden kann, ist die Position der Maus zum Zeitpunkt des Klicks und die Fenster-ID des geklickten Fensters.
Sollte ich nicht mehr Informationen bekommen? Richte ich den Monitor nicht richtig ein? Ich würde gerne wissen wollen, in welchem Fenster geklickt wurde, aber ich finde nicht einmal eine Möglichkeit, die Mausposition oder Fenster-ID in etwas Nützliches zu verwandeln.
funktioniert gut mit Mausereignissen, wissen Sie etwas für keyDown-Ereignisse? –