1 module deimos.X11.extensions.XI; 2 3 //import std.string : string; 4 import core.stdc.config; 5 6 /* Definitions used by the server, library and client */ 7 8 enum sz_xGetExtensionVersionReq = 8; 9 enum sz_xGetExtensionVersionReply = 32; 10 enum sz_xListInputDevicesReq = 4; 11 enum sz_xListInputDevicesReply = 32; 12 enum sz_xOpenDeviceReq = 8; 13 enum sz_xOpenDeviceReply = 32; 14 enum sz_xCloseDeviceReq = 8; 15 enum sz_xSetDeviceModeReq = 8; 16 enum sz_xSetDeviceModeReply = 32; 17 enum sz_xSelectExtensionEventReq = 12; 18 enum sz_xGetSelectedExtensionEventsReq = 8; 19 enum sz_xGetSelectedExtensionEventsReply = 32; 20 enum sz_xChangeDeviceDontPropagateListReq = 12; 21 enum sz_xGetDeviceDontPropagateListReq = 8; 22 enum sz_xGetDeviceDontPropagateListReply = 32; 23 enum sz_xGetDeviceMotionEventsReq = 16; 24 enum sz_xGetDeviceMotionEventsReply = 32; 25 enum sz_xChangeKeyboardDeviceReq = 8; 26 enum sz_xChangeKeyboardDeviceReply = 32; 27 enum sz_xChangePointerDeviceReq = 8; 28 enum sz_xChangePointerDeviceReply = 32; 29 enum sz_xGrabDeviceReq = 20; 30 enum sz_xGrabDeviceReply = 32; 31 enum sz_xUngrabDeviceReq = 12; 32 enum sz_xGrabDeviceKeyReq = 20; 33 enum sz_xGrabDeviceKeyReply = 32; 34 enum sz_xUngrabDeviceKeyReq = 16; 35 enum sz_xGrabDeviceButtonReq = 20; 36 enum sz_xGrabDeviceButtonReply = 32; 37 enum sz_xUngrabDeviceButtonReq = 16; 38 enum sz_xAllowDeviceEventsReq = 12; 39 enum sz_xGetDeviceFocusReq = 8; 40 enum sz_xGetDeviceFocusReply = 32; 41 enum sz_xSetDeviceFocusReq = 16; 42 enum sz_xGetFeedbackControlReq = 8; 43 enum sz_xGetFeedbackControlReply = 32; 44 enum sz_xChangeFeedbackControlReq = 12; 45 enum sz_xGetDeviceKeyMappingReq = 8; 46 enum sz_xGetDeviceKeyMappingReply = 32; 47 enum sz_xChangeDeviceKeyMappingReq = 8; 48 enum sz_xGetDeviceModifierMappingReq = 8; 49 enum sz_xSetDeviceModifierMappingReq = 8; 50 enum sz_xSetDeviceModifierMappingReply = 32; 51 enum sz_xGetDeviceButtonMappingReq = 8; 52 enum sz_xGetDeviceButtonMappingReply = 32; 53 enum sz_xSetDeviceButtonMappingReq = 8; 54 enum sz_xSetDeviceButtonMappingReply = 32; 55 enum sz_xQueryDeviceStateReq = 8; 56 enum sz_xQueryDeviceStateReply = 32; 57 enum sz_xSendExtensionEventReq = 16; 58 enum sz_xDeviceBellReq = 8; 59 enum sz_xSetDeviceValuatorsReq = 8; 60 enum sz_xSetDeviceValuatorsReply = 32; 61 enum sz_xGetDeviceControlReq = 8; 62 enum sz_xGetDeviceControlReply = 32; 63 enum sz_xChangeDeviceControlReq = 8; 64 enum sz_xChangeDeviceControlReply = 32; 65 enum sz_xListDevicePropertiesReq = 8; 66 enum sz_xListDevicePropertiesReply = 32; 67 enum sz_xChangeDevicePropertyReq = 20; 68 enum sz_xDeleteDevicePropertyReq = 12; 69 enum sz_xGetDevicePropertyReq = 24; 70 enum sz_xGetDevicePropertyReply = 32; 71 72 immutable char* INAME = "XInputExtension"; 73 74 immutable char* XI_KEYBOARD = "KEYBOARD"; 75 immutable char* XI_MOUSE = "MOUSE"; 76 immutable char* XI_TABLET = "TABLET"; 77 immutable char* XI_TOUCHSCREEN = "TOUCHSCREEN"; 78 immutable char* XI_TOUCHPAD = "TOUCHPAD"; 79 immutable char* XI_BARCODE = "BARCODE"; 80 immutable char* XI_BUTTONBOX = "BUTTONBOX"; 81 immutable char* XI_KNOB_BOX = "KNOB_BOX"; 82 immutable char* XI_ONE_KNOB = "ONE_KNOB"; 83 immutable char* XI_NINE_KNOB = "NINE_KNOB"; 84 immutable char* XI_TRACKBALL = "TRACKBALL"; 85 immutable char* XI_QUADRATURE = "QUADRATURE"; 86 immutable char* XI_ID_MODULE = "ID_MODULE"; 87 immutable char* XI_SPACEBALL = "SPACEBALL"; 88 immutable char* XI_DATAGLOVE = "DATAGLOVE"; 89 immutable char* XI_EYETRACKER = "EYETRACKER"; 90 immutable char* XI_CURSORKEYS = "CURSORKEYS"; 91 immutable char* XI_FOOTMOUSE = "FOOTMOUSE"; 92 immutable char* XI_JOYSTICK = "JOYSTICK"; 93 94 /* Indices into the versions[] array (XExtInt.c). Used as a index to 95 * retrieve the minimum version of XI from _XiCheckExtInit */ 96 enum { 97 Dont_Check = 0, 98 XInput_Initial_Release = 1, 99 XInput_Add_XDeviceBell = 2, 100 XInput_Add_XSetDeviceValuators = 3, 101 XInput_Add_XChangeDeviceControl = 4, 102 XInput_Add_DevicePresenceNotify = 5, 103 XInput_Add_DeviceProperties = 6 104 } 105 /* DO NOT ADD TO HERE -> XI2 */ 106 107 enum { 108 XI_Absent = 0, 109 XI_Present = 1 110 } 111 112 enum { 113 XI_Initial_Release_Major = 1, 114 XI_Initial_Release_Minor = 0 115 } 116 117 enum { 118 XI_Add_XDeviceBell_Major = 1, 119 XI_Add_XDeviceBell_Minor = 1 120 } 121 122 enum { 123 XI_Add_XSetDeviceValuators_Major = 1, 124 XI_Add_XSetDeviceValuators_Minor = 2 125 } 126 127 enum { 128 XI_Add_XChangeDeviceControl_Major = 1, 129 XI_Add_XChangeDeviceControl_Minor = 3 130 } 131 132 enum { 133 XI_Add_DevicePresenceNotify_Major = 1, 134 XI_Add_DevicePresenceNotify_Minor = 4 135 } 136 137 enum { 138 XI_Add_DeviceProperties_Major = 1, 139 XI_Add_DeviceProperties_Minor = 5 140 } 141 142 enum { 143 DEVICE_RESOLUTION = 1, 144 DEVICE_ABS_CALIB = 2, 145 DEVICE_CORE = 3, 146 DEVICE_ENABLE = 4, 147 DEVICE_ABS_AREA = 5 148 } 149 150 enum NoSuchExtension = 1; 151 152 enum COUNT = 0; 153 enum CREATE = 1; 154 155 enum NewPointer = 0; 156 enum NewKeyboard = 1; 157 158 enum XPOINTER = 0; 159 enum XKEYBOARD = 1; 160 161 enum UseXKeyboard = 0xFF; 162 163 enum { 164 IsXPointer = 0, 165 IsXKeyboard = 1, 166 IsXExtensionDevice = 2, 167 IsXExtensionKeyboard = 3, 168 IsXExtensionPointer = 4 169 } 170 171 enum { 172 AsyncThisDevice = 0, 173 SyncThisDevice = 1, 174 ReplayThisDevice = 2, 175 AsyncOtherDevices = 3, 176 AsyncAll = 4, 177 SyncAll = 5 178 } 179 180 enum : int { 181 FollowKeyboard = 3, 182 RevertToFollowKeyboard = 3 183 } 184 185 enum : c_long { 186 DvAccelNum = (1 << 0), 187 DvAccelDenom = (1 << 1), 188 DvThreshold = (1 << 2), 189 190 DvKeyClickPercent = (1<<0), 191 DvPercent = (1<<1), 192 DvPitch = (1<<2), 193 DvDuration = (1<<3), 194 DvLed = (1<<4), 195 DvLedMode = (1<<5), 196 DvKey = (1<<6), 197 DvAutoRepeatMode = (1<<7), 198 199 DvString = (1 << 0), 200 201 DvInteger = (1 << 0) 202 } 203 204 enum : c_ulong { 205 DeviceMode = (1 << 0), 206 Relative = 0, 207 Absolute = 1 208 } 209 210 enum : c_ulong { 211 ProximityState = (1 << 1), 212 InProximity = (0 << 1), 213 OutOfProximity = (1 << 1) 214 } 215 216 enum AddToList = 0; 217 enum DeleteFromList = 1; 218 219 enum { 220 KeyClass = 0, 221 ButtonClass = 1, 222 ValuatorClass = 2, 223 FeedbackClass = 3, 224 ProximityClass = 4, 225 FocusClass = 5, 226 OtherClass = 6, 227 AttachClass = 7 228 } 229 230 enum { 231 KbdFeedbackClass = 0, 232 PtrFeedbackClass = 1, 233 StringFeedbackClass = 2, 234 IntegerFeedbackClass = 3, 235 LedFeedbackClass = 4, 236 BellFeedbackClass = 5 237 } 238 239 enum { 240 _devicePointerMotionHint = 0, 241 _deviceButton1Motion = 1, 242 _deviceButton2Motion = 2, 243 _deviceButton3Motion = 3, 244 _deviceButton4Motion = 4, 245 _deviceButton5Motion = 5, 246 _deviceButtonMotion = 6, 247 _deviceButtonGrab = 7, 248 _deviceOwnerGrabButton = 8, 249 _noExtensionEvent = 9 250 } 251 252 enum _devicePresence = 0; 253 254 enum _deviceEnter = 0; 255 enum _deviceLeave = 1; 256 257 /* Device presence notify states */ 258 enum { 259 DeviceAdded = 0, 260 DeviceRemoved = 1, 261 DeviceEnabled = 2, 262 DeviceDisabled = 3, 263 DeviceUnrecoverable = 4, 264 DeviceControlChanged = 5 265 } 266 267 /* XI Errors */ 268 enum { 269 XI_BadDevice = 0, 270 XI_BadEvent = 1, 271 XI_BadMode = 2, 272 XI_DeviceBusy = 3, 273 XI_BadClass = 4 274 } 275 276 /* 277 * Make XEventClass be a CARD32 for 64 bit servers. Don't affect client 278 * definition of XEventClass since that would be a library interface change. 279 * See the top of X.h for more _XSERVER64 magic. 280 * 281 * But, don't actually use the CARD32 type. We can't get it defined here 282 * without polluting the namespace. 283 */ 284 version(X86_64){ 285 uint XEventClass; 286 } 287 else{ 288 c_ulong XEventClass; 289 } 290 291 /******************************************************************* 292 * 293 * Extension version structure. 294 * 295 */ 296 297 struct XExtensionVersion{ 298 int present; 299 short major_version; 300 short minor_version; 301 }