diff --git a/stubs/python-xlib/@tests/stubtest_allowlist.txt b/stubs/python-xlib/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000000..dfb343c6b415 --- /dev/null +++ b/stubs/python-xlib/@tests/stubtest_allowlist.txt @@ -0,0 +1,34 @@ +# Type helpers +Xlib._typing + +# __all__ is a map at runtime +# https://github.com/python-xlib/python-xlib/pull/238 +Xlib.ext(\.__all__)? + +# These will unconditionally fail at runtime +# See: https://github.com/python-xlib/python-xlib/issues/253 +Xlib.protocol.rq.DictWrapper.__gt__ +Xlib.protocol.rq.DictWrapper.__lt__ +Xlib.protocol.rq.Event.__gt__ +Xlib.protocol.rq.Event.__lt__ + +# Default values +Xlib.protocol.display.Display.send_and_recv +# Can be None or str once instanciated +Xlib.protocol.rq.*.structcode +# Should only ever be str once instanciated +Xlib.protocol.rq.*.name + +# Structs generate their attributes (@type_check_only) +Xlib.protocol.rq.Struct.__getattr__ + +# Iteration variable bleed into the global scope +Xlib.protocol.rq.c +# Re-export from tkinter +Xlib.ext.randr.W +# Re-exports from six +Xlib.ext.xinput.integer_types +Xlib.protocol.display.PY3 +Xlib.protocol.display.byte2int +Xlib.protocol.rq.PY3 +Xlib.protocol.rq.byte2int diff --git a/stubs/python-xlib/@tests/stubtest_allowlist_win32.txt b/stubs/python-xlib/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000000..db181acbf2e2 --- /dev/null +++ b/stubs/python-xlib/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,3 @@ +# failed to import, ModuleNotFoundError: No module named 'fcntl' +# https://github.com/python-xlib/python-xlib/pull/217 +Xlib.support.unix_connect diff --git a/stubs/python-xlib/METADATA.toml b/stubs/python-xlib/METADATA.toml new file mode 100644 index 000000000000..c166ec76a440 --- /dev/null +++ b/stubs/python-xlib/METADATA.toml @@ -0,0 +1,5 @@ +version = "0.32.*" +requires = ["types-Pillow"] + +[tool.stubtest] +ignore_missing_stub = false diff --git a/stubs/python-xlib/Xlib/X.pyi b/stubs/python-xlib/Xlib/X.pyi new file mode 100644 index 000000000000..30261ec97dfc --- /dev/null +++ b/stubs/python-xlib/Xlib/X.pyi @@ -0,0 +1,345 @@ +NONE: int +ParentRelative: int +CopyFromParent: int +PointerWindow: int +InputFocus: int +PointerRoot: int +AnyPropertyType: int +AnyKey: int +AnyButton: int +AllTemporary: int +CurrentTime: int +NoSymbol: int +NoEventMask: int +KeyPressMask: int +KeyReleaseMask: int +ButtonPressMask: int +ButtonReleaseMask: int +EnterWindowMask: int +LeaveWindowMask: int +PointerMotionMask: int +PointerMotionHintMask: int +Button1MotionMask: int +Button2MotionMask: int +Button3MotionMask: int +Button4MotionMask: int +Button5MotionMask: int +ButtonMotionMask: int +KeymapStateMask: int +ExposureMask: int +VisibilityChangeMask: int +StructureNotifyMask: int +ResizeRedirectMask: int +SubstructureNotifyMask: int +SubstructureRedirectMask: int +FocusChangeMask: int +PropertyChangeMask: int +ColormapChangeMask: int +OwnerGrabButtonMask: int +KeyPress: int +KeyRelease: int +ButtonPress: int +ButtonRelease: int +MotionNotify: int +EnterNotify: int +LeaveNotify: int +FocusIn: int +FocusOut: int +KeymapNotify: int +Expose: int +GraphicsExpose: int +NoExpose: int +VisibilityNotify: int +CreateNotify: int +DestroyNotify: int +UnmapNotify: int +MapNotify: int +MapRequest: int +ReparentNotify: int +ConfigureNotify: int +ConfigureRequest: int +GravityNotify: int +ResizeRequest: int +CirculateNotify: int +CirculateRequest: int +PropertyNotify: int +SelectionClear: int +SelectionRequest: int +SelectionNotify: int +ColormapNotify: int +ClientMessage: int +MappingNotify: int +LASTEvent: int +ShiftMask: int +LockMask: int +ControlMask: int +Mod1Mask: int +Mod2Mask: int +Mod3Mask: int +Mod4Mask: int +Mod5Mask: int +ShiftMapIndex: int +LockMapIndex: int +ControlMapIndex: int +Mod1MapIndex: int +Mod2MapIndex: int +Mod3MapIndex: int +Mod4MapIndex: int +Mod5MapIndex: int +Button1Mask: int +Button2Mask: int +Button3Mask: int +Button4Mask: int +Button5Mask: int +AnyModifier: int +Button1: int +Button2: int +Button3: int +Button4: int +Button5: int +NotifyNormal: int +NotifyGrab: int +NotifyUngrab: int +NotifyWhileGrabbed: int +NotifyHint: int +NotifyAncestor: int +NotifyVirtual: int +NotifyInferior: int +NotifyNonlinear: int +NotifyNonlinearVirtual: int +NotifyPointer: int +NotifyPointerRoot: int +NotifyDetailNone: int +VisibilityUnobscured: int +VisibilityPartiallyObscured: int +VisibilityFullyObscured: int +PlaceOnTop: int +PlaceOnBottom: int +FamilyInternet: int +FamilyDECnet: int +FamilyChaos: int +FamilyServerInterpreted: int +FamilyInternetV6: int +PropertyNewValue: int +PropertyDelete: int +ColormapUninstalled: int +ColormapInstalled: int +GrabModeSync: int +GrabModeAsync: int +GrabSuccess: int +AlreadyGrabbed: int +GrabInvalidTime: int +GrabNotViewable: int +GrabFrozen: int +AsyncPointer: int +SyncPointer: int +ReplayPointer: int +AsyncKeyboard: int +SyncKeyboard: int +ReplayKeyboard: int +AsyncBoth: int +SyncBoth: int +RevertToNone: int +RevertToPointerRoot: int +RevertToParent: int +Success: int +BadRequest: int +BadValue: int +BadWindow: int +BadPixmap: int +BadAtom: int +BadCursor: int +BadFont: int +BadMatch: int +BadDrawable: int +BadAccess: int +BadAlloc: int +BadColor: int +BadGC: int +BadIDChoice: int +BadName: int +BadLength: int +BadImplementation: int +FirstExtensionError: int +LastExtensionError: int +InputOutput: int +InputOnly: int +CWBackPixmap: int +CWBackPixel: int +CWBorderPixmap: int +CWBorderPixel: int +CWBitGravity: int +CWWinGravity: int +CWBackingStore: int +CWBackingPlanes: int +CWBackingPixel: int +CWOverrideRedirect: int +CWSaveUnder: int +CWEventMask: int +CWDontPropagate: int +CWColormap: int +CWCursor: int +CWX: int +CWY: int +CWWidth: int +CWHeight: int +CWBorderWidth: int +CWSibling: int +CWStackMode: int +ForgetGravity: int +NorthWestGravity: int +NorthGravity: int +NorthEastGravity: int +WestGravity: int +CenterGravity: int +EastGravity: int +SouthWestGravity: int +SouthGravity: int +SouthEastGravity: int +StaticGravity: int +UnmapGravity: int +NotUseful: int +WhenMapped: int +Always: int +IsUnmapped: int +IsUnviewable: int +IsViewable: int +SetModeInsert: int +SetModeDelete: int +DestroyAll: int +RetainPermanent: int +RetainTemporary: int +Above: int +Below: int +TopIf: int +BottomIf: int +Opposite: int +RaiseLowest: int +LowerHighest: int +PropModeReplace: int +PropModePrepend: int +PropModeAppend: int +GXclear: int +GXand: int +GXandReverse: int +GXcopy: int +GXandInverted: int +GXnoop: int +GXxor: int +GXor: int +GXnor: int +GXequiv: int +GXinvert: int +GXorReverse: int +GXcopyInverted: int +GXorInverted: int +GXnand: int +GXset: int +LineSolid: int +LineOnOffDash: int +LineDoubleDash: int +CapNotLast: int +CapButt: int +CapRound: int +CapProjecting: int +JoinMiter: int +JoinRound: int +JoinBevel: int +FillSolid: int +FillTiled: int +FillStippled: int +FillOpaqueStippled: int +EvenOddRule: int +WindingRule: int +ClipByChildren: int +IncludeInferiors: int +Unsorted: int +YSorted: int +YXSorted: int +YXBanded: int +CoordModeOrigin: int +CoordModePrevious: int +Complex: int +Nonconvex: int +Convex: int +ArcChord: int +ArcPieSlice: int +GCFunction: int +GCPlaneMask: int +GCForeground: int +GCBackground: int +GCLineWidth: int +GCLineStyle: int +GCCapStyle: int +GCJoinStyle: int +GCFillStyle: int +GCFillRule: int +GCTile: int +GCStipple: int +GCTileStipXOrigin: int +GCTileStipYOrigin: int +GCFont: int +GCSubwindowMode: int +GCGraphicsExposures: int +GCClipXOrigin: int +GCClipYOrigin: int +GCClipMask: int +GCDashOffset: int +GCDashList: int +GCArcMode: int +GCLastBit: int +FontLeftToRight: int +FontRightToLeft: int +FontChange: int +XYBitmap: int +XYPixmap: int +ZPixmap: int +AllocNone: int +AllocAll: int +DoRed: int +DoGreen: int +DoBlue: int +CursorShape: int +TileShape: int +StippleShape: int +AutoRepeatModeOff: int +AutoRepeatModeOn: int +AutoRepeatModeDefault: int +LedModeOff: int +LedModeOn: int +KBKeyClickPercent: int +KBBellPercent: int +KBBellPitch: int +KBBellDuration: int +KBLed: int +KBLedMode: int +KBKey: int +KBAutoRepeatMode: int +MappingSuccess: int +MappingBusy: int +MappingFailed: int +MappingModifier: int +MappingKeyboard: int +MappingPointer: int +DontPreferBlanking: int +PreferBlanking: int +DefaultBlanking: int +DisableScreenSaver: int +DisableScreenInterval: int +DontAllowExposures: int +AllowExposures: int +DefaultExposures: int +ScreenSaverReset: int +ScreenSaverActive: int +HostInsert: int +HostDelete: int +EnableAccess: int +DisableAccess: int +StaticGray: int +GrayScale: int +StaticColor: int +PseudoColor: int +TrueColor: int +DirectColor: int +LSBFirst: int +MSBFirst: int diff --git a/stubs/python-xlib/Xlib/XK.pyi b/stubs/python-xlib/Xlib/XK.pyi new file mode 100644 index 000000000000..01ad548182df --- /dev/null +++ b/stubs/python-xlib/Xlib/XK.pyi @@ -0,0 +1,7 @@ +from Xlib.keysymdef.latin1 import * +from Xlib.keysymdef.miscellany import * +from Xlib.X import NoSymbol as NoSymbol + +def string_to_keysym(keysym: str) -> int: ... +def load_keysym_group(group: str) -> None: ... +def keysym_to_string(keysym: int) -> str | None: ... diff --git a/stubs/python-xlib/Xlib/Xatom.pyi b/stubs/python-xlib/Xlib/Xatom.pyi new file mode 100644 index 000000000000..e0c1e0a9e64e --- /dev/null +++ b/stubs/python-xlib/Xlib/Xatom.pyi @@ -0,0 +1,69 @@ +PRIMARY: int +SECONDARY: int +ARC: int +ATOM: int +BITMAP: int +CARDINAL: int +COLORMAP: int +CURSOR: int +CUT_BUFFER0: int +CUT_BUFFER1: int +CUT_BUFFER2: int +CUT_BUFFER3: int +CUT_BUFFER4: int +CUT_BUFFER5: int +CUT_BUFFER6: int +CUT_BUFFER7: int +DRAWABLE: int +FONT: int +INTEGER: int +PIXMAP: int +POINT: int +RECTANGLE: int +RESOURCE_MANAGER: int +RGB_COLOR_MAP: int +RGB_BEST_MAP: int +RGB_BLUE_MAP: int +RGB_DEFAULT_MAP: int +RGB_GRAY_MAP: int +RGB_GREEN_MAP: int +RGB_RED_MAP: int +STRING: int +VISUALID: int +WINDOW: int +WM_COMMAND: int +WM_HINTS: int +WM_CLIENT_MACHINE: int +WM_ICON_NAME: int +WM_ICON_SIZE: int +WM_NAME: int +WM_NORMAL_HINTS: int +WM_SIZE_HINTS: int +WM_ZOOM_HINTS: int +MIN_SPACE: int +NORM_SPACE: int +MAX_SPACE: int +END_SPACE: int +SUPERSCRIPT_X: int +SUPERSCRIPT_Y: int +SUBSCRIPT_X: int +SUBSCRIPT_Y: int +UNDERLINE_POSITION: int +UNDERLINE_THICKNESS: int +STRIKEOUT_ASCENT: int +STRIKEOUT_DESCENT: int +ITALIC_ANGLE: int +X_HEIGHT: int +QUAD_WIDTH: int +WEIGHT: int +POINT_SIZE: int +RESOLUTION: int +COPYRIGHT: int +NOTICE: int +FONT_NAME: int +FAMILY_NAME: int +FULL_NAME: int +CAP_HEIGHT: int +WM_CLASS: int +WM_TRANSIENT_FOR: int +LAST_PREDEFINED: int diff --git a/stubs/python-xlib/Xlib/Xcursorfont.pyi b/stubs/python-xlib/Xlib/Xcursorfont.pyi new file mode 100644 index 000000000000..43116488528f --- /dev/null +++ b/stubs/python-xlib/Xlib/Xcursorfont.pyi @@ -0,0 +1,78 @@ +num_glyphs: int +X_cursor: int +arrow: int +based_arrow_down: int +based_arrow_up: int +boat: int +bogosity: int +bottom_left_corner: int +bottom_right_corner: int +bottom_side: int +bottom_tee: int +box_spiral: int +center_ptr: int +circle: int +clock: int +coffee_mug: int +cross: int +cross_reverse: int +crosshair: int +diamond_cross: int +dot: int +dotbox: int +double_arrow: int +draft_large: int +draft_small: int +draped_box: int +exchange: int +fleur: int +gobbler: int +gumby: int +hand1: int +hand2: int +heart: int +icon: int +iron_cross: int +left_ptr: int +left_side: int +left_tee: int +leftbutton: int +ll_angle: int +lr_angle: int +man: int +middlebutton: int +mouse: int +pencil: int +pirate: int +plus: int +question_arrow: int +right_ptr: int +right_side: int +right_tee: int +rightbutton: int +rtl_logo: int +sailboat: int +sb_down_arrow: int +sb_h_double_arrow: int +sb_left_arrow: int +sb_right_arrow: int +sb_up_arrow: int +sb_v_double_arrow: int +shuttle: int +sizing: int +spider: int +spraycan: int +star: int +target: int +tcross: int +top_left_arrow: int +top_left_corner: int +top_right_corner: int +top_side: int +top_tee: int +trek: int +ul_angle: int +umbrella: int +ur_angle: int +watch: int +xterm: int diff --git a/stubs/python-xlib/Xlib/Xutil.pyi b/stubs/python-xlib/Xlib/Xutil.pyi new file mode 100644 index 000000000000..e30c44b13797 --- /dev/null +++ b/stubs/python-xlib/Xlib/Xutil.pyi @@ -0,0 +1,57 @@ +NoValue: int +XValue: int +YValue: int +WidthValue: int +HeightValue: int +AllValues: int +XNegative: int +YNegative: int +USPosition: int +USSize: int +PPosition: int +PSize: int +PMinSize: int +PMaxSize: int +PResizeInc: int +PAspect: int +PBaseSize: int +PWinGravity: int +PAllHints: int +InputHint: int +StateHint: int +IconPixmapHint: int +IconWindowHint: int +IconPositionHint: int +IconMaskHint: int +WindowGroupHint: int +MessageHint: int +UrgencyHint: int +AllHints: int +WithdrawnState: int +NormalState: int +IconicState: int +DontCareState: int +ZoomState: int +InactiveState: int +RectangleOut: int +RectangleIn: int +RectanglePart: int +VisualNoMask: int +VisualIDMask: int +VisualScreenMask: int +VisualDepthMask: int +VisualClassMask: int +VisualRedMaskMask: int +VisualGreenMaskMask: int +VisualBlueMaskMask: int +VisualColormapSizeMask: int +VisualBitsPerRGBMask: int +VisualAllMask: int +ReleaseByFreeingColormap: int +BitmapSuccess: int +BitmapOpenFailed: int +BitmapFileInvalid: int +BitmapNoMemory: int +XCSUCCESS: int +XCNOMEM: int +XCNOENT: int diff --git a/stubs/python-xlib/Xlib/__init__.pyi b/stubs/python-xlib/Xlib/__init__.pyi new file mode 100644 index 000000000000..988134c01302 --- /dev/null +++ b/stubs/python-xlib/Xlib/__init__.pyi @@ -0,0 +1,14 @@ +from Xlib import ( + XK as XK, + X as X, + Xatom as Xatom, + Xcursorfont as Xcursorfont, + Xutil as Xutil, + display as display, + error as error, + rdb as rdb, +) + +__all__ = ["X", "XK", "Xatom", "Xcursorfont", "Xutil", "display", "error", "rdb"] + +# Shared types throughout the stub diff --git a/stubs/python-xlib/Xlib/_typing.pyi b/stubs/python-xlib/Xlib/_typing.pyi new file mode 100644 index 000000000000..34d5b3cd4620 --- /dev/null +++ b/stubs/python-xlib/Xlib/_typing.pyi @@ -0,0 +1,12 @@ +from _typeshed import FileDescriptor, StrOrBytesPath +from collections.abc import Callable +from typing import Optional, TypeVar +from typing_extensions import TypeAlias + +from Xlib.error import XError +from Xlib.protocol.rq import Request + +_T = TypeVar("_T") +ErrorHandler: TypeAlias = Callable[[XError, Optional[Request]], _T] +Unused: TypeAlias = object +OpenFile: TypeAlias = StrOrBytesPath | FileDescriptor diff --git a/stubs/python-xlib/Xlib/display.pyi b/stubs/python-xlib/Xlib/display.pyi new file mode 100644 index 000000000000..eaf74a6f5c31 --- /dev/null +++ b/stubs/python-xlib/Xlib/display.pyi @@ -0,0 +1,161 @@ +from collections.abc import Callable, Iterable, Sequence +from types import FunctionType, MethodType +from typing import Any, Pattern, overload +from typing_extensions import Literal, TypeAlias, TypedDict + +from Xlib import error +from Xlib._typing import ErrorHandler +from Xlib.protocol import display, request, rq +from Xlib.xobject import colormap, cursor, drawable, fontable, resource + +_ResourceBaseClass: TypeAlias = ( + resource.Resource + | drawable.Drawable + | drawable.Window + | drawable.Pixmap + | fontable.Fontable + | fontable.Font + | fontable.GC + | colormap.Colormap + | cursor.Cursor +) + +# Is the type of the `_resource_baseclasses` variable, defined in this file at runtime +class _ResourceBaseClassesType(TypedDict): # noqa: Y049 + resource: type[resource.Resource] + drawable: type[drawable.Drawable] + window: type[drawable.Window] + pixmap: type[drawable.Pixmap] + fontable: type[fontable.Fontable] + font: type[fontable.Font] + gc: type[fontable.GC] + colormap: type[colormap.Colormap] + cursor: type[cursor.Cursor] + +class _BaseDisplay(display.Display): + def __init__(self, display: str | None = ...) -> None: ... + def get_atom(self, atomname: str, only_if_exists: bool = ...) -> int: ... + +class Display: + display: _BaseDisplay + keysym_translations: dict[int, str] + extensions: list[str] + class_extension_dicts: dict[str, dict[str, FunctionType]] + display_extension_methods: dict[str, Callable[..., Any]] + extension_event: rq.DictWrapper + def __init__(self, display: str | None = ...) -> None: ... + def get_display_name(self) -> str: ... + def fileno(self) -> int: ... + def close(self) -> None: ... + def set_error_handler(self, handler: ErrorHandler[object] | None) -> None: ... + def flush(self) -> None: ... + def sync(self) -> None: ... + def next_event(self) -> rq.Event: ... + def pending_events(self) -> int: ... + def has_extension(self, extension: str) -> bool: ... + @overload + def create_resource_object(self, type: Literal["resource"], id: int) -> resource.Resource: ... + @overload + def create_resource_object(self, type: Literal["drawable"], id: int) -> drawable.Drawable: ... + @overload + def create_resource_object(self, type: Literal["window"], id: int) -> drawable.Window: ... + @overload + def create_resource_object(self, type: Literal["pixmap"], id: int) -> drawable.Pixmap: ... + @overload + def create_resource_object(self, type: Literal["fontable"], id: int) -> fontable.Fontable: ... + @overload + def create_resource_object(self, type: Literal["font"], id: int) -> fontable.Font: ... + @overload + def create_resource_object(self, type: Literal["gc"], id: int) -> fontable.GC: ... + @overload + def create_resource_object(self, type: Literal["colormap"], id: int) -> colormap.Colormap: ... + @overload + def create_resource_object(self, type: Literal["cursor"], id: int) -> cursor.Cursor: ... + @overload + def create_resource_object(self, type: str, id: int) -> resource.Resource: ... + def __getattr__(self, attr: str) -> MethodType: ... + def screen(self, sno: int | None = ...) -> rq.Struct: ... + def screen_count(self) -> int: ... + def get_default_screen(self) -> int: ... + def extension_add_method(self, object: str, name: str, function: Callable[..., Any]) -> None: ... + def extension_add_event(self, code: int, evt: type, name: str | None = ...) -> None: ... + def extension_add_subevent(self, code: int, subcode: int | None, evt: type[rq.Event], name: str | None = ...) -> None: ... + def extension_add_error(self, code: int, err: type[error.XError]) -> None: ... + def keycode_to_keysym(self, keycode: int, index: int) -> int: ... + def keysym_to_keycode(self, keysym: int) -> int: ... + def keysym_to_keycodes(self, keysym: int) -> Iterable[tuple[int, int]]: ... + def refresh_keyboard_mapping(self, evt: rq.Event) -> None: ... + def lookup_string(self, keysym: int) -> str | None: ... + def rebind_string(self, keysym: int, newstring: str | None) -> None: ... + def intern_atom(self, name: str, only_if_exists: bool = ...) -> int: ... + def get_atom(self, atom: str, only_if_exists: bool = ...) -> int: ... + def get_atom_name(self, atom: int) -> str: ... + def get_selection_owner(self, selection: int) -> int: ... + def send_event( + self, + destination: int, + event: rq.Event, + event_mask: int = ..., + propagate: bool = ..., + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def ungrab_pointer(self, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def change_active_pointer_grab( + self, event_mask: int, cursor: cursor.Cursor, time: int, onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def ungrab_keyboard(self, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def allow_events(self, mode: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def grab_server(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def ungrab_server(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def warp_pointer( + self, + x: int, + y: int, + src_window: int = ..., + src_x: int = ..., + src_y: int = ..., + src_width: int = ..., + src_height: int = ..., + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def set_input_focus(self, focus: int, revert_to: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_input_focus(self) -> request.GetInputFocus: ... + def query_keymap(self) -> bytes: ... # TODO: Validate if this is correct + def open_font(self, name: str) -> _ResourceBaseClass | None: ... + def list_fonts(self, pattern: Pattern[str] | str, max_names: int) -> list[str]: ... + def list_fonts_with_info(self, pattern: Pattern[str] | str, max_names: int) -> request.ListFontsWithInfo: ... + def set_font_path(self, path: Sequence[str], onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_font_path(self) -> list[str]: ... + def query_extension(self, name: str) -> request.QueryExtension | None: ... + def list_extensions(self) -> list[str]: ... + def change_keyboard_mapping( + self, first_keycode: int, keysyms: Sequence[Sequence[int]], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def get_keyboard_mapping(self, first_keycode: int, count: int) -> list[tuple[int, ...]]: ... + def change_keyboard_control(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... + def get_keyboard_control(self) -> request.GetKeyboardControl: ... + def bell(self, percent: int = ..., onerror: ErrorHandler[object] | None = ...) -> None: ... + def change_pointer_control( + self, accel: tuple[int, int] | None = ..., threshold: int | None = ..., onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def get_pointer_control(self) -> request.GetPointerControl: ... + def set_screen_saver( + self, timeout: int, interval: int, prefer_blank: int, allow_exposures: int, onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def get_screen_saver(self) -> request.GetScreenSaver: ... + def change_hosts( + self, + mode: int, + host_family: int, + host: Sequence[int] | Sequence[bytes], # TODO: validate + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def list_hosts(self) -> request.ListHosts: ... + def set_access_control(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_close_down_mode(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def force_screen_saver(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_pointer_mapping(self, map: Sequence[int]) -> int: ... + def get_pointer_mapping(self) -> list[int]: ... + def set_modifier_mapping(self, keycodes: rq._ModifierMappingList8Elements) -> int: ... + def get_modifier_mapping(self) -> Sequence[Sequence[int]]: ... + def no_operation(self, onerror: ErrorHandler[object] | None = ...) -> None: ... diff --git a/stubs/python-xlib/Xlib/error.pyi b/stubs/python-xlib/Xlib/error.pyi new file mode 100644 index 000000000000..aa846f8370f9 --- /dev/null +++ b/stubs/python-xlib/Xlib/error.pyi @@ -0,0 +1,57 @@ +from _typeshed import SliceableBuffer +from typing_extensions import Literal + +from Xlib.protocol import display, rq + +class DisplayError(Exception): + display: object + def __init__(self, display: object) -> None: ... + +class DisplayNameError(DisplayError): ... + +class DisplayConnectionError(DisplayError): + display: object + msg: object + def __init__(self, display: object, msg: object) -> None: ... + +class ConnectionClosedError(Exception): + whom: object + def __init__(self, whom: object) -> None: ... + +class XauthError(Exception): ... +class XNoAuthError(Exception): ... +class ResourceIDError(Exception): ... + +class XError(rq.GetAttrData, Exception): + def __init__(self, display: display.Display, data: SliceableBuffer) -> None: ... + +class XResourceError(XError): ... +class BadRequest(XError): ... +class BadValue(XError): ... +class BadWindow(XResourceError): ... +class BadPixmap(XResourceError): ... +class BadAtom(XError): ... +class BadCursor(XResourceError): ... +class BadFont(XResourceError): ... +class BadMatch(XError): ... +class BadDrawable(XResourceError): ... +class BadAccess(XError): ... +class BadAlloc(XError): ... +class BadColor(XResourceError): ... +class BadGC(XResourceError): ... +class BadIDChoice(XResourceError): ... +class BadName(XError): ... +class BadLength(XError): ... +class BadImplementation(XError): ... + +xerror_class: dict[int, type[XError]] + +class CatchError: + error_types: tuple[type[XError], ...] + error: XError | None + request: rq.Request | None + def __init__(self, *errors: type[XError]) -> None: ... + def __call__(self, error: XError, request: rq.Request | None) -> Literal[0, 1]: ... + def get_error(self) -> XError | None: ... + def get_request(self) -> rq.Request | None: ... + def reset(self) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/__init__.pyi b/stubs/python-xlib/Xlib/ext/__init__.pyi new file mode 100644 index 000000000000..17afcdcac8f2 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/__init__.pyi @@ -0,0 +1,35 @@ +from Xlib.ext import ( + composite as composite, + damage as damage, + dpms as dpms, + ge as ge, + nvcontrol as nvcontrol, + randr as randr, + record as record, + res as res, + screensaver as screensaver, + security as security, + shape as shape, + xfixes as xfixes, + xinerama as xinerama, + xinput as xinput, + xtest as xtest, +) + +__all__ = [ + "ge", + "xtest", + "shape", + "xinerama", + "record", + "composite", + "randr", + "xfixes", + "security", + "xinput", + "nvcontrol", + "damage", + "dpms", + "res", + "screensaver", +] diff --git a/stubs/python-xlib/Xlib/ext/composite.pyi b/stubs/python-xlib/Xlib/ext/composite.pyi new file mode 100644 index 000000000000..96123fcf6ec9 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/composite.pyi @@ -0,0 +1,47 @@ +from collections.abc import Callable +from typing import Any, Union +from typing_extensions import TypeAlias + +from Xlib._typing import ErrorHandler, Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import drawable, resource + +_Update: TypeAlias = Callable[[Union[rq.DictWrapper, dict[str, Any]]], object] + +extname: str +RedirectAutomatic: int +RedirectManual: int + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> QueryVersion: ... + +class RedirectWindow(rq.Request): ... + +def redirect_window(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... + +class RedirectSubwindows(rq.Request): ... + +def redirect_subwindows(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... + +class UnredirectWindow(rq.Request): ... + +def unredirect_window(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... + +class UnredirectSubindows(rq.Request): ... + +def unredirect_subwindows(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... + +class CreateRegionFromBorderClip(rq.Request): ... + +def create_region_from_border_clip(self: drawable.Window, onerror: ErrorHandler[object] | None = ...) -> int: ... + +class NameWindowPixmap(rq.Request): ... + +def name_window_pixmap(self: Display | resource.Resource, onerror: ErrorHandler[object] | None = ...) -> drawable.Pixmap: ... + +class GetOverlayWindow(rq.ReplyRequest): ... + +def get_overlay_window(self: Display) -> GetOverlayWindow: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/damage.pyi b/stubs/python-xlib/Xlib/ext/damage.pyi new file mode 100644 index 000000000000..35d8b7199880 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/damage.pyi @@ -0,0 +1,41 @@ +from Xlib.display import Display +from Xlib.error import XError +from Xlib.protocol import request, rq +from Xlib.xobject import resource + +extname: str +DamageNotifyCode: int +BadDamageCode: int + +class BadDamageError(XError): ... + +DamageReportRawRectangles: int +DamageReportDeltaRectangles: int +DamageReportBoundingBox: int +DamageReportNonEmpty: int +DamageReportLevel: tuple[int, int, int, int] +DAMAGE = rq.Card32 + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> QueryVersion: ... + +class DamageCreate(rq.Request): ... + +def damage_create(self: Display | resource.Resource, level: int) -> int: ... + +class DamageDestroy(rq.Request): ... + +def damage_destroy(self: Display | resource.Resource, damage: int) -> None: ... + +class DamageSubtract(rq.Request): ... + +def damage_subtract(self: Display | resource.Resource, damage: int, repair: int = ..., parts: int = ...) -> None: ... + +class DamageAdd(rq.Request): ... + +def damage_add(self: Display | resource.Resource, repair: int, parts: int) -> None: ... + +class DamageNotify(rq.Event): ... + +def init(disp: Display, info: request.QueryExtension) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/dpms.pyi b/stubs/python-xlib/Xlib/ext/dpms.pyi new file mode 100644 index 000000000000..35c6b9208117 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/dpms.pyi @@ -0,0 +1,46 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import resource + +extname: str +DPMSModeOn: int +DPMSModeStandby: int +DPMSModeSuspend: int +DPMSModeOff: int +DPMSPowerLevel: tuple[int, int, int, int] + +class DPMSGetVersion(rq.ReplyRequest): ... + +def get_version(self: Display | resource.Resource) -> DPMSGetVersion: ... + +class DPMSCapable(rq.ReplyRequest): ... + +def capable(self: Display | resource.Resource) -> DPMSCapable: ... + +class DPMSGetTimeouts(rq.ReplyRequest): ... + +def get_timeouts(self: Display | resource.Resource) -> DPMSGetTimeouts: ... + +class DPMSSetTimeouts(rq.Request): ... + +def set_timeouts( + self: Display | resource.Resource, standby_timeout: int, suspend_timeout: int, off_timeout: int +) -> DPMSSetTimeouts: ... + +class DPMSEnable(rq.Request): ... + +def enable(self: Display | resource.Resource) -> DPMSEnable: ... + +class DPMSDisable(rq.Request): ... + +def disable(self: Display | resource.Resource) -> DPMSDisable: ... + +class DPMSForceLevel(rq.Request): ... + +def force_level(self: Display | resource.Resource, power_level: int) -> DPMSForceLevel: ... + +class DPMSInfo(rq.ReplyRequest): ... + +def info(self: Display | resource.Resource) -> DPMSInfo: ... +def init(disp: Display, _info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/ge.pyi b/stubs/python-xlib/Xlib/ext/ge.pyi new file mode 100644 index 000000000000..790c0a8542bd --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/ge.pyi @@ -0,0 +1,16 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import resource + +extname: str +GenericEventCode: int + +class GEQueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> GEQueryVersion: ... + +class GenericEvent(rq.Event): ... + +def add_event_data(self: Display | resource.Resource, extension: int, evtype: int, estruct: int) -> None: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/nvcontrol.pyi b/stubs/python-xlib/Xlib/ext/nvcontrol.pyi new file mode 100644 index 000000000000..edae4e22afca --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/nvcontrol.pyi @@ -0,0 +1,1063 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import resource + +extname: str + +def query_target_count(self: Display | resource.Resource, target: Target) -> int: ... +def query_int_attribute(self: Display | resource.Resource, target: Target, display_mask: int, attr: int) -> int | None: ... +def set_int_attribute(self: Display | resource.Resource, target: Target, display_mask: int, attr: int, value: int) -> bool: ... +def query_string_attribute(self: Display | resource.Resource, target: Target, display_mask: int, attr: int) -> str | None: ... +def query_valid_attr_values( + self: Display | resource.Resource, target: Target, display_mask: int, attr: int +) -> tuple[int, int] | None: ... +def query_binary_data(self: Display | resource.Resource, target: Target, display_mask: int, attr: int) -> bytes | None: ... +def get_coolers_used_by_gpu(self: Display | resource.Resource, target: Target) -> list[int] | None: ... +def get_gpu_count(self: Display | resource.Resource) -> int: ... +def get_name(self: Display | resource.Resource, target: Target) -> str | None: ... +def get_driver_version(self: Display | resource.Resource, target: Target) -> str | None: ... +def get_vbios_version(self: Display | resource.Resource, target: Target) -> str | None: ... +def get_gpu_uuid(self: Display | resource.Resource, target: Target) -> str | None: ... +def get_utilization_rates(self: Display | resource.Resource, target: Target) -> dict[str, str | int]: ... +def get_performance_modes(self: Display | resource.Resource, target: Target) -> list[dict[str, str | int]]: ... +def get_clock_info(self: Display | resource.Resource, target: Target) -> dict[str, str | int]: ... +def get_vram(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_irq(self: Display | resource.Resource, target: Target) -> int | None: ... +def supports_framelock(self: Display | resource.Resource, target: Target) -> int | None: ... +def gvo_supported(self: Display | resource.Resource, screen: Target) -> int | None: ... +def get_core_temp(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_core_threshold(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_default_core_threshold(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_max_core_threshold(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_ambient_temp(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_cuda_cores(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_memory_bus_width(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_total_dedicated_gpu_memory(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_used_dedicated_gpu_memory(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_curr_pcie_link_width(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_max_pcie_link_width(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_curr_pcie_link_generation(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_encoder_utilization(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_decoder_utilization(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_current_performance_level(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_gpu_nvclock_offset(self: Display | resource.Resource, target: Target, perf_level: int) -> int | None: ... +def set_gpu_nvclock_offset(self: Display | resource.Resource, target: Target, perf_level: int, offset: int) -> bool: ... +def set_gpu_nvclock_offset_all_levels(self: Display | resource.Resource, target: Target, offset: int) -> bool: ... +def get_gpu_nvclock_offset_range( + self: Display | resource.Resource, target: Target, perf_level: int +) -> tuple[int, int] | None: ... +def get_mem_transfer_rate_offset(self: Display | resource.Resource, target: Target, perf_level: int) -> int | None: ... +def set_mem_transfer_rate_offset(self: Display | resource.Resource, target: Target, perf_level: int, offset: int) -> bool: ... +def set_mem_transfer_rate_offset_all_levels(self: Display | resource.Resource, target: Target, offset: int) -> bool: ... +def get_mem_transfer_rate_offset_range( + self: Display | resource.Resource, target: Target, perf_level: int +) -> tuple[int, int] | None: ... +def get_cooler_manual_control_enabled(self: Display | resource.Resource, target: Target) -> int | None: ... +def set_cooler_manual_control_enabled(self: Display | resource.Resource, target: Target, enabled: bool) -> bool: ... +def get_fan_duty(self: Display | resource.Resource, target: Target) -> int | None: ... +def set_fan_duty(self: Display | resource.Resource, cooler: Target, speed: int) -> bool: ... +def get_fan_rpm(self: Display | resource.Resource, target: Target) -> int | None: ... +def get_max_displays(self: Display | resource.Resource, target: Target) -> int | None: ... +def init(disp: Display, info: Unused) -> None: ... + +NV_CTRL_FLATPANEL_SCALING: int +NV_CTRL_FLATPANEL_SCALING_DEFAULT: int +NV_CTRL_FLATPANEL_SCALING_NATIVE: int +NV_CTRL_FLATPANEL_SCALING_SCALED: int +NV_CTRL_FLATPANEL_SCALING_CENTERED: int +NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED: int +NV_CTRL_FLATPANEL_DITHERING: int +NV_CTRL_FLATPANEL_DITHERING_DEFAULT: int +NV_CTRL_FLATPANEL_DITHERING_ENABLED: int +NV_CTRL_FLATPANEL_DITHERING_DISABLED: int +NV_CTRL_DITHERING: int +NV_CTRL_DITHERING_AUTO: int +NV_CTRL_DITHERING_ENABLED: int +NV_CTRL_DITHERING_DISABLED: int +NV_CTRL_DIGITAL_VIBRANCE: int +NV_CTRL_BUS_TYPE: int +NV_CTRL_BUS_TYPE_AGP: int +NV_CTRL_BUS_TYPE_PCI: int +NV_CTRL_BUS_TYPE_PCI_EXPRESS: int +NV_CTRL_BUS_TYPE_INTEGRATED: int +NV_CTRL_TOTAL_GPU_MEMORY: int +NV_CTRL_VIDEO_RAM: int +NV_CTRL_IRQ: int +NV_CTRL_OPERATING_SYSTEM: int +NV_CTRL_OPERATING_SYSTEM_LINUX: int +NV_CTRL_OPERATING_SYSTEM_FREEBSD: int +NV_CTRL_OPERATING_SYSTEM_SUNOS: int +NV_CTRL_SYNC_TO_VBLANK: int +NV_CTRL_SYNC_TO_VBLANK_OFF: int +NV_CTRL_SYNC_TO_VBLANK_ON: int +NV_CTRL_LOG_ANISO: int +NV_CTRL_FSAA_MODE: int +NV_CTRL_FSAA_MODE_NONE: int +NV_CTRL_FSAA_MODE_2x: int +NV_CTRL_FSAA_MODE_2x_5t: int +NV_CTRL_FSAA_MODE_15x15: int +NV_CTRL_FSAA_MODE_2x2: int +NV_CTRL_FSAA_MODE_4x: int +NV_CTRL_FSAA_MODE_4x_9t: int +NV_CTRL_FSAA_MODE_8x: int +NV_CTRL_FSAA_MODE_16x: int +NV_CTRL_FSAA_MODE_8xS: int +NV_CTRL_FSAA_MODE_8xQ: int +NV_CTRL_FSAA_MODE_16xS: int +NV_CTRL_FSAA_MODE_16xQ: int +NV_CTRL_FSAA_MODE_32xS: int +NV_CTRL_FSAA_MODE_32x: int +NV_CTRL_FSAA_MODE_64xS: int +NV_CTRL_FSAA_MODE_MAX: int +NV_CTRL_UBB: int +NV_CTRL_UBB_OFF: int +NV_CTRL_UBB_ON: int +NV_CTRL_OVERLAY: int +NV_CTRL_OVERLAY_OFF: int +NV_CTRL_OVERLAY_ON: int +NV_CTRL_STEREO: int +NV_CTRL_STEREO_OFF: int +NV_CTRL_STEREO_DDC: int +NV_CTRL_STEREO_BLUELINE: int +NV_CTRL_STEREO_DIN: int +NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY: int +NV_CTRL_STEREO_VERTICAL_INTERLACED: int +NV_CTRL_STEREO_COLOR_INTERLACED: int +NV_CTRL_STEREO_HORIZONTAL_INTERLACED: int +NV_CTRL_STEREO_CHECKERBOARD_PATTERN: int +NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN: int +NV_CTRL_STEREO_3D_VISION: int +NV_CTRL_STEREO_3D_VISION_PRO: int +NV_CTRL_STEREO_HDMI_3D: int +NV_CTRL_STEREO_TRIDELITY_SL: int +NV_CTRL_STEREO_INBAND_STEREO_SIGNALING: int +NV_CTRL_STEREO_MAX: int +NV_CTRL_EMULATE: int +NV_CTRL_EMULATE_NONE: int +NV_CTRL_TWINVIEW: int +NV_CTRL_TWINVIEW_NOT_ENABLED: int +NV_CTRL_TWINVIEW_ENABLED: int +NV_CTRL_CONNECTED_DISPLAYS: int +NV_CTRL_ENABLED_DISPLAYS: int +NV_CTRL_FRAMELOCK: int +NV_CTRL_FRAMELOCK_NOT_SUPPORTED: int +NV_CTRL_FRAMELOCK_SUPPORTED: int +NV_CTRL_FRAMELOCK_MASTER: int +NV_CTRL_FRAMELOCK_MASTER_FALSE: int +NV_CTRL_FRAMELOCK_MASTER_TRUE: int +NV_CTRL_FRAMELOCK_POLARITY: int +NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE: int +NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE: int +NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES: int +NV_CTRL_FRAMELOCK_SYNC_DELAY: int +NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX: int +NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR: float +NV_CTRL_FRAMELOCK_SYNC_INTERVAL: int +NV_CTRL_FRAMELOCK_PORT0_STATUS: int +NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT: int +NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT: int +NV_CTRL_FRAMELOCK_PORT1_STATUS: int +NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT: int +NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT: int +NV_CTRL_FRAMELOCK_HOUSE_STATUS: int +NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED: int +NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED: int +NV_CTRL_FRAMELOCK_SYNC: int +NV_CTRL_FRAMELOCK_SYNC_DISABLE: int +NV_CTRL_FRAMELOCK_SYNC_ENABLE: int +NV_CTRL_FRAMELOCK_SYNC_READY: int +NV_CTRL_FRAMELOCK_SYNC_READY_FALSE: int +NV_CTRL_FRAMELOCK_SYNC_READY_TRUE: int +NV_CTRL_FRAMELOCK_STEREO_SYNC: int +NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE: int +NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE: int +NV_CTRL_FRAMELOCK_TEST_SIGNAL: int +NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE: int +NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE: int +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED: int +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE: int +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0: int +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1: int +NV_CTRL_FRAMELOCK_VIDEO_MODE: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL: int +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL: int +NV_CTRL_FRAMELOCK_SYNC_RATE: int +NV_CTRL_FORCE_GENERIC_CPU: int +NV_CTRL_FORCE_GENERIC_CPU_DISABLE: int +NV_CTRL_FORCE_GENERIC_CPU_ENABLE: int +NV_CTRL_OPENGL_AA_LINE_GAMMA: int +NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE: int +NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE: int +NV_CTRL_FRAMELOCK_TIMING: int +NV_CTRL_FRAMELOCK_TIMING_FALSE: int +NV_CTRL_FRAMELOCK_TIMING_TRUE: int +NV_CTRL_FLIPPING_ALLOWED: int +NV_CTRL_FLIPPING_ALLOWED_FALSE: int +NV_CTRL_FLIPPING_ALLOWED_TRUE: int +NV_CTRL_ARCHITECTURE: int +NV_CTRL_ARCHITECTURE_X86: int +NV_CTRL_ARCHITECTURE_X86_64: int +NV_CTRL_ARCHITECTURE_IA64: int +NV_CTRL_ARCHITECTURE_ARM: int +NV_CTRL_ARCHITECTURE_AARCH64: int +NV_CTRL_ARCHITECTURE_PPC64LE: int +NV_CTRL_TEXTURE_CLAMPING: int +NV_CTRL_TEXTURE_CLAMPING_EDGE: int +NV_CTRL_TEXTURE_CLAMPING_SPEC: int +NV_CTRL_CURSOR_SHADOW: int +NV_CTRL_CURSOR_SHADOW_DISABLE: int +NV_CTRL_CURSOR_SHADOW_ENABLE: int +NV_CTRL_CURSOR_SHADOW_ALPHA: int +NV_CTRL_CURSOR_SHADOW_RED: int +NV_CTRL_CURSOR_SHADOW_GREEN: int +NV_CTRL_CURSOR_SHADOW_BLUE: int +NV_CTRL_CURSOR_SHADOW_X_OFFSET: int +NV_CTRL_CURSOR_SHADOW_Y_OFFSET: int +NV_CTRL_FSAA_APPLICATION_CONTROLLED: int +NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED: int +NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED: int +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED: int +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED: int +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED: int +NV_CTRL_IMAGE_SHARPENING: int +NV_CTRL_TV_OVERSCAN: int +NV_CTRL_TV_FLICKER_FILTER: int +NV_CTRL_TV_BRIGHTNESS: int +NV_CTRL_TV_HUE: int +NV_CTRL_TV_CONTRAST: int +NV_CTRL_TV_SATURATION: int +NV_CTRL_TV_RESET_SETTINGS: int +NV_CTRL_GPU_CORE_TEMPERATURE: int +NV_CTRL_GPU_CORE_THRESHOLD: int +NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD: int +NV_CTRL_GPU_MAX_CORE_THRESHOLD: int +NV_CTRL_AMBIENT_TEMPERATURE: int +NV_CTRL_PBUFFER_SCANOUT_SUPPORTED: int +NV_CTRL_PBUFFER_SCANOUT_FALSE: int +NV_CTRL_PBUFFER_SCANOUT_TRUE: int +NV_CTRL_PBUFFER_SCANOUT_XID: int +NV_CTRL_GVO_SUPPORTED: int +NV_CTRL_GVO_SUPPORTED_FALSE: int +NV_CTRL_GVO_SUPPORTED_TRUE: int +NV_CTRL_GVO_SYNC_MODE: int +NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: int +NV_CTRL_GVO_SYNC_MODE_GENLOCK: int +NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: int +NV_CTRL_GVO_SYNC_SOURCE: int +NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE: int +NV_CTRL_GVO_SYNC_SOURCE_SDI: int +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT: int +NV_CTRL_GVIO_VIDEO_FORMAT_NONE: int +NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC: int +NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260: int +NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274: int +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372: int +NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT: int +NV_CTRL_GVO_VIDEO_FORMAT_NONE: int +NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC: int +NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260: int +NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260: int +NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295: int +NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296: int +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274: int +NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372: int +NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372: int +NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT: int +NV_CTRL_GVO_INPUT_VIDEO_FORMAT: int +NV_CTRL_GVO_DATA_FORMAT: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444: int +NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444: int +NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444: int +NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444: int +NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444: int +NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444: int +NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444: int +NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422: int +NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422: int +NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422: int +NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444: int +NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444: int +NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444: int +NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU: int +NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422: int +NV_CTRL_GVO_DISPLAY_X_SCREEN: int +NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE: int +NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL: int +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL: int +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED: int +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE: int +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD: int +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD: int +NV_CTRL_GVO_VIDEO_OUTPUTS: int +NV_CTRL_GVO_VIDEO_OUTPUTS_NONE: int +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1: int +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2: int +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH: int +NV_CTRL_GVO_FIRMWARE_VERSION: int +NV_CTRL_GVO_SYNC_DELAY_PIXELS: int +NV_CTRL_GVO_SYNC_DELAY_LINES: int +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE: int +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE: int +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE: int +NV_CTRL_GVO_GLX_LOCKED: int +NV_CTRL_GVO_GLX_LOCKED_FALSE: int +NV_CTRL_GVO_GLX_LOCKED_TRUE: int +NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH: int +NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT: int +NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE: int +NV_CTRL_GVO_VIDEO_FORMAT_WIDTH: int +NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT: int +NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE: int +NV_CTRL_GVO_X_SCREEN_PAN_X: int +NV_CTRL_GVO_X_SCREEN_PAN_Y: int +NV_CTRL_GPU_OVERCLOCKING_STATE: int +NV_CTRL_GPU_OVERCLOCKING_STATE_NONE: int +NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL: int +NV_CTRL_GPU_2D_CLOCK_FREQS: int +NV_CTRL_GPU_3D_CLOCK_FREQS: int +NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS: int +NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS: int +NV_CTRL_GPU_CURRENT_CLOCK_FREQS: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE: int +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY: int +NV_CTRL_FLATPANEL_CHIP_LOCATION: int +NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL: int +NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL: int +NV_CTRL_FLATPANEL_LINK: int +NV_CTRL_FLATPANEL_LINK_SINGLE: int +NV_CTRL_FLATPANEL_LINK_DUAL: int +NV_CTRL_FLATPANEL_LINK_QUAD: int +NV_CTRL_FLATPANEL_SIGNAL: int +NV_CTRL_FLATPANEL_SIGNAL_LVDS: int +NV_CTRL_FLATPANEL_SIGNAL_TMDS: int +NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT: int +NV_CTRL_USE_HOUSE_SYNC: int +NV_CTRL_USE_HOUSE_SYNC_DISABLED: int +NV_CTRL_USE_HOUSE_SYNC_INPUT: int +NV_CTRL_USE_HOUSE_SYNC_OUTPUT: int +NV_CTRL_USE_HOUSE_SYNC_FALSE: int +NV_CTRL_USE_HOUSE_SYNC_TRUE: int +NV_CTRL_EDID_AVAILABLE: int +NV_CTRL_EDID_AVAILABLE_FALSE: int +NV_CTRL_EDID_AVAILABLE_TRUE: int +NV_CTRL_FORCE_STEREO: int +NV_CTRL_FORCE_STEREO_FALSE: int +NV_CTRL_FORCE_STEREO_TRUE: int +NV_CTRL_IMAGE_SETTINGS: int +NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY: int +NV_CTRL_IMAGE_SETTINGS_QUALITY: int +NV_CTRL_IMAGE_SETTINGS_PERFORMANCE: int +NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE: int +NV_CTRL_XINERAMA: int +NV_CTRL_XINERAMA_OFF: int +NV_CTRL_XINERAMA_ON: int +NV_CTRL_XINERAMA_STEREO: int +NV_CTRL_XINERAMA_STEREO_FALSE: int +NV_CTRL_XINERAMA_STEREO_TRUE: int +NV_CTRL_BUS_RATE: int +NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH: int +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR: int +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE: int +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE: int +NV_CTRL_SHOW_SLI_HUD: int +NV_CTRL_SHOW_SLI_HUD_FALSE: int +NV_CTRL_SHOW_SLI_HUD_TRUE: int +NV_CTRL_XV_SYNC_TO_DISPLAY: int +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2: int +NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2: int +NV_CTRL_GVO_OVERRIDE_HW_CSC: int +NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE: int +NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE: int +NV_CTRL_GVO_CAPABILITIES: int +NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY: int +NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN: int +NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION: int +NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC: int +NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC: int +NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW: int +NV_CTRL_GVO_COMPOSITE_TERMINATION: int +NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE: int +NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE: int +NV_CTRL_ASSOCIATED_DISPLAY_DEVICES: int +NV_CTRL_FRAMELOCK_SLAVES: int +NV_CTRL_FRAMELOCK_MASTERABLE: int +NV_CTRL_PROBE_DISPLAYS: int +NV_CTRL_REFRESH_RATE: int +NV_CTRL_GVO_FLIP_QUEUE_SIZE: int +NV_CTRL_CURRENT_SCANLINE: int +NV_CTRL_INITIAL_PIXMAP_PLACEMENT: int +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM: int +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM: int +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM: int +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED: int +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM: int +NV_CTRL_PCI_BUS: int +NV_CTRL_PCI_DEVICE: int +NV_CTRL_PCI_FUNCTION: int +NV_CTRL_FRAMELOCK_FPGA_REVISION: int +NV_CTRL_MAX_SCREEN_WIDTH: int +NV_CTRL_MAX_SCREEN_HEIGHT: int +NV_CTRL_MAX_DISPLAYS: int +NV_CTRL_DYNAMIC_TWINVIEW: int +NV_CTRL_MULTIGPU_DISPLAY_OWNER: int +NV_CTRL_GPU_SCALING: int +NV_CTRL_GPU_SCALING_TARGET_INVALID: int +NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT: int +NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE: int +NV_CTRL_GPU_SCALING_METHOD_INVALID: int +NV_CTRL_GPU_SCALING_METHOD_STRETCHED: int +NV_CTRL_GPU_SCALING_METHOD_CENTERED: int +NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED: int +NV_CTRL_FRONTEND_RESOLUTION: int +NV_CTRL_BACKEND_RESOLUTION: int +NV_CTRL_FLATPANEL_NATIVE_RESOLUTION: int +NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION: int +NV_CTRL_GPU_SCALING_ACTIVE: int +NV_CTRL_DFP_SCALING_ACTIVE: int +NV_CTRL_FSAA_APPLICATION_ENHANCED: int +NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED: int +NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED: int +NV_CTRL_FRAMELOCK_SYNC_RATE_4: int +NV_CTRL_GVO_LOCK_OWNER: int +NV_CTRL_GVO_LOCK_OWNER_NONE: int +NV_CTRL_GVO_LOCK_OWNER_GLX: int +NV_CTRL_GVO_LOCK_OWNER_CLONE: int +NV_CTRL_GVO_LOCK_OWNER_X_SCREEN: int +NV_CTRL_HWOVERLAY: int +NV_CTRL_HWOVERLAY_FALSE: int +NV_CTRL_HWOVERLAY_TRUE: int +NV_CTRL_NUM_GPU_ERRORS_RECOVERED: int +NV_CTRL_REFRESH_RATE_3: int +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS: int +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF: int +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON: int +NV_CTRL_GPU_POWER_SOURCE: int +NV_CTRL_GPU_POWER_SOURCE_AC: int +NV_CTRL_GPU_POWER_SOURCE_BATTERY: int +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE: int +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP: int +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF: int +NV_CTRL_GLYPH_CACHE: int +NV_CTRL_GLYPH_CACHE_DISABLED: int +NV_CTRL_GLYPH_CACHE_ENABLED: int +NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL: int +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE: int +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED: int +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED: int +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED: int +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE: int +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE: int +NV_CTRL_GVO_SYNC_LOCK_STATUS: int +NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED: int +NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED: int +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION: int +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE: int +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE: int +NV_CTRL_GVO_COMPOSITE: int +NV_CTRL_GVO_COMPOSITE_DISABLE: int +NV_CTRL_GVO_COMPOSITE_ENABLE: int +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY: int +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE: int +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE: int +NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE: int +NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE: int +NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE: int +NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES: int +NV_CTRL_SWITCH_TO_DISPLAYS: int +NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT: int +NV_CTRL_NOTEBOOK_INTERNAL_LCD: int +NV_CTRL_DEPTH_30_ALLOWED: int +NV_CTRL_MODE_SET_EVENT: int +NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE: int +NV_CTRL_VCSC_HIGH_PERF_MODE: int +NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE: int +NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE: int +NV_CTRL_DISPLAYPORT_LINK_RATE: int +NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED: int +NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS: int +NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS: int +NV_CTRL_STEREO_EYES_EXCHANGE: int +NV_CTRL_STEREO_EYES_EXCHANGE_OFF: int +NV_CTRL_STEREO_EYES_EXCHANGE_ON: int +NV_CTRL_NO_SCANOUT: int +NV_CTRL_NO_SCANOUT_DISABLED: int +NV_CTRL_NO_SCANOUT_ENABLED: int +NV_CTRL_GVO_CSC_CHANGED_EVENT: int +NV_CTRL_FRAMELOCK_SLAVEABLE: int +NV_CTRL_GVO_SYNC_TO_DISPLAY: int +NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE: int +NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE: int +NV_CTRL_X_SERVER_UNIQUE_ID: int +NV_CTRL_PIXMAP_CACHE: int +NV_CTRL_PIXMAP_CACHE_DISABLE: int +NV_CTRL_PIXMAP_CACHE_ENABLE: int +NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB: int +NV_CTRL_IS_GVO_DISPLAY: int +NV_CTRL_IS_GVO_DISPLAY_FALSE: int +NV_CTRL_IS_GVO_DISPLAY_TRUE: int +NV_CTRL_PCI_ID: int +NV_CTRL_GVO_FULL_RANGE_COLOR: int +NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED: int +NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED: int +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE: int +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE: int +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE: int +NV_CTRL_GVO_ENABLE_RGB_DATA: int +NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE: int +NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE: int +NV_CTRL_IMAGE_SHARPENING_DEFAULT: int +NV_CTRL_PCI_DOMAIN: int +NV_CTRL_GVI_NUM_JACKS: int +NV_CTRL_GVI_MAX_LINKS_PER_STREAM: int +NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT: int +NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN: int +NV_CTRL_GVI_BITS_PER_COMPONENT_8: int +NV_CTRL_GVI_BITS_PER_COMPONENT_10: int +NV_CTRL_GVI_BITS_PER_COMPONENT_12: int +NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT: int +NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING: int +NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN: int +NV_CTRL_GVI_COMPONENT_SAMPLING_4444: int +NV_CTRL_GVI_COMPONENT_SAMPLING_4224: int +NV_CTRL_GVI_COMPONENT_SAMPLING_444: int +NV_CTRL_GVI_COMPONENT_SAMPLING_422: int +NV_CTRL_GVI_COMPONENT_SAMPLING_420: int +NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING: int +NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND: int +NV_CTRL_GVI_CHROMA_EXPAND_FALSE: int +NV_CTRL_GVI_CHROMA_EXPAND_TRUE: int +NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE: int +NV_CTRL_GVI_COLOR_SPACE_UNKNOWN: int +NV_CTRL_GVI_COLOR_SPACE_GBR: int +NV_CTRL_GVI_COLOR_SPACE_GBRA: int +NV_CTRL_GVI_COLOR_SPACE_GBRD: int +NV_CTRL_GVI_COLOR_SPACE_YCBCR: int +NV_CTRL_GVI_COLOR_SPACE_YCBCRA: int +NV_CTRL_GVI_COLOR_SPACE_YCBCRD: int +NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID: int +NV_CTRL_GVI_LINK_ID_UNKNOWN: int +NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER: int +NV_CTRL_GVI_GLOBAL_IDENTIFIER: int +NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION: int +NV_CTRL_GPU_COOLER_MANUAL_CONTROL: int +NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE: int +NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE: int +NV_CTRL_THERMAL_COOLER_LEVEL: int +NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT: int +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE: int +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE: int +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE: int +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE: int +NV_CTRL_THERMAL_COOLER_TARGET: int +NV_CTRL_THERMAL_COOLER_TARGET_NONE: int +NV_CTRL_THERMAL_COOLER_TARGET_GPU: int +NV_CTRL_THERMAL_COOLER_TARGET_MEMORY: int +NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY: int +NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED: int +NV_CTRL_GPU_ECC_SUPPORTED: int +NV_CTRL_GPU_ECC_SUPPORTED_FALSE: int +NV_CTRL_GPU_ECC_SUPPORTED_TRUE: int +NV_CTRL_GPU_ECC_STATUS: int +NV_CTRL_GPU_ECC_STATUS_DISABLED: int +NV_CTRL_GPU_ECC_STATUS_ENABLED: int +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED: int +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE: int +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE: int +NV_CTRL_GPU_ECC_CONFIGURATION: int +NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED: int +NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED: int +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION: int +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED: int +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED: int +NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS: int +NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS: int +NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS: int +NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS: int +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS: int +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE: int +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE: int +NV_CTRL_GPU_POWER_MIZER_MODE: int +NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE: int +NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE: int +NV_CTRL_GPU_POWER_MIZER_MODE_AUTO: int +NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE: int +NV_CTRL_GVI_SYNC_OUTPUT_FORMAT: int +NV_CTRL_GVI_MAX_CHANNELS_PER_JACK: int +NV_CTRL_GVI_MAX_STREAMS: int +NV_CTRL_GVI_NUM_CAPTURE_SURFACES: int +NV_CTRL_OVERSCAN_COMPENSATION: int +NV_CTRL_GPU_PCIE_GENERATION: int +NV_CTRL_GPU_PCIE_GENERATION1: int +NV_CTRL_GPU_PCIE_GENERATION2: int +NV_CTRL_GPU_PCIE_GENERATION3: int +NV_CTRL_GVI_BOUND_GPU: int +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3: int +NV_CTRL_ACCELERATE_TRAPEZOIDS: int +NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE: int +NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE: int +NV_CTRL_GPU_CORES: int +NV_CTRL_GPU_MEMORY_BUS_WIDTH: int +NV_CTRL_GVI_TEST_MODE: int +NV_CTRL_GVI_TEST_MODE_DISABLE: int +NV_CTRL_GVI_TEST_MODE_ENABLE: int +NV_CTRL_COLOR_SPACE: int +NV_CTRL_COLOR_SPACE_RGB: int +NV_CTRL_COLOR_SPACE_YCbCr422: int +NV_CTRL_COLOR_SPACE_YCbCr444: int +NV_CTRL_COLOR_RANGE: int +NV_CTRL_COLOR_RANGE_FULL: int +NV_CTRL_COLOR_RANGE_LIMITED: int +NV_CTRL_GPU_SCALING_DEFAULT_TARGET: int +NV_CTRL_GPU_SCALING_DEFAULT_METHOD: int +NV_CTRL_DITHERING_MODE: int +NV_CTRL_DITHERING_MODE_AUTO: int +NV_CTRL_DITHERING_MODE_DYNAMIC_2X2: int +NV_CTRL_DITHERING_MODE_STATIC_2X2: int +NV_CTRL_DITHERING_MODE_TEMPORAL: int +NV_CTRL_CURRENT_DITHERING: int +NV_CTRL_CURRENT_DITHERING_DISABLED: int +NV_CTRL_CURRENT_DITHERING_ENABLED: int +NV_CTRL_CURRENT_DITHERING_MODE: int +NV_CTRL_CURRENT_DITHERING_MODE_NONE: int +NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2: int +NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2: int +NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL: int +NV_CTRL_THERMAL_SENSOR_READING: int +NV_CTRL_THERMAL_SENSOR_PROVIDER: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_G781: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_OS: int +NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN: int +NV_CTRL_THERMAL_SENSOR_TARGET: int +NV_CTRL_THERMAL_SENSOR_TARGET_NONE: int +NV_CTRL_THERMAL_SENSOR_TARGET_GPU: int +NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY: int +NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY: int +NV_CTRL_THERMAL_SENSOR_TARGET_BOARD: int +NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN: int +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR: int +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE: int +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE: int +NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G: int +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC: int +NV_CTRL_GPU_PCIE_MAX_LINK_SPEED: int +NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT: int +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES: int +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE: int +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE: int +NV_CTRL_DITHERING_DEPTH: int +NV_CTRL_DITHERING_DEPTH_AUTO: int +NV_CTRL_DITHERING_DEPTH_6_BITS: int +NV_CTRL_DITHERING_DEPTH_8_BITS: int +NV_CTRL_CURRENT_DITHERING_DEPTH: int +NV_CTRL_CURRENT_DITHERING_DEPTH_NONE: int +NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS: int +NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY: int +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT: int +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES: int +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP: int +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON: int +NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES: int +NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES: int +NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES: int +NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE: int +NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES: int +NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL: int +NV_CTRL_GVO_ANC_PARITY_COMPUTATION: int +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO: int +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON: int +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF: int +NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT: int +NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT: int +NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH: int +NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED: int +NV_CTRL_GVO_AUDIO_BLANKING: int +NV_CTRL_GVO_AUDIO_BLANKING_DISABLE: int +NV_CTRL_GVO_AUDIO_BLANKING_ENABLE: int +NV_CTRL_CURRENT_METAMODE_ID: int +NV_CTRL_DISPLAY_ENABLED: int +NV_CTRL_DISPLAY_ENABLED_TRUE: int +NV_CTRL_DISPLAY_ENABLED_FALSE: int +NV_CTRL_FRAMELOCK_INCOMING_HOUSE_SYNC_RATE: int +NV_CTRL_FXAA: int +NV_CTRL_FXAA_DISABLE: int +NV_CTRL_FXAA_ENABLE: int +NV_CTRL_DISPLAY_RANDR_OUTPUT_ID: int +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG: int +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_DISABLED: int +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_CLIENT: int +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_SERVER: int +NV_CTRL_TOTAL_DEDICATED_GPU_MEMORY: int +NV_CTRL_USED_DEDICATED_GPU_MEMORY: int +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE: int +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_DISABLED: int +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_ENABLED: int +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT: int +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_DISABLED: int +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_ENALED: int +NV_CTRL_DPY_HDMI_3D: int +NV_CTRL_DPY_HDMI_3D_DISABLED: int +NV_CTRL_DPY_HDMI_3D_ENABLED: int +NV_CTRL_BASE_MOSAIC: int +NV_CTRL_BASE_MOSAIC_DISABLED: int +NV_CTRL_BASE_MOSAIC_FULL: int +NV_CTRL_BASE_MOSAIC_LIMITED: int +NV_CTRL_MULTIGPU_MASTER_POSSIBLE: int +NV_CTRL_MULTIGPU_MASTER_POSSIBLE_FALSE: int +NV_CTRL_MULTIGPU_MASTER_POSSIBLE_TRUE: int +NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE: int +NV_CTRL_XV_SYNC_TO_DISPLAY_ID: int +NV_CTRL_XV_SYNC_TO_DISPLAY_ID_AUTO: int +NV_CTRL_BACKLIGHT_BRIGHTNESS: int +NV_CTRL_GPU_LOGO_BRIGHTNESS: int +NV_CTRL_GPU_SLI_LOGO_BRIGHTNESS: int +NV_CTRL_THERMAL_COOLER_SPEED: int +NV_CTRL_PALETTE_UPDATE_EVENT: int +NV_CTRL_VIDEO_ENCODER_UTILIZATION: int +NV_CTRL_GSYNC_ALLOWED: int +NV_CTRL_GSYNC_ALLOWED_FALSE: int +NV_CTRL_GSYNC_ALLOWED_TRUE: int +NV_CTRL_GPU_NVCLOCK_OFFSET: int +NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET: int +NV_CTRL_VIDEO_DECODER_UTILIZATION: int +NV_CTRL_GPU_OVER_VOLTAGE_OFFSET: int +NV_CTRL_GPU_CURRENT_CORE_VOLTAGE: int +NV_CTRL_CURRENT_COLOR_SPACE: int +NV_CTRL_CURRENT_COLOR_SPACE_RGB: int +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr422: int +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr444: int +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr420: int +NV_CTRL_CURRENT_COLOR_RANGE: int +NV_CTRL_CURRENT_COLOR_RANGE_FULL: int +NV_CTRL_CURRENT_COLOR_RANGE_LIMITED: int +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR: int +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_FALSE: int +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_TRUE: int +NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL: int +NV_CTRL_STEREO_SWAP_MODE: int +NV_CTRL_STEREO_SWAP_MODE_APPLICATION_CONTROL: int +NV_CTRL_STEREO_SWAP_MODE_PER_EYE: int +NV_CTRL_STEREO_SWAP_MODE_PER_EYE_PAIR: int +NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID: int +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED: int +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_FALSE: int +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_TRUE: int +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE: int +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_UNKNOWN: int +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DISPLAYPORT: int +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_HDMI: int +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DVI: int +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_VGA: int +NV_CTRL_DISPLAYPORT_IS_MULTISTREAM: int +NV_CTRL_DISPLAYPORT_SINK_IS_AUDIO_CAPABLE: int +NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS: int +NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS: int +NV_CTRL_FRAMELOCK_FIRMWARE_VERSION: int +NV_CTRL_FRAMELOCK_FIRMWARE_MINOR_VERSION: int +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR: int +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_FALSE: int +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_TRUE: int +NV_CTRL_LAST_ATTRIBUTE: int +NV_CTRL_STRING_PRODUCT_NAME: int +NV_CTRL_STRING_VBIOS_VERSION: int +NV_CTRL_STRING_NVIDIA_DRIVER_VERSION: int +NV_CTRL_STRING_DISPLAY_DEVICE_NAME: int +NV_CTRL_STRING_TV_ENCODER_NAME: int +NV_CTRL_STRING_GVIO_FIRMWARE_VERSION: int +NV_CTRL_STRING_GVO_FIRMWARE_VERSION: int +NV_CTRL_STRING_CURRENT_MODELINE: int +NV_CTRL_STRING_ADD_MODELINE: int +NV_CTRL_STRING_DELETE_MODELINE: int +NV_CTRL_STRING_CURRENT_METAMODE: int +NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1: int +NV_CTRL_STRING_ADD_METAMODE: int +NV_CTRL_STRING_DELETE_METAMODE: int +NV_CTRL_STRING_VCSC_PRODUCT_NAME: int +NV_CTRL_STRING_VCSC_PRODUCT_ID: int +NV_CTRL_STRING_VCSC_SERIAL_NUMBER: int +NV_CTRL_STRING_VCSC_BUILD_DATE: int +NV_CTRL_STRING_VCSC_FIRMWARE_VERSION: int +NV_CTRL_STRING_VCSC_FIRMWARE_REVISION: int +NV_CTRL_STRING_VCSC_HARDWARE_VERSION: int +NV_CTRL_STRING_VCSC_HARDWARE_REVISION: int +NV_CTRL_STRING_MOVE_METAMODE: int +NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES: int +NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES: int +NV_CTRL_STRING_SCREEN_RECTANGLE: int +NV_CTRL_STRING_XINERAMA_SCREEN_INFO: int +NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER: int +NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER: int +NV_CTRL_STRING_SLI_MODE: int +NV_CTRL_STRING_PERFORMANCE_MODES: int +NV_CTRL_STRING_VCSC_FAN_STATUS: int +NV_CTRL_STRING_VCSC_TEMPERATURES: int +NV_CTRL_STRING_VCSC_PSU_INFO: int +NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME: int +NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME: int +NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS: int +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION: int +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A: int +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A: int +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B: int +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B: int +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS: int +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A: int +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A: int +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS: int +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME: int +NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2: int +NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME: int +NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID: int +NV_CTRL_STRING_DISPLAY_NAME_DP_GUID: int +NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH: int +NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX: int +NV_CTRL_STRING_DISPLAY_NAME_RANDR: int +NV_CTRL_STRING_GPU_UUID: int +NV_CTRL_STRING_GPU_UTILIZATION: int +NV_CTRL_STRING_MULTIGPU_MODE: int +NV_CTRL_STRING_PRIME_OUTPUTS_DATA: int +NV_CTRL_STRING_LAST_ATTRIBUTE: int +NV_CTRL_BINARY_DATA_EDID: int +NV_CTRL_BINARY_DATA_MODELINES: int +NV_CTRL_BINARY_DATA_METAMODES: int +NV_CTRL_BINARY_DATA_METAMODES_VERSION_1: int +NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU: int +NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN: int +NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK: int +NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT: int +NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU: int +NV_CTRL_BINARY_DATA_GPUS_USING_VCSC: int +NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU: int +NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU: int +NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN: int +NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU: int +NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER: int +NV_CTRL_BINARY_DATA_DISPLAY_TARGETS: int +NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU: int +NV_CTRL_BINARY_DATA_METAMODES_VERSION_2: int +NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN: int +NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN: int +NV_CTRL_BINARY_DATA_GPU_FLAGS: int +NV_CTRL_BINARY_DATA_GPU_FLAGS_STEREO_DISPLAY_TRANSFORM_EXCLUSIVE: int +NV_CTRL_BINARY_DATA_GPU_FLAGS_OVERLAY_DISPLAY_TRANSFORM_EXCLUSIVE: int +NV_CTRL_BINARY_DATA_GPU_FLAGS_DEPTH_8_DISPLAY_TRANSFORM_EXCLUSIVE: int +NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU: int +NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE: int +NV_CTRL_STRING_OPERATION_ADD_METAMODE: int +NV_CTRL_STRING_OPERATION_GTF_MODELINE: int +NV_CTRL_STRING_OPERATION_CVT_MODELINE: int +NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL: int +NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS: int +NV_CTRL_STRING_OPERATION_PARSE_METAMODE: int +NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE: int +X_nvCtrlQueryExtension: int +X_nvCtrlQueryAttribute: int +X_nvCtrlQueryStringAttribute: int +X_nvCtrlQueryValidAttributeValues: int +X_nvCtrlSetStringAttribute: int +X_nvCtrlSetAttributeAndGetStatus: int +X_nvCtrlQueryBinaryData: int +X_nvCtrlQueryTargetCount: int +X_nvCtrlStringOperation: int +ATTRIBUTE_TYPE_UNKNOWN: int +ATTRIBUTE_TYPE_INTEGER: int +ATTRIBUTE_TYPE_BITMASK: int +ATTRIBUTE_TYPE_BOOL: int +ATTRIBUTE_TYPE_RANGE: int +ATTRIBUTE_TYPE_INT_BITS: int +ATTRIBUTE_TYPE_READ: int +ATTRIBUTE_TYPE_WRITE: int +ATTRIBUTE_TYPE_DISPLAY: int +ATTRIBUTE_TYPE_GPU: int +ATTRIBUTE_TYPE_FRAMELOCK: int +ATTRIBUTE_TYPE_X_SCREEN: int +ATTRIBUTE_TYPE_XINERAMA: int +ATTRIBUTE_TYPE_VCSC: int +NV_CTRL_TARGET_TYPE_X_SCREEN: int +NV_CTRL_TARGET_TYPE_GPU: int +NV_CTRL_TARGET_TYPE_FRAMELOCK: int +NV_CTRL_TARGET_TYPE_VCSC: int +NV_CTRL_TARGET_TYPE_GVI: int +NV_CTRL_TARGET_TYPE_COOLER: int +NV_CTRL_TARGET_TYPE_THERMAL_SENSOR: int +NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER: int +NV_CTRL_TARGET_TYPE_DISPLAY: int + +class Target: + def id(self) -> int: ... + def type(self) -> int: ... + +class Gpu(Target): + def __init__(self, ngpu: int = ...) -> None: ... + +class Screen(Target): + def __init__(self, nscr: int = ...) -> None: ... + +class Cooler(Target): + def __init__(self, nfan: int = ...) -> None: ... + +class NVCtrlQueryTargetCountReplyRequest(rq.ReplyRequest): ... +class NVCtrlQueryAttributeReplyRequest(rq.ReplyRequest): ... +class NVCtrlSetAttributeAndGetStatusReplyRequest(rq.ReplyRequest): ... +class NVCtrlQueryStringAttributeReplyRequest(rq.ReplyRequest): ... +class NVCtrlQueryValidAttributeValuesReplyRequest(rq.ReplyRequest): ... +class NVCtrlQueryBinaryDataReplyRequest(rq.ReplyRequest): ... +class NVCtrlQueryListCard32ReplyRequest(rq.ReplyRequest): ... diff --git a/stubs/python-xlib/Xlib/ext/randr.pyi b/stubs/python-xlib/Xlib/ext/randr.pyi new file mode 100644 index 000000000000..f9188ddf554b --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/randr.pyi @@ -0,0 +1,261 @@ +from collections.abc import Sequence +from typing_extensions import TypeAlias + +from Xlib.display import Display +from Xlib.protocol import request, rq +from Xlib.xobject import drawable, resource + +_RandRModeInfo13IntSequence: TypeAlias = Sequence[int] + +extname: str +RRScreenChangeNotify: int +RRNotify: int +RRNotify_CrtcChange: int +RRNotify_OutputChange: int +RRNotify_OutputProperty: int +RRScreenChangeNotifyMask: int +RRCrtcChangeNotifyMask: int +RROutputChangeNotifyMask: int +RROutputPropertyNotifyMask: int +SetConfigSuccess: int +SetConfigInvalidConfigTime: int +SetConfigInvalidTime: int +SetConfigFailed: int +Rotate_0: int +Rotate_90: int +Rotate_180: int +Rotate_270: int +Reflect_X: int +Reflect_Y: int +HSyncPositive: int +HSyncNegative: int +VSyncPositive: int +VSyncNegative: int +Interlace: int +DoubleScan: int +CSync: int +CSyncPositive: int +CSyncNegative: int +HSkewPresent: int +BCast: int +PixelMultiplex: int +DoubleClock: int +ClockDivideBy2: int +Connected: int +Disconnected: int +UnknownConnection: int +PROPERTY_RANDR_EDID: str +PROPERTY_SIGNAL_FORMAT: str +PROPERTY_SIGNAL_PROPERTIES: str +PROPERTY_CONNECTOR_TYPE: str +PROPERTY_CONNECTOR_NUMBER: str +PROPERTY_COMPATIBILITY_LIST: str +PROPERTY_CLONE_LIST: str +SubPixelUnknown: int +SubPixelHorizontalRGB: int +SubPixelHorizontalBGR: int +SubPixelVerticalRGB: int +SubPixelVerticalBGR: int +SubPixelNone: int +BadRROutput: int +BadRRCrtc: int +BadRRMode: int + +class BadRROutputError(Exception): ... +class BadRRCrtcError(Exception): ... +class BadRRModeError(Exception): ... + +RandR_ScreenSizes: rq.Struct +RandR_ModeInfo: rq.Struct +RandR_Rates: rq.Struct +Render_Transform: rq.Struct +MonitorInfo: rq.Struct + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> QueryVersion: ... + +class _1_0SetScreenConfig(rq.ReplyRequest): ... +class SetScreenConfig(rq.ReplyRequest): ... + +def set_screen_config( + self: drawable.Drawable, size_id: int, rotation: int, config_timestamp: int, rate: int = ..., timestamp: int = ... +) -> SetScreenConfig: ... + +class SelectInput(rq.Request): ... + +def select_input(self: drawable.Window, mask: int) -> SelectInput: ... + +class GetScreenInfo(rq.ReplyRequest): ... + +def get_screen_info(self: drawable.Window) -> GetScreenInfo: ... + +class GetScreenSizeRange(rq.ReplyRequest): ... + +def get_screen_size_range(self: drawable.Window) -> GetScreenSizeRange: ... + +class SetScreenSize(rq.Request): ... + +def set_screen_size( + self: drawable.Window, + width: int, + height: int, + width_in_millimeters: int | None = ..., + height_in_millimeters: int | None = ..., +) -> SetScreenSize: ... + +class GetScreenResources(rq.ReplyRequest): ... + +def get_screen_resources(self: drawable.Window) -> GetScreenResources: ... + +class GetOutputInfo(rq.ReplyRequest): ... + +def get_output_info(self: Display | resource.Resource, output: int, config_timestamp: int) -> GetOutputInfo: ... + +class ListOutputProperties(rq.ReplyRequest): ... + +def list_output_properties(self: Display | resource.Resource, output: int) -> ListOutputProperties: ... + +class QueryOutputProperty(rq.ReplyRequest): ... + +def query_output_property(self: Display | resource.Resource, output: int, property: int) -> QueryOutputProperty: ... + +class ConfigureOutputProperty(rq.Request): ... + +def configure_output_property(self: Display | resource.Resource, output: int, property: int) -> ConfigureOutputProperty: ... + +class ChangeOutputProperty(rq.Request): ... + +def change_output_property( + self: Display | resource.Resource, output: int, property: int, type: int, mode: int, value: Sequence[float] | Sequence[str] +) -> ChangeOutputProperty: ... + +class DeleteOutputProperty(rq.Request): ... + +def delete_output_property(self: Display | resource.Resource, output: int, property: int) -> DeleteOutputProperty: ... + +class GetOutputProperty(rq.ReplyRequest): ... + +def get_output_property( + self: Display | resource.Resource, + output: int, + property: int, + type: int, + long_offset: int, + long_length: int, + delete: bool = ..., + pending: bool = ..., +) -> GetOutputProperty: ... + +class CreateMode(rq.ReplyRequest): ... + +def create_mode(self: drawable.Window, mode: _RandRModeInfo13IntSequence, name: str) -> CreateMode: ... + +class DestroyMode(rq.Request): ... + +def destroy_mode(self: Display | resource.Resource, mode: int) -> DestroyMode: ... + +class AddOutputMode(rq.Request): ... + +def add_output_mode(self: Display | resource.Resource, output: int, mode: int) -> AddOutputMode: ... + +class DeleteOutputMode(rq.Request): ... + +def delete_output_mode(self: Display | resource.Resource, output: int, mode: int) -> DeleteOutputMode: ... + +class GetCrtcInfo(rq.ReplyRequest): ... + +def get_crtc_info(self: Display | resource.Resource, crtc: int, config_timestamp: int) -> GetCrtcInfo: ... + +class SetCrtcConfig(rq.ReplyRequest): ... + +def set_crtc_config( + self: Display | resource.Resource, + crtc: int, + config_timestamp: int, + x: int, + y: int, + mode: int, + rotation: int, + outputs: Sequence[int], + timestamp: int = ..., +) -> SetCrtcConfig: ... + +class GetCrtcGammaSize(rq.ReplyRequest): ... + +def get_crtc_gamma_size(self: Display | resource.Resource, crtc: int) -> GetCrtcGammaSize: ... + +class GetCrtcGamma(rq.ReplyRequest): ... + +def get_crtc_gamma(self: Display | resource.Resource, crtc: int) -> GetCrtcGamma: ... + +class SetCrtcGamma(rq.Request): ... + +def set_crtc_gamma( + self: Display | resource.Resource, crtc: int, size: int, red: Sequence[int], green: Sequence[int], blue: Sequence[int] +) -> SetCrtcGamma: ... + +class GetScreenResourcesCurrent(rq.ReplyRequest): ... + +def get_screen_resources_current(self: drawable.Window) -> GetScreenResourcesCurrent: ... + +class SetCrtcTransform(rq.Request): ... + +def set_crtc_transform(self: Display | resource.Resource, crtc: int, n_bytes_filter: Sequence[int]) -> SetCrtcTransform: ... + +class GetCrtcTransform(rq.ReplyRequest): ... + +def get_crtc_transform(self: Display | resource.Resource, crtc: int) -> GetCrtcTransform: ... + +class GetPanning(rq.ReplyRequest): ... + +def get_panning(self: Display | resource.Resource, crtc: int) -> GetPanning: ... + +class SetPanning(rq.ReplyRequest): ... + +def set_panning( + self: Display | resource.Resource, + crtc: int, + left: int, + top: int, + width: int, + height: int, + track_left: int, + track_top: int, + track_width: int, + track_height: int, + border_left: int, + border_top: int, + border_width: int, + border_height: int, + timestamp: int = ..., +) -> SetPanning: ... + +class SetOutputPrimary(rq.Request): ... + +def set_output_primary(self: drawable.Window, output: int) -> SetOutputPrimary: ... + +class GetOutputPrimary(rq.ReplyRequest): ... + +def get_output_primary(self: drawable.Window) -> GetOutputPrimary: ... + +class GetMonitors(rq.ReplyRequest): ... + +def get_monitors(self: drawable.Window, is_active: bool = ...) -> GetMonitors: ... + +class SetMonitor(rq.Request): ... + +def set_monitor( + self: drawable.Window, monitor_info: tuple[int, bool, bool, Sequence[int], int, int, int, int, int] +) -> SetMonitor: ... + +class DeleteMonitor(rq.Request): ... + +def delete_monitor(self: Display | resource.Resource, name: str) -> DeleteMonitor: ... + +class ScreenChangeNotify(rq.Event): ... +class CrtcChangeNotify(rq.Event): ... +class OutputChangeNotify(rq.Event): ... +class OutputPropertyNotify(rq.Event): ... + +def init(disp: Display, info: request.QueryExtension) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/record.pyi b/stubs/python-xlib/Xlib/ext/record.pyi new file mode 100644 index 000000000000..bfbb971f4366 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/record.pyi @@ -0,0 +1,113 @@ +from collections.abc import Callable, Sequence, Sized +from typing import Any, TypeVar +from typing_extensions import Literal + +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import display, rq +from Xlib.xobject import resource + +_T = TypeVar("_T") +_S = TypeVar("_S", bound=Sized) + +extname: str +FromServerTime: int +FromClientTime: int +FromClientSequence: int +CurrentClients: int +FutureClients: int +AllClients: int +FromServer: int +FromClient: int +ClientStarted: int +ClientDied: int +StartOfData: int +EndOfData: int +Record_Range8: rq.Struct +Record_Range16: rq.Struct +Record_ExtRange: rq.Struct +Record_Range: rq.Struct +Record_ClientInfo: rq.Struct + +class RawField(rq.ValueField): + structcode: None + def pack_value(self, val: _S) -> tuple[_S, int, None]: ... # type: ignore[override] + def parse_binary_value(self, data: _T, display: Unused, length: Unused, format: Unused) -> tuple[_T, Literal[""]]: ... # type: ignore[override] # See: https://github.com/python-xlib/python-xlib/pull/249 + +class GetVersion(rq.ReplyRequest): ... + +def get_version(self: Display | resource.Resource, major: int, minor: int) -> GetVersion: ... + +class CreateContext(rq.Request): ... + +def create_context( + self: Display | resource.Resource, + datum_flags: int, + clients: Sequence[int], + ranges: Sequence[ + tuple[ + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + bool, + bool, + ] + ], +) -> int: ... + +class RegisterClients(rq.Request): ... + +def register_clients( + self: Display | resource.Resource, + context: int, + element_header: int, + clients: int, + ranges: Sequence[ + tuple[ + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + tuple[int, int], + bool, + bool, + ] + ], +) -> None: ... + +class UnregisterClients(rq.Request): ... + +def unregister_clients(self: Display | resource.Resource, context: int, clients: Sequence[int]) -> None: ... + +class GetContext(rq.ReplyRequest): ... + +def get_context(self: Display | resource.Resource, context: int) -> GetContext: ... + +class EnableContext(rq.ReplyRequest): + def __init__( + self, + callback: Callable[[rq.DictWrapper | dict[str, Any]], Any], + display: display.Display, + defer: bool = ..., + *args: object | bool, + **keys: object | bool, + ) -> None: ... + +def enable_context( + self: Display | resource.Resource, context: int, callback: Callable[[rq.DictWrapper | dict[str, Any]], Any] +) -> None: ... + +class DisableContext(rq.Request): ... + +def disable_context(self: Display | resource.Resource, context: int) -> None: ... + +class FreeContext(rq.Request): ... + +def free_context(self: Display | resource.Resource, context: int) -> None: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/res.pyi b/stubs/python-xlib/Xlib/ext/res.pyi new file mode 100644 index 000000000000..48ecc7c9f9d7 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/res.pyi @@ -0,0 +1,61 @@ +from collections.abc import Sequence + +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import resource + +RES_MAJOR_VERSION: int +RES_MINOR_VERSION: int +extname: str +ResQueryVersion: int +ResQueryClients: int +ResQueryClientResources: int +ResQueryClientPixmapBytes: int +ResQueryClientIds: int +ResQueryResourceBytes: int + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource, client_major: int = ..., client_minor: int = ...) -> QueryVersion: ... + +Client: rq.Struct + +class QueryClients(rq.ReplyRequest): ... + +def query_clients(self: Display | resource.Resource) -> QueryClients: ... + +Type: rq.Struct + +class QueryClientResources(rq.ReplyRequest): ... + +def query_client_resources(self: Display | resource.Resource, client: int) -> QueryClientResources: ... + +class QueryClientPixmapBytes(rq.ReplyRequest): ... + +def query_client_pixmap_bytes(self: Display | resource.Resource, client: int) -> QueryClientPixmapBytes: ... + +class SizeOf(rq.LengthOf): + item_size: int + def __init__(self, name: str | list[str] | tuple[str, ...], size: int, item_size: int) -> None: ... + def parse_value(self, length: int, display: Unused) -> int: ... # type: ignore[override] + +ClientXIDMask: int +LocalClientPIDMask: int +ClientIdSpec: rq.Struct +ClientIdValue: rq.Struct + +class QueryClientIds(rq.ReplyRequest): ... + +def query_client_ids(self: Display | resource.Resource, specs: Sequence[tuple[int, int]]) -> QueryClientIds: ... + +ResourceIdSpec: rq.Struct +ResourceSizeSpec: rq.Struct +ResourceSizeValue: rq.Struct + +class QueryResourceBytes(rq.ReplyRequest): ... + +def query_resource_bytes( + self: Display | resource.Resource, client: int, specs: Sequence[tuple[int, int]] +) -> QueryResourceBytes: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/screensaver.pyi b/stubs/python-xlib/Xlib/ext/screensaver.pyi new file mode 100644 index 000000000000..9ccf5cbc7fce --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/screensaver.pyi @@ -0,0 +1,50 @@ +from Xlib._typing import ErrorHandler +from Xlib.display import Display +from Xlib.protocol import request, rq +from Xlib.xobject import drawable + +extname: str +NotifyMask: int +CycleMask: int +StateOff: int +StateOn: int +StateCycle: int +KindBlanked: int +KindInternal: int +KindExternal: int + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: drawable.Drawable) -> QueryVersion: ... + +class QueryInfo(rq.ReplyRequest): ... + +def query_info(self: drawable.Drawable) -> QueryInfo: ... + +class SelectInput(rq.Request): ... + +def select_input(self: drawable.Drawable, mask: int) -> SelectInput: ... + +class SetAttributes(rq.Request): ... + +def set_attributes( + self: drawable.Drawable, + x: int, + y: int, + width: int, + height: int, + border_width: int, + window_class: int = ..., + depth: int = ..., + visual: int = ..., + onerror: ErrorHandler[object] | None = ..., + **keys: object, +) -> SetAttributes: ... + +class UnsetAttributes(rq.Request): ... + +def unset_attributes(self: drawable.Drawable, onerror: ErrorHandler[object] | None = ...) -> UnsetAttributes: ... + +class Notify(rq.Event): ... + +def init(disp: Display, info: request.QueryExtension) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/security.pyi b/stubs/python-xlib/Xlib/ext/security.pyi new file mode 100644 index 000000000000..93fd4b0bd9a6 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/security.pyi @@ -0,0 +1,31 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import resource + +extname: str +SecurityClientTrusted: int +SecurityClientUntrusted: int +SecurityAuthorizationRevokedMask: int +AUTHID = rq.Card32 + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> QueryVersion: ... + +class SecurityGenerateAuthorization(rq.ReplyRequest): ... + +def generate_authorization( + self: Display | resource.Resource, + auth_proto: str, + auth_data: bytes | bytearray = ..., + timeout: int | None = ..., + trust_level: int | None = ..., + group: int | None = ..., + event_mask: int | None = ..., +) -> SecurityGenerateAuthorization: ... + +class SecurityRevokeAuthorization(rq.Request): ... + +def revoke_authorization(self: Display | resource.Resource, authid: int) -> SecurityRevokeAuthorization: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/shape.pyi b/stubs/python-xlib/Xlib/ext/shape.pyi new file mode 100644 index 000000000000..67d0ed77489f --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/shape.pyi @@ -0,0 +1,61 @@ +from collections.abc import Sequence + +from Xlib.display import Display +from Xlib.protocol import request, rq +from Xlib.protocol.structs import _Rectangle4IntSequence +from Xlib.xobject import drawable, resource + +extname: str +OP = rq.Card8 + +class SO: + Set: int + Union: int + Intersect: int + Subtract: int + Invert: int + +class SK: + Bounding: int + Clip: int + Input: int + +class KIND(rq.Set): + def __init__(self, name: str) -> None: ... + +class NotifyEventData(rq.Event): ... +class QueryVersion(rq.ReplyRequest): ... +class Rectangles(rq.Request): ... +class Mask(rq.Request): ... +class Combine(rq.Request): ... +class Offset(rq.Request): ... +class QueryExtents(rq.ReplyRequest): ... +class SelectInput(rq.Request): ... +class InputSelected(rq.ReplyRequest): ... +class GetRectangles(rq.ReplyRequest): ... + +class Event: + Notify: int + +def combine( + self: drawable.Window, operation: int, destination_kind: int, source_kind: int, x_offset: int, y_offset: int +) -> None: ... +def get_rectangles(self: drawable.Window, source_kind: int) -> GetRectangles: ... +def input_selected(self: drawable.Window) -> InputSelected: ... +def mask( + self: drawable.Window, operation: int, destination_kind: int, x_offset: int, y_offset: int, source_bitmap: int +) -> None: ... +def offset(self: drawable.Window, destination_kind: int, x_offset: int, y_offset: int) -> None: ... +def query_extents(self: drawable.Window) -> QueryExtents: ... +def query_version(self: Display | resource.Resource) -> QueryVersion: ... +def rectangles( + self: drawable.Window, + operation: int, + destination_kind: int, + ordering: int, + x_offset: int, + y_offset: int, + rectangles: Sequence[_Rectangle4IntSequence], +) -> None: ... +def select_input(self: drawable.Window, enable: int) -> None: ... +def init(disp: Display, info: request.QueryExtension) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/xfixes.pyi b/stubs/python-xlib/Xlib/ext/xfixes.pyi new file mode 100644 index 000000000000..98509f7f2dff --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/xfixes.pyi @@ -0,0 +1,48 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import request, rq +from Xlib.xobject import drawable, resource + +extname: str +XFixesSelectionNotify: int +XFixesCursorNotify: int +XFixesSetSelectionOwnerNotifyMask: int +XFixesSelectionWindowDestroyNotifyMask: int +XFixesSelectionClientCloseNotifyMask: int +XFixesDisplayCursorNotifyMask: int +XFixesSetSelectionOwnerNotify: int +XFixesSelectionWindowDestroyNotify: int +XFixesSelectionClientCloseNotify: int +XFixesDisplayCursorNotify: int + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> QueryVersion: ... + +class HideCursor(rq.Request): ... + +def hide_cursor(self: drawable.Window) -> None: ... + +class ShowCursor(rq.Request): ... + +def show_cursor(self: drawable.Window) -> None: ... + +class SelectSelectionInput(rq.Request): ... + +def select_selection_input(self: Display | resource.Resource, window: int, selection: int, mask: int) -> SelectSelectionInput: ... + +class SelectionNotify(rq.Event): ... +class SetSelectionOwnerNotify(SelectionNotify): ... +class SelectionWindowDestroyNotify(SelectionNotify): ... +class SelectionClientCloseNotify(SelectionNotify): ... +class SelectCursorInput(rq.Request): ... + +def select_cursor_input(self: Display | resource.Resource, window: int, mask: int) -> SelectCursorInput: ... + +class GetCursorImage(rq.ReplyRequest): ... + +def get_cursor_image(self: Display | resource.Resource, window: Unused) -> GetCursorImage: ... + +class DisplayCursorNotify(rq.Event): ... + +def init(disp: Display, info: request.QueryExtension) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/xinerama.pyi b/stubs/python-xlib/Xlib/ext/xinerama.pyi new file mode 100644 index 000000000000..004f7cdf330e --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/xinerama.pyi @@ -0,0 +1,35 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import drawable, resource + +extname: str + +class QueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> QueryVersion: ... + +class GetState(rq.ReplyRequest): ... + +def get_state(self: drawable.Window) -> GetState: ... + +class GetScreenCount(rq.ReplyRequest): ... + +def get_screen_count(self: drawable.Window) -> GetScreenCount: ... + +class GetScreenSize(rq.ReplyRequest): ... + +def get_screen_size(self: drawable.Window, screen_no: int) -> GetScreenSize: ... + +class IsActive(rq.ReplyRequest): ... + +def is_active(self: Display | resource.Resource) -> int: ... + +class QueryScreens(rq.ReplyRequest): ... + +def query_screens(self: Display | resource.Resource) -> QueryScreens: ... + +class GetInfo(rq.ReplyRequest): ... + +def get_info(self: Display | resource.Resource, visual: int) -> None: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/xinput.pyi b/stubs/python-xlib/Xlib/ext/xinput.pyi new file mode 100644 index 000000000000..ef3a5486fc42 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/xinput.pyi @@ -0,0 +1,252 @@ +from _typeshed import ReadableBuffer, SliceableBuffer +from collections.abc import Iterable, Sequence +from typing import SupportsFloat, TypeVar +from typing_extensions import SupportsIndex, TypeAlias + +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import display, request, rq +from Xlib.xobject import drawable, resource + +_T = TypeVar("_T") +_Floatable: TypeAlias = SupportsFloat | SupportsIndex | str | ReadableBuffer + +extname: str +PropertyDeleted: int +PropertyCreated: int +PropertyModified: int +NotifyNormal: int +NotifyGrab: int +NotifyUngrab: int +NotifyWhileGrabbed: int +NotifyPassiveGrab: int +NotifyPassiveUngrab: int +NotifyAncestor: int +NotifyVirtual: int +NotifyInferior: int +NotifyNonlinear: int +NotifyNonlinearVirtual: int +NotifyPointer: int +NotifyPointerRoot: int +NotifyDetailNone: int +GrabtypeButton: int +GrabtypeKeycode: int +GrabtypeEnter: int +GrabtypeFocusIn: int +GrabtypeTouchBegin: int +AnyModifier: int +AnyButton: int +AnyKeycode: int +AsyncDevice: int +SyncDevice: int +ReplayDevice: int +AsyncPairedDevice: int +AsyncPair: int +SyncPair: int +SlaveSwitch: int +DeviceChange: int +MasterAdded: int +MasterRemoved: int +SlaveAdded: int +SlaveRemoved: int +SlaveAttached: int +SlaveDetached: int +DeviceEnabled: int +DeviceDisabled: int +AddMaster: int +RemoveMaster: int +AttachSlave: int +DetachSlave: int +AttachToMaster: int +Floating: int +ModeRelative: int +ModeAbsolute: int +MasterPointer: int +MasterKeyboard: int +SlavePointer: int +SlaveKeyboard: int +FloatingSlave: int +KeyClass: int +ButtonClass: int +ValuatorClass: int +ScrollClass: int +TouchClass: int +KeyRepeat: int +AllDevices: int +AllMasterDevices: int +DeviceChanged: int +KeyPress: int +KeyRelease: int +ButtonPress: int +ButtonRelease: int +Motion: int +Enter: int +Leave: int +FocusIn: int +FocusOut: int +HierarchyChanged: int +PropertyEvent: int +RawKeyPress: int +RawKeyRelease: int +RawButtonPress: int +RawButtonRelease: int +RawMotion: int +DeviceChangedMask: int +KeyPressMask: int +KeyReleaseMask: int +ButtonPressMask: int +ButtonReleaseMask: int +MotionMask: int +EnterMask: int +LeaveMask: int +FocusInMask: int +FocusOutMask: int +HierarchyChangedMask: int +PropertyEventMask: int +RawKeyPressMask: int +RawKeyReleaseMask: int +RawButtonPressMask: int +RawButtonReleaseMask: int +RawMotionMask: int +GrabModeSync: int +GrabModeAsync: int +GrabModeTouch: int +DEVICEID = rq.Card16 +DEVICE = rq.Card16 +DEVICEUSE = rq.Card8 +PROPERTY_TYPE_FLOAT: str + +# ignore[override] because of Liskov substitution principle violations +class FP1616(rq.Int32): + def check_value(self, value: float) -> int: ... # type: ignore[override] + def parse_value(self, value: _Floatable, display: Unused) -> float: ... # type: ignore[override] + +class FP3232(rq.ValueField): + structcode: str + def check_value(self, value: _T) -> _T: ... # type: ignore[override] + def parse_value(self, value: tuple[_Floatable, _Floatable], display: Unused) -> float: ... # type: ignore[override] + +class XIQueryVersion(rq.ReplyRequest): ... + +def query_version(self: Display | resource.Resource) -> XIQueryVersion: ... + +class Mask(rq.List): + def __init__(self, name: str) -> None: ... + def pack_value(self, val: int | Iterable[int]) -> tuple[bytes, int, None]: ... # type: ignore[override] + +EventMask: rq.Struct + +class XISelectEvents(rq.Request): ... + +def select_events(self: drawable.Window, event_masks: Sequence[tuple[int, Sequence[int]]]) -> XISelectEvents: ... + +AnyInfo: rq.Struct + +class ButtonMask: + def __init__(self, value: int, length: int) -> None: ... + def __getitem__(self, key: int) -> int: ... + def __len__(self) -> int: ... + +class ButtonState(rq.ValueField): + structcode: None + def __init__(self, name: str) -> None: ... + def parse_binary_value( # type: ignore[override] # length: None will error. See: https://github.com/python-xlib/python-xlib/pull/248 + self, data: SliceableBuffer, display: Unused, length: int, fmt: Unused + ) -> tuple[ButtonMask, SliceableBuffer]: ... + +ButtonInfo: rq.Struct +KeyInfo: rq.Struct +ValuatorInfo: rq.Struct +ScrollInfo: rq.Struct +TouchInfo: rq.Struct +INFO_CLASSES: dict[int, rq.Struct] + +class ClassInfoClass: + structcode: None + def parse_binary(self, data: SliceableBuffer, display: display.Display | None) -> tuple[rq.DictWrapper, SliceableBuffer]: ... + +ClassInfo: ClassInfoClass +DeviceInfo: rq.Struct + +class XIQueryDevice(rq.ReplyRequest): ... + +def query_device(self: Display | resource.Resource, deviceid: int) -> XIQueryDevice: ... + +class XIListProperties(rq.ReplyRequest): ... + +def list_device_properties(self: Display | resource.Resource, deviceid: int) -> XIListProperties: ... + +class XIGetProperty(rq.ReplyRequest): ... + +def get_device_property( + self: Display | resource.Resource, deviceid: int, property: int, type: int, offset: int, length: int, delete: int = ... +) -> XIGetProperty: ... + +class XIChangeProperty(rq.Request): ... + +def change_device_property( + self: Display | resource.Resource, deviceid: int, property: int, type: int, mode: int, value: Sequence[float] | Sequence[str] +) -> XIChangeProperty: ... + +class XIDeleteProperty(rq.Request): ... + +def delete_device_property(self: Display | resource.Resource, deviceid: int, property: int) -> XIDeleteProperty: ... + +class XIGrabDevice(rq.ReplyRequest): ... + +def grab_device( + self: drawable.Window, + deviceid: int, + time: int, + grab_mode: int, + paired_device_mode: int, + owner_events: bool, + event_mask: Sequence[int], +) -> XIGrabDevice: ... + +class XIUngrabDevice(rq.Request): ... + +def ungrab_device(self: Display | resource.Resource, deviceid: int, time: int) -> XIUngrabDevice: ... + +class XIPassiveGrabDevice(rq.ReplyRequest): ... + +def passive_grab_device( + self: drawable.Window, + deviceid: int, + time: int, + detail: int, + grab_type: int, + grab_mode: int, + paired_device_mode: int, + owner_events: bool, + event_mask: Sequence[int], + modifiers: Sequence[int], +) -> XIPassiveGrabDevice: ... +def grab_keycode( + self: drawable.Window, + deviceid: int, + time: int, + keycode: int, + grab_mode: int, + paired_device_mode: int, + owner_events: bool, + event_mask: Sequence[int], + modifiers: Sequence[int], +) -> XIPassiveGrabDevice: ... + +class XIPassiveUngrabDevice(rq.Request): ... + +def passive_ungrab_device( + self: drawable.Window, deviceid: int, detail: int, grab_type: int, modifiers: Sequence[int] +) -> XIPassiveUngrabDevice: ... +def ungrab_keycode(self: drawable.Window, deviceid: int, keycode: int, modifiers: Sequence[int]) -> XIPassiveUngrabDevice: ... + +HierarchyInfo: rq.Struct +HierarchyEventData: rq.Struct +ModifierInfo: rq.Struct +GroupInfo: rq.Struct +DeviceEventData: rq.Struct +DeviceChangedEventData: rq.Struct +PropertyEventData: rq.Struct + +def init(disp: Display, info: request.QueryExtension) -> None: ... diff --git a/stubs/python-xlib/Xlib/ext/xtest.pyi b/stubs/python-xlib/Xlib/ext/xtest.pyi new file mode 100644 index 000000000000..d2505b771ba5 --- /dev/null +++ b/stubs/python-xlib/Xlib/ext/xtest.pyi @@ -0,0 +1,32 @@ +from Xlib._typing import Unused +from Xlib.display import Display +from Xlib.protocol import rq +from Xlib.xobject import resource + +extname: str +CurrentCursor: int + +class GetVersion(rq.ReplyRequest): ... + +def get_version(self: Display | resource.Resource, major: int, minor: int) -> GetVersion: ... + +class CompareCursor(rq.ReplyRequest): ... + +def compare_cursor(self: Display | resource.Resource, cursor: int) -> int: ... + +class FakeInput(rq.Request): ... + +def fake_input( + self: Display | resource.Resource, + event_type: int, + detail: int = ..., + time: int = ..., + root: int = ..., + x: int = ..., + y: int = ..., +) -> None: ... + +class GrabControl(rq.Request): ... + +def grab_control(self: Display | resource.Resource, impervious: bool) -> None: ... +def init(disp: Display, info: Unused) -> None: ... diff --git a/stubs/python-xlib/Xlib/keysymdef/__init__.pyi b/stubs/python-xlib/Xlib/keysymdef/__init__.pyi new file mode 100644 index 000000000000..ca535d0ea135 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/__init__.pyi @@ -0,0 +1,43 @@ +from Xlib.keysymdef import ( + apl as apl, + arabic as arabic, + cyrillic as cyrillic, + greek as greek, + hebrew as hebrew, + katakana as katakana, + korean as korean, + latin1 as latin1, + latin2 as latin2, + latin3 as latin3, + latin4 as latin4, + miscellany as miscellany, + publishing as publishing, + special as special, + technical as technical, + thai as thai, + xf86 as xf86, + xk3270 as xk3270, + xkb as xkb, +) + +__all__ = [ + "apl", + "arabic", + "cyrillic", + "greek", + "hebrew", + "katakana", + "korean", + "latin1", + "latin2", + "latin3", + "latin4", + "miscellany", + "publishing", + "special", + "technical", + "thai", + "xf86", + "xk3270", + "xkb", +] diff --git a/stubs/python-xlib/Xlib/keysymdef/apl.pyi b/stubs/python-xlib/Xlib/keysymdef/apl.pyi new file mode 100644 index 000000000000..a4404d76de81 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/apl.pyi @@ -0,0 +1,19 @@ +XK_leftcaret: int +XK_rightcaret: int +XK_downcaret: int +XK_upcaret: int +XK_overbar: int +XK_downtack: int +XK_upshoe: int +XK_downstile: int +XK_underbar: int +XK_jot: int +XK_quad: int +XK_uptack: int +XK_circle: int +XK_upstile: int +XK_downshoe: int +XK_rightshoe: int +XK_leftshoe: int +XK_lefttack: int +XK_righttack: int diff --git a/stubs/python-xlib/Xlib/keysymdef/arabic.pyi b/stubs/python-xlib/Xlib/keysymdef/arabic.pyi new file mode 100644 index 000000000000..ab9a7b0fc079 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/arabic.pyi @@ -0,0 +1,50 @@ +XK_Arabic_comma: int +XK_Arabic_semicolon: int +XK_Arabic_question_mark: int +XK_Arabic_hamza: int +XK_Arabic_maddaonalef: int +XK_Arabic_hamzaonalef: int +XK_Arabic_hamzaonwaw: int +XK_Arabic_hamzaunderalef: int +XK_Arabic_hamzaonyeh: int +XK_Arabic_alef: int +XK_Arabic_beh: int +XK_Arabic_tehmarbuta: int +XK_Arabic_teh: int +XK_Arabic_theh: int +XK_Arabic_jeem: int +XK_Arabic_hah: int +XK_Arabic_khah: int +XK_Arabic_dal: int +XK_Arabic_thal: int +XK_Arabic_ra: int +XK_Arabic_zain: int +XK_Arabic_seen: int +XK_Arabic_sheen: int +XK_Arabic_sad: int +XK_Arabic_dad: int +XK_Arabic_tah: int +XK_Arabic_zah: int +XK_Arabic_ain: int +XK_Arabic_ghain: int +XK_Arabic_tatweel: int +XK_Arabic_feh: int +XK_Arabic_qaf: int +XK_Arabic_kaf: int +XK_Arabic_lam: int +XK_Arabic_meem: int +XK_Arabic_noon: int +XK_Arabic_ha: int +XK_Arabic_heh: int +XK_Arabic_waw: int +XK_Arabic_alefmaksura: int +XK_Arabic_yeh: int +XK_Arabic_fathatan: int +XK_Arabic_dammatan: int +XK_Arabic_kasratan: int +XK_Arabic_fatha: int +XK_Arabic_damma: int +XK_Arabic_kasra: int +XK_Arabic_shadda: int +XK_Arabic_sukun: int +XK_Arabic_switch: int diff --git a/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi b/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi new file mode 100644 index 000000000000..a4accc99c158 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi @@ -0,0 +1,107 @@ +XK_Serbian_dje: int +XK_Macedonia_gje: int +XK_Cyrillic_io: int +XK_Ukrainian_ie: int +XK_Ukranian_je: int +XK_Macedonia_dse: int +XK_Ukrainian_i: int +XK_Ukranian_i: int +XK_Ukrainian_yi: int +XK_Ukranian_yi: int +XK_Cyrillic_je: int +XK_Serbian_je: int +XK_Cyrillic_lje: int +XK_Serbian_lje: int +XK_Cyrillic_nje: int +XK_Serbian_nje: int +XK_Serbian_tshe: int +XK_Macedonia_kje: int +XK_Byelorussian_shortu: int +XK_Cyrillic_dzhe: int +XK_Serbian_dze: int +XK_numerosign: int +XK_Serbian_DJE: int +XK_Macedonia_GJE: int +XK_Cyrillic_IO: int +XK_Ukrainian_IE: int +XK_Ukranian_JE: int +XK_Macedonia_DSE: int +XK_Ukrainian_I: int +XK_Ukranian_I: int +XK_Ukrainian_YI: int +XK_Ukranian_YI: int +XK_Cyrillic_JE: int +XK_Serbian_JE: int +XK_Cyrillic_LJE: int +XK_Serbian_LJE: int +XK_Cyrillic_NJE: int +XK_Serbian_NJE: int +XK_Serbian_TSHE: int +XK_Macedonia_KJE: int +XK_Byelorussian_SHORTU: int +XK_Cyrillic_DZHE: int +XK_Serbian_DZE: int +XK_Cyrillic_yu: int +XK_Cyrillic_a: int +XK_Cyrillic_be: int +XK_Cyrillic_tse: int +XK_Cyrillic_de: int +XK_Cyrillic_ie: int +XK_Cyrillic_ef: int +XK_Cyrillic_ghe: int +XK_Cyrillic_ha: int +XK_Cyrillic_i: int +XK_Cyrillic_shorti: int +XK_Cyrillic_ka: int +XK_Cyrillic_el: int +XK_Cyrillic_em: int +XK_Cyrillic_en: int +XK_Cyrillic_o: int +XK_Cyrillic_pe: int +XK_Cyrillic_ya: int +XK_Cyrillic_er: int +XK_Cyrillic_es: int +XK_Cyrillic_te: int +XK_Cyrillic_u: int +XK_Cyrillic_zhe: int +XK_Cyrillic_ve: int +XK_Cyrillic_softsign: int +XK_Cyrillic_yeru: int +XK_Cyrillic_ze: int +XK_Cyrillic_sha: int +XK_Cyrillic_e: int +XK_Cyrillic_shcha: int +XK_Cyrillic_che: int +XK_Cyrillic_hardsign: int +XK_Cyrillic_YU: int +XK_Cyrillic_A: int +XK_Cyrillic_BE: int +XK_Cyrillic_TSE: int +XK_Cyrillic_DE: int +XK_Cyrillic_IE: int +XK_Cyrillic_EF: int +XK_Cyrillic_GHE: int +XK_Cyrillic_HA: int +XK_Cyrillic_I: int +XK_Cyrillic_SHORTI: int +XK_Cyrillic_KA: int +XK_Cyrillic_EL: int +XK_Cyrillic_EM: int +XK_Cyrillic_EN: int +XK_Cyrillic_O: int +XK_Cyrillic_PE: int +XK_Cyrillic_YA: int +XK_Cyrillic_ER: int +XK_Cyrillic_ES: int +XK_Cyrillic_TE: int +XK_Cyrillic_U: int +XK_Cyrillic_ZHE: int +XK_Cyrillic_VE: int +XK_Cyrillic_SOFTSIGN: int +XK_Cyrillic_YERU: int +XK_Cyrillic_ZE: int +XK_Cyrillic_SHA: int +XK_Cyrillic_E: int +XK_Cyrillic_SHCHA: int +XK_Cyrillic_CHE: int +XK_Cyrillic_HARDSIGN: int diff --git a/stubs/python-xlib/Xlib/keysymdef/greek.pyi b/stubs/python-xlib/Xlib/keysymdef/greek.pyi new file mode 100644 index 000000000000..7460ea2e6441 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/greek.pyi @@ -0,0 +1,74 @@ +XK_Greek_ALPHAaccent: int +XK_Greek_EPSILONaccent: int +XK_Greek_ETAaccent: int +XK_Greek_IOTAaccent: int +XK_Greek_IOTAdiaeresis: int +XK_Greek_OMICRONaccent: int +XK_Greek_UPSILONaccent: int +XK_Greek_UPSILONdieresis: int +XK_Greek_OMEGAaccent: int +XK_Greek_accentdieresis: int +XK_Greek_horizbar: int +XK_Greek_alphaaccent: int +XK_Greek_epsilonaccent: int +XK_Greek_etaaccent: int +XK_Greek_iotaaccent: int +XK_Greek_iotadieresis: int +XK_Greek_iotaaccentdieresis: int +XK_Greek_omicronaccent: int +XK_Greek_upsilonaccent: int +XK_Greek_upsilondieresis: int +XK_Greek_upsilonaccentdieresis: int +XK_Greek_omegaaccent: int +XK_Greek_ALPHA: int +XK_Greek_BETA: int +XK_Greek_GAMMA: int +XK_Greek_DELTA: int +XK_Greek_EPSILON: int +XK_Greek_ZETA: int +XK_Greek_ETA: int +XK_Greek_THETA: int +XK_Greek_IOTA: int +XK_Greek_KAPPA: int +XK_Greek_LAMDA: int +XK_Greek_LAMBDA: int +XK_Greek_MU: int +XK_Greek_NU: int +XK_Greek_XI: int +XK_Greek_OMICRON: int +XK_Greek_PI: int +XK_Greek_RHO: int +XK_Greek_SIGMA: int +XK_Greek_TAU: int +XK_Greek_UPSILON: int +XK_Greek_PHI: int +XK_Greek_CHI: int +XK_Greek_PSI: int +XK_Greek_OMEGA: int +XK_Greek_alpha: int +XK_Greek_beta: int +XK_Greek_gamma: int +XK_Greek_delta: int +XK_Greek_epsilon: int +XK_Greek_zeta: int +XK_Greek_eta: int +XK_Greek_theta: int +XK_Greek_iota: int +XK_Greek_kappa: int +XK_Greek_lamda: int +XK_Greek_lambda: int +XK_Greek_mu: int +XK_Greek_nu: int +XK_Greek_xi: int +XK_Greek_omicron: int +XK_Greek_pi: int +XK_Greek_rho: int +XK_Greek_sigma: int +XK_Greek_finalsmallsigma: int +XK_Greek_tau: int +XK_Greek_upsilon: int +XK_Greek_phi: int +XK_Greek_chi: int +XK_Greek_psi: int +XK_Greek_omega: int +XK_Greek_switch: int diff --git a/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi b/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi new file mode 100644 index 000000000000..5ad28bf8f909 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi @@ -0,0 +1,40 @@ +XK_hebrew_doublelowline: int +XK_hebrew_aleph: int +XK_hebrew_bet: int +XK_hebrew_beth: int +XK_hebrew_gimel: int +XK_hebrew_gimmel: int +XK_hebrew_dalet: int +XK_hebrew_daleth: int +XK_hebrew_he: int +XK_hebrew_waw: int +XK_hebrew_zain: int +XK_hebrew_zayin: int +XK_hebrew_chet: int +XK_hebrew_het: int +XK_hebrew_tet: int +XK_hebrew_teth: int +XK_hebrew_yod: int +XK_hebrew_finalkaph: int +XK_hebrew_kaph: int +XK_hebrew_lamed: int +XK_hebrew_finalmem: int +XK_hebrew_mem: int +XK_hebrew_finalnun: int +XK_hebrew_nun: int +XK_hebrew_samech: int +XK_hebrew_samekh: int +XK_hebrew_ayin: int +XK_hebrew_finalpe: int +XK_hebrew_pe: int +XK_hebrew_finalzade: int +XK_hebrew_finalzadi: int +XK_hebrew_zade: int +XK_hebrew_zadi: int +XK_hebrew_qoph: int +XK_hebrew_kuf: int +XK_hebrew_resh: int +XK_hebrew_shin: int +XK_hebrew_taw: int +XK_hebrew_taf: int +XK_Hebrew_switch: int diff --git a/stubs/python-xlib/Xlib/keysymdef/katakana.pyi b/stubs/python-xlib/Xlib/keysymdef/katakana.pyi new file mode 100644 index 000000000000..2480a14c3dd9 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/katakana.pyi @@ -0,0 +1,70 @@ +XK_overline: int +XK_kana_fullstop: int +XK_kana_openingbracket: int +XK_kana_closingbracket: int +XK_kana_comma: int +XK_kana_conjunctive: int +XK_kana_middledot: int +XK_kana_WO: int +XK_kana_a: int +XK_kana_i: int +XK_kana_u: int +XK_kana_e: int +XK_kana_o: int +XK_kana_ya: int +XK_kana_yu: int +XK_kana_yo: int +XK_kana_tsu: int +XK_kana_tu: int +XK_prolongedsound: int +XK_kana_A: int +XK_kana_I: int +XK_kana_U: int +XK_kana_E: int +XK_kana_O: int +XK_kana_KA: int +XK_kana_KI: int +XK_kana_KU: int +XK_kana_KE: int +XK_kana_KO: int +XK_kana_SA: int +XK_kana_SHI: int +XK_kana_SU: int +XK_kana_SE: int +XK_kana_SO: int +XK_kana_TA: int +XK_kana_CHI: int +XK_kana_TI: int +XK_kana_TSU: int +XK_kana_TU: int +XK_kana_TE: int +XK_kana_TO: int +XK_kana_NA: int +XK_kana_NI: int +XK_kana_NU: int +XK_kana_NE: int +XK_kana_NO: int +XK_kana_HA: int +XK_kana_HI: int +XK_kana_FU: int +XK_kana_HU: int +XK_kana_HE: int +XK_kana_HO: int +XK_kana_MA: int +XK_kana_MI: int +XK_kana_MU: int +XK_kana_ME: int +XK_kana_MO: int +XK_kana_YA: int +XK_kana_YU: int +XK_kana_YO: int +XK_kana_RA: int +XK_kana_RI: int +XK_kana_RU: int +XK_kana_RE: int +XK_kana_RO: int +XK_kana_WA: int +XK_kana_N: int +XK_voicedsound: int +XK_semivoicedsound: int +XK_kana_switch: int diff --git a/stubs/python-xlib/Xlib/keysymdef/korean.pyi b/stubs/python-xlib/Xlib/keysymdef/korean.pyi new file mode 100644 index 000000000000..c3bb312794a7 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/korean.pyi @@ -0,0 +1,107 @@ +XK_Hangul: int +XK_Hangul_Start: int +XK_Hangul_End: int +XK_Hangul_Hanja: int +XK_Hangul_Jamo: int +XK_Hangul_Romaja: int +XK_Hangul_Codeinput: int +XK_Hangul_Jeonja: int +XK_Hangul_Banja: int +XK_Hangul_PreHanja: int +XK_Hangul_PostHanja: int +XK_Hangul_SingleCandidate: int +XK_Hangul_MultipleCandidate: int +XK_Hangul_PreviousCandidate: int +XK_Hangul_Special: int +XK_Hangul_switch: int +XK_Hangul_Kiyeog: int +XK_Hangul_SsangKiyeog: int +XK_Hangul_KiyeogSios: int +XK_Hangul_Nieun: int +XK_Hangul_NieunJieuj: int +XK_Hangul_NieunHieuh: int +XK_Hangul_Dikeud: int +XK_Hangul_SsangDikeud: int +XK_Hangul_Rieul: int +XK_Hangul_RieulKiyeog: int +XK_Hangul_RieulMieum: int +XK_Hangul_RieulPieub: int +XK_Hangul_RieulSios: int +XK_Hangul_RieulTieut: int +XK_Hangul_RieulPhieuf: int +XK_Hangul_RieulHieuh: int +XK_Hangul_Mieum: int +XK_Hangul_Pieub: int +XK_Hangul_SsangPieub: int +XK_Hangul_PieubSios: int +XK_Hangul_Sios: int +XK_Hangul_SsangSios: int +XK_Hangul_Ieung: int +XK_Hangul_Jieuj: int +XK_Hangul_SsangJieuj: int +XK_Hangul_Cieuc: int +XK_Hangul_Khieuq: int +XK_Hangul_Tieut: int +XK_Hangul_Phieuf: int +XK_Hangul_Hieuh: int +XK_Hangul_A: int +XK_Hangul_AE: int +XK_Hangul_YA: int +XK_Hangul_YAE: int +XK_Hangul_EO: int +XK_Hangul_E: int +XK_Hangul_YEO: int +XK_Hangul_YE: int +XK_Hangul_O: int +XK_Hangul_WA: int +XK_Hangul_WAE: int +XK_Hangul_OE: int +XK_Hangul_YO: int +XK_Hangul_U: int +XK_Hangul_WEO: int +XK_Hangul_WE: int +XK_Hangul_WI: int +XK_Hangul_YU: int +XK_Hangul_EU: int +XK_Hangul_YI: int +XK_Hangul_I: int +XK_Hangul_J_Kiyeog: int +XK_Hangul_J_SsangKiyeog: int +XK_Hangul_J_KiyeogSios: int +XK_Hangul_J_Nieun: int +XK_Hangul_J_NieunJieuj: int +XK_Hangul_J_NieunHieuh: int +XK_Hangul_J_Dikeud: int +XK_Hangul_J_Rieul: int +XK_Hangul_J_RieulKiyeog: int +XK_Hangul_J_RieulMieum: int +XK_Hangul_J_RieulPieub: int +XK_Hangul_J_RieulSios: int +XK_Hangul_J_RieulTieut: int +XK_Hangul_J_RieulPhieuf: int +XK_Hangul_J_RieulHieuh: int +XK_Hangul_J_Mieum: int +XK_Hangul_J_Pieub: int +XK_Hangul_J_PieubSios: int +XK_Hangul_J_Sios: int +XK_Hangul_J_SsangSios: int +XK_Hangul_J_Ieung: int +XK_Hangul_J_Jieuj: int +XK_Hangul_J_Cieuc: int +XK_Hangul_J_Khieuq: int +XK_Hangul_J_Tieut: int +XK_Hangul_J_Phieuf: int +XK_Hangul_J_Hieuh: int +XK_Hangul_RieulYeorinHieuh: int +XK_Hangul_SunkyeongeumMieum: int +XK_Hangul_SunkyeongeumPieub: int +XK_Hangul_PanSios: int +XK_Hangul_KkogjiDalrinIeung: int +XK_Hangul_SunkyeongeumPhieuf: int +XK_Hangul_YeorinHieuh: int +XK_Hangul_AraeA: int +XK_Hangul_AraeAE: int +XK_Hangul_J_PanSios: int +XK_Hangul_J_KkogjiDalrinIeung: int +XK_Hangul_J_YeorinHieuh: int +XK_Korean_Won: int diff --git a/stubs/python-xlib/Xlib/keysymdef/latin1.pyi b/stubs/python-xlib/Xlib/keysymdef/latin1.pyi new file mode 100644 index 000000000000..6a80d591327a --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/latin1.pyi @@ -0,0 +1,195 @@ +XK_space: int +XK_exclam: int +XK_quotedbl: int +XK_numbersign: int +XK_dollar: int +XK_percent: int +XK_ampersand: int +XK_apostrophe: int +XK_quoteright: int +XK_parenleft: int +XK_parenright: int +XK_asterisk: int +XK_plus: int +XK_comma: int +XK_minus: int +XK_period: int +XK_slash: int +XK_0: int +XK_1: int +XK_2: int +XK_3: int +XK_4: int +XK_5: int +XK_6: int +XK_7: int +XK_8: int +XK_9: int +XK_colon: int +XK_semicolon: int +XK_less: int +XK_equal: int +XK_greater: int +XK_question: int +XK_at: int +XK_A: int +XK_B: int +XK_C: int +XK_D: int +XK_E: int +XK_F: int +XK_G: int +XK_H: int +XK_I: int +XK_J: int +XK_K: int +XK_L: int +XK_M: int +XK_N: int +XK_O: int +XK_P: int +XK_Q: int +XK_R: int +XK_S: int +XK_T: int +XK_U: int +XK_V: int +XK_W: int +XK_X: int +XK_Y: int +XK_Z: int +XK_bracketleft: int +XK_backslash: int +XK_bracketright: int +XK_asciicircum: int +XK_underscore: int +XK_grave: int +XK_quoteleft: int +XK_a: int +XK_b: int +XK_c: int +XK_d: int +XK_e: int +XK_f: int +XK_g: int +XK_h: int +XK_i: int +XK_j: int +XK_k: int +XK_l: int +XK_m: int +XK_n: int +XK_o: int +XK_p: int +XK_q: int +XK_r: int +XK_s: int +XK_t: int +XK_u: int +XK_v: int +XK_w: int +XK_x: int +XK_y: int +XK_z: int +XK_braceleft: int +XK_bar: int +XK_braceright: int +XK_asciitilde: int +XK_nobreakspace: int +XK_exclamdown: int +XK_cent: int +XK_sterling: int +XK_currency: int +XK_yen: int +XK_brokenbar: int +XK_section: int +XK_diaeresis: int +XK_copyright: int +XK_ordfeminine: int +XK_guillemotleft: int +XK_notsign: int +XK_hyphen: int +XK_registered: int +XK_macron: int +XK_degree: int +XK_plusminus: int +XK_twosuperior: int +XK_threesuperior: int +XK_acute: int +XK_mu: int +XK_paragraph: int +XK_periodcentered: int +XK_cedilla: int +XK_onesuperior: int +XK_masculine: int +XK_guillemotright: int +XK_onequarter: int +XK_onehalf: int +XK_threequarters: int +XK_questiondown: int +XK_Agrave: int +XK_Aacute: int +XK_Acircumflex: int +XK_Atilde: int +XK_Adiaeresis: int +XK_Aring: int +XK_AE: int +XK_Ccedilla: int +XK_Egrave: int +XK_Eacute: int +XK_Ecircumflex: int +XK_Ediaeresis: int +XK_Igrave: int +XK_Iacute: int +XK_Icircumflex: int +XK_Idiaeresis: int +XK_ETH: int +XK_Eth: int +XK_Ntilde: int +XK_Ograve: int +XK_Oacute: int +XK_Ocircumflex: int +XK_Otilde: int +XK_Odiaeresis: int +XK_multiply: int +XK_Ooblique: int +XK_Ugrave: int +XK_Uacute: int +XK_Ucircumflex: int +XK_Udiaeresis: int +XK_Yacute: int +XK_THORN: int +XK_Thorn: int +XK_ssharp: int +XK_agrave: int +XK_aacute: int +XK_acircumflex: int +XK_atilde: int +XK_adiaeresis: int +XK_aring: int +XK_ae: int +XK_ccedilla: int +XK_egrave: int +XK_eacute: int +XK_ecircumflex: int +XK_ediaeresis: int +XK_igrave: int +XK_iacute: int +XK_icircumflex: int +XK_idiaeresis: int +XK_eth: int +XK_ntilde: int +XK_ograve: int +XK_oacute: int +XK_ocircumflex: int +XK_otilde: int +XK_odiaeresis: int +XK_division: int +XK_oslash: int +XK_ugrave: int +XK_uacute: int +XK_ucircumflex: int +XK_udiaeresis: int +XK_yacute: int +XK_thorn: int +XK_ydiaeresis: int diff --git a/stubs/python-xlib/Xlib/keysymdef/latin2.pyi b/stubs/python-xlib/Xlib/keysymdef/latin2.pyi new file mode 100644 index 000000000000..308f7277d277 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/latin2.pyi @@ -0,0 +1,57 @@ +XK_Aogonek: int +XK_breve: int +XK_Lstroke: int +XK_Lcaron: int +XK_Sacute: int +XK_Scaron: int +XK_Scedilla: int +XK_Tcaron: int +XK_Zacute: int +XK_Zcaron: int +XK_Zabovedot: int +XK_aogonek: int +XK_ogonek: int +XK_lstroke: int +XK_lcaron: int +XK_sacute: int +XK_caron: int +XK_scaron: int +XK_scedilla: int +XK_tcaron: int +XK_zacute: int +XK_doubleacute: int +XK_zcaron: int +XK_zabovedot: int +XK_Racute: int +XK_Abreve: int +XK_Lacute: int +XK_Cacute: int +XK_Ccaron: int +XK_Eogonek: int +XK_Ecaron: int +XK_Dcaron: int +XK_Dstroke: int +XK_Nacute: int +XK_Ncaron: int +XK_Odoubleacute: int +XK_Rcaron: int +XK_Uring: int +XK_Udoubleacute: int +XK_Tcedilla: int +XK_racute: int +XK_abreve: int +XK_lacute: int +XK_cacute: int +XK_ccaron: int +XK_eogonek: int +XK_ecaron: int +XK_dcaron: int +XK_dstroke: int +XK_nacute: int +XK_ncaron: int +XK_odoubleacute: int +XK_udoubleacute: int +XK_rcaron: int +XK_uring: int +XK_tcedilla: int +XK_abovedot: int diff --git a/stubs/python-xlib/Xlib/keysymdef/latin3.pyi b/stubs/python-xlib/Xlib/keysymdef/latin3.pyi new file mode 100644 index 000000000000..dd80308136e9 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/latin3.pyi @@ -0,0 +1,22 @@ +XK_Hstroke: int +XK_Hcircumflex: int +XK_Iabovedot: int +XK_Gbreve: int +XK_Jcircumflex: int +XK_hstroke: int +XK_hcircumflex: int +XK_idotless: int +XK_gbreve: int +XK_jcircumflex: int +XK_Cabovedot: int +XK_Ccircumflex: int +XK_Gabovedot: int +XK_Gcircumflex: int +XK_Ubreve: int +XK_Scircumflex: int +XK_cabovedot: int +XK_ccircumflex: int +XK_gabovedot: int +XK_gcircumflex: int +XK_ubreve: int +XK_scircumflex: int diff --git a/stubs/python-xlib/Xlib/keysymdef/latin4.pyi b/stubs/python-xlib/Xlib/keysymdef/latin4.pyi new file mode 100644 index 000000000000..278d7cc91f0d --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/latin4.pyi @@ -0,0 +1,36 @@ +XK_kra: int +XK_kappa: int +XK_Rcedilla: int +XK_Itilde: int +XK_Lcedilla: int +XK_Emacron: int +XK_Gcedilla: int +XK_Tslash: int +XK_rcedilla: int +XK_itilde: int +XK_lcedilla: int +XK_emacron: int +XK_gcedilla: int +XK_tslash: int +XK_ENG: int +XK_eng: int +XK_Amacron: int +XK_Iogonek: int +XK_Eabovedot: int +XK_Imacron: int +XK_Ncedilla: int +XK_Omacron: int +XK_Kcedilla: int +XK_Uogonek: int +XK_Utilde: int +XK_Umacron: int +XK_amacron: int +XK_iogonek: int +XK_eabovedot: int +XK_imacron: int +XK_ncedilla: int +XK_omacron: int +XK_kcedilla: int +XK_uogonek: int +XK_utilde: int +XK_umacron: int diff --git a/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi b/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi new file mode 100644 index 000000000000..ecf77b848fd1 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi @@ -0,0 +1,169 @@ +XK_BackSpace: int +XK_Tab: int +XK_Linefeed: int +XK_Clear: int +XK_Return: int +XK_Pause: int +XK_Scroll_Lock: int +XK_Sys_Req: int +XK_Escape: int +XK_Delete: int +XK_Multi_key: int +XK_SingleCandidate: int +XK_MultipleCandidate: int +XK_PreviousCandidate: int +XK_Kanji: int +XK_Muhenkan: int +XK_Henkan_Mode: int +XK_Henkan: int +XK_Romaji: int +XK_Hiragana: int +XK_Katakana: int +XK_Hiragana_Katakana: int +XK_Zenkaku: int +XK_Hankaku: int +XK_Zenkaku_Hankaku: int +XK_Touroku: int +XK_Massyo: int +XK_Kana_Lock: int +XK_Kana_Shift: int +XK_Eisu_Shift: int +XK_Eisu_toggle: int +XK_Zen_Koho: int +XK_Mae_Koho: int +XK_Home: int +XK_Left: int +XK_Up: int +XK_Right: int +XK_Down: int +XK_Prior: int +XK_Page_Up: int +XK_Next: int +XK_Page_Down: int +XK_End: int +XK_Begin: int +XK_Select: int +XK_Print: int +XK_Execute: int +XK_Insert: int +XK_Undo: int +XK_Redo: int +XK_Menu: int +XK_Find: int +XK_Cancel: int +XK_Help: int +XK_Break: int +XK_Mode_switch: int +XK_script_switch: int +XK_Num_Lock: int +XK_KP_Space: int +XK_KP_Tab: int +XK_KP_Enter: int +XK_KP_F1: int +XK_KP_F2: int +XK_KP_F3: int +XK_KP_F4: int +XK_KP_Home: int +XK_KP_Left: int +XK_KP_Up: int +XK_KP_Right: int +XK_KP_Down: int +XK_KP_Prior: int +XK_KP_Page_Up: int +XK_KP_Next: int +XK_KP_Page_Down: int +XK_KP_End: int +XK_KP_Begin: int +XK_KP_Insert: int +XK_KP_Delete: int +XK_KP_Equal: int +XK_KP_Multiply: int +XK_KP_Add: int +XK_KP_Separator: int +XK_KP_Subtract: int +XK_KP_Decimal: int +XK_KP_Divide: int +XK_KP_0: int +XK_KP_1: int +XK_KP_2: int +XK_KP_3: int +XK_KP_4: int +XK_KP_5: int +XK_KP_6: int +XK_KP_7: int +XK_KP_8: int +XK_KP_9: int +XK_F1: int +XK_F2: int +XK_F3: int +XK_F4: int +XK_F5: int +XK_F6: int +XK_F7: int +XK_F8: int +XK_F9: int +XK_F10: int +XK_F11: int +XK_L1: int +XK_F12: int +XK_L2: int +XK_F13: int +XK_L3: int +XK_F14: int +XK_L4: int +XK_F15: int +XK_L5: int +XK_F16: int +XK_L6: int +XK_F17: int +XK_L7: int +XK_F18: int +XK_L8: int +XK_F19: int +XK_L9: int +XK_F20: int +XK_L10: int +XK_F21: int +XK_R1: int +XK_F22: int +XK_R2: int +XK_F23: int +XK_R3: int +XK_F24: int +XK_R4: int +XK_F25: int +XK_R5: int +XK_F26: int +XK_R6: int +XK_F27: int +XK_R7: int +XK_F28: int +XK_R8: int +XK_F29: int +XK_R9: int +XK_F30: int +XK_R10: int +XK_F31: int +XK_R11: int +XK_F32: int +XK_R12: int +XK_F33: int +XK_R13: int +XK_F34: int +XK_R14: int +XK_F35: int +XK_R15: int +XK_Shift_L: int +XK_Shift_R: int +XK_Control_L: int +XK_Control_R: int +XK_Caps_Lock: int +XK_Shift_Lock: int +XK_Meta_L: int +XK_Meta_R: int +XK_Alt_L: int +XK_Alt_R: int +XK_Super_L: int +XK_Super_R: int +XK_Hyper_L: int +XK_Hyper_R: int diff --git a/stubs/python-xlib/Xlib/keysymdef/publishing.pyi b/stubs/python-xlib/Xlib/keysymdef/publishing.pyi new file mode 100644 index 000000000000..50c1f02078ea --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/publishing.pyi @@ -0,0 +1,83 @@ +XK_emspace: int +XK_enspace: int +XK_em3space: int +XK_em4space: int +XK_digitspace: int +XK_punctspace: int +XK_thinspace: int +XK_hairspace: int +XK_emdash: int +XK_endash: int +XK_signifblank: int +XK_ellipsis: int +XK_doubbaselinedot: int +XK_onethird: int +XK_twothirds: int +XK_onefifth: int +XK_twofifths: int +XK_threefifths: int +XK_fourfifths: int +XK_onesixth: int +XK_fivesixths: int +XK_careof: int +XK_figdash: int +XK_leftanglebracket: int +XK_decimalpoint: int +XK_rightanglebracket: int +XK_marker: int +XK_oneeighth: int +XK_threeeighths: int +XK_fiveeighths: int +XK_seveneighths: int +XK_trademark: int +XK_signaturemark: int +XK_trademarkincircle: int +XK_leftopentriangle: int +XK_rightopentriangle: int +XK_emopencircle: int +XK_emopenrectangle: int +XK_leftsinglequotemark: int +XK_rightsinglequotemark: int +XK_leftdoublequotemark: int +XK_rightdoublequotemark: int +XK_prescription: int +XK_minutes: int +XK_seconds: int +XK_latincross: int +XK_hexagram: int +XK_filledrectbullet: int +XK_filledlefttribullet: int +XK_filledrighttribullet: int +XK_emfilledcircle: int +XK_emfilledrect: int +XK_enopencircbullet: int +XK_enopensquarebullet: int +XK_openrectbullet: int +XK_opentribulletup: int +XK_opentribulletdown: int +XK_openstar: int +XK_enfilledcircbullet: int +XK_enfilledsqbullet: int +XK_filledtribulletup: int +XK_filledtribulletdown: int +XK_leftpointer: int +XK_rightpointer: int +XK_club: int +XK_diamond: int +XK_heart: int +XK_maltesecross: int +XK_dagger: int +XK_doubledagger: int +XK_checkmark: int +XK_ballotcross: int +XK_musicalsharp: int +XK_musicalflat: int +XK_malesymbol: int +XK_femalesymbol: int +XK_telephone: int +XK_telephonerecorder: int +XK_phonographcopyright: int +XK_caret: int +XK_singlelowquotemark: int +XK_doublelowquotemark: int +XK_cursor: int diff --git a/stubs/python-xlib/Xlib/keysymdef/special.pyi b/stubs/python-xlib/Xlib/keysymdef/special.pyi new file mode 100644 index 000000000000..6376279eadff --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/special.pyi @@ -0,0 +1,24 @@ +XK_blank: int +XK_soliddiamond: int +XK_checkerboard: int +XK_ht: int +XK_ff: int +XK_cr: int +XK_lf: int +XK_nl: int +XK_vt: int +XK_lowrightcorner: int +XK_uprightcorner: int +XK_upleftcorner: int +XK_lowleftcorner: int +XK_crossinglines: int +XK_horizlinescan1: int +XK_horizlinescan3: int +XK_horizlinescan5: int +XK_horizlinescan7: int +XK_horizlinescan9: int +XK_leftt: int +XK_rightt: int +XK_bott: int +XK_topt: int +XK_vertbar: int diff --git a/stubs/python-xlib/Xlib/keysymdef/technical.pyi b/stubs/python-xlib/Xlib/keysymdef/technical.pyi new file mode 100644 index 000000000000..6b60c278cecc --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/technical.pyi @@ -0,0 +1,49 @@ +XK_leftradical: int +XK_topleftradical: int +XK_horizconnector: int +XK_topintegral: int +XK_botintegral: int +XK_vertconnector: int +XK_topleftsqbracket: int +XK_botleftsqbracket: int +XK_toprightsqbracket: int +XK_botrightsqbracket: int +XK_topleftparens: int +XK_botleftparens: int +XK_toprightparens: int +XK_botrightparens: int +XK_leftmiddlecurlybrace: int +XK_rightmiddlecurlybrace: int +XK_topleftsummation: int +XK_botleftsummation: int +XK_topvertsummationconnector: int +XK_botvertsummationconnector: int +XK_toprightsummation: int +XK_botrightsummation: int +XK_rightmiddlesummation: int +XK_lessthanequal: int +XK_notequal: int +XK_greaterthanequal: int +XK_integral: int +XK_therefore: int +XK_variation: int +XK_infinity: int +XK_nabla: int +XK_approximate: int +XK_similarequal: int +XK_ifonlyif: int +XK_implies: int +XK_identical: int +XK_radical: int +XK_includedin: int +XK_includes: int +XK_intersection: int +XK_union: int +XK_logicaland: int +XK_logicalor: int +XK_partialderivative: int +XK_function: int +XK_leftarrow: int +XK_uparrow: int +XK_rightarrow: int +XK_downarrow: int diff --git a/stubs/python-xlib/Xlib/keysymdef/thai.pyi b/stubs/python-xlib/Xlib/keysymdef/thai.pyi new file mode 100644 index 000000000000..71f2c91067e6 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/thai.pyi @@ -0,0 +1,84 @@ +XK_Thai_kokai: int +XK_Thai_khokhai: int +XK_Thai_khokhuat: int +XK_Thai_khokhwai: int +XK_Thai_khokhon: int +XK_Thai_khorakhang: int +XK_Thai_ngongu: int +XK_Thai_chochan: int +XK_Thai_choching: int +XK_Thai_chochang: int +XK_Thai_soso: int +XK_Thai_chochoe: int +XK_Thai_yoying: int +XK_Thai_dochada: int +XK_Thai_topatak: int +XK_Thai_thothan: int +XK_Thai_thonangmontho: int +XK_Thai_thophuthao: int +XK_Thai_nonen: int +XK_Thai_dodek: int +XK_Thai_totao: int +XK_Thai_thothung: int +XK_Thai_thothahan: int +XK_Thai_thothong: int +XK_Thai_nonu: int +XK_Thai_bobaimai: int +XK_Thai_popla: int +XK_Thai_phophung: int +XK_Thai_fofa: int +XK_Thai_phophan: int +XK_Thai_fofan: int +XK_Thai_phosamphao: int +XK_Thai_moma: int +XK_Thai_yoyak: int +XK_Thai_rorua: int +XK_Thai_ru: int +XK_Thai_loling: int +XK_Thai_lu: int +XK_Thai_wowaen: int +XK_Thai_sosala: int +XK_Thai_sorusi: int +XK_Thai_sosua: int +XK_Thai_hohip: int +XK_Thai_lochula: int +XK_Thai_oang: int +XK_Thai_honokhuk: int +XK_Thai_paiyannoi: int +XK_Thai_saraa: int +XK_Thai_maihanakat: int +XK_Thai_saraaa: int +XK_Thai_saraam: int +XK_Thai_sarai: int +XK_Thai_saraii: int +XK_Thai_saraue: int +XK_Thai_sarauee: int +XK_Thai_sarau: int +XK_Thai_sarauu: int +XK_Thai_phinthu: int +XK_Thai_maihanakat_maitho: int +XK_Thai_baht: int +XK_Thai_sarae: int +XK_Thai_saraae: int +XK_Thai_sarao: int +XK_Thai_saraaimaimuan: int +XK_Thai_saraaimaimalai: int +XK_Thai_lakkhangyao: int +XK_Thai_maiyamok: int +XK_Thai_maitaikhu: int +XK_Thai_maiek: int +XK_Thai_maitho: int +XK_Thai_maitri: int +XK_Thai_maichattawa: int +XK_Thai_thanthakhat: int +XK_Thai_nikhahit: int +XK_Thai_leksun: int +XK_Thai_leknung: int +XK_Thai_leksong: int +XK_Thai_leksam: int +XK_Thai_leksi: int +XK_Thai_lekha: int +XK_Thai_lekhok: int +XK_Thai_lekchet: int +XK_Thai_lekpaet: int +XK_Thai_lekkao: int diff --git a/stubs/python-xlib/Xlib/keysymdef/xf86.pyi b/stubs/python-xlib/Xlib/keysymdef/xf86.pyi new file mode 100644 index 000000000000..73b36fc72769 --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/xf86.pyi @@ -0,0 +1,184 @@ +XK_XF86_ModeLock: int +XK_XF86_MonBrightnessUp: int +XK_XF86_MonBrightnessDown: int +XK_XF86_KbdLightOnOff: int +XK_XF86_KbdBrightnessUp: int +XK_XF86_KbdBrightnessDown: int +XK_XF86_MonBrightnessCycle: int +XK_XF86_Standby: int +XK_XF86_AudioLowerVolume: int +XK_XF86_AudioMute: int +XK_XF86_AudioRaiseVolume: int +XK_XF86_AudioPlay: int +XK_XF86_AudioStop: int +XK_XF86_AudioPrev: int +XK_XF86_AudioNext: int +XK_XF86_HomePage: int +XK_XF86_Mail: int +XK_XF86_Start: int +XK_XF86_Search: int +XK_XF86_AudioRecord: int +XK_XF86_Calculator: int +XK_XF86_Memo: int +XK_XF86_ToDoList: int +XK_XF86_Calendar: int +XK_XF86_PowerDown: int +XK_XF86_ContrastAdjust: int +XK_XF86_RockerUp: int +XK_XF86_RockerDown: int +XK_XF86_RockerEnter: int +XK_XF86_Back: int +XK_XF86_Forward: int +XK_XF86_Stop: int +XK_XF86_Refresh: int +XK_XF86_PowerOff: int +XK_XF86_WakeUp: int +XK_XF86_Eject: int +XK_XF86_ScreenSaver: int +XK_XF86_WWW: int +XK_XF86_Sleep: int +XK_XF86_Favorites: int +XK_XF86_AudioPause: int +XK_XF86_AudioMedia: int +XK_XF86_MyComputer: int +XK_XF86_VendorHome: int +XK_XF86_LightBulb: int +XK_XF86_Shop: int +XK_XF86_History: int +XK_XF86_OpenURL: int +XK_XF86_AddFavorite: int +XK_XF86_HotLinks: int +XK_XF86_BrightnessAdjust: int +XK_XF86_Finance: int +XK_XF86_Community: int +XK_XF86_AudioRewind: int +XK_XF86_XF86BackForward: int +XK_XF86_Launch0: int +XK_XF86_Launch1: int +XK_XF86_Launch2: int +XK_XF86_Launch3: int +XK_XF86_Launch4: int +XK_XF86_Launch5: int +XK_XF86_Launch6: int +XK_XF86_Launch7: int +XK_XF86_Launch8: int +XK_XF86_Launch9: int +XK_XF86_LaunchA: int +XK_XF86_LaunchB: int +XK_XF86_LaunchC: int +XK_XF86_LaunchD: int +XK_XF86_LaunchE: int +XK_XF86_LaunchF: int +XK_XF86_ApplicationLeft: int +XK_XF86_ApplicationRight: int +XK_XF86_Book: int +XK_XF86_CD: int +XK_XF86_Calculater: int +XK_XF86_Clear: int +XK_XF86_Close: int +XK_XF86_Copy: int +XK_XF86_Cut: int +XK_XF86_Display: int +XK_XF86_DOS: int +XK_XF86_Documents: int +XK_XF86_Excel: int +XK_XF86_Explorer: int +XK_XF86_Game: int +XK_XF86_Go: int +XK_XF86_iTouch: int +XK_XF86_LogOff: int +XK_XF86_Market: int +XK_XF86_Meeting: int +XK_XF86_MenuKB: int +XK_XF86_MenuPB: int +XK_XF86_MySites: int +XK_XF86_New: int +XK_XF86_News: int +XK_XF86_OfficeHome: int +XK_XF86_Open: int +XK_XF86_Option: int +XK_XF86_Paste: int +XK_XF86_Phone: int +XK_XF86_Q: int +XK_XF86_Reply: int +XK_XF86_Reload: int +XK_XF86_RotateWindows: int +XK_XF86_RotationPB: int +XK_XF86_RotationKB: int +XK_XF86_Save: int +XK_XF86_ScrollUp: int +XK_XF86_ScrollDown: int +XK_XF86_ScrollClick: int +XK_XF86_Send: int +XK_XF86_Spell: int +XK_XF86_SplitScreen: int +XK_XF86_Support: int +XK_XF86_TaskPane: int +XK_XF86_Terminal: int +XK_XF86_Tools: int +XK_XF86_Travel: int +XK_XF86_UserPB: int +XK_XF86_User1KB: int +XK_XF86_User2KB: int +XK_XF86_Video: int +XK_XF86_WheelButton: int +XK_XF86_Word: int +XK_XF86_Xfer: int +XK_XF86_ZoomIn: int +XK_XF86_ZoomOut: int +XK_XF86_Away: int +XK_XF86_Messenger: int +XK_XF86_WebCam: int +XK_XF86_MailForward: int +XK_XF86_Pictures: int +XK_XF86_Music: int +XK_XF86_Battery: int +XK_XF86_Bluetooth: int +XK_XF86_WLAN: int +XK_XF86_UWB: int +XK_XF86_AudioForward: int +XK_XF86_AudioRepeat: int +XK_XF86_AudioRandomPlay: int +XK_XF86_Subtitle: int +XK_XF86_AudioCycleTrack: int +XK_XF86_CycleAngle: int +XK_XF86_FrameBack: int +XK_XF86_FrameForward: int +XK_XF86_Time: int +XK_XF86_Select: int +XK_XF86_View: int +XK_XF86_TopMenu: int +XK_XF86_Red: int +XK_XF86_Green: int +XK_XF86_Yellow: int +XK_XF86_Blue: int +XK_XF86_Suspend: int +XK_XF86_Hibernate: int +XK_XF86_TouchpadToggle: int +XK_XF86_TouchpadOn: int +XK_XF86_TouchpadOff: int +XK_XF86_AudioMicMute: int +XK_XF86_Keyboard: int +XK_XF86_WWAN: int +XK_XF86_RFKill: int +XK_XF86_AudioPreset: int +XK_XF86_RotationLockToggle: int +XK_XF86_FullScreen: int +XK_XF86_Switch_VT_1: int +XK_XF86_Switch_VT_2: int +XK_XF86_Switch_VT_3: int +XK_XF86_Switch_VT_4: int +XK_XF86_Switch_VT_5: int +XK_XF86_Switch_VT_6: int +XK_XF86_Switch_VT_7: int +XK_XF86_Switch_VT_8: int +XK_XF86_Switch_VT_9: int +XK_XF86_Switch_VT_10: int +XK_XF86_Switch_VT_11: int +XK_XF86_Switch_VT_12: int +XK_XF86_Ungrab: int +XK_XF86_ClearGrab: int +XK_XF86_Next_VMode: int +XK_XF86_Prev_VMode: int +XK_XF86_LogWindowTree: int +XK_XF86_LogGrabInfo: int diff --git a/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi b/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi new file mode 100644 index 000000000000..5fe41b94c79f --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi @@ -0,0 +1,30 @@ +XK_3270_Duplicate: int +XK_3270_FieldMark: int +XK_3270_Right2: int +XK_3270_Left2: int +XK_3270_BackTab: int +XK_3270_EraseEOF: int +XK_3270_EraseInput: int +XK_3270_Reset: int +XK_3270_Quit: int +XK_3270_PA1: int +XK_3270_PA2: int +XK_3270_PA3: int +XK_3270_Test: int +XK_3270_Attn: int +XK_3270_CursorBlink: int +XK_3270_AltCursor: int +XK_3270_KeyClick: int +XK_3270_Jump: int +XK_3270_Ident: int +XK_3270_Rule: int +XK_3270_Copy: int +XK_3270_Play: int +XK_3270_Setup: int +XK_3270_Record: int +XK_3270_ChangeScreen: int +XK_3270_DeleteWord: int +XK_3270_ExSelect: int +XK_3270_CursorSelect: int +XK_3270_PrintScreen: int +XK_3270_Enter: int diff --git a/stubs/python-xlib/Xlib/keysymdef/xkb.pyi b/stubs/python-xlib/Xlib/keysymdef/xkb.pyi new file mode 100644 index 000000000000..dbfa43c9dc9e --- /dev/null +++ b/stubs/python-xlib/Xlib/keysymdef/xkb.pyi @@ -0,0 +1,100 @@ +XK_ISO_Lock: int +XK_ISO_Level2_Latch: int +XK_ISO_Level3_Shift: int +XK_ISO_Level3_Latch: int +XK_ISO_Level3_Lock: int +XK_ISO_Group_Shift: int +XK_ISO_Group_Latch: int +XK_ISO_Group_Lock: int +XK_ISO_Next_Group: int +XK_ISO_Next_Group_Lock: int +XK_ISO_Prev_Group: int +XK_ISO_Prev_Group_Lock: int +XK_ISO_First_Group: int +XK_ISO_First_Group_Lock: int +XK_ISO_Last_Group: int +XK_ISO_Last_Group_Lock: int +XK_ISO_Left_Tab: int +XK_ISO_Move_Line_Up: int +XK_ISO_Move_Line_Down: int +XK_ISO_Partial_Line_Up: int +XK_ISO_Partial_Line_Down: int +XK_ISO_Partial_Space_Left: int +XK_ISO_Partial_Space_Right: int +XK_ISO_Set_Margin_Left: int +XK_ISO_Set_Margin_Right: int +XK_ISO_Release_Margin_Left: int +XK_ISO_Release_Margin_Right: int +XK_ISO_Release_Both_Margins: int +XK_ISO_Fast_Cursor_Left: int +XK_ISO_Fast_Cursor_Right: int +XK_ISO_Fast_Cursor_Up: int +XK_ISO_Fast_Cursor_Down: int +XK_ISO_Continuous_Underline: int +XK_ISO_Discontinuous_Underline: int +XK_ISO_Emphasize: int +XK_ISO_Center_Object: int +XK_ISO_Enter: int +XK_dead_grave: int +XK_dead_acute: int +XK_dead_circumflex: int +XK_dead_tilde: int +XK_dead_macron: int +XK_dead_breve: int +XK_dead_abovedot: int +XK_dead_diaeresis: int +XK_dead_abovering: int +XK_dead_doubleacute: int +XK_dead_caron: int +XK_dead_cedilla: int +XK_dead_ogonek: int +XK_dead_iota: int +XK_dead_voiced_sound: int +XK_dead_semivoiced_sound: int +XK_dead_belowdot: int +XK_First_Virtual_Screen: int +XK_Prev_Virtual_Screen: int +XK_Next_Virtual_Screen: int +XK_Last_Virtual_Screen: int +XK_Terminate_Server: int +XK_AccessX_Enable: int +XK_AccessX_Feedback_Enable: int +XK_RepeatKeys_Enable: int +XK_SlowKeys_Enable: int +XK_BounceKeys_Enable: int +XK_StickyKeys_Enable: int +XK_MouseKeys_Enable: int +XK_MouseKeys_Accel_Enable: int +XK_Overlay1_Enable: int +XK_Overlay2_Enable: int +XK_AudibleBell_Enable: int +XK_Pointer_Left: int +XK_Pointer_Right: int +XK_Pointer_Up: int +XK_Pointer_Down: int +XK_Pointer_UpLeft: int +XK_Pointer_UpRight: int +XK_Pointer_DownLeft: int +XK_Pointer_DownRight: int +XK_Pointer_Button_Dflt: int +XK_Pointer_Button1: int +XK_Pointer_Button2: int +XK_Pointer_Button3: int +XK_Pointer_Button4: int +XK_Pointer_Button5: int +XK_Pointer_DblClick_Dflt: int +XK_Pointer_DblClick1: int +XK_Pointer_DblClick2: int +XK_Pointer_DblClick3: int +XK_Pointer_DblClick4: int +XK_Pointer_DblClick5: int +XK_Pointer_Drag_Dflt: int +XK_Pointer_Drag1: int +XK_Pointer_Drag2: int +XK_Pointer_Drag3: int +XK_Pointer_Drag4: int +XK_Pointer_Drag5: int +XK_Pointer_EnableKeys: int +XK_Pointer_Accelerate: int +XK_Pointer_DfltBtnNext: int +XK_Pointer_DfltBtnPrev: int diff --git a/stubs/python-xlib/Xlib/protocol/__init__.pyi b/stubs/python-xlib/Xlib/protocol/__init__.pyi new file mode 100644 index 000000000000..1252a6dc5030 --- /dev/null +++ b/stubs/python-xlib/Xlib/protocol/__init__.pyi @@ -0,0 +1,3 @@ +from Xlib.protocol import display as display, event as event, request as request, rq as rq, structs as structs + +__all__ = ["display", "event", "request", "rq", "structs"] diff --git a/stubs/python-xlib/Xlib/protocol/display.pyi b/stubs/python-xlib/Xlib/protocol/display.pyi new file mode 100644 index 000000000000..a46b026f6445 --- /dev/null +++ b/stubs/python-xlib/Xlib/protocol/display.pyi @@ -0,0 +1,120 @@ +from _typeshed import _BufferWithLen +from socket import socket +from typing import TypeVar, overload +from typing_extensions import Literal + +from Xlib import error +from Xlib._typing import ErrorHandler +from Xlib.display import _ResourceBaseClass, _ResourceBaseClassesType +from Xlib.protocol import rq +from Xlib.support import lock +from Xlib.xobject import colormap, cursor, drawable, fontable, resource + +_T = TypeVar("_T") + +class bytesview: + view: memoryview + @overload + def __init__(self, data: bytes | bytesview, offset: int, size: int) -> None: ... + @overload + def __init__(self, data: _BufferWithLen, offset: int = ..., size: int | None = ...) -> None: ... + @overload + def __getitem__(self, key: slice) -> bytes: ... + @overload + def __getitem__(self, key: int) -> int: ... + def __len__(self) -> int: ... + +class Display: + extension_major_opcodes: dict[str, int] + error_classes: dict[int, type[error.XError]] + event_classes: dict[int, type[rq.Event] | dict[int, type[rq.Event]]] + resource_classes: _ResourceBaseClassesType | None + display_name: str + default_screen: int + socket: socket + socket_error_lock: lock._DummyLock + socket_error: Exception | None + event_queue_read_lock: lock._DummyLock + event_queue_write_lock: lock._DummyLock + event_queue: list[rq.Event] + request_queue_lock: lock._DummyLock + request_serial: int + request_queue: list[tuple[rq.Request | rq.ReplyRequest | ConnectionSetupRequest, int]] + send_recv_lock: lock._DummyLock + send_active: int + recv_active: int + event_waiting: int + event_wait_lock: lock._DummyLock + request_waiting: int + request_wait_lock: lock._DummyLock + recv_buffer_size: int + sent_requests: list[rq.Request | rq.ReplyRequest | ConnectionSetupRequest] + recv_packet_len: int + data_send: bytes + data_recv: bytes + data_sent_bytes: int + resource_id_lock: lock._DummyLock + resource_ids: dict[int, None] + last_resource_id: int + error_handler: ErrorHandler[object] | None + big_endian: bool + info: ConnectionSetupRequest + def __init__(self, display: str | None = ...) -> None: ... + def get_display_name(self) -> str: ... + def get_default_screen(self) -> int: ... + def fileno(self) -> int: ... + def next_event(self) -> rq.Event: ... + def pending_events(self) -> int: ... + def flush(self) -> None: ... + def close(self) -> None: ... + def set_error_handler(self, handler: ErrorHandler[object] | None) -> None: ... + def allocate_resource_id(self) -> int: ... + def free_resource_id(self, rid: int) -> None: ... + @overload + def get_resource_class(self, class_name: Literal["resource"], default: object = ...) -> type[resource.Resource]: ... + @overload + def get_resource_class(self, class_name: Literal["drawable"], default: object = ...) -> type[drawable.Drawable]: ... + @overload + def get_resource_class(self, class_name: Literal["window"], default: object = ...) -> type[drawable.Window]: ... + @overload + def get_resource_class(self, class_name: Literal["pixmap"], default: object = ...) -> type[drawable.Pixmap]: ... + @overload + def get_resource_class(self, class_name: Literal["fontable"], default: object = ...) -> type[fontable.Fontable]: ... + @overload + def get_resource_class(self, class_name: Literal["font"], default: object = ...) -> type[fontable.Font]: ... + @overload + def get_resource_class(self, class_name: Literal["gc"], default: object = ...) -> type[fontable.GC]: ... + @overload + def get_resource_class(self, class_name: Literal["colormap"], default: object = ...) -> type[colormap.Colormap]: ... + @overload + def get_resource_class(self, class_name: Literal["cursor"], default: object) -> type[cursor.Cursor]: ... + @overload + def get_resource_class(self, class_name: str, default: _T) -> type[_ResourceBaseClass] | _T: ... + @overload + def get_resource_class(self, class_name: str, default: None = ...) -> type[_ResourceBaseClass] | None: ... + def set_extension_major(self, extname: str, major: int) -> None: ... + def get_extension_major(self, extname: str) -> int: ... + def add_extension_event(self, code: int, evt: type[rq.Event], subcode: int | None = ...) -> None: ... + def add_extension_error(self, code: int, err: type[error.XError]) -> None: ... + def check_for_error(self) -> None: ... + def send_request(self, request: rq.Request | rq.ReplyRequest | ConnectionSetupRequest, wait_for_response: bool) -> None: ... + def close_internal(self, whom: object) -> None: ... + def send_and_recv( + self, flush: bool = ..., event: bool = ..., request: int | None = ..., recv: bool = ... # noqa: F811 + ) -> None: ... + def parse_response(self, request: int) -> bool: ... + def parse_error_response(self, request: int) -> bool: ... + def default_error_handler(self, err: object) -> None: ... + def parse_request_response(self, request: int) -> bool: ... + def parse_event_response(self, etype: int) -> None: ... + def get_waiting_request(self, sno: int) -> rq.ReplyRequest | ConnectionSetupRequest | None: ... + def get_waiting_replyrequest(self) -> rq.ReplyRequest | ConnectionSetupRequest: ... + def parse_connection_setup(self) -> bool: ... + +PixmapFormat: rq.Struct +VisualType: rq.Struct +Depth: rq.Struct +Screen: rq.Struct + +class ConnectionSetupRequest(rq.GetAttrData): + def __init__(self, display: Display, *args: object, **keys: object) -> None: ... diff --git a/stubs/python-xlib/Xlib/protocol/event.pyi b/stubs/python-xlib/Xlib/protocol/event.pyi new file mode 100644 index 000000000000..cfb825449fd9 --- /dev/null +++ b/stubs/python-xlib/Xlib/protocol/event.pyi @@ -0,0 +1,80 @@ +from typing_extensions import TypeAlias + +from Xlib.protocol import rq + +class AnyEvent(rq.Event): ... +class KeyButtonPointer(rq.Event): ... +class KeyPress(KeyButtonPointer): ... +class KeyRelease(KeyButtonPointer): ... +class ButtonPress(KeyButtonPointer): ... +class ButtonRelease(KeyButtonPointer): ... +class MotionNotify(KeyButtonPointer): ... +class EnterLeave(rq.Event): ... +class EnterNotify(EnterLeave): ... +class LeaveNotify(EnterLeave): ... +class Focus(rq.Event): ... +class FocusIn(Focus): ... +class FocusOut(Focus): ... +class Expose(rq.Event): ... +class GraphicsExpose(rq.Event): ... +class NoExpose(rq.Event): ... +class VisibilityNotify(rq.Event): ... +class CreateNotify(rq.Event): ... +class DestroyNotify(rq.Event): ... +class UnmapNotify(rq.Event): ... +class MapNotify(rq.Event): ... +class MapRequest(rq.Event): ... +class ReparentNotify(rq.Event): ... +class ConfigureNotify(rq.Event): ... +class ConfigureRequest(rq.Event): ... +class GravityNotify(rq.Event): ... +class ResizeRequest(rq.Event): ... +class Circulate(rq.Event): ... +class CirculateNotify(Circulate): ... +class CirculateRequest(Circulate): ... +class PropertyNotify(rq.Event): ... +class SelectionClear(rq.Event): ... +class SelectionRequest(rq.Event): ... +class SelectionNotify(rq.Event): ... +class ColormapNotify(rq.Event): ... +class MappingNotify(rq.Event): ... +class ClientMessage(rq.Event): ... +class KeymapNotify(rq.Event): ... + +_EventClass: TypeAlias = dict[ + int, + type[KeyPress] + | type[KeyRelease] + | type[ButtonPress] + | type[ButtonRelease] + | type[MotionNotify] + | type[EnterNotify] + | type[LeaveNotify] + | type[FocusIn] + | type[FocusOut] + | type[KeymapNotify] + | type[Expose] + | type[GraphicsExpose] + | type[NoExpose] + | type[VisibilityNotify] + | type[CreateNotify] + | type[DestroyNotify] + | type[UnmapNotify] + | type[MapNotify] + | type[MapRequest] + | type[ReparentNotify] + | type[ConfigureNotify] + | type[ConfigureRequest] + | type[GravityNotify] + | type[ResizeRequest] + | type[CirculateNotify] + | type[CirculateRequest] + | type[PropertyNotify] + | type[SelectionClear] + | type[SelectionRequest] + | type[SelectionNotify] + | type[ColormapNotify] + | type[ClientMessage] + | type[MappingNotify], +] +event_class: _EventClass diff --git a/stubs/python-xlib/Xlib/protocol/request.pyi b/stubs/python-xlib/Xlib/protocol/request.pyi new file mode 100644 index 000000000000..a336f5c90f91 --- /dev/null +++ b/stubs/python-xlib/Xlib/protocol/request.pyi @@ -0,0 +1,133 @@ +from typing import NoReturn + +from Xlib import display +from Xlib.protocol import rq + +class CreateWindow(rq.Request): ... +class ChangeWindowAttributes(rq.Request): ... +class GetWindowAttributes(rq.ReplyRequest): ... +class DestroyWindow(rq.Request): ... +class DestroySubWindows(rq.Request): ... +class ChangeSaveSet(rq.Request): ... +class ReparentWindow(rq.Request): ... +class MapWindow(rq.Request): ... +class MapSubwindows(rq.Request): ... +class UnmapWindow(rq.Request): ... +class UnmapSubwindows(rq.Request): ... +class ConfigureWindow(rq.Request): ... +class CirculateWindow(rq.Request): ... +class GetGeometry(rq.ReplyRequest): ... +class QueryTree(rq.ReplyRequest): ... +class InternAtom(rq.ReplyRequest): ... +class GetAtomName(rq.ReplyRequest): ... +class ChangeProperty(rq.Request): ... +class DeleteProperty(rq.Request): ... +class GetProperty(rq.ReplyRequest): ... +class ListProperties(rq.ReplyRequest): ... +class SetSelectionOwner(rq.Request): ... +class GetSelectionOwner(rq.ReplyRequest): ... +class ConvertSelection(rq.Request): ... +class SendEvent(rq.Request): ... +class GrabPointer(rq.ReplyRequest): ... +class UngrabPointer(rq.Request): ... +class GrabButton(rq.Request): ... +class UngrabButton(rq.Request): ... +class ChangeActivePointerGrab(rq.Request): ... +class GrabKeyboard(rq.ReplyRequest): ... +class UngrabKeyboard(rq.Request): ... +class GrabKey(rq.Request): ... +class UngrabKey(rq.Request): ... +class AllowEvents(rq.Request): ... +class GrabServer(rq.Request): ... +class UngrabServer(rq.Request): ... +class QueryPointer(rq.ReplyRequest): ... +class GetMotionEvents(rq.ReplyRequest): ... +class TranslateCoords(rq.ReplyRequest): ... +class WarpPointer(rq.Request): ... +class SetInputFocus(rq.Request): ... +class GetInputFocus(rq.ReplyRequest): ... +class QueryKeymap(rq.ReplyRequest): ... +class OpenFont(rq.Request): ... +class CloseFont(rq.Request): ... +class QueryFont(rq.ReplyRequest): ... +class QueryTextExtents(rq.ReplyRequest): ... +class ListFonts(rq.ReplyRequest): ... + +class ListFontsWithInfo(rq.ReplyRequest): + def __init__(self, display: display.Display, defer: bool = ..., *args: object, **keys: object) -> None: ... + def __getattr__(self, attr: object) -> NoReturn: ... + def __getitem__(self, item: str) -> object: ... + def __len__(self) -> int: ... + +class SetFontPath(rq.Request): ... +class GetFontPath(rq.ReplyRequest): ... +class CreatePixmap(rq.Request): ... +class FreePixmap(rq.Request): ... +class CreateGC(rq.Request): ... +class ChangeGC(rq.Request): ... +class CopyGC(rq.Request): ... +class SetDashes(rq.Request): ... +class SetClipRectangles(rq.Request): ... +class FreeGC(rq.Request): ... +class ClearArea(rq.Request): ... +class CopyArea(rq.Request): ... +class CopyPlane(rq.Request): ... +class PolyPoint(rq.Request): ... +class PolyLine(rq.Request): ... +class PolySegment(rq.Request): ... +class PolyRectangle(rq.Request): ... +class PolyArc(rq.Request): ... +class FillPoly(rq.Request): ... +class PolyFillRectangle(rq.Request): ... +class PolyFillArc(rq.Request): ... +class PutImage(rq.Request): ... +class GetImage(rq.ReplyRequest): ... +class PolyText8(rq.Request): ... +class PolyText16(rq.Request): ... +class ImageText8(rq.Request): ... +class ImageText16(rq.Request): ... +class CreateColormap(rq.Request): ... +class FreeColormap(rq.Request): ... +class CopyColormapAndFree(rq.Request): ... +class InstallColormap(rq.Request): ... +class UninstallColormap(rq.Request): ... +class ListInstalledColormaps(rq.ReplyRequest): ... +class AllocColor(rq.ReplyRequest): ... +class AllocNamedColor(rq.ReplyRequest): ... +class AllocColorCells(rq.ReplyRequest): ... +class AllocColorPlanes(rq.ReplyRequest): ... +class FreeColors(rq.Request): ... +class StoreColors(rq.Request): ... +class StoreNamedColor(rq.Request): ... +class QueryColors(rq.ReplyRequest): ... +class LookupColor(rq.ReplyRequest): ... +class CreateCursor(rq.Request): ... +class CreateGlyphCursor(rq.Request): ... +class FreeCursor(rq.Request): ... +class RecolorCursor(rq.Request): ... +class QueryBestSize(rq.ReplyRequest): ... +class QueryExtension(rq.ReplyRequest): ... +class ListExtensions(rq.ReplyRequest): ... +class ChangeKeyboardMapping(rq.Request): ... +class GetKeyboardMapping(rq.ReplyRequest): ... +class ChangeKeyboardControl(rq.Request): ... +class GetKeyboardControl(rq.ReplyRequest): ... +class Bell(rq.Request): ... +class ChangePointerControl(rq.Request): ... +class GetPointerControl(rq.ReplyRequest): ... +class SetScreenSaver(rq.Request): ... +class GetScreenSaver(rq.ReplyRequest): ... +class ChangeHosts(rq.Request): ... +class ListHosts(rq.ReplyRequest): ... +class SetAccessControl(rq.Request): ... +class SetCloseDownMode(rq.Request): ... +class KillClient(rq.Request): ... +class RotateProperties(rq.Request): ... +class ForceScreenSaver(rq.Request): ... +class SetPointerMapping(rq.ReplyRequest): ... +class GetPointerMapping(rq.ReplyRequest): ... +class SetModifierMapping(rq.ReplyRequest): ... +class GetModifierMapping(rq.ReplyRequest): ... +class NoOperation(rq.Request): ... + +major_codes: dict[int, type[rq.Request]] diff --git a/stubs/python-xlib/Xlib/protocol/rq.pyi b/stubs/python-xlib/Xlib/protocol/rq.pyi new file mode 100644 index 000000000000..8b5b8ac8caab --- /dev/null +++ b/stubs/python-xlib/Xlib/protocol/rq.pyi @@ -0,0 +1,402 @@ +from _typeshed import ReadableBuffer, SliceableBuffer, SupportsTrunc +from array import array + +# Avoid name collision with List.type +from builtins import type as Type +from collections.abc import Callable, Iterable, Sequence +from typing import Any, SupportsInt, TypeVar, overload, type_check_only +from typing_extensions import Literal, LiteralString, SupportsIndex, TypeAlias + +from Xlib._typing import ErrorHandler, Unused +from Xlib.display import _ResourceBaseClass +from Xlib.error import XError +from Xlib.ext.xinput import ClassInfoClass +from Xlib.protocol import display + +_T = TypeVar("_T") +_IntNew: TypeAlias = str | ReadableBuffer | SupportsInt | SupportsIndex | SupportsTrunc +_ModifierMappingList8Elements: TypeAlias = Sequence[Sequence[int]] + +# Workaround for pytype crash. Should be Xlib.display._BaseDisplay +@type_check_only +class _BaseDisplay(display.Display): + def __init__(self, display: str | None = ...) -> None: ... + def get_atom(self, atomname: str, only_if_exists: bool = ...) -> int: ... + +def decode_string(bs: bytes | bytearray) -> str: ... +def encode_array(a: array[Any] | memoryview) -> str: ... + +class BadDataError(Exception): ... + +signed_codes: dict[int, str] +unsigned_codes: dict[int, str] +array_unsigned_codes: dict[int, LiteralString] +struct_to_array_codes: dict[str, LiteralString] +size: int + +class Field: + name: str + default: int | None + pack_value: Callable[[Any], tuple[Any, int | None, int | None]] | None + structcode: str | None + structvalues: int + check_value: Callable[[Any], Any] | None + parse_value: Callable[[Any, Any], Any] | None + keyword_args: int + + def parse_binary_value( + self, data: SliceableBuffer, display: display.Display | None, length: int | None, format: int + ) -> tuple[Any, SliceableBuffer]: ... + +class Pad(Field): + size: int + value: bytes + structcode: str + def __init__(self, size: int) -> None: ... + +class ConstantField(Field): + value: int + def __init__(self, value: int) -> None: ... + +class Opcode(ConstantField): + structcode: str + +class ReplyCode(ConstantField): + structcode: str + value: int + def __init__(self) -> None: ... + +class LengthField(Field): + structcode: str + other_fields: list[str] | tuple[str, ...] | None + def calc_length(self, length: int) -> int: ... + +class TotalLengthField(LengthField): ... +class RequestLength(TotalLengthField): ... +class ReplyLength(TotalLengthField): ... + +class LengthOf(LengthField): + other_fields: list[str] | tuple[str, ...] | None + def __init__(self, name: str | list[str] | tuple[str, ...], size: int) -> None: ... + +class OddLength(LengthField): + def __init__(self, name: str) -> None: ... + def parse_value(self, value: int, display: Unused) -> Literal["even", "odd"]: ... # type: ignore[override] + +class FormatField(Field): + structcode: str + def __init__(self, name: str, size: int) -> None: ... + +Format = FormatField + +class ValueField(Field): + def __init__(self, name: str, default: int | None = ...) -> None: ... + +class Int8(ValueField): + structcode: str + +class Int16(ValueField): + structcode: str + +class Int32(ValueField): + structcode: str + +class Card8(ValueField): + structcode: str + +class Card16(ValueField): + structcode: str + +class Card32(ValueField): + structcode: str + +class Resource(Card32): + cast_function: str + class_name: str + codes: tuple[int, ...] + def __init__(self, name: str, codes: tuple[int, ...] = ..., default: int | None = ...) -> None: ... + @overload # type: ignore[override] + def check_value(self, value: Callable[[], _T]) -> _T: ... + @overload + def check_value(self, value: _T) -> _T: ... + def parse_value(self, value: int, display: _BaseDisplay) -> int: ... # type: ignore[override] # display: None will error. See: https://github.com/python-xlib/python-xlib/pull/248 + +class Window(Resource): + cast_function: str + class_name: str + +class Pixmap(Resource): + cast_function: str + class_name: str + +class Drawable(Resource): + cast_function: str + class_name: str + +class Fontable(Resource): + cast_function: str + class_name: str + +class Font(Resource): + cast_function: str + class_name: str + +class GC(Resource): + cast_function: str + class_name: str + +class Colormap(Resource): + cast_function: str + class_name: str + +class Cursor(Resource): + cast_function: str + class_name: str + +class Bool(ValueField): + structcode: str + def check_value(self, value: object) -> bool: ... # type: ignore[override] + +class Set(ValueField): + structcode: str + values: Sequence[object] + def __init__(self, name: str, size: int, values: Sequence[object], default: int | None = ...) -> None: ... + def check_value(self, val: _T) -> _T: ... # type: ignore[override] + +class Gravity(Set): + def __init__(self, name: str) -> None: ... + +class FixedBinary(ValueField): + structcode: str + def __init__(self, name: str, size: int) -> None: ... + +class Binary(ValueField): + structcode: None + pad: int + def __init__(self, name: str, pad: int = ...) -> None: ... + def pack_value( # type: ignore[override] # Override Callable + self, val: bytes | bytearray + ) -> tuple[bytes | bytearray, int, None]: ... + @overload # type: ignore[override] # Overload for specific values + def parse_binary_value(self, data: _T, display: Unused, length: None, format: Unused) -> tuple[_T, Literal[b""]]: ... + @overload + def parse_binary_value( + self, data: SliceableBuffer, display: Unused, length: int, format: Unused + ) -> tuple[SliceableBuffer, SliceableBuffer]: ... + +class String8(ValueField): + structcode: None + pad: int + def __init__(self, name: str, pad: int = ...) -> None: ... + def pack_value(self, val: bytes | str) -> tuple[bytes, int, None]: ... # type: ignore[override] # Override Callable + @overload # type: ignore[override] # Overload for specific values + def parse_binary_value( + self, data: bytes | bytearray, display: Unused, length: None, format: Unused + ) -> tuple[str, Literal[b""]]: ... + @overload + def parse_binary_value( + self, data: SliceableBuffer, display: Unused, length: int, format: Unused + ) -> tuple[str, SliceableBuffer]: ... + +class String16(ValueField): + structcode: None + pad: int + def __init__(self, name: str, pad: int = ...) -> None: ... + def pack_value(self, val: Sequence[object]) -> tuple[bytes, int, None]: ... # type: ignore[override] # Override Callable + def parse_binary_value( # type: ignore[override] # length: None will error. See: https://github.com/python-xlib/python-xlib/pull/248 + self, data: SliceableBuffer, display: Unused, length: int | Literal["odd", "even"], format: Unused + ) -> tuple[tuple[Any, ...], SliceableBuffer]: ... + +class List(ValueField): + structcode: None + type: Struct | ScalarObj | ResourceObj | ClassInfoClass | type[ValueField] + pad: int + def __init__( + self, name: str, type: Struct | ScalarObj | ResourceObj | ClassInfoClass | Type[ValueField], pad: int = ... + ) -> None: ... + def parse_binary_value( + self, data: SliceableBuffer, display: display.Display | None, length: SupportsIndex | None, format: Unused + ) -> tuple[list[DictWrapper | None], SliceableBuffer]: ... + def pack_value( # type: ignore[override] # Override Callable + self, val: Sequence[object] | dict[str, Any] + ) -> tuple[bytes, int, None]: ... + +class FixedList(List): + size: int + def __init__(self, name: str, size: int, type: Struct | ScalarObj, pad: int = ...) -> None: ... + def parse_binary_value( + self, data: SliceableBuffer, display: display.Display | None, length: Unused, format: Unused + ) -> tuple[list[DictWrapper | None], SliceableBuffer]: ... + +class Object(ValueField): + type: Struct + structcode: str | None + def __init__(self, name: str, type: Struct, default: int | None = ...) -> None: ... + def parse_binary_value( + self, data: SliceableBuffer, display: display.Display | None, length: Unused, format: Unused + ) -> tuple[DictWrapper, SliceableBuffer]: ... + def parse_value(self, val: SliceableBuffer, display: display.Display | None) -> DictWrapper: ... # type: ignore[override] + def pack_value( # type: ignore[override] # Override Callable + self, val: tuple[object, ...] | dict[str, Any] | DictWrapper + ) -> bytes: ... + def check_value(self, val: tuple[_T, ...] | dict[str, _T] | DictWrapper) -> list[_T]: ... # type: ignore[override] + +class PropertyData(ValueField): + structcode: None + def parse_binary_value( + self, data: SliceableBuffer, display: Unused, length: _IntNew | None, format: int + ) -> tuple[tuple[int, SliceableBuffer] | None, SliceableBuffer]: ... + def pack_value( # type: ignore[override] # Override Callable + self, value: tuple[int, Sequence[float] | Sequence[str]] + ) -> tuple[bytes, int, Literal[8, 16, 32]]: ... + +class FixedPropertyData(PropertyData): + size: int + def __init__(self, name: str, size: int) -> None: ... + +class ValueList(Field): + structcode: None + keyword_args: int + default: str # type: ignore[assignment] # Actually different from base class + maskcode: bytes + maskcodelen: int + fields: list[tuple[Field, int]] + def __init__(self, name: str, mask: int, pad: int, *fields: Field) -> None: ... + def pack_value( # type: ignore[override] # Override Callable + self, arg: str | dict[str, Any], keys: dict[str, Any] + ) -> tuple[bytes, None, None]: ... + def parse_binary_value( + self, data: SliceableBuffer, display: display.Display | None, length: Unused, format: Unused + ) -> tuple[DictWrapper, SliceableBuffer]: ... + +class KeyboardMapping(ValueField): + structcode: None + def parse_binary_value( + self, data: SliceableBuffer, display: Unused, length: int | None, format: int + ) -> tuple[list[int], SliceableBuffer]: ... + def pack_value( # type: ignore[override] # Override Callable + self, value: Sequence[Sequence[object]] + ) -> tuple[bytes, int, int]: ... + +class ModifierMapping(ValueField): + structcode: None + def parse_binary_value( + self, data: SliceableBuffer, display: Unused, length: Unused, format: int + ) -> tuple[list[array[int]], SliceableBuffer]: ... + def pack_value( # type: ignore[override] # Override Callable + self, value: _ModifierMappingList8Elements + ) -> tuple[bytes, int, int]: ... + +class EventField(ValueField): + structcode: None + def pack_value(self, value: Event) -> tuple[SliceableBuffer, None, None]: ... # type: ignore[override] # Override Callable + def parse_binary_value( # type: ignore[override] + self, data: SliceableBuffer, display: display.Display, length: Unused, format: Unused + ) -> tuple[Event, SliceableBuffer]: ... + +class ScalarObj: + structcode: str + structvalues: int + parse_value: None + check_value: None + def __init__(self, code: str) -> None: ... + +Card8Obj: ScalarObj +Card16Obj: ScalarObj +Card32Obj: ScalarObj + +class ResourceObj: + structcode: str + structvalues: int + class_name: str + check_value: None + def __init__(self, class_name: str) -> None: ... + def parse_value(self, value: int, display: _BaseDisplay) -> int | _ResourceBaseClass: ... + +WindowObj: ResourceObj +ColormapObj: ResourceObj + +class StrClass: + structcode: None + def pack_value(self, val: str) -> bytes: ... + def parse_binary(self, data: bytes | bytearray, display: Unused) -> tuple[str, bytes | bytearray]: ... + +Str: StrClass + +class Struct: + name: str + check_value: Callable[[Any], Any] | None + keyword_args: bool + fields: tuple[Field] + static_codes: str + static_values: int + static_fields: list[Field] + static_size: int + var_fields: list[Field] + structcode: str | None + structvalues: int + def __init__(self, *fields: Field) -> None: ... + def to_binary(self, *varargs: object, **keys: object) -> bytes: ... + def pack_value(self, value: tuple[object, ...] | dict[str, Any] | DictWrapper) -> bytes: ... + @overload + def parse_value(self, val: SliceableBuffer, display: display.Display | None, rawdict: Literal[True]) -> dict[str, Any]: ... + @overload + def parse_value( + self, val: SliceableBuffer, display: display.Display | None, rawdict: Literal[False] = ... + ) -> DictWrapper: ... + @overload + def parse_binary( + self, data: SliceableBuffer, display: display.Display | None, rawdict: Literal[True] + ) -> tuple[dict[str, Any], SliceableBuffer]: ... + @overload + def parse_binary( + self, data: SliceableBuffer, display: display.Display | None, rawdict: Literal[False] = ... + ) -> tuple[DictWrapper, SliceableBuffer]: ... + # Structs generate their attributes + # TODO: Create a specific type-only class for all instances of `Struct` + @type_check_only + def __getattr__(self, __name: str) -> Any: ... + +class TextElements8(ValueField): + string_textitem: Struct + def pack_value( # type: ignore[override] # Override Callable + self, value: Iterable[Field | str | bytes | tuple[Sequence[object], ...] | dict[str, Sequence[object]] | DictWrapper] + ) -> tuple[bytes, None, None]: ... + def parse_binary_value( # type: ignore[override] # See: https://github.com/python-xlib/python-xlib/pull/249 + self, data: SliceableBuffer, display: display.Display | None, length: Unused, format: Unused + ) -> tuple[list[DictWrapper], Literal[""]]: ... + +class TextElements16(TextElements8): + string_textitem: Struct + +class GetAttrData: + # GetAttrData classes get their attributes dynamically + # TODO: Complete all classes inheriting from GetAttrData + def __getattr__(self, attr: str) -> Any: ... + @type_check_only + def __setattr__(self, __name: str, __value: Any) -> None: ... + +class DictWrapper(GetAttrData): + def __init__(self, dict: dict[str, Any]) -> None: ... + def __getitem__(self, key: str) -> object: ... + def __setitem__(self, key: str, value: object) -> None: ... + def __delitem__(self, key: str) -> None: ... + def __setattr__(self, key: str, value: object) -> None: ... + +class Request: + def __init__( + self, display: _BaseDisplay, onerror: ErrorHandler[object] | None = ..., *args: object, **keys: object + ) -> None: ... + +class ReplyRequest(GetAttrData): + def __init__(self, display: display.Display, defer: int = ..., *args: object, **keys: object) -> None: ... + def reply(self) -> None: ... + +class Event(GetAttrData): + def __init__( + self, binarydata: SliceableBuffer | None = ..., display: display.Display | None = ..., **keys: object + ) -> None: ... + +def call_error_handler( + handler: Callable[[XError, Request | None], _T], error: XError, request: Request | None +) -> _T | Literal[0]: ... diff --git a/stubs/python-xlib/Xlib/protocol/structs.pyi b/stubs/python-xlib/Xlib/protocol/structs.pyi new file mode 100644 index 000000000000..60e004c478ac --- /dev/null +++ b/stubs/python-xlib/Xlib/protocol/structs.pyi @@ -0,0 +1,26 @@ +from collections.abc import Iterable, Sequence +from typing_extensions import TypeAlias + +from Xlib.protocol import rq + +# Aliases used in other modules +_RGB3IntIterable: TypeAlias = Iterable[int] # noqa: Y047 +_Rectangle4IntSequence: TypeAlias = Sequence[int] # noqa: Y047 +_Segment4IntSequence: TypeAlias = Sequence[int] # noqa: Y047 +_Arc6IntSequence: TypeAlias = Sequence[int] # noqa: Y047 + +# TODO: Complete all classes using WindowValues and GCValues +# Currently *object is used to represent the ValueList instead of the possible attribute types +def WindowValues(arg: str) -> rq.ValueList: ... +def GCValues(arg: str) -> rq.ValueList: ... + +TimeCoord: rq.Struct +Host: rq.Struct +CharInfo: rq.Struct +FontProp: rq.Struct +ColorItem: rq.Struct +RGB: rq.Struct +Point: rq.Struct +Segment: rq.Struct +Rectangle: rq.Struct +Arc: rq.Struct diff --git a/stubs/python-xlib/Xlib/rdb.pyi b/stubs/python-xlib/Xlib/rdb.pyi new file mode 100644 index 000000000000..4fb7a666290a --- /dev/null +++ b/stubs/python-xlib/Xlib/rdb.pyi @@ -0,0 +1,97 @@ +from _typeshed import SupportsDunderGT, SupportsDunderLT, SupportsRead +from collections.abc import Iterable, Mapping, Sequence +from re import Pattern +from typing import Any, Protocol, TypeVar, overload +from typing_extensions import TypeAlias + +from Xlib.display import Display +from Xlib.support.lock import _DummyLock + +_T = TypeVar("_T") +_T_contra = TypeVar("_T_contra", contravariant=True) + +_DB: TypeAlias = dict[str, tuple[_DB, ...]] +# A recursive type can be a bit annoying due to dict invariance, +# so this is a slightly less precise version of the _DB alias for parameter annotations +_DB_Param: TypeAlias = dict[str, Any] + +class _SupportsComparisons(SupportsDunderLT[_T_contra], SupportsDunderGT[_T_contra], Protocol[_T_contra]): ... + +comment_re: Pattern[str] +resource_spec_re: Pattern[str] +value_escape_re: Pattern[str] +resource_parts_re: Pattern[str] +NAME_MATCH: int +CLASS_MATCH: int +WILD_MATCH: int +MATCH_SKIP: int + +class OptionError(Exception): ... + +class ResourceDB: + db: _DB + lock: _DummyLock + def __init__( + self, + file: bytes | SupportsRead[str] | None = ..., + string: str | None = ..., + resources: Iterable[tuple[str, object]] | None = ..., + ) -> None: ... + def insert_file(self, file: bytes | SupportsRead[str]) -> None: ... + def insert_string(self, data: str) -> None: ... + def insert_resources(self, resources: Iterable[tuple[str, object]]) -> None: ... + def insert(self, resource: str, value: object) -> None: ... + def __getitem__(self, keys_tuple: tuple[str, str]) -> Any: ... + @overload + def get(self, res: str, cls: str, default: None = ...) -> Any: ... + @overload + def get(self, res: str, cls: str, default: _T) -> _T: ... + def update(self, db: ResourceDB) -> None: ... + def output(self) -> str: ... + def getopt(self, name: str, argv: Sequence[str], opts: Mapping[str, Option]) -> Sequence[str]: ... + +def bin_insert(list: list[_SupportsComparisons[_T]], element: _SupportsComparisons[_T]) -> None: ... +def update_db(dest: _DB_Param, src: _DB_Param) -> None: ... +def copy_group(group: tuple[_DB_Param, ...]) -> tuple[_DB, ...]: ... +def copy_db(db: _DB_Param) -> _DB: ... +def output_db(prefix: str, db: _DB_Param) -> str: ... +def output_escape(value: object) -> str: ... + +class Option: + def parse(self, name: str, db: ResourceDB, args: Sequence[_T]) -> Sequence[_T]: ... + +class NoArg(Option): + specifier: str + value: object + def __init__(self, specifier: str, value: object) -> None: ... + +class IsArg(Option): + specifier: str + def __init__(self, specifier: str) -> None: ... + +class SepArg(Option): + specifier: str + def __init__(self, specifier: str) -> None: ... + +class ResArgClass(Option): + def parse(self, name: str, db: ResourceDB, args: Sequence[str]) -> Sequence[str]: ... # type: ignore[override] + +ResArg: ResArgClass + +class SkipArgClass(Option): ... + +SkipArg: SkipArgClass + +class SkipLineClass(Option): ... + +SkipLine: SkipLineClass + +class SkipNArgs(Option): + count: int + def __init__(self, count: int) -> None: ... + +def get_display_opts( + options: Mapping[str, Option], argv: Sequence[str] = ... +) -> tuple[Display, str, ResourceDB, Sequence[str]]: ... + +stdopts: dict[str, SepArg | NoArg | ResArgClass] diff --git a/stubs/python-xlib/Xlib/support/__init__.pyi b/stubs/python-xlib/Xlib/support/__init__.pyi new file mode 100644 index 000000000000..63adc8192d7e --- /dev/null +++ b/stubs/python-xlib/Xlib/support/__init__.pyi @@ -0,0 +1,3 @@ +from Xlib.support import connect as connect, lock as lock + +__all__ = ["lock", "connect"] diff --git a/stubs/python-xlib/Xlib/support/connect.pyi b/stubs/python-xlib/Xlib/support/connect.pyi new file mode 100644 index 000000000000..53552b31ce2b --- /dev/null +++ b/stubs/python-xlib/Xlib/support/connect.pyi @@ -0,0 +1,4 @@ +# Ignore OpenVMS in typeshed +from Xlib.support.unix_connect import get_auth as get_auth, get_display as get_display, get_socket as get_socket + +platform: str diff --git a/stubs/python-xlib/Xlib/support/lock.pyi b/stubs/python-xlib/Xlib/support/lock.pyi new file mode 100644 index 000000000000..236e96e502f1 --- /dev/null +++ b/stubs/python-xlib/Xlib/support/lock.pyi @@ -0,0 +1,8 @@ +from collections.abc import Callable + +class _DummyLock: + acquire: Callable[..., None] + release: Callable[..., None] + locked: Callable[..., None] + +def allocate_lock() -> _DummyLock: ... diff --git a/stubs/python-xlib/Xlib/support/unix_connect.pyi b/stubs/python-xlib/Xlib/support/unix_connect.pyi new file mode 100644 index 000000000000..dbfabd47c595 --- /dev/null +++ b/stubs/python-xlib/Xlib/support/unix_connect.pyi @@ -0,0 +1,28 @@ +import sys +from _socket import _Address +from platform import uname_result +from re import Pattern +from socket import socket +from typing_extensions import Literal, TypeAlias + +from Xlib._typing import Unused + +F_SETFD: int +FD_CLOEXEC: int + +if sys.platform == "darwin": + SUPPORTED_PROTOCOLS: tuple[None, Literal["tcp"], Literal["unix"], Literal["darwin"]] + _Protocol: TypeAlias = Literal[None, "tcp", "unix", "darwin"] + DARWIN_DISPLAY_RE: Pattern[str] +else: + SUPPORTED_PROTOCOLS: tuple[None, Literal["tcp"], Literal["unix"]] + _Protocol: TypeAlias = Literal[None, "tcp", "unix"] +uname: uname_result +DISPLAY_RE: Pattern[str] + +def get_display(display: str | None) -> tuple[str, str | None, str | None, int, int]: ... +def get_socket(dname: _Address, protocol: _Protocol, host: _Address | None, dno: int) -> socket: ... +def new_get_auth(sock: socket, dname: Unused, protocol: _Protocol, host: Unused, dno: int) -> tuple[bytes, bytes]: ... +def old_get_auth(sock: Unused, dname: _Address, host: Unused, dno: Unused) -> tuple[str | Literal[b""], bytes]: ... + +get_auth = new_get_auth diff --git a/stubs/python-xlib/Xlib/support/vms_connect.pyi b/stubs/python-xlib/Xlib/support/vms_connect.pyi new file mode 100644 index 000000000000..3bbbd7668e3b --- /dev/null +++ b/stubs/python-xlib/Xlib/support/vms_connect.pyi @@ -0,0 +1,11 @@ +from _socket import _Address +from re import Pattern +from socket import socket + +from Xlib._typing import Unused + +display_re: Pattern[str] + +def get_display(display: str | None) -> tuple[str, None, str, int, int]: ... +def get_socket(dname: _Address, protocol: Unused, host: _Address, dno: int) -> socket: ... +def get_auth(sock: Unused, dname: Unused, host: Unused, dno: Unused) -> tuple[str, str]: ... diff --git a/stubs/python-xlib/Xlib/threaded.pyi b/stubs/python-xlib/Xlib/threaded.pyi new file mode 100644 index 000000000000..c7314799e154 --- /dev/null +++ b/stubs/python-xlib/Xlib/threaded.pyi @@ -0,0 +1,4 @@ +# This isn't just a re-export from from Xlib.support import lock +# Importing from this module will cause the lock.allocate_lock function to +# return a basic Python lock, instead of the default dummy lock +from Xlib.support import lock as lock diff --git a/stubs/python-xlib/Xlib/xauth.pyi b/stubs/python-xlib/Xlib/xauth.pyi new file mode 100644 index 000000000000..51f3fa6c47c4 --- /dev/null +++ b/stubs/python-xlib/Xlib/xauth.pyi @@ -0,0 +1,17 @@ +from Xlib._typing import OpenFile + +FamilyInternet: int +FamilyDECnet: int +FamilyChaos: int +FamilyServerInterpreted: int +FamilyInternetV6: int +FamilyLocal: int + +class Xauthority: + entries: list[tuple[bytes, bytes, bytes, bytes, bytes]] + def __init__(self, filename: OpenFile | None = ...) -> None: ... + def __len__(self) -> int: ... + def __getitem__(self, i: int) -> tuple[bytes, bytes, bytes, bytes, bytes]: ... + def get_best_auth( + self, family: bytes, address: bytes, dispno: bytes, types: tuple[bytes, ...] = ... + ) -> tuple[bytes, bytes]: ... diff --git a/stubs/python-xlib/Xlib/xobject/__init__.pyi b/stubs/python-xlib/Xlib/xobject/__init__.pyi new file mode 100644 index 000000000000..5d06a9d37e44 --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/__init__.pyi @@ -0,0 +1,10 @@ +from Xlib.xobject import ( + colormap as colormap, + cursor as cursor, + drawable as drawable, + fontable as fontable, + icccm as icccm, + resource as resource, +) + +__all__ = ["colormap", "cursor", "drawable", "fontable", "icccm", "resource"] diff --git a/stubs/python-xlib/Xlib/xobject/colormap.pyi b/stubs/python-xlib/Xlib/xobject/colormap.pyi new file mode 100644 index 000000000000..a3ebc93461b7 --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/colormap.pyi @@ -0,0 +1,24 @@ +from collections.abc import Sequence +from re import Pattern + +from Xlib._typing import ErrorHandler +from Xlib.protocol import request, rq +from Xlib.xobject import resource + +rgb_res: list[Pattern[str]] + +class Colormap(resource.Resource): + __colormap__ = resource.Resource.__resource__ + def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def copy_colormap_and_free(self, scr_cmap: int) -> Colormap: ... + def install_colormap(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def uninstall_colormap(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def alloc_color(self, red: int, green: int, blue: int) -> request.AllocColor: ... + def alloc_named_color(self, name: str) -> request.AllocColor | request.AllocNamedColor | None: ... + def alloc_color_cells(self, contiguous: bool, colors: int, planes: int) -> request.AllocColorCells: ... + def alloc_color_planes(self, contiguous: bool, colors: int, red: int, green: int, blue: int) -> request.AllocColorPlanes: ... + def free_colors(self, pixels: Sequence[int], plane_mask: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def store_colors(self, items: dict[str, int], onerror: ErrorHandler[object] | None = ...) -> None: ... + def store_named_color(self, name: str, pixel: int, flags: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def query_colors(self, pixels: Sequence[int]) -> rq.Struct: ... + def lookup_color(self, name: str) -> request.LookupColor: ... diff --git a/stubs/python-xlib/Xlib/xobject/cursor.pyi b/stubs/python-xlib/Xlib/xobject/cursor.pyi new file mode 100644 index 000000000000..aeb773dc6195 --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/cursor.pyi @@ -0,0 +1,10 @@ +from Xlib._typing import ErrorHandler +from Xlib.protocol.structs import _RGB3IntIterable +from Xlib.xobject import resource + +class Cursor(resource.Resource): + __cursor__ = resource.Resource.__resource__ + def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def recolor( + self, foreground: _RGB3IntIterable, background: _RGB3IntIterable, onerror: ErrorHandler[object] | None = ... + ) -> None: ... diff --git a/stubs/python-xlib/Xlib/xobject/drawable.pyi b/stubs/python-xlib/Xlib/xobject/drawable.pyi new file mode 100644 index 000000000000..da6615aab912 --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/drawable.pyi @@ -0,0 +1,263 @@ +from collections.abc import Iterable, Sequence +from typing import Any + +from PIL import Image +from Xlib._typing import ErrorHandler +from Xlib.protocol import request, rq +from Xlib.protocol.structs import _Arc6IntSequence, _Rectangle4IntSequence, _RGB3IntIterable, _Segment4IntSequence +from Xlib.xobject import colormap, cursor, fontable, resource + +class Drawable(resource.Resource): + __drawable__ = resource.Resource.__resource__ + def get_geometry(self) -> request.GetGeometry: ... + def create_pixmap(self, width: int, height: int, depth: int) -> Pixmap: ... + def create_gc(self, **keys: object) -> fontable.GC: ... + def copy_area( + self, + gc: int, + src_drawable: int, + src_x: int, + src_y: int, + width: int, + height: int, + dst_x: int, + dst_y: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def copy_plane( + self, + gc: int, + src_drawable: int, + src_x: int, + src_y: int, + width: int, + height: int, + dst_x: int, + dst_y: int, + bit_plane: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def poly_point( + self, gc: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def point(self, gc: int, x: int, y: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def poly_line( + self, gc: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def line(self, gc: int, x1: int, y1: int, x2: int, y2: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def poly_segment( + self, gc: int, segments: Sequence[_Segment4IntSequence], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def poly_rectangle( + self, gc: int, rectangles: Sequence[_Rectangle4IntSequence], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def rectangle(self, gc: int, x: int, y: int, width: int, height: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def poly_arc(self, gc: int, arcs: Sequence[_Arc6IntSequence], onerror: ErrorHandler[object] | None = ...) -> None: ... + def arc( + self, + gc: int, + x: int, + y: int, + width: int, + height: int, + angle1: int, + angle2: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def fill_poly( + self, gc: int, shape: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def poly_fill_rectangle( + self, gc: int, rectangles: Sequence[_Rectangle4IntSequence], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def fill_rectangle( + self, gc: int, x: int, y: int, width: int, height: int, onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def poly_fill_arc(self, gc: int, arcs: Sequence[_Arc6IntSequence], onerror: ErrorHandler[object] | None = ...) -> None: ... + def fill_arc( + self, + gc: int, + x: int, + y: int, + width: int, + height: int, + angle1: int, + angle2: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def put_image( + self, + gc: int, + x: int, + y: int, + width: int, + height: int, + format: int, + depth: int, + left_pad: int, + data: bytes | bytearray, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def put_pil_image(self, gc: int, x: int, y: int, image: Image.Image, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_image(self, x: int, y: int, width: int, height: int, format: int, plane_mask: int) -> request.GetImage: ... + def draw_text( + self, gc: int, x: int, y: int, text: dict[str, str | int], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def poly_text( + self, gc: int, x: int, y: int, items: Sequence[dict[str, str | int]], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def poly_text_16( + self, gc: int, x: int, y: int, items: Sequence[dict[str, str | int]], onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def image_text(self, gc: int, x: int, y: int, string: str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def image_text_16(self, gc: int, x: int, y: int, string: str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def query_best_size(self, item_class: int, width: int, height: int) -> request.QueryBestSize: ... + +class Window(Drawable): + __window__ = resource.Resource.__resource__ + def create_window( + self, + x: int, + y: int, + width: int, + height: int, + border_width: int, + depth: int, + window_class: int = ..., + visual: int = ..., + onerror: ErrorHandler[object] | None = ..., + **keys: object, + ) -> Window: ... + def change_attributes(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... + def get_attributes(self) -> request.GetWindowAttributes: ... + def destroy(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def destroy_sub_windows(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def change_save_set(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def reparent(self, parent: int, x: int, y: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def map(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def map_sub_windows(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def unmap(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def unmap_sub_windows(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def configure(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... + def circulate(self, direction: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def raise_window(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def query_tree(self) -> request.QueryTree: ... + def change_property( + self, + property: int, + property_type: int, + format: int, + data: Sequence[float] | Sequence[str], + mode: int = ..., + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def change_text_property( + self, property: int, property_type: int, data: bytes | str, mode: int = ..., onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def delete_property(self, property: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_property( + self, property: int, property_type: int, offset: int, length: int, delete: bool = ... + ) -> request.GetProperty | None: ... + def get_full_property(self, property: int, property_type: int, sizehint: int = ...) -> request.GetProperty | None: ... + def get_full_text_property(self, property: int, property_type: int = ..., sizehint: int = ...) -> str | None: ... + def list_properties(self) -> list[int]: ... + def set_selection_owner(self, selection: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def convert_selection( + self, selection: int, target: int, property: int, time: int, onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def send_event( + self, event: rq.Event, event_mask: int = ..., propagate: bool = ..., onerror: ErrorHandler[object] | None = ... + ) -> None: ... + def grab_pointer( + self, owner_events: bool, event_mask: int, pointer_mode: int, keyboard_mode: int, confine_to: int, cursor: int, time: int + ) -> int: ... + def grab_button( + self, + button: int, + modifiers: int, + owner_events: bool, + event_mask: int, + pointer_mode: int, + keyboard_mode: int, + confine_to: int, + cursor: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def ungrab_button(self, button: int, modifiers: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def grab_keyboard(self, owner_events: bool, pointer_mode: int, keyboard_mode: int, time: int) -> int: ... + def grab_key( + self, + key: int, + modifiers: int, + owner_events: bool, + pointer_mode: int, + keyboard_mode: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def ungrab_key(self, key: int, modifiers: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def query_pointer(self) -> request.QueryPointer: ... + def get_motion_events(self, start: int, stop: int) -> rq.Struct: ... + def translate_coords(self, src_window: int, src_x: int, src_y: int) -> request.TranslateCoords: ... + def warp_pointer( + self, + x: int, + y: int, + src_window: int = ..., + src_x: int = ..., + src_y: int = ..., + src_width: int = ..., + src_height: int = ..., + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def set_input_focus(self, revert_to: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def clear_area( + self, + x: int = ..., + y: int = ..., + width: int = ..., + height: int = ..., + exposures: bool = ..., + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def create_colormap(self, visual: int, alloc: int) -> colormap.Colormap: ... + def list_installed_colormaps(self) -> list[colormap.Colormap]: ... + def rotate_properties(self, properties: Sequence[int], delta: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_name(self, name: bytes | str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_name(self) -> str | None: ... + def set_wm_icon_name(self, name: bytes | str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_icon_name(self) -> str | None: ... + def set_wm_class(self, inst: str, cls: str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_class(self) -> tuple[str, str] | None: ... + def set_wm_transient_for(self, window: Window, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_transient_for(self) -> Window | None: ... + def set_wm_protocols(self, protocols: Iterable[int], onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_protocols(self) -> list[int]: ... + def set_wm_colormap_windows(self, windows: Iterable[Window], onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_colormap_windows(self) -> Iterable[Window]: ... + def set_wm_client_machine(self, name: bytes | str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def get_wm_client_machine(self) -> str | None: ... + def set_wm_normal_hints( + self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + ) -> None: ... + def get_wm_normal_hints(self) -> rq.DictWrapper | None: ... + def set_wm_hints( + self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + ) -> None: ... + def get_wm_hints(self) -> rq.DictWrapper | None: ... + def set_wm_state( + self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + ) -> None: ... + def get_wm_state(self) -> rq.DictWrapper | None: ... + def set_wm_icon_size( + self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + ) -> None: ... + def get_wm_icon_size(self) -> rq.DictWrapper | None: ... + +class Pixmap(Drawable): + __pixmap__ = resource.Resource.__resource__ + def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def create_cursor( + self, mask: int, foreground: _RGB3IntIterable, background: _RGB3IntIterable, x: int, y: int + ) -> cursor.Cursor: ... + +def roundup(value: int, unit: int) -> int: ... diff --git a/stubs/python-xlib/Xlib/xobject/fontable.pyi b/stubs/python-xlib/Xlib/xobject/fontable.pyi new file mode 100644 index 000000000000..614c19deb31b --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/fontable.pyi @@ -0,0 +1,33 @@ +from collections.abc import Sequence + +from Xlib._typing import ErrorHandler +from Xlib.protocol import request +from Xlib.protocol.structs import _RGB3IntIterable +from Xlib.xobject import cursor, resource + +class Fontable(resource.Resource): + __fontable__ = resource.Resource.__resource__ + def query(self) -> request.QueryFont: ... + def query_text_extents(self, string: str) -> request.QueryTextExtents: ... + +class GC(Fontable): + __gc__ = resource.Resource.__resource__ + def change(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... + def copy(self, src_gc: int, mask: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_dashes(self, offset: int, dashes: Sequence[int], onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_clip_rectangles( + self, + x_origin: int, + y_origin: int, + rectangles: Sequence[dict[str, int]], + ordering: int, + onerror: ErrorHandler[object] | None = ..., + ) -> None: ... + def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + +class Font(Fontable): + __font__ = resource.Resource.__resource__ + def close(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def create_glyph_cursor( + self, mask: Font, source_char: int, mask_char: int, foreground: _RGB3IntIterable, background: _RGB3IntIterable + ) -> cursor.Cursor: ... diff --git a/stubs/python-xlib/Xlib/xobject/icccm.pyi b/stubs/python-xlib/Xlib/xobject/icccm.pyi new file mode 100644 index 000000000000..8f64f1b06009 --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/icccm.pyi @@ -0,0 +1,7 @@ +from Xlib.protocol import rq + +Aspect: rq.Struct +WMNormalHints: rq.Struct +WMHints: rq.Struct +WMState: rq.Struct +WMIconSize: rq.Struct diff --git a/stubs/python-xlib/Xlib/xobject/resource.pyi b/stubs/python-xlib/Xlib/xobject/resource.pyi new file mode 100644 index 000000000000..c6fe3cd42d23 --- /dev/null +++ b/stubs/python-xlib/Xlib/xobject/resource.pyi @@ -0,0 +1,18 @@ +from typing import type_check_only + +from Xlib._typing import ErrorHandler +from Xlib.protocol import display + +# Workaround for pytype crash. Should be Xlib.display._BaseDisplay +@type_check_only +class _BaseDisplay(display.Display): + def __init__(self, display: str | None = ...) -> None: ... + def get_atom(self, atomname: str, only_if_exists: bool = ...) -> int: ... + +class Resource: + display: _BaseDisplay + id: int + owner: int + def __init__(self, display: _BaseDisplay, rid: int, owner: int = ...) -> None: ... + def __resource__(self) -> int: ... + def kill_client(self, onerror: ErrorHandler[object] | None = ...) -> None: ...