def sendKey(self, key, modifiers=0x0): source = CG.CGEventSourceCreate(CG.kCGEventSourceStateCombinedSessionState) keyDown = CG.CGEventCreateKeyboardEvent(source, key, True) CG.CGEventSetFlags(keyDown, modifiers) keyUp = CG.CGEventCreateKeyboardEvent(source, key, False) CG.CGEventPost(CG.kCGAnnotatedSessionEventTap, keyDown) CG.CGEventPost(CG.kCGAnnotatedSessionEventTap, keyUp)
def event(self, key: str, down: bool): """ Create a Core Graphics keyboard event and post it for macOS to process """ try: event = CG.CGEventCreateKeyboardEvent(None, self.KeyMap[key.lower()], down) if key.isupper(): CG.CGEventSetFlags( event, CG.kCGEventFlagMaskShift | CG.CGEventGetFlags(event)) CG.CGEventPost(CG.kCGHIDEventTap, event) except KeyError: raise NotImplementedError(f"Key '{key}' is not implemented")