Warum würde ein Benutzer mit der rechten Maustaste klicken und gleichzeitig die linke Maustaste gedrückt halten? Dies ist mit den meisten Mac-Hardware nicht möglich. Wäre es nicht genug, wenn der Benutzer Text auswählt, die linke Maustaste loslässt & und dann wieder rechtsklickt?
Aber falls Sie wirklich benötigen ein solches Feature: ich nicht getestet, da ich nicht die Hardware nach unten für & rechte Maus gleichzeitig links nennen, aber es Macht Arbeit.
Sie können eine Ebene tiefer gehen und mit CGEvent
Objekte arbeiten. So funktionieren sie:
Erstellen Sie eine Bitmaske, um die Ereignisse zu definieren, auf die Sie reagieren möchten.
let eventMask = eventMask | (1 << CGEventType.leftMouseDown.rawValue)
| (1 << CGEventType.leftMouseUp.rawValue)
| (1 << CGEventType.rightMouseDown.rawValue)
| (1 << CGEventType.rightMouseUp.rawValue)
| (1 << CGEventType.otherMouseDown.rawValue)
| (1 << CGEventType.otherMouseUp.rawValue)
self.eventTap = CGEvent.tapCreate(tap: .cghidEventTap, place: .headInsertEventTap, options: .defaultTap, eventsOfInterest: CGEventMask(eventMask), callback: { (proxy: CGEventTapProxy, type: CGEventType, event: CGEvent, userInfo: UnsafeMutablePointer<Void>?) -> Unmanaged<CGEvent>? in
// mySelf is self, if you need to refer to objects in this class
let mySelf = Unmanaged<MyClass>.fromOpaque(userInfo!).takeUnretainedValue()
if type == .leftMouseDown || type == .leftMouseUp {
// Left mouse down etc..
}
return Unmanaged.passUnretained(event)
}, userInfo: UnsafeMutablePointer(Unmanaged.passUnretained(self).toOpaque()))
Und schließlich müssen Sie diese CFMachPort
zu einem Runloop zurück hinzuzufügen.
let runloopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0)
CFRunLoopAddSource(CFRunLoopGetCurrent(), runloopSource, CFRunLoopMode.commonModes)
Das ist es !. Probieren Sie es aus, ich bin neugierig, ob es funktioniert.
Warum würde ein Benutzer mit der rechten Maustaste klicken und dabei die linke Maustaste gedrückt halten? Dies ist mit den meisten Mac-Hardware nicht möglich. Wäre es nicht genug, wenn der Benutzer Text auswählt, die linke Maustaste loslässt und dann wieder mit der rechten Maustaste klickt? – mangerlahn