import x, xlib, xi const xNeedWidePrototypes {.booldefine.} = defined(posix) const deviceKeyPress* = 0 deviceKeyRelease* = 1 deviceButtonPress* = 0 deviceButtonRelease* = 1 deviceMotionNotify* = 0 deviceFocusIn* = 0 deviceFocusOut* = 1 proximityIn* = 0 proximityOut* = 1 deviceStateNotify* = 0 deviceMappingNotify* = 1 changeDeviceNotify* = 2 propertyNotify* = 6 template FindTypeAndClass*(d, `type`, class, classid, offset: untyped) = var i: cint var ip: PXInputClassInfo `type` = 0 class = 0 i = 0 ip = (cast[PXDevice](d)).classes while i < (cast[PXDevice](d)).num_classes: if ip.input_class == classid: `type` = ip.event_type_base + offset class = (cast[PXDevice](d)).device_id shl 8 or `type` inc(i) inc(ip) template DeviceKeyPress*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, KeyClass, deviceKeyPress) template DeviceKeyRelease*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, KeyClass, deviceKeyRelease) template DeviceButtonPress*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, ButtonClass, deviceButtonPress) template DeviceButtonRelease*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, ButtonClass, deviceButtonRelease) template DeviceMotionNotify*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, ValuatorClass, deviceMotionNotify) template DeviceFocusIn*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, FocusClass, deviceFocusIn) template DeviceFocusOut*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, FocusClass, deviceFocusOut) template ProximityIn*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, ProximityClass, proximityIn) template ProximityOut*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, ProximityClass, proximityOut) template DeviceStateNotify*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, OtherClass, deviceStateNotify) template DeviceMappingNotify*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, OtherClass, deviceMappingNotify) template ChangeDeviceNotify*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, OtherClass, changeDeviceNotify) template DevicePropertyNotify*(d, `type`, class: untyped): untyped = FindTypeAndClass(d, `type`, class, OtherClass, propertyNotify) template DevicePointerMotionHint*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or devicePointerMotionHint template DeviceButton1Motion*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButton1Motion template DeviceButton2Motion*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButton2Motion template DeviceButton3Motion*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButton3Motion template DeviceButton4Motion*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButton4Motion template DeviceButton5Motion*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButton5Motion template DeviceButtonMotion*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButtonMotion template DeviceOwnerGrabButton*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceOwnerGrabButton template DeviceButtonPressGrab*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or deviceButtonGrab template NoExtensionEvent*(d, `type`, class: untyped) = class = (cast[PXDevice](d)).device_id shl 8 or noExtensionEvent template DevicePresence*(dpy, `type`, class: untyped) = `type` = XiGetDevicePresenceNotifyEvent(dpy) class = (0x00010000 or devicePresence) ## Errors template BadDevice*(dpy, error: untyped): untyped = xibaddevice(dpy, addr(error)) template BadClass*(dpy, error: untyped): untyped = xibadclass(dpy, addr(error)) template BadEvent*(dpy, error: untyped): untyped = xibadevent(dpy, addr(error)) template BadMode*(dpy, error: untyped): untyped = xibadmode(dpy, addr(error)) template DeviceBusy*(dpy, error: untyped): untyped = xidevicebusy(dpy, addr(error)) type PXDeviceKeyEvent* = ptr XDeviceKeyEvent XDeviceKeyEvent* {.final.} = object ## DeviceKey events. These events are sent by input devices that ## support input class Keys. ## The location of the X pointer is reported in the coordinate ## fields of the x,y and x_root,y_root fields. `type`*: cint ## of event serial*: culong ## # of last request processed send_event*: XBool ## true if from SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## "event" window reported relative to deviceid*: XID root*: Window ## root window event occured on subwindow*: Window ## child window time*: Time ## milliseconds x*: cint y*: cint ## x, y coordinates in event window x_root*: cint ## coordinates relative to root y_root*: cint ## coordinates relative to root state*: cuint ## key or button mask keycode*: cuint ## detail same_screen*: XBool ## same screen flag device_state*: cuint ## device key or button mask axes_count*: char first_axis*: char axis_data*: array[6, cint] PXDeviceKeyPressedEvent* = PXDeviceKeyEvent XDeviceKeyPressedEvent* = XDeviceKeyEvent PXDeviceKeyReleasedEvent* = PXDeviceKeyEvent XDeviceKeyReleasedEvent* = XDeviceKeyEvent PXDeviceButtonEvent* = ptr XDeviceButtonEvent XDeviceButtonEvent* {.final.} = object ## DeviceButton events. These events are sent by extension devices ## that support input class Buttons. `type`*: cint ## of event serial*: culong ## # of last request processed by server send_event*: XBool ## true if from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## "event" window reported relative to deviceid*: XID root*: Window ## root window that the event occured on subwindow*: Window ## child window time*: Time ## milliseconds x*: cint y*: cint ## x, y coordinates in event window x_root*: cint ## coordinates relative to root y_root*: cint ## coordinates relative to root state*: cuint ## key or button mask button*: cuint ## detail same_screen*: XBool ## same screen flag device_state*: cuint ## device key or button mask axes_count*: char first_axis*: char axis_data*: array[6, cint] PXDeviceButtonPressedEvent* = PXDeviceButtonEvent XDeviceButtonPressedEvent* = XDeviceButtonEvent PXDeviceButtonReleasedEvent* = PXDeviceButtonEvent XDeviceButtonReleasedEvent* = XDeviceButtonEvent PXDeviceMotionEvent* = ptr XDeviceMotionEvent XDeviceMotionEvent* {.final.} = object ## DeviceMotionNotify event. These events are sent by extension devices ## that support input class Valuators. `type`*: cint ## of event serial*: culong ## # of last request processed by server send_event*: XBool ## true if from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## "event" window reported relative to deviceid*: XID root*: Window ## root window that the event occured on subwindow*: Window ## child window time*: Time ## milliseconds x*: cint y*: cint ## x, y coordinates in event window x_root*: cint ## coordinates relative to root y_root*: cint ## coordinates relative to root state*: cuint ## key or button mask is_hint*: char ## detail same_screen*: XBool ## same screen flag device_state*: cuint ## device key or button mask axes_count*: char first_axis*: char axis_data*: array[6, cint] PXDeviceFocusChangeEvent* = ptr XDeviceFocusChangeEvent XDeviceFocusChangeEvent* {.final.} = object ## DeviceFocusChange events. These events are sent when the focus ## of an extension device that can be focused is changed. `type`*: cint ## of event serial*: culong ## # of last request processed by server send_event*: XBool ## true if from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## "event" window reported relative to deviceid*: XID mode*: cint ## NotifyNormal, NotifyGrab, NotifyUngrab detail*: cint ## ## NotifyAncestor, NotifyVirtual, NotifyInferior, ## NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer, ## NotifyPointerRoot, NotifyDetailNone ## time*: Time PXDeviceFocusInEvent* = PXDeviceFocusChangeEvent XDeviceFocusInEvent* = XDeviceFocusChangeEvent PXDeviceFocusOutEvent* = PXDeviceFocusChangeEvent XDeviceFocusOutEvent* = XDeviceFocusChangeEvent PXProximityNotifyEvent* = ptr XProximityNotifyEvent XProximityNotifyEvent* {.final.} = object ## ProximityNotify events. These events are sent by those absolute ## positioning devices that are capable of generating proximity information. `type`*: cint ## ProximityIn or ProximityOut serial*: culong ## # of last request processed by server send_event*: XBool ## true if this came from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window deviceid*: XID root*: Window subwindow*: Window time*: Time x*: cint y*: cint x_root*: cint y_root*: cint state*: cuint same_screen*: XBool device_state*: cuint ## device key or button mask axes_count*: char first_axis*: char axis_data*: array[6, cint] PXProximityInEvent* = PXProximityNotifyEvent XProximityInEvent* = XProximityNotifyEvent PXProximityOutEvent* = PXProximityNotifyEvent XProximityOutEvent* = XProximityNotifyEvent PXInputClass* = ptr XInputClass XInputClass* {.final.} = object class*: char length*: char PXDeviceStateNotifyEvent* = ptr XDeviceStateNotifyEvent XDeviceStateNotifyEvent* {.final.} = object ## DeviceStateNotify events are generated on EnterWindow and FocusIn ## for those clients who have selected DeviceState. `type`*: cint serial*: culong ## # of last request processed by server send_event*: XBool ## true if this came from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window deviceid*: XID time*: Time num_classes*: cint data*: array[64, char] PXValuatorStatus* = ptr XValuatorStatus XValuatorStatus* {.final.} = object class*: char length*: char num_valuators*: char mode*: char valuators*: array[6, cint] PXKeyStatus* = ptr XKeyStatus XKeyStatus* {.final.} = object class*: char length*: char num_keys*: cshort keys*: array[32, char] PXButtonStatus* = ptr XButtonStatus XButtonStatus* {.final.} = object class*: char length*: char num_buttons*: cshort buttons*: array[32, char] PXDeviceMappingEvent* = ptr XDeviceMappingEvent XDeviceMappingEvent* {.final.} = object ## DeviceMappingNotify event. This event is sent when the key mapping, ## modifier mapping, or button mapping of an extension device is changed. `type`*: cint serial*: culong ## # of last request processed by server send_event*: XBool ## true if this came from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## unused deviceid*: XID time*: Time request*: cint ## one of MappingModifier, MappingKeyboard, ## MappingPointer first_keycode*: cint ## first keycode count*: cint ## defines range of change w. first_keycode PXChangeDeviceNotifyEvent* = ptr XChangeDeviceNotifyEvent XChangeDeviceNotifyEvent* {.final.} = object ## ChangeDeviceNotify event. This event is sent when an ## XChangeKeyboard or XChangePointer request is made. `type`*: cint serial*: culong ## # of last request processed by server send_event*: XBool ## true if this came from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## unused deviceid*: XID time*: Time request*: cint ## NewPointer or NewKeyboard PXDevicePresenceNotifyEvent* = ptr XDevicePresenceNotifyEvent XDevicePresenceNotifyEvent* {.final.} = object ## DevicePresenceNotify event. This event is sent when the list of ## input devices changes, in which case devchange will be false, and ## no information about the change will be contained in the event; ## the client should use XListInputDevices() to learn what has changed. ## ## If devchange is true, an attribute that the server believes is ## important has changed on a device, and the client should use ## XGetDeviceControl to examine the device. If control is non-zero, ## then that control has changed meaningfully. `type`*: cint serial*: culong ## # of last request processed by server send_event*: XBool ## true if this came from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## unused time*: Time devchange*: XBool deviceid*: XID control*: XID PXDevicePropertyNotifyEvent* = ptr XDevicePropertyNotifyEvent XDevicePropertyNotifyEvent* {.final.} = object `type`*: cint serial*: culong ## # of last request processed by server send_event*: XBool ## true if this came from a SendEvent request display*: PDisplay ## Display the event was read from window*: Window ## unused time*: Time deviceid*: XID ## id of the device that changed atom*: Atom ## the property that changed state*: cint ## PropertyNewValue or PropertyDeleted PXFeedbackState* = ptr XFeedbackState XFeedbackState* {.final.} = object class*: XID length*: cint id*: XID PXKbdFeedbackState* = ptr XKbdFeedbackState XKbdFeedbackState* {.final.} = object class*: XID length*: cint id*: XID click*: cint percent*: cint pitch*: cint duration*: cint led_mask*: cint global_auto_repeat*: cint auto_repeats*: array[32, char] PXPtrFeedbackState* = ptr XPtrFeedbackState XPtrFeedbackState* {.final.} = object class*: XID length*: cint id*: XID accelNum*: cint accelDenom*: cint threshold*: cint PXIntegerFeedbackState* = ptr XIntegerFeedbackState XIntegerFeedbackState* {.final.} = object class*: XID length*: cint id*: XID resolution*: cint minVal*: cint maxVal*: cint PXStringFeedbackState* = ptr XStringFeedbackState XStringFeedbackState* {.final.} = object class*: XID length*: cint id*: XID max_symbols*: cint num_syms_supported*: cint syms_supported*: PKeySym PXBellFeedbackState* = ptr XBellFeedbackState XBellFeedbackState* {.final.} = object class*: XID length*: cint id*: XID percent*: cint pitch*: cint duration*: cint PXLedFeedbackState* = ptr XLedFeedbackState XLedFeedbackState* {.final.} = object class*: XID length*: cint id*: XID led_values*: cint led_mask*: cint PXFeedbackControl* = ptr XFeedbackControl XFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID PXPtrFeedbackControl* = ptr XPtrFeedbackControl XPtrFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID accelNum*: cint accelDenom*: cint threshold*: cint PXKbdFeedbackControl* = ptr XKbdFeedbackControl XKbdFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID click*: cint percent*: cint pitch*: cint duration*: cint led_mask*: cint led_value*: cint key*: cint auto_repeat_mode*: cint PXStringFeedbackControl* = ptr XStringFeedbackControl XStringFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID num_keysyms*: cint syms_to_display*: PKeySym PXIntegerFeedbackControl* = ptr XIntegerFeedbackControl XIntegerFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID int_to_display*: cint PXBellFeedbackControl* = ptr XBellFeedbackControl XBellFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID percent*: cint pitch*: cint duration*: cint PXLedFeedbackControl* = ptr XLedFeedbackControl XLedFeedbackControl* {.final.} = object class*: XID length*: cint id*: XID led_mask*: cint led_values*: cint PXDeviceControl* = ptr XDeviceControl XDeviceControl* {.final.} = object control*: XID length*: cint PXDeviceResolutionControl* = ptr XDeviceResolutionControl XDeviceResolutionControl* {.final.} = object control*: XID length*: cint first_valuator*: cint num_valuators*: cint resolutions*: ptr cint PXDeviceResolutionState* = ptr XDeviceResolutionState XDeviceResolutionState* {.final.} = object control*: XID length*: cint num_valuators*: cint resolutions*: ptr cint min_resolutions*: ptr cint max_resolutions*: ptr cint PXDeviceAbsCalibControl* = ptr XDeviceAbsCalibControl XDeviceAbsCalibControl* {.final.} = object control*: XID length*: cint min_x*: cint max_x*: cint min_y*: cint max_y*: cint flip_x*: cint flip_y*: cint rotation*: cint button_threshold*: cint PXDeviceAbsCalibState* = PXDeviceAbsCalibControl XDeviceAbsCalibState* = XDeviceAbsCalibControl PXDeviceAbsAreaControl* = ptr XDeviceAbsAreaControl XDeviceAbsAreaControl* {.final.} = object control*: XID length*: cint offset_x*: cint offset_y*: cint width*: cint height*: cint screen*: cint following*: XID PXDeviceAbsAreaState* = PXDeviceAbsAreaControl XDeviceAbsAreaState* = XDeviceAbsAreaControl PXDeviceCoreControl* = ptr XDeviceCoreControl XDeviceCoreControl* {.final.} = object control*: XID length*: cint status*: cint PXDeviceCoreState* = ptr XDeviceCoreState XDeviceCoreState* {.final.} = object control*: XID length*: cint status*: cint iscore*: cint PXDeviceEnableControl* = ptr XDeviceEnableControl XDeviceEnableControl* {.final.} = object control*: XID length*: cint enable*: cint PXDeviceEnableState* = PXDeviceEnableControl XDeviceEnableState* = XDeviceEnableControl PXAnyClassInfo* = ptr XAnyClassInfo XAnyClassInfo* {.final.} = object class*: XID length*: cint PXDeviceInfo* = ptr XDeviceInfo XDeviceInfo* {.final.} = object id*: XID `type`*: Atom name*: cstring num_classes*: cint use*: cint inputclassinfo*: PXAnyClassInfo PXKeyInfo* = ptr XKeyInfo XKeyInfo* {.final.} = object class*: XID length*: cint min_keycode*: cushort max_keycode*: cushort num_keys*: cushort PXButtonInfo* = ptr XButtonInfo XButtonInfo* {.final.} = object class*: XID length*: cint num_buttons*: cshort PXAxisInfo* = ptr XAxisInfo XAxisInfo* {.final.} = object resolution*: cint min_value*: cint max_value*: cint PXValuatorInfo* = ptr XValuatorInfo XValuatorInfo* {.final.} = object class*: XID length*: cint num_axes*: char mode*: char motion_buffer*: culong axes*: PXAxisInfo PXInputClassInfo* = ptr XInputClassInfo XInputClassInfo* {.final.} = object input_class*: char event_type_base*: char PXDevice* = ptr XDevice XDevice* {.final.} = object device_id*: XID num_classes*: cint classes*: PXInputClassInfo PXEventList* = ptr XEventList XEventList* {.final.} = object event_type*: XEventClass device*: XID PXDeviceTimeCoord* = ptr XDeviceTimeCoord XDeviceTimeCoord* {.final.} = object time*: Time data*: ptr cint PXDeviceState* = ptr XDeviceState XDeviceState* {.final.} = object device_id*: XID num_classes*: cint data*: PXInputClass PXValuatorState* = ptr XValuatorState XValuatorState* {.final.} = object class*: char length*: char num_valuators*: char mode*: char valuators*: ptr cint PXKeyState* = ptr XKeyState XKeyState* {.final.} = object class*: char length*: char num_keys*: cshort keys*: array[32, char] PXButtonState* = ptr XButtonState XButtonState* {.final.} = object class*: char length*: char num_buttons*: cshort buttons*: array[32, char] {.deprecated: [TXDeviceKeyEvent: XDeviceKeyEvent].} {.deprecated: [TXDeviceKeyPressedEvent: XDeviceKeyPressedEvent].} {.deprecated: [TXDeviceKeyReleasedEvent: XDeviceKeyReleasedEvent].} {.deprecated: [TXDeviceButtonEvent: XDeviceButtonEvent].} {.deprecated: [TXDeviceButtonPressedEvent: XDeviceButtonPressedEvent].} {.deprecated: [TXDeviceButtonReleasedEvent: XDeviceButtonReleasedEvent].} {.deprecated: [TXDeviceMotionEvent: XDeviceMotionEvent].} {.deprecated: [TXDeviceFocusChangeEvent: XDeviceFocusChangeEvent].} {.deprecated: [TXDeviceFocusInEvent: XDeviceFocusInEvent].} {.deprecated: [TXDeviceFocusOutEvent: XDeviceFocusOutEvent].} {.deprecated: [TXProximityNotifyEvent: XProximityNotifyEvent].} {.deprecated: [TXProximityInEvent: XProximityInEvent].} {.deprecated: [TXProximityOutEvent: XProximityOutEvent].} {.deprecated: [TXInputClass: XInputClass].} {.deprecated: [TXDeviceStateNotifyEvent: XDeviceStateNotifyEvent].} {.deprecated: [TXValuatorStatus: XValuatorStatus].} {.deprecated: [TXKeyStatus: XKeyStatus].} {.deprecated: [TXButtonStatus: XButtonStatus].} {.deprecated: [TXDeviceMappingEvent: XDeviceMappingEvent].} {.deprecated: [TXChangeDeviceNotifyEvent: XChangeDeviceNotifyEvent].} {.deprecated: [TXDevicePresenceNotifyEvent: XDevicePresenceNotifyEvent].} {.deprecated: [TXDevicePropertyNotifyEvent: XDevicePropertyNotifyEvent].} {.deprecated: [TXFeedbackState: XFeedbackState].} {.deprecated: [TXKbdFeedbackState: XKbdFeedbackState].} {.deprecated: [TXPtrFeedbackState: XPtrFeedbackState].} {.deprecated: [TXIntegerFeedbackState: XIntegerFeedbackState].} {.deprecated: [TXStringFeedbackState: XStringFeedbackState].} {.deprecated: [TXBellFeedbackState: XBellFeedbackState].} {.deprecated: [TXLedFeedbackState: XLedFeedbackState].} {.deprecated: [TXFeedbackControl: XFeedbackControl].} {.deprecated: [TXPtrFeedbackControl: XPtrFeedbackControl].} {.deprecated: [TXKbdFeedbackControl: XKbdFeedbackControl].} {.deprecated: [TXStringFeedbackControl: XStringFeedbackControl].} {.deprecated: [TXIntegerFeedbackControl: XIntegerFeedbackControl].} {.deprecated: [TXBellFeedbackControl: XBellFeedbackControl].} {.deprecated: [TXLedFeedbackControl: XLedFeedbackControl].} {.deprecated: [TXDeviceControl: XDeviceControl].} {.deprecated: [TXDeviceResolutionControl: XDeviceResolutionControl].} {.deprecated: [TXDeviceResolutionState: XDeviceResolutionState].} {.deprecated: [TXDeviceAbsCalibControl: XDeviceAbsCalibControl].} {.deprecated: [TXDeviceAbsCalibState: XDeviceAbsCalibState].} {.deprecated: [TXDeviceAbsAreaControl: XDeviceAbsAreaControl].} {.deprecated: [TXDeviceAbsAreaState: XDeviceAbsAreaState].} {.deprecated: [TXDeviceCoreControl: XDeviceCoreControl].} {.deprecated: [TXDeviceCoreState: XDeviceCoreState].} {.deprecated: [TXDeviceEnableControl: XDeviceEnableControl].} {.deprecated: [TXDeviceEnableState: XDeviceEnableState].} {.deprecated: [TXAnyClassInfo: XAnyClassInfo].} {.deprecated: [TXDeviceInfo: XDeviceInfo].} {.deprecated: [TXKeyInfo: XKeyInfo].} {.deprecated: [TXButtonInfo: XButtonInfo].} {.deprecated: [TXAxisInfo: XAxisInfo].} {.deprecated: [TXValuatorInfo: XValuatorInfo].} {.deprecated: [TXInputClassInfo: XInputClassInfo].} {.deprecated: [TXDevice: XDevice].} {.deprecated: [TXEventList: XEventList].} {.deprecated: [TXDeviceTimeCoord: XDeviceTimeCoord].} {.deprecated: [TXDeviceState: XDeviceState].} {.deprecated: [TXValuatorState: XValuatorState].} {.deprecated: [TXKeyState: XKeyState].} {.deprecated: [TXButtonState: XButtonState].} {.push cdecl, importc, dynlib: libXi.} proc XChangeKeyboardDevice*(a1: PDisplay, a2: PXDevice): cint proc XChangePointerDevice*(a1: PDisplay, a2: PXDevice, a3, a4: cint): cint proc XGrabDevice*(a1: PDisplay, a2: PXDevice, a3: Window, a4: XBool, a5: cint, a6: ptr UncheckedArray[XEventClass], a7, a8: cint, a9: Time): cint proc XUngrabDevice*(a1: PDisplay, a2: PXDevice, a3: Time): cint proc XGrabDeviceKey*(a1: PDisplay, a2: PXDevice, a3, a4: cuint, a5: PXDevice, a6: Window, a7: XBool, a8: cuint, a9: ptr UncheckedArray[XEventClass], a10, a11: cint): cint proc XUngrabDeviceKey*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint, a5: PXDevice, a6: Window): cint proc XGrabDeviceButton*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint, a5: PXDevice, a6: Window, a7: XBool, a8: cuint, a9: ptr UncheckedArray[XEventClass], a10: cint, a11: cint): cint proc XUngrabDeviceButton*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint, a5: PXDevice, a6: Window): cint proc XAllowDeviceEvents*(a1: PDisplay, a2: PXDevice, a3: cint, a4: Time): cint proc XGetDeviceFocus*(a1: PDisplay, a2: PXDevice, a3: PWindow, a4: ptr cint, a5: ptr Time): cint proc XSetDeviceFocus*(a1: PDisplay, a2: PXDevice, a3: Window, a4: cint, a5: Time): cint proc XGetFeedbackControl*(a1: PDisplay, a2: PXDevice, a3: ptr cint): PXFeedbackState proc XFreeFeedbackList*(a1: PXFeedbackState) proc XChangeFeedbackControl*(a1: PDisplay, a2: PXDevice, a3: culong, a4: PXFeedbackControl): cint proc XDeviceBell*(a1: PDisplay, a2: PXDevice, a3, a4: XID, a5: cint): cint proc XGetDeviceKeyMapping*(a1: PDisplay, a2: PXDevice, a3: (when xNeedWidePrototypes: cuint else: KeyCode), a4: cint, a5: ptr cint): PKeySym proc XChangeDeviceKeyMapping*(a1: PDisplay, a2: PXDevice, a3: cint, a4: cint, a5: PKeySym, a6: cint): cint proc XGetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice): PXModifierKeymap proc XSetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice, a3: PXModifierKeymap): cint proc XSetDeviceButtonMapping*(a1: PDisplay, a2: PXDevice, a3: cstring, a4: cint): cint proc XGetDeviceButtonMapping*(a1: PDisplay, a2: PXDevice, a3: cstring, a4: cuint): cint proc XQueryDeviceState*(a1: PDisplay, a2: PXDevice): PXDeviceState proc XFreeDeviceState*(a1: PXDeviceState) proc XGetExtensionVersion*(a1: PDisplay, a2: cstring): PXExtensionVersion proc XListInputDevices*(a1: PDisplay, a2: ptr cint): PXDeviceInfo proc XFreeDeviceList*(a1: PXDeviceInfo) proc XOpenDevice*(a1: PDisplay, a2: XID): PXDevice proc XCloseDevice*(a1: PDisplay, a2: PXDevice): cint proc XSetDeviceMode*(a1: PDisplay, a2: PXDevice, a3: cint): cint proc XSetDeviceValuators*(a1: PDisplay, a2: PXDevice, a3: ptr cint, a4: cint, a5: cint): cint proc XGetDeviceControl*(a1: PDisplay, a2: PXDevice, a3: cint): PXDeviceControl proc XChangeDeviceControl*(a1: PDisplay, a2: PXDevice, a3: cint, a4: PXDeviceControl): cint proc XSelectExtensionEvent*(a1: PDisplay, a2: Window, a3: ptr UncheckedArray[XEventClass], a4: cint): cint proc XGetSelectedExtensionEvents*(a1: PDisplay, a2: Window, a3: ptr cint, a4: ptr ptr UncheckedArray[XEventClass], a5: ptr cint, a6: ptr ptr UncheckedArray[XEventClass]): cint proc XChangeDeviceDontPropagateList*(a1: PDisplay, a2: Window, a3: cint, a4: ptr UncheckedArray[XEventClass], a5: cint): cint proc XGetDeviceDontPropagateList*(a1: PDisplay, a2: Window, a3: ptr cint): ptr UncheckedArray[XEventClass] proc XSendExtensionEvent*(a1: PDisplay, a2: PXDevice, a3: Window, a4: XBool, a5: cint, a6: ptr UncheckedArray[XEventClass], a7: PXEvent): Status proc XGetDeviceMotionEvents*(a1: PDisplay, a2: PXDevice, a3, a4: Time, a5, a6, a7: ptr cint): PXDeviceTimeCoord proc XFreeDeviceMotionEvents*(a1: PXDeviceTimeCoord) proc XFreeDeviceControl*(a1: PXDeviceControl) proc XListDeviceProperties*(a1: PDisplay, a2: PXDevice, a3: ptr cint): PAtom proc XChangeDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom, a4: Atom, a5: cint, a6: cint, a7: cstring, a8: cint) proc XDeleteDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom) proc XGetDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom, a4, a5: clong, a6: XBool, a7: Atom, a8: PAtom, a9: ptr cint, a10: ptr culong, a11: ptr culong, a12: ptr cstring): Status {.pop.}