Source code for rpcclient.darwin.core_graphics

import time
from typing import Union

from rpcclient.darwin.consts import kCGHIDEventTap, kCGNullWindowID, kCGWindowListOptionAll
from rpcclient.exceptions import BadReturnValueError


[docs] class CoreGraphics: """ Manage Core Graphics events. """ def __init__(self, client): self._client = client @property def window_list(self): """ get a list of all opened windows https://developer.apple.com/documentation/coregraphics/1455137-cgwindowlistcopywindowinfo?language=objc """ return self._client.symbols.CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID).py()
[docs] def send_key_press(self, key_code: int, interval: Union[float, int] = 0): """ Send a key-press event. Accessibility features must be allowed. """ self.send_keyboard_event(key_code, True) if interval: time.sleep(interval) self.send_keyboard_event(key_code, False)
[docs] def send_keyboard_event(self, key_code: int, down: bool): """ send a CG keyboard event https://developer.apple.com/documentation/coregraphics/1456564-cgeventcreatekeyboardevent """ event = self._client.symbols.CGEventCreateKeyboardEvent(0, key_code, down) if not event: raise BadReturnValueError('CGEventCreateKeyboardEvent() failed') self._client.symbols.CGEventPost(kCGHIDEventTap, event)