1 /* 2 * This file generated automatically from xinput.xml by c_client.py. 3 * Edit at your peril. 4 */ 5 6 #ifdef HAVE_CONFIG_H 7 #include "config.h" 8 #endif 9 #include <stdlib.h> 10 #include <string.h> 11 #include <assert.h> 12 #include <stddef.h> /* for offsetof() */ 13 #include "xcbext.h" 14 #include "xinput.h" 15 16 #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) 17 #include "xfixes.h" 18 19 xcb_extension_t xcb_input_id = { "XInputExtension", 0 }; 20 21 void 22 xcb_input_event_class_next (xcb_input_event_class_iterator_t *i) 23 { 24 --i->rem; 25 ++i->data; 26 i->index += sizeof(xcb_input_event_class_t); 27 } 28 29 xcb_generic_iterator_t 30 xcb_input_event_class_end (xcb_input_event_class_iterator_t i) 31 { 32 xcb_generic_iterator_t ret; 33 ret.data = i.data + i.rem; 34 ret.index = i.index + ((char *) ret.data - (char *) i.data); 35 ret.rem = 0; 36 return ret; 37 } 38 39 void 40 xcb_input_key_code_next (xcb_input_key_code_iterator_t *i) 41 { 42 --i->rem; 43 ++i->data; 44 i->index += sizeof(xcb_input_key_code_t); 45 } 46 47 xcb_generic_iterator_t 48 xcb_input_key_code_end (xcb_input_key_code_iterator_t i) 49 { 50 xcb_generic_iterator_t ret; 51 ret.data = i.data + i.rem; 52 ret.index = i.index + ((char *) ret.data - (char *) i.data); 53 ret.rem = 0; 54 return ret; 55 } 56 57 void 58 xcb_input_device_id_next (xcb_input_device_id_iterator_t *i) 59 { 60 --i->rem; 61 ++i->data; 62 i->index += sizeof(xcb_input_device_id_t); 63 } 64 65 xcb_generic_iterator_t 66 xcb_input_device_id_end (xcb_input_device_id_iterator_t i) 67 { 68 xcb_generic_iterator_t ret; 69 ret.data = i.data + i.rem; 70 ret.index = i.index + ((char *) ret.data - (char *) i.data); 71 ret.rem = 0; 72 return ret; 73 } 74 75 void 76 xcb_input_fp1616_next (xcb_input_fp1616_iterator_t *i) 77 { 78 --i->rem; 79 ++i->data; 80 i->index += sizeof(xcb_input_fp1616_t); 81 } 82 83 xcb_generic_iterator_t 84 xcb_input_fp1616_end (xcb_input_fp1616_iterator_t i) 85 { 86 xcb_generic_iterator_t ret; 87 ret.data = i.data + i.rem; 88 ret.index = i.index + ((char *) ret.data - (char *) i.data); 89 ret.rem = 0; 90 return ret; 91 } 92 93 void 94 xcb_input_fp3232_next (xcb_input_fp3232_iterator_t *i) 95 { 96 --i->rem; 97 ++i->data; 98 i->index += sizeof(xcb_input_fp3232_t); 99 } 100 101 xcb_generic_iterator_t 102 xcb_input_fp3232_end (xcb_input_fp3232_iterator_t i) 103 { 104 xcb_generic_iterator_t ret; 105 ret.data = i.data + i.rem; 106 ret.index = i.index + ((char *) ret.data - (char *) i.data); 107 ret.rem = 0; 108 return ret; 109 } 110 111 int 112 xcb_input_get_extension_version_sizeof (const void *_buffer) 113 { 114 char *xcb_tmp = (char *)_buffer; 115 const xcb_input_get_extension_version_request_t *_aux = (xcb_input_get_extension_version_request_t *)_buffer; 116 unsigned int xcb_buffer_len = 0; 117 unsigned int xcb_block_len = 0; 118 unsigned int xcb_pad = 0; 119 unsigned int xcb_align_to = 0; 120 121 122 xcb_block_len += sizeof(xcb_input_get_extension_version_request_t); 123 xcb_tmp += xcb_block_len; 124 xcb_buffer_len += xcb_block_len; 125 xcb_block_len = 0; 126 /* name */ 127 xcb_block_len += _aux->name_len * sizeof(char); 128 xcb_tmp += xcb_block_len; 129 xcb_align_to = ALIGNOF(char); 130 /* insert padding */ 131 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 132 xcb_buffer_len += xcb_block_len + xcb_pad; 133 if (0 != xcb_pad) { 134 xcb_tmp += xcb_pad; 135 xcb_pad = 0; 136 } 137 xcb_block_len = 0; 138 139 return xcb_buffer_len; 140 } 141 142 xcb_input_get_extension_version_cookie_t 143 xcb_input_get_extension_version (xcb_connection_t *c, 144 uint16_t name_len, 145 const char *name) 146 { 147 static const xcb_protocol_request_t xcb_req = { 148 .count = 4, 149 .ext = &xcb_input_id, 150 .opcode = XCB_INPUT_GET_EXTENSION_VERSION, 151 .isvoid = 0 152 }; 153 154 struct iovec xcb_parts[6]; 155 xcb_input_get_extension_version_cookie_t xcb_ret; 156 xcb_input_get_extension_version_request_t xcb_out; 157 158 xcb_out.name_len = name_len; 159 memset(xcb_out.pad0, 0, 2); 160 161 xcb_parts[2].iov_base = (char *) &xcb_out; 162 xcb_parts[2].iov_len = sizeof(xcb_out); 163 xcb_parts[3].iov_base = 0; 164 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 165 /* char name */ 166 xcb_parts[4].iov_base = (char *) name; 167 xcb_parts[4].iov_len = name_len * sizeof(char); 168 xcb_parts[5].iov_base = 0; 169 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 170 171 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 172 return xcb_ret; 173 } 174 175 xcb_input_get_extension_version_cookie_t 176 xcb_input_get_extension_version_unchecked (xcb_connection_t *c, 177 uint16_t name_len, 178 const char *name) 179 { 180 static const xcb_protocol_request_t xcb_req = { 181 .count = 4, 182 .ext = &xcb_input_id, 183 .opcode = XCB_INPUT_GET_EXTENSION_VERSION, 184 .isvoid = 0 185 }; 186 187 struct iovec xcb_parts[6]; 188 xcb_input_get_extension_version_cookie_t xcb_ret; 189 xcb_input_get_extension_version_request_t xcb_out; 190 191 xcb_out.name_len = name_len; 192 memset(xcb_out.pad0, 0, 2); 193 194 xcb_parts[2].iov_base = (char *) &xcb_out; 195 xcb_parts[2].iov_len = sizeof(xcb_out); 196 xcb_parts[3].iov_base = 0; 197 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 198 /* char name */ 199 xcb_parts[4].iov_base = (char *) name; 200 xcb_parts[4].iov_len = name_len * sizeof(char); 201 xcb_parts[5].iov_base = 0; 202 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 203 204 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 205 return xcb_ret; 206 } 207 208 xcb_input_get_extension_version_reply_t * 209 xcb_input_get_extension_version_reply (xcb_connection_t *c, 210 xcb_input_get_extension_version_cookie_t cookie /**< */, 211 xcb_generic_error_t **e) 212 { 213 return (xcb_input_get_extension_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 214 } 215 216 void 217 xcb_input_device_info_next (xcb_input_device_info_iterator_t *i) 218 { 219 --i->rem; 220 ++i->data; 221 i->index += sizeof(xcb_input_device_info_t); 222 } 223 224 xcb_generic_iterator_t 225 xcb_input_device_info_end (xcb_input_device_info_iterator_t i) 226 { 227 xcb_generic_iterator_t ret; 228 ret.data = i.data + i.rem; 229 ret.index = i.index + ((char *) ret.data - (char *) i.data); 230 ret.rem = 0; 231 return ret; 232 } 233 234 void 235 xcb_input_key_info_next (xcb_input_key_info_iterator_t *i) 236 { 237 --i->rem; 238 ++i->data; 239 i->index += sizeof(xcb_input_key_info_t); 240 } 241 242 xcb_generic_iterator_t 243 xcb_input_key_info_end (xcb_input_key_info_iterator_t i) 244 { 245 xcb_generic_iterator_t ret; 246 ret.data = i.data + i.rem; 247 ret.index = i.index + ((char *) ret.data - (char *) i.data); 248 ret.rem = 0; 249 return ret; 250 } 251 252 void 253 xcb_input_button_info_next (xcb_input_button_info_iterator_t *i) 254 { 255 --i->rem; 256 ++i->data; 257 i->index += sizeof(xcb_input_button_info_t); 258 } 259 260 xcb_generic_iterator_t 261 xcb_input_button_info_end (xcb_input_button_info_iterator_t i) 262 { 263 xcb_generic_iterator_t ret; 264 ret.data = i.data + i.rem; 265 ret.index = i.index + ((char *) ret.data - (char *) i.data); 266 ret.rem = 0; 267 return ret; 268 } 269 270 void 271 xcb_input_axis_info_next (xcb_input_axis_info_iterator_t *i) 272 { 273 --i->rem; 274 ++i->data; 275 i->index += sizeof(xcb_input_axis_info_t); 276 } 277 278 xcb_generic_iterator_t 279 xcb_input_axis_info_end (xcb_input_axis_info_iterator_t i) 280 { 281 xcb_generic_iterator_t ret; 282 ret.data = i.data + i.rem; 283 ret.index = i.index + ((char *) ret.data - (char *) i.data); 284 ret.rem = 0; 285 return ret; 286 } 287 288 int 289 xcb_input_valuator_info_sizeof (const void *_buffer) 290 { 291 char *xcb_tmp = (char *)_buffer; 292 const xcb_input_valuator_info_t *_aux = (xcb_input_valuator_info_t *)_buffer; 293 unsigned int xcb_buffer_len = 0; 294 unsigned int xcb_block_len = 0; 295 unsigned int xcb_pad = 0; 296 unsigned int xcb_align_to = 0; 297 298 299 xcb_block_len += sizeof(xcb_input_valuator_info_t); 300 xcb_tmp += xcb_block_len; 301 xcb_buffer_len += xcb_block_len; 302 xcb_block_len = 0; 303 /* axes */ 304 xcb_block_len += _aux->axes_len * sizeof(xcb_input_axis_info_t); 305 xcb_tmp += xcb_block_len; 306 xcb_align_to = ALIGNOF(xcb_input_axis_info_t); 307 /* insert padding */ 308 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 309 xcb_buffer_len += xcb_block_len + xcb_pad; 310 if (0 != xcb_pad) { 311 xcb_tmp += xcb_pad; 312 xcb_pad = 0; 313 } 314 xcb_block_len = 0; 315 316 return xcb_buffer_len; 317 } 318 319 xcb_input_axis_info_t * 320 xcb_input_valuator_info_axes (const xcb_input_valuator_info_t *R) 321 { 322 return (xcb_input_axis_info_t *) (R + 1); 323 } 324 325 int 326 xcb_input_valuator_info_axes_length (const xcb_input_valuator_info_t *R) 327 { 328 return R->axes_len; 329 } 330 331 xcb_input_axis_info_iterator_t 332 xcb_input_valuator_info_axes_iterator (const xcb_input_valuator_info_t *R) 333 { 334 xcb_input_axis_info_iterator_t i; 335 i.data = (xcb_input_axis_info_t *) (R + 1); 336 i.rem = R->axes_len; 337 i.index = (char *) i.data - (char *) R; 338 return i; 339 } 340 341 void 342 xcb_input_valuator_info_next (xcb_input_valuator_info_iterator_t *i) 343 { 344 xcb_input_valuator_info_t *R = i->data; 345 xcb_generic_iterator_t child; 346 child.data = (xcb_input_valuator_info_t *)(((char *)R) + xcb_input_valuator_info_sizeof(R)); 347 i->index = (char *) child.data - (char *) i->data; 348 --i->rem; 349 i->data = (xcb_input_valuator_info_t *) child.data; 350 } 351 352 xcb_generic_iterator_t 353 xcb_input_valuator_info_end (xcb_input_valuator_info_iterator_t i) 354 { 355 xcb_generic_iterator_t ret; 356 while(i.rem > 0) 357 xcb_input_valuator_info_next(&i); 358 ret.data = i.data; 359 ret.rem = i.rem; 360 ret.index = i.index; 361 return ret; 362 } 363 364 xcb_input_axis_info_t * 365 xcb_input_input_info_info_valuator_axes (const xcb_input_input_info_info_t *S) 366 { 367 return S->valuator.axes; 368 } 369 370 int 371 xcb_input_input_info_info_valuator_axes_length (const xcb_input_input_info_t *R, 372 const xcb_input_input_info_info_t *S) 373 { 374 return S->valuator.axes_len; 375 } 376 377 xcb_input_axis_info_iterator_t 378 xcb_input_input_info_info_valuator_axes_iterator (const xcb_input_input_info_t *R, 379 const xcb_input_input_info_info_t *S) 380 { 381 xcb_input_axis_info_iterator_t i; 382 i.data = S->valuator.axes; 383 i.rem = S->valuator.axes_len; 384 i.index = (char *) i.data - (char *) S; 385 return i; 386 } 387 388 int 389 xcb_input_input_info_info_serialize (void **_buffer, 390 uint8_t class_id, 391 const xcb_input_input_info_info_t *_aux) 392 { 393 char *xcb_out = *_buffer; 394 unsigned int xcb_buffer_len = 0; 395 unsigned int xcb_align_to = 0; 396 unsigned int xcb_padding_offset = 2; 397 398 unsigned int xcb_pad = 0; 399 char xcb_pad0[3] = {0, 0, 0}; 400 struct iovec xcb_parts[11]; 401 unsigned int xcb_parts_idx = 0; 402 unsigned int xcb_block_len = 0; 403 unsigned int i; 404 char *xcb_tmp; 405 406 if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { 407 /* xcb_input_input_info_info_t.key.min_keycode */ 408 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.min_keycode; 409 xcb_block_len += sizeof(xcb_input_key_code_t); 410 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_key_code_t); 411 xcb_parts_idx++; 412 xcb_align_to = ALIGNOF(xcb_input_key_code_t); 413 /* xcb_input_input_info_info_t.key.max_keycode */ 414 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.max_keycode; 415 xcb_block_len += sizeof(xcb_input_key_code_t); 416 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_key_code_t); 417 xcb_parts_idx++; 418 xcb_align_to = ALIGNOF(xcb_input_key_code_t); 419 /* xcb_input_input_info_info_t.key.num_keys */ 420 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.num_keys; 421 xcb_block_len += sizeof(uint16_t); 422 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 423 xcb_parts_idx++; 424 xcb_align_to = ALIGNOF(uint16_t); 425 /* xcb_input_input_info_info_t.key.pad0 */ 426 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 427 xcb_block_len += sizeof(uint8_t)*2; 428 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 429 xcb_parts_idx++; 430 xcb_align_to = ALIGNOF(uint8_t); 431 } 432 if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { 433 /* xcb_input_input_info_info_t.button.num_buttons */ 434 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->button.num_buttons; 435 xcb_block_len += sizeof(uint16_t); 436 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 437 xcb_parts_idx++; 438 xcb_align_to = ALIGNOF(uint16_t); 439 } 440 if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { 441 /* xcb_input_input_info_info_t.valuator.axes_len */ 442 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.axes_len; 443 xcb_block_len += sizeof(uint8_t); 444 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 445 xcb_parts_idx++; 446 xcb_align_to = ALIGNOF(uint8_t); 447 /* xcb_input_input_info_info_t.valuator.mode */ 448 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.mode; 449 xcb_block_len += sizeof(uint8_t); 450 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 451 xcb_parts_idx++; 452 xcb_align_to = ALIGNOF(uint8_t); 453 /* xcb_input_input_info_info_t.valuator.motion_size */ 454 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.motion_size; 455 xcb_block_len += sizeof(uint32_t); 456 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 457 xcb_parts_idx++; 458 xcb_align_to = ALIGNOF(uint32_t); 459 /* insert padding */ 460 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 461 xcb_buffer_len += xcb_block_len + xcb_pad; 462 if (0 != xcb_pad) { 463 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 464 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 465 xcb_parts_idx++; 466 xcb_pad = 0; 467 } 468 xcb_block_len = 0; 469 xcb_padding_offset = 0; 470 /* axes */ 471 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->valuator.axes; 472 xcb_block_len += _aux->valuator.axes_len * sizeof(xcb_input_axis_info_t); 473 xcb_parts[xcb_parts_idx].iov_len = _aux->valuator.axes_len * sizeof(xcb_input_axis_info_t); 474 xcb_parts_idx++; 475 xcb_align_to = ALIGNOF(xcb_input_axis_info_t); 476 } 477 /* insert padding */ 478 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 479 xcb_buffer_len += xcb_block_len + xcb_pad; 480 if (0 != xcb_pad) { 481 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 482 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 483 xcb_parts_idx++; 484 xcb_pad = 0; 485 } 486 xcb_block_len = 0; 487 xcb_padding_offset = 0; 488 489 if (NULL == xcb_out) { 490 /* allocate memory */ 491 xcb_out = malloc(xcb_buffer_len); 492 *_buffer = xcb_out; 493 } 494 495 xcb_tmp = xcb_out; 496 for(i=0; i<xcb_parts_idx; i++) { 497 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 498 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 499 if (0 != xcb_parts[i].iov_len) 500 xcb_tmp += xcb_parts[i].iov_len; 501 } 502 503 return xcb_buffer_len; 504 } 505 506 int 507 xcb_input_input_info_info_unpack (const void *_buffer, 508 uint8_t class_id, 509 xcb_input_input_info_info_t *_aux) 510 { 511 char *xcb_tmp = (char *)_buffer; 512 unsigned int xcb_buffer_len = 0; 513 unsigned int xcb_block_len = 0; 514 unsigned int xcb_pad = 0; 515 unsigned int xcb_align_to = 0; 516 unsigned int xcb_padding_offset = 2; 517 518 519 if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { 520 /* xcb_input_input_info_info_t.key.min_keycode */ 521 _aux->key.min_keycode = *(xcb_input_key_code_t *)xcb_tmp; 522 xcb_block_len += sizeof(xcb_input_key_code_t); 523 xcb_tmp += sizeof(xcb_input_key_code_t); 524 xcb_align_to = ALIGNOF(xcb_input_key_code_t); 525 /* xcb_input_input_info_info_t.key.max_keycode */ 526 _aux->key.max_keycode = *(xcb_input_key_code_t *)xcb_tmp; 527 xcb_block_len += sizeof(xcb_input_key_code_t); 528 xcb_tmp += sizeof(xcb_input_key_code_t); 529 xcb_align_to = ALIGNOF(xcb_input_key_code_t); 530 /* xcb_input_input_info_info_t.key.num_keys */ 531 _aux->key.num_keys = *(uint16_t *)xcb_tmp; 532 xcb_block_len += sizeof(uint16_t); 533 xcb_tmp += sizeof(uint16_t); 534 xcb_align_to = ALIGNOF(uint16_t); 535 /* xcb_input_input_info_info_t.key.pad0 */ 536 _aux->key.pad0[0] = *(uint8_t *)xcb_tmp; 537 _aux->key.pad0[1] = *(uint8_t *)xcb_tmp; 538 xcb_block_len += sizeof(uint8_t) * 2; 539 xcb_tmp += sizeof(uint8_t) * 2; 540 xcb_align_to = ALIGNOF(uint8_t); 541 } 542 if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { 543 /* xcb_input_input_info_info_t.button.num_buttons */ 544 _aux->button.num_buttons = *(uint16_t *)xcb_tmp; 545 xcb_block_len += sizeof(uint16_t); 546 xcb_tmp += sizeof(uint16_t); 547 xcb_align_to = ALIGNOF(uint16_t); 548 } 549 if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { 550 /* xcb_input_input_info_info_t.valuator.axes_len */ 551 _aux->valuator.axes_len = *(uint8_t *)xcb_tmp; 552 xcb_block_len += sizeof(uint8_t); 553 xcb_tmp += sizeof(uint8_t); 554 xcb_align_to = ALIGNOF(uint8_t); 555 /* xcb_input_input_info_info_t.valuator.mode */ 556 _aux->valuator.mode = *(uint8_t *)xcb_tmp; 557 xcb_block_len += sizeof(uint8_t); 558 xcb_tmp += sizeof(uint8_t); 559 xcb_align_to = ALIGNOF(uint8_t); 560 /* xcb_input_input_info_info_t.valuator.motion_size */ 561 _aux->valuator.motion_size = *(uint32_t *)xcb_tmp; 562 xcb_block_len += sizeof(uint32_t); 563 xcb_tmp += sizeof(uint32_t); 564 xcb_align_to = ALIGNOF(uint32_t); 565 /* insert padding */ 566 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 567 xcb_buffer_len += xcb_block_len + xcb_pad; 568 if (0 != xcb_pad) { 569 xcb_tmp += xcb_pad; 570 xcb_pad = 0; 571 } 572 xcb_block_len = 0; 573 xcb_padding_offset = 0; 574 /* axes */ 575 _aux->valuator.axes = (xcb_input_axis_info_t *)xcb_tmp; 576 xcb_block_len += _aux->valuator.axes_len * sizeof(xcb_input_axis_info_t); 577 xcb_tmp += xcb_block_len; 578 xcb_align_to = ALIGNOF(xcb_input_axis_info_t); 579 } 580 /* insert padding */ 581 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 582 xcb_buffer_len += xcb_block_len + xcb_pad; 583 if (0 != xcb_pad) { 584 xcb_tmp += xcb_pad; 585 xcb_pad = 0; 586 } 587 xcb_block_len = 0; 588 xcb_padding_offset = 0; 589 590 return xcb_buffer_len; 591 } 592 593 int 594 xcb_input_input_info_info_sizeof (const void *_buffer, 595 uint8_t class_id) 596 { 597 xcb_input_input_info_info_t _aux; 598 return xcb_input_input_info_info_unpack(_buffer, class_id, &_aux); 599 } 600 601 int 602 xcb_input_input_info_sizeof (const void *_buffer) 603 { 604 char *xcb_tmp = (char *)_buffer; 605 const xcb_input_input_info_t *_aux = (xcb_input_input_info_t *)_buffer; 606 unsigned int xcb_buffer_len = 0; 607 unsigned int xcb_block_len = 0; 608 unsigned int xcb_pad = 0; 609 unsigned int xcb_align_to = 0; 610 611 612 xcb_block_len += sizeof(xcb_input_input_info_t); 613 xcb_tmp += xcb_block_len; 614 xcb_buffer_len += xcb_block_len; 615 xcb_block_len = 0; 616 /* info */ 617 xcb_block_len += xcb_input_input_info_info_sizeof(xcb_tmp, _aux->class_id); 618 xcb_tmp += xcb_block_len; 619 xcb_align_to = ALIGNOF(char); 620 /* insert padding */ 621 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 622 xcb_buffer_len += xcb_block_len + xcb_pad; 623 if (0 != xcb_pad) { 624 xcb_tmp += xcb_pad; 625 xcb_pad = 0; 626 } 627 xcb_block_len = 0; 628 629 return xcb_buffer_len; 630 } 631 632 void * 633 xcb_input_input_info_info (const xcb_input_input_info_t *R) 634 { 635 return (void *) (R + 1); 636 } 637 638 void 639 xcb_input_input_info_next (xcb_input_input_info_iterator_t *i) 640 { 641 xcb_input_input_info_t *R = i->data; 642 xcb_generic_iterator_t child; 643 child.data = (xcb_input_input_info_t *)(((char *)R) + xcb_input_input_info_sizeof(R)); 644 i->index = (char *) child.data - (char *) i->data; 645 --i->rem; 646 i->data = (xcb_input_input_info_t *) child.data; 647 } 648 649 xcb_generic_iterator_t 650 xcb_input_input_info_end (xcb_input_input_info_iterator_t i) 651 { 652 xcb_generic_iterator_t ret; 653 while(i.rem > 0) 654 xcb_input_input_info_next(&i); 655 ret.data = i.data; 656 ret.rem = i.rem; 657 ret.index = i.index; 658 return ret; 659 } 660 661 int 662 xcb_input_device_name_sizeof (const void *_buffer) 663 { 664 char *xcb_tmp = (char *)_buffer; 665 const xcb_input_device_name_t *_aux = (xcb_input_device_name_t *)_buffer; 666 unsigned int xcb_buffer_len = 0; 667 unsigned int xcb_block_len = 0; 668 unsigned int xcb_pad = 0; 669 unsigned int xcb_align_to = 0; 670 671 672 xcb_block_len += sizeof(xcb_input_device_name_t); 673 xcb_tmp += xcb_block_len; 674 xcb_buffer_len += xcb_block_len; 675 xcb_block_len = 0; 676 /* string */ 677 xcb_block_len += _aux->len * sizeof(char); 678 xcb_tmp += xcb_block_len; 679 xcb_align_to = ALIGNOF(char); 680 /* insert padding */ 681 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 682 xcb_buffer_len += xcb_block_len + xcb_pad; 683 if (0 != xcb_pad) { 684 xcb_tmp += xcb_pad; 685 xcb_pad = 0; 686 } 687 xcb_block_len = 0; 688 689 return xcb_buffer_len; 690 } 691 692 char * 693 xcb_input_device_name_string (const xcb_input_device_name_t *R) 694 { 695 return (char *) (R + 1); 696 } 697 698 int 699 xcb_input_device_name_string_length (const xcb_input_device_name_t *R) 700 { 701 return R->len; 702 } 703 704 xcb_generic_iterator_t 705 xcb_input_device_name_string_end (const xcb_input_device_name_t *R) 706 { 707 xcb_generic_iterator_t i; 708 i.data = ((char *) (R + 1)) + (R->len); 709 i.rem = 0; 710 i.index = (char *) i.data - (char *) R; 711 return i; 712 } 713 714 void 715 xcb_input_device_name_next (xcb_input_device_name_iterator_t *i) 716 { 717 xcb_input_device_name_t *R = i->data; 718 xcb_generic_iterator_t child; 719 child.data = (xcb_input_device_name_t *)(((char *)R) + xcb_input_device_name_sizeof(R)); 720 i->index = (char *) child.data - (char *) i->data; 721 --i->rem; 722 i->data = (xcb_input_device_name_t *) child.data; 723 } 724 725 xcb_generic_iterator_t 726 xcb_input_device_name_end (xcb_input_device_name_iterator_t i) 727 { 728 xcb_generic_iterator_t ret; 729 while(i.rem > 0) 730 xcb_input_device_name_next(&i); 731 ret.data = i.data; 732 ret.rem = i.rem; 733 ret.index = i.index; 734 return ret; 735 } 736 737 int 738 xcb_input_list_input_devices_sizeof (const void *_buffer) 739 { 740 char *xcb_tmp = (char *)_buffer; 741 const xcb_input_list_input_devices_reply_t *_aux = (xcb_input_list_input_devices_reply_t *)_buffer; 742 unsigned int xcb_buffer_len = 0; 743 unsigned int xcb_block_len = 0; 744 unsigned int xcb_pad = 0; 745 unsigned int xcb_align_to = 0; 746 747 int xcb_pre_tmp_1; /* sumof length */ 748 int xcb_pre_tmp_2; /* sumof loop counter */ 749 int64_t xcb_pre_tmp_3; /* sumof sum */ 750 const xcb_input_device_info_t* xcb_pre_tmp_4; /* sumof list ptr */ 751 unsigned int i; 752 unsigned int xcb_tmp_len; 753 754 xcb_block_len += sizeof(xcb_input_list_input_devices_reply_t); 755 xcb_tmp += xcb_block_len; 756 xcb_buffer_len += xcb_block_len; 757 xcb_block_len = 0; 758 /* devices */ 759 xcb_block_len += _aux->devices_len * sizeof(xcb_input_device_info_t); 760 xcb_tmp += xcb_block_len; 761 xcb_align_to = ALIGNOF(xcb_input_device_info_t); 762 /* insert padding */ 763 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 764 xcb_buffer_len += xcb_block_len + xcb_pad; 765 if (0 != xcb_pad) { 766 xcb_tmp += xcb_pad; 767 xcb_pad = 0; 768 } 769 xcb_block_len = 0; 770 /* infos */ 771 /* sumof start */ 772 xcb_pre_tmp_1 = _aux->devices_len; 773 xcb_pre_tmp_3 = 0; 774 xcb_pre_tmp_4 = xcb_input_list_input_devices_devices(_aux); 775 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 776 xcb_pre_tmp_3 += xcb_pre_tmp_4->num_class_info; 777 xcb_pre_tmp_4++; 778 } 779 /* sumof end. Result is in xcb_pre_tmp_3 */ 780 for(i=0; i<xcb_pre_tmp_3; i++) { 781 xcb_tmp_len = xcb_input_input_info_sizeof(xcb_tmp); 782 xcb_block_len += xcb_tmp_len; 783 xcb_tmp += xcb_tmp_len; 784 } 785 xcb_align_to = ALIGNOF(xcb_input_input_info_t); 786 /* insert padding */ 787 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 788 xcb_buffer_len += xcb_block_len + xcb_pad; 789 if (0 != xcb_pad) { 790 xcb_tmp += xcb_pad; 791 xcb_pad = 0; 792 } 793 xcb_block_len = 0; 794 /* names */ 795 for(i=0; i<_aux->devices_len; i++) { 796 xcb_tmp_len = xcb_str_sizeof(xcb_tmp); 797 xcb_block_len += xcb_tmp_len; 798 xcb_tmp += xcb_tmp_len; 799 } 800 xcb_align_to = ALIGNOF(xcb_str_t); 801 xcb_align_to = 4; 802 /* insert padding */ 803 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 804 xcb_buffer_len += xcb_block_len + xcb_pad; 805 if (0 != xcb_pad) { 806 xcb_tmp += xcb_pad; 807 xcb_pad = 0; 808 } 809 xcb_block_len = 0; 810 /* insert padding */ 811 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 812 xcb_buffer_len += xcb_block_len + xcb_pad; 813 if (0 != xcb_pad) { 814 xcb_tmp += xcb_pad; 815 xcb_pad = 0; 816 } 817 xcb_block_len = 0; 818 819 return xcb_buffer_len; 820 } 821 822 xcb_input_list_input_devices_cookie_t 823 xcb_input_list_input_devices (xcb_connection_t *c) 824 { 825 static const xcb_protocol_request_t xcb_req = { 826 .count = 2, 827 .ext = &xcb_input_id, 828 .opcode = XCB_INPUT_LIST_INPUT_DEVICES, 829 .isvoid = 0 830 }; 831 832 struct iovec xcb_parts[4]; 833 xcb_input_list_input_devices_cookie_t xcb_ret; 834 xcb_input_list_input_devices_request_t xcb_out; 835 836 837 xcb_parts[2].iov_base = (char *) &xcb_out; 838 xcb_parts[2].iov_len = sizeof(xcb_out); 839 xcb_parts[3].iov_base = 0; 840 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 841 842 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 843 return xcb_ret; 844 } 845 846 xcb_input_list_input_devices_cookie_t 847 xcb_input_list_input_devices_unchecked (xcb_connection_t *c) 848 { 849 static const xcb_protocol_request_t xcb_req = { 850 .count = 2, 851 .ext = &xcb_input_id, 852 .opcode = XCB_INPUT_LIST_INPUT_DEVICES, 853 .isvoid = 0 854 }; 855 856 struct iovec xcb_parts[4]; 857 xcb_input_list_input_devices_cookie_t xcb_ret; 858 xcb_input_list_input_devices_request_t xcb_out; 859 860 861 xcb_parts[2].iov_base = (char *) &xcb_out; 862 xcb_parts[2].iov_len = sizeof(xcb_out); 863 xcb_parts[3].iov_base = 0; 864 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 865 866 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 867 return xcb_ret; 868 } 869 870 xcb_input_device_info_t * 871 xcb_input_list_input_devices_devices (const xcb_input_list_input_devices_reply_t *R) 872 { 873 return (xcb_input_device_info_t *) (R + 1); 874 } 875 876 int 877 xcb_input_list_input_devices_devices_length (const xcb_input_list_input_devices_reply_t *R) 878 { 879 return R->devices_len; 880 } 881 882 xcb_input_device_info_iterator_t 883 xcb_input_list_input_devices_devices_iterator (const xcb_input_list_input_devices_reply_t *R) 884 { 885 xcb_input_device_info_iterator_t i; 886 i.data = (xcb_input_device_info_t *) (R + 1); 887 i.rem = R->devices_len; 888 i.index = (char *) i.data - (char *) R; 889 return i; 890 } 891 892 int 893 xcb_input_list_input_devices_infos_length (const xcb_input_list_input_devices_reply_t *R) 894 { 895 int xcb_pre_tmp_5; /* sumof length */ 896 int xcb_pre_tmp_6; /* sumof loop counter */ 897 int64_t xcb_pre_tmp_7; /* sumof sum */ 898 const xcb_input_device_info_t* xcb_pre_tmp_8; /* sumof list ptr */ 899 /* sumof start */ 900 xcb_pre_tmp_5 = R->devices_len; 901 xcb_pre_tmp_7 = 0; 902 xcb_pre_tmp_8 = xcb_input_list_input_devices_devices(R); 903 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 904 xcb_pre_tmp_7 += xcb_pre_tmp_8->num_class_info; 905 xcb_pre_tmp_8++; 906 } 907 /* sumof end. Result is in xcb_pre_tmp_7 */ 908 return xcb_pre_tmp_7; 909 } 910 911 xcb_input_input_info_iterator_t 912 xcb_input_list_input_devices_infos_iterator (const xcb_input_list_input_devices_reply_t *R) 913 { 914 xcb_input_input_info_iterator_t i; 915 xcb_generic_iterator_t prev = xcb_input_device_info_end(xcb_input_list_input_devices_devices_iterator(R)); 916 int xcb_pre_tmp_9; /* sumof length */ 917 int xcb_pre_tmp_10; /* sumof loop counter */ 918 int64_t xcb_pre_tmp_11; /* sumof sum */ 919 const xcb_input_device_info_t* xcb_pre_tmp_12; /* sumof list ptr */ 920 /* sumof start */ 921 xcb_pre_tmp_9 = R->devices_len; 922 xcb_pre_tmp_11 = 0; 923 xcb_pre_tmp_12 = xcb_input_list_input_devices_devices(R); 924 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 925 xcb_pre_tmp_11 += xcb_pre_tmp_12->num_class_info; 926 xcb_pre_tmp_12++; 927 } 928 /* sumof end. Result is in xcb_pre_tmp_11 */ 929 i.data = (xcb_input_input_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_input_info_t, prev.index)); 930 i.rem = xcb_pre_tmp_11; 931 i.index = (char *) i.data - (char *) R; 932 return i; 933 } 934 935 int 936 xcb_input_list_input_devices_names_length (const xcb_input_list_input_devices_reply_t *R) 937 { 938 return R->devices_len; 939 } 940 941 xcb_str_iterator_t 942 xcb_input_list_input_devices_names_iterator (const xcb_input_list_input_devices_reply_t *R) 943 { 944 xcb_str_iterator_t i; 945 xcb_generic_iterator_t prev = xcb_input_input_info_end(xcb_input_list_input_devices_infos_iterator(R)); 946 i.data = (xcb_str_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_str_t, prev.index)); 947 i.rem = R->devices_len; 948 i.index = (char *) i.data - (char *) R; 949 return i; 950 } 951 952 xcb_input_list_input_devices_reply_t * 953 xcb_input_list_input_devices_reply (xcb_connection_t *c, 954 xcb_input_list_input_devices_cookie_t cookie /**< */, 955 xcb_generic_error_t **e) 956 { 957 return (xcb_input_list_input_devices_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 958 } 959 960 void 961 xcb_input_input_class_info_next (xcb_input_input_class_info_iterator_t *i) 962 { 963 --i->rem; 964 ++i->data; 965 i->index += sizeof(xcb_input_input_class_info_t); 966 } 967 968 xcb_generic_iterator_t 969 xcb_input_input_class_info_end (xcb_input_input_class_info_iterator_t i) 970 { 971 xcb_generic_iterator_t ret; 972 ret.data = i.data + i.rem; 973 ret.index = i.index + ((char *) ret.data - (char *) i.data); 974 ret.rem = 0; 975 return ret; 976 } 977 978 int 979 xcb_input_open_device_sizeof (const void *_buffer) 980 { 981 char *xcb_tmp = (char *)_buffer; 982 const xcb_input_open_device_reply_t *_aux = (xcb_input_open_device_reply_t *)_buffer; 983 unsigned int xcb_buffer_len = 0; 984 unsigned int xcb_block_len = 0; 985 unsigned int xcb_pad = 0; 986 unsigned int xcb_align_to = 0; 987 988 989 xcb_block_len += sizeof(xcb_input_open_device_reply_t); 990 xcb_tmp += xcb_block_len; 991 xcb_buffer_len += xcb_block_len; 992 xcb_block_len = 0; 993 /* class_info */ 994 xcb_block_len += _aux->num_classes * sizeof(xcb_input_input_class_info_t); 995 xcb_tmp += xcb_block_len; 996 xcb_align_to = ALIGNOF(xcb_input_input_class_info_t); 997 xcb_align_to = 4; 998 /* insert padding */ 999 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1000 xcb_buffer_len += xcb_block_len + xcb_pad; 1001 if (0 != xcb_pad) { 1002 xcb_tmp += xcb_pad; 1003 xcb_pad = 0; 1004 } 1005 xcb_block_len = 0; 1006 /* insert padding */ 1007 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1008 xcb_buffer_len += xcb_block_len + xcb_pad; 1009 if (0 != xcb_pad) { 1010 xcb_tmp += xcb_pad; 1011 xcb_pad = 0; 1012 } 1013 xcb_block_len = 0; 1014 1015 return xcb_buffer_len; 1016 } 1017 1018 xcb_input_open_device_cookie_t 1019 xcb_input_open_device (xcb_connection_t *c, 1020 uint8_t device_id) 1021 { 1022 static const xcb_protocol_request_t xcb_req = { 1023 .count = 2, 1024 .ext = &xcb_input_id, 1025 .opcode = XCB_INPUT_OPEN_DEVICE, 1026 .isvoid = 0 1027 }; 1028 1029 struct iovec xcb_parts[4]; 1030 xcb_input_open_device_cookie_t xcb_ret; 1031 xcb_input_open_device_request_t xcb_out; 1032 1033 xcb_out.device_id = device_id; 1034 memset(xcb_out.pad0, 0, 3); 1035 1036 xcb_parts[2].iov_base = (char *) &xcb_out; 1037 xcb_parts[2].iov_len = sizeof(xcb_out); 1038 xcb_parts[3].iov_base = 0; 1039 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1040 1041 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1042 return xcb_ret; 1043 } 1044 1045 xcb_input_open_device_cookie_t 1046 xcb_input_open_device_unchecked (xcb_connection_t *c, 1047 uint8_t device_id) 1048 { 1049 static const xcb_protocol_request_t xcb_req = { 1050 .count = 2, 1051 .ext = &xcb_input_id, 1052 .opcode = XCB_INPUT_OPEN_DEVICE, 1053 .isvoid = 0 1054 }; 1055 1056 struct iovec xcb_parts[4]; 1057 xcb_input_open_device_cookie_t xcb_ret; 1058 xcb_input_open_device_request_t xcb_out; 1059 1060 xcb_out.device_id = device_id; 1061 memset(xcb_out.pad0, 0, 3); 1062 1063 xcb_parts[2].iov_base = (char *) &xcb_out; 1064 xcb_parts[2].iov_len = sizeof(xcb_out); 1065 xcb_parts[3].iov_base = 0; 1066 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1067 1068 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1069 return xcb_ret; 1070 } 1071 1072 xcb_input_input_class_info_t * 1073 xcb_input_open_device_class_info (const xcb_input_open_device_reply_t *R) 1074 { 1075 return (xcb_input_input_class_info_t *) (R + 1); 1076 } 1077 1078 int 1079 xcb_input_open_device_class_info_length (const xcb_input_open_device_reply_t *R) 1080 { 1081 return R->num_classes; 1082 } 1083 1084 xcb_input_input_class_info_iterator_t 1085 xcb_input_open_device_class_info_iterator (const xcb_input_open_device_reply_t *R) 1086 { 1087 xcb_input_input_class_info_iterator_t i; 1088 i.data = (xcb_input_input_class_info_t *) (R + 1); 1089 i.rem = R->num_classes; 1090 i.index = (char *) i.data - (char *) R; 1091 return i; 1092 } 1093 1094 xcb_input_open_device_reply_t * 1095 xcb_input_open_device_reply (xcb_connection_t *c, 1096 xcb_input_open_device_cookie_t cookie /**< */, 1097 xcb_generic_error_t **e) 1098 { 1099 return (xcb_input_open_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1100 } 1101 1102 xcb_void_cookie_t 1103 xcb_input_close_device_checked (xcb_connection_t *c, 1104 uint8_t device_id) 1105 { 1106 static const xcb_protocol_request_t xcb_req = { 1107 .count = 2, 1108 .ext = &xcb_input_id, 1109 .opcode = XCB_INPUT_CLOSE_DEVICE, 1110 .isvoid = 1 1111 }; 1112 1113 struct iovec xcb_parts[4]; 1114 xcb_void_cookie_t xcb_ret; 1115 xcb_input_close_device_request_t xcb_out; 1116 1117 xcb_out.device_id = device_id; 1118 memset(xcb_out.pad0, 0, 3); 1119 1120 xcb_parts[2].iov_base = (char *) &xcb_out; 1121 xcb_parts[2].iov_len = sizeof(xcb_out); 1122 xcb_parts[3].iov_base = 0; 1123 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1124 1125 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1126 return xcb_ret; 1127 } 1128 1129 xcb_void_cookie_t 1130 xcb_input_close_device (xcb_connection_t *c, 1131 uint8_t device_id) 1132 { 1133 static const xcb_protocol_request_t xcb_req = { 1134 .count = 2, 1135 .ext = &xcb_input_id, 1136 .opcode = XCB_INPUT_CLOSE_DEVICE, 1137 .isvoid = 1 1138 }; 1139 1140 struct iovec xcb_parts[4]; 1141 xcb_void_cookie_t xcb_ret; 1142 xcb_input_close_device_request_t xcb_out; 1143 1144 xcb_out.device_id = device_id; 1145 memset(xcb_out.pad0, 0, 3); 1146 1147 xcb_parts[2].iov_base = (char *) &xcb_out; 1148 xcb_parts[2].iov_len = sizeof(xcb_out); 1149 xcb_parts[3].iov_base = 0; 1150 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1151 1152 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1153 return xcb_ret; 1154 } 1155 1156 xcb_input_set_device_mode_cookie_t 1157 xcb_input_set_device_mode (xcb_connection_t *c, 1158 uint8_t device_id, 1159 uint8_t mode) 1160 { 1161 static const xcb_protocol_request_t xcb_req = { 1162 .count = 2, 1163 .ext = &xcb_input_id, 1164 .opcode = XCB_INPUT_SET_DEVICE_MODE, 1165 .isvoid = 0 1166 }; 1167 1168 struct iovec xcb_parts[4]; 1169 xcb_input_set_device_mode_cookie_t xcb_ret; 1170 xcb_input_set_device_mode_request_t xcb_out; 1171 1172 xcb_out.device_id = device_id; 1173 xcb_out.mode = mode; 1174 memset(xcb_out.pad0, 0, 2); 1175 1176 xcb_parts[2].iov_base = (char *) &xcb_out; 1177 xcb_parts[2].iov_len = sizeof(xcb_out); 1178 xcb_parts[3].iov_base = 0; 1179 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1180 1181 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1182 return xcb_ret; 1183 } 1184 1185 xcb_input_set_device_mode_cookie_t 1186 xcb_input_set_device_mode_unchecked (xcb_connection_t *c, 1187 uint8_t device_id, 1188 uint8_t mode) 1189 { 1190 static const xcb_protocol_request_t xcb_req = { 1191 .count = 2, 1192 .ext = &xcb_input_id, 1193 .opcode = XCB_INPUT_SET_DEVICE_MODE, 1194 .isvoid = 0 1195 }; 1196 1197 struct iovec xcb_parts[4]; 1198 xcb_input_set_device_mode_cookie_t xcb_ret; 1199 xcb_input_set_device_mode_request_t xcb_out; 1200 1201 xcb_out.device_id = device_id; 1202 xcb_out.mode = mode; 1203 memset(xcb_out.pad0, 0, 2); 1204 1205 xcb_parts[2].iov_base = (char *) &xcb_out; 1206 xcb_parts[2].iov_len = sizeof(xcb_out); 1207 xcb_parts[3].iov_base = 0; 1208 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1209 1210 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1211 return xcb_ret; 1212 } 1213 1214 xcb_input_set_device_mode_reply_t * 1215 xcb_input_set_device_mode_reply (xcb_connection_t *c, 1216 xcb_input_set_device_mode_cookie_t cookie /**< */, 1217 xcb_generic_error_t **e) 1218 { 1219 return (xcb_input_set_device_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1220 } 1221 1222 int 1223 xcb_input_select_extension_event_sizeof (const void *_buffer) 1224 { 1225 char *xcb_tmp = (char *)_buffer; 1226 const xcb_input_select_extension_event_request_t *_aux = (xcb_input_select_extension_event_request_t *)_buffer; 1227 unsigned int xcb_buffer_len = 0; 1228 unsigned int xcb_block_len = 0; 1229 unsigned int xcb_pad = 0; 1230 unsigned int xcb_align_to = 0; 1231 1232 1233 xcb_block_len += sizeof(xcb_input_select_extension_event_request_t); 1234 xcb_tmp += xcb_block_len; 1235 xcb_buffer_len += xcb_block_len; 1236 xcb_block_len = 0; 1237 /* classes */ 1238 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 1239 xcb_tmp += xcb_block_len; 1240 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 1241 /* insert padding */ 1242 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1243 xcb_buffer_len += xcb_block_len + xcb_pad; 1244 if (0 != xcb_pad) { 1245 xcb_tmp += xcb_pad; 1246 xcb_pad = 0; 1247 } 1248 xcb_block_len = 0; 1249 1250 return xcb_buffer_len; 1251 } 1252 1253 xcb_void_cookie_t 1254 xcb_input_select_extension_event_checked (xcb_connection_t *c, 1255 xcb_window_t window, 1256 uint16_t num_classes, 1257 const xcb_input_event_class_t *classes) 1258 { 1259 static const xcb_protocol_request_t xcb_req = { 1260 .count = 4, 1261 .ext = &xcb_input_id, 1262 .opcode = XCB_INPUT_SELECT_EXTENSION_EVENT, 1263 .isvoid = 1 1264 }; 1265 1266 struct iovec xcb_parts[6]; 1267 xcb_void_cookie_t xcb_ret; 1268 xcb_input_select_extension_event_request_t xcb_out; 1269 1270 xcb_out.window = window; 1271 xcb_out.num_classes = num_classes; 1272 memset(xcb_out.pad0, 0, 2); 1273 1274 xcb_parts[2].iov_base = (char *) &xcb_out; 1275 xcb_parts[2].iov_len = sizeof(xcb_out); 1276 xcb_parts[3].iov_base = 0; 1277 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1278 /* xcb_input_event_class_t classes */ 1279 xcb_parts[4].iov_base = (char *) classes; 1280 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 1281 xcb_parts[5].iov_base = 0; 1282 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1283 1284 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1285 return xcb_ret; 1286 } 1287 1288 xcb_void_cookie_t 1289 xcb_input_select_extension_event (xcb_connection_t *c, 1290 xcb_window_t window, 1291 uint16_t num_classes, 1292 const xcb_input_event_class_t *classes) 1293 { 1294 static const xcb_protocol_request_t xcb_req = { 1295 .count = 4, 1296 .ext = &xcb_input_id, 1297 .opcode = XCB_INPUT_SELECT_EXTENSION_EVENT, 1298 .isvoid = 1 1299 }; 1300 1301 struct iovec xcb_parts[6]; 1302 xcb_void_cookie_t xcb_ret; 1303 xcb_input_select_extension_event_request_t xcb_out; 1304 1305 xcb_out.window = window; 1306 xcb_out.num_classes = num_classes; 1307 memset(xcb_out.pad0, 0, 2); 1308 1309 xcb_parts[2].iov_base = (char *) &xcb_out; 1310 xcb_parts[2].iov_len = sizeof(xcb_out); 1311 xcb_parts[3].iov_base = 0; 1312 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1313 /* xcb_input_event_class_t classes */ 1314 xcb_parts[4].iov_base = (char *) classes; 1315 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 1316 xcb_parts[5].iov_base = 0; 1317 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1318 1319 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1320 return xcb_ret; 1321 } 1322 1323 xcb_input_event_class_t * 1324 xcb_input_select_extension_event_classes (const xcb_input_select_extension_event_request_t *R) 1325 { 1326 return (xcb_input_event_class_t *) (R + 1); 1327 } 1328 1329 int 1330 xcb_input_select_extension_event_classes_length (const xcb_input_select_extension_event_request_t *R) 1331 { 1332 return R->num_classes; 1333 } 1334 1335 xcb_generic_iterator_t 1336 xcb_input_select_extension_event_classes_end (const xcb_input_select_extension_event_request_t *R) 1337 { 1338 xcb_generic_iterator_t i; 1339 i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); 1340 i.rem = 0; 1341 i.index = (char *) i.data - (char *) R; 1342 return i; 1343 } 1344 1345 int 1346 xcb_input_get_selected_extension_events_sizeof (const void *_buffer) 1347 { 1348 char *xcb_tmp = (char *)_buffer; 1349 const xcb_input_get_selected_extension_events_reply_t *_aux = (xcb_input_get_selected_extension_events_reply_t *)_buffer; 1350 unsigned int xcb_buffer_len = 0; 1351 unsigned int xcb_block_len = 0; 1352 unsigned int xcb_pad = 0; 1353 unsigned int xcb_align_to = 0; 1354 1355 1356 xcb_block_len += sizeof(xcb_input_get_selected_extension_events_reply_t); 1357 xcb_tmp += xcb_block_len; 1358 xcb_buffer_len += xcb_block_len; 1359 xcb_block_len = 0; 1360 /* this_classes */ 1361 xcb_block_len += _aux->num_this_classes * sizeof(xcb_input_event_class_t); 1362 xcb_tmp += xcb_block_len; 1363 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 1364 /* insert padding */ 1365 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1366 xcb_buffer_len += xcb_block_len + xcb_pad; 1367 if (0 != xcb_pad) { 1368 xcb_tmp += xcb_pad; 1369 xcb_pad = 0; 1370 } 1371 xcb_block_len = 0; 1372 /* all_classes */ 1373 xcb_block_len += _aux->num_all_classes * sizeof(xcb_input_event_class_t); 1374 xcb_tmp += xcb_block_len; 1375 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 1376 /* insert padding */ 1377 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1378 xcb_buffer_len += xcb_block_len + xcb_pad; 1379 if (0 != xcb_pad) { 1380 xcb_tmp += xcb_pad; 1381 xcb_pad = 0; 1382 } 1383 xcb_block_len = 0; 1384 1385 return xcb_buffer_len; 1386 } 1387 1388 xcb_input_get_selected_extension_events_cookie_t 1389 xcb_input_get_selected_extension_events (xcb_connection_t *c, 1390 xcb_window_t window) 1391 { 1392 static const xcb_protocol_request_t xcb_req = { 1393 .count = 2, 1394 .ext = &xcb_input_id, 1395 .opcode = XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS, 1396 .isvoid = 0 1397 }; 1398 1399 struct iovec xcb_parts[4]; 1400 xcb_input_get_selected_extension_events_cookie_t xcb_ret; 1401 xcb_input_get_selected_extension_events_request_t xcb_out; 1402 1403 xcb_out.window = window; 1404 1405 xcb_parts[2].iov_base = (char *) &xcb_out; 1406 xcb_parts[2].iov_len = sizeof(xcb_out); 1407 xcb_parts[3].iov_base = 0; 1408 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1409 1410 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1411 return xcb_ret; 1412 } 1413 1414 xcb_input_get_selected_extension_events_cookie_t 1415 xcb_input_get_selected_extension_events_unchecked (xcb_connection_t *c, 1416 xcb_window_t window) 1417 { 1418 static const xcb_protocol_request_t xcb_req = { 1419 .count = 2, 1420 .ext = &xcb_input_id, 1421 .opcode = XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS, 1422 .isvoid = 0 1423 }; 1424 1425 struct iovec xcb_parts[4]; 1426 xcb_input_get_selected_extension_events_cookie_t xcb_ret; 1427 xcb_input_get_selected_extension_events_request_t xcb_out; 1428 1429 xcb_out.window = window; 1430 1431 xcb_parts[2].iov_base = (char *) &xcb_out; 1432 xcb_parts[2].iov_len = sizeof(xcb_out); 1433 xcb_parts[3].iov_base = 0; 1434 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1435 1436 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1437 return xcb_ret; 1438 } 1439 1440 xcb_input_event_class_t * 1441 xcb_input_get_selected_extension_events_this_classes (const xcb_input_get_selected_extension_events_reply_t *R) 1442 { 1443 return (xcb_input_event_class_t *) (R + 1); 1444 } 1445 1446 int 1447 xcb_input_get_selected_extension_events_this_classes_length (const xcb_input_get_selected_extension_events_reply_t *R) 1448 { 1449 return R->num_this_classes; 1450 } 1451 1452 xcb_generic_iterator_t 1453 xcb_input_get_selected_extension_events_this_classes_end (const xcb_input_get_selected_extension_events_reply_t *R) 1454 { 1455 xcb_generic_iterator_t i; 1456 i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_this_classes); 1457 i.rem = 0; 1458 i.index = (char *) i.data - (char *) R; 1459 return i; 1460 } 1461 1462 xcb_input_event_class_t * 1463 xcb_input_get_selected_extension_events_all_classes (const xcb_input_get_selected_extension_events_reply_t *R) 1464 { 1465 xcb_generic_iterator_t prev = xcb_input_get_selected_extension_events_this_classes_end(R); 1466 return (xcb_input_event_class_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_event_class_t, prev.index) + 0); 1467 } 1468 1469 int 1470 xcb_input_get_selected_extension_events_all_classes_length (const xcb_input_get_selected_extension_events_reply_t *R) 1471 { 1472 return R->num_all_classes; 1473 } 1474 1475 xcb_generic_iterator_t 1476 xcb_input_get_selected_extension_events_all_classes_end (const xcb_input_get_selected_extension_events_reply_t *R) 1477 { 1478 xcb_generic_iterator_t i; 1479 xcb_generic_iterator_t prev = xcb_input_get_selected_extension_events_this_classes_end(R); 1480 i.data = ((xcb_input_event_class_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_input_event_class_t, prev.index))) + (R->num_all_classes); 1481 i.rem = 0; 1482 i.index = (char *) i.data - (char *) R; 1483 return i; 1484 } 1485 1486 xcb_input_get_selected_extension_events_reply_t * 1487 xcb_input_get_selected_extension_events_reply (xcb_connection_t *c, 1488 xcb_input_get_selected_extension_events_cookie_t cookie /**< */, 1489 xcb_generic_error_t **e) 1490 { 1491 return (xcb_input_get_selected_extension_events_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1492 } 1493 1494 int 1495 xcb_input_change_device_dont_propagate_list_sizeof (const void *_buffer) 1496 { 1497 char *xcb_tmp = (char *)_buffer; 1498 const xcb_input_change_device_dont_propagate_list_request_t *_aux = (xcb_input_change_device_dont_propagate_list_request_t *)_buffer; 1499 unsigned int xcb_buffer_len = 0; 1500 unsigned int xcb_block_len = 0; 1501 unsigned int xcb_pad = 0; 1502 unsigned int xcb_align_to = 0; 1503 1504 1505 xcb_block_len += sizeof(xcb_input_change_device_dont_propagate_list_request_t); 1506 xcb_tmp += xcb_block_len; 1507 xcb_buffer_len += xcb_block_len; 1508 xcb_block_len = 0; 1509 /* classes */ 1510 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 1511 xcb_tmp += xcb_block_len; 1512 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 1513 /* insert padding */ 1514 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1515 xcb_buffer_len += xcb_block_len + xcb_pad; 1516 if (0 != xcb_pad) { 1517 xcb_tmp += xcb_pad; 1518 xcb_pad = 0; 1519 } 1520 xcb_block_len = 0; 1521 1522 return xcb_buffer_len; 1523 } 1524 1525 xcb_void_cookie_t 1526 xcb_input_change_device_dont_propagate_list_checked (xcb_connection_t *c, 1527 xcb_window_t window, 1528 uint16_t num_classes, 1529 uint8_t mode, 1530 const xcb_input_event_class_t *classes) 1531 { 1532 static const xcb_protocol_request_t xcb_req = { 1533 .count = 4, 1534 .ext = &xcb_input_id, 1535 .opcode = XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST, 1536 .isvoid = 1 1537 }; 1538 1539 struct iovec xcb_parts[6]; 1540 xcb_void_cookie_t xcb_ret; 1541 xcb_input_change_device_dont_propagate_list_request_t xcb_out; 1542 1543 xcb_out.window = window; 1544 xcb_out.num_classes = num_classes; 1545 xcb_out.mode = mode; 1546 xcb_out.pad0 = 0; 1547 1548 xcb_parts[2].iov_base = (char *) &xcb_out; 1549 xcb_parts[2].iov_len = sizeof(xcb_out); 1550 xcb_parts[3].iov_base = 0; 1551 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1552 /* xcb_input_event_class_t classes */ 1553 xcb_parts[4].iov_base = (char *) classes; 1554 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 1555 xcb_parts[5].iov_base = 0; 1556 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1557 1558 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1559 return xcb_ret; 1560 } 1561 1562 xcb_void_cookie_t 1563 xcb_input_change_device_dont_propagate_list (xcb_connection_t *c, 1564 xcb_window_t window, 1565 uint16_t num_classes, 1566 uint8_t mode, 1567 const xcb_input_event_class_t *classes) 1568 { 1569 static const xcb_protocol_request_t xcb_req = { 1570 .count = 4, 1571 .ext = &xcb_input_id, 1572 .opcode = XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST, 1573 .isvoid = 1 1574 }; 1575 1576 struct iovec xcb_parts[6]; 1577 xcb_void_cookie_t xcb_ret; 1578 xcb_input_change_device_dont_propagate_list_request_t xcb_out; 1579 1580 xcb_out.window = window; 1581 xcb_out.num_classes = num_classes; 1582 xcb_out.mode = mode; 1583 xcb_out.pad0 = 0; 1584 1585 xcb_parts[2].iov_base = (char *) &xcb_out; 1586 xcb_parts[2].iov_len = sizeof(xcb_out); 1587 xcb_parts[3].iov_base = 0; 1588 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1589 /* xcb_input_event_class_t classes */ 1590 xcb_parts[4].iov_base = (char *) classes; 1591 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 1592 xcb_parts[5].iov_base = 0; 1593 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1594 1595 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1596 return xcb_ret; 1597 } 1598 1599 xcb_input_event_class_t * 1600 xcb_input_change_device_dont_propagate_list_classes (const xcb_input_change_device_dont_propagate_list_request_t *R) 1601 { 1602 return (xcb_input_event_class_t *) (R + 1); 1603 } 1604 1605 int 1606 xcb_input_change_device_dont_propagate_list_classes_length (const xcb_input_change_device_dont_propagate_list_request_t *R) 1607 { 1608 return R->num_classes; 1609 } 1610 1611 xcb_generic_iterator_t 1612 xcb_input_change_device_dont_propagate_list_classes_end (const xcb_input_change_device_dont_propagate_list_request_t *R) 1613 { 1614 xcb_generic_iterator_t i; 1615 i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); 1616 i.rem = 0; 1617 i.index = (char *) i.data - (char *) R; 1618 return i; 1619 } 1620 1621 int 1622 xcb_input_get_device_dont_propagate_list_sizeof (const void *_buffer) 1623 { 1624 char *xcb_tmp = (char *)_buffer; 1625 const xcb_input_get_device_dont_propagate_list_reply_t *_aux = (xcb_input_get_device_dont_propagate_list_reply_t *)_buffer; 1626 unsigned int xcb_buffer_len = 0; 1627 unsigned int xcb_block_len = 0; 1628 unsigned int xcb_pad = 0; 1629 unsigned int xcb_align_to = 0; 1630 1631 1632 xcb_block_len += sizeof(xcb_input_get_device_dont_propagate_list_reply_t); 1633 xcb_tmp += xcb_block_len; 1634 xcb_buffer_len += xcb_block_len; 1635 xcb_block_len = 0; 1636 /* classes */ 1637 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 1638 xcb_tmp += xcb_block_len; 1639 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 1640 /* insert padding */ 1641 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1642 xcb_buffer_len += xcb_block_len + xcb_pad; 1643 if (0 != xcb_pad) { 1644 xcb_tmp += xcb_pad; 1645 xcb_pad = 0; 1646 } 1647 xcb_block_len = 0; 1648 1649 return xcb_buffer_len; 1650 } 1651 1652 xcb_input_get_device_dont_propagate_list_cookie_t 1653 xcb_input_get_device_dont_propagate_list (xcb_connection_t *c, 1654 xcb_window_t window) 1655 { 1656 static const xcb_protocol_request_t xcb_req = { 1657 .count = 2, 1658 .ext = &xcb_input_id, 1659 .opcode = XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST, 1660 .isvoid = 0 1661 }; 1662 1663 struct iovec xcb_parts[4]; 1664 xcb_input_get_device_dont_propagate_list_cookie_t xcb_ret; 1665 xcb_input_get_device_dont_propagate_list_request_t xcb_out; 1666 1667 xcb_out.window = window; 1668 1669 xcb_parts[2].iov_base = (char *) &xcb_out; 1670 xcb_parts[2].iov_len = sizeof(xcb_out); 1671 xcb_parts[3].iov_base = 0; 1672 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1673 1674 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1675 return xcb_ret; 1676 } 1677 1678 xcb_input_get_device_dont_propagate_list_cookie_t 1679 xcb_input_get_device_dont_propagate_list_unchecked (xcb_connection_t *c, 1680 xcb_window_t window) 1681 { 1682 static const xcb_protocol_request_t xcb_req = { 1683 .count = 2, 1684 .ext = &xcb_input_id, 1685 .opcode = XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST, 1686 .isvoid = 0 1687 }; 1688 1689 struct iovec xcb_parts[4]; 1690 xcb_input_get_device_dont_propagate_list_cookie_t xcb_ret; 1691 xcb_input_get_device_dont_propagate_list_request_t xcb_out; 1692 1693 xcb_out.window = window; 1694 1695 xcb_parts[2].iov_base = (char *) &xcb_out; 1696 xcb_parts[2].iov_len = sizeof(xcb_out); 1697 xcb_parts[3].iov_base = 0; 1698 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1699 1700 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1701 return xcb_ret; 1702 } 1703 1704 xcb_input_event_class_t * 1705 xcb_input_get_device_dont_propagate_list_classes (const xcb_input_get_device_dont_propagate_list_reply_t *R) 1706 { 1707 return (xcb_input_event_class_t *) (R + 1); 1708 } 1709 1710 int 1711 xcb_input_get_device_dont_propagate_list_classes_length (const xcb_input_get_device_dont_propagate_list_reply_t *R) 1712 { 1713 return R->num_classes; 1714 } 1715 1716 xcb_generic_iterator_t 1717 xcb_input_get_device_dont_propagate_list_classes_end (const xcb_input_get_device_dont_propagate_list_reply_t *R) 1718 { 1719 xcb_generic_iterator_t i; 1720 i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); 1721 i.rem = 0; 1722 i.index = (char *) i.data - (char *) R; 1723 return i; 1724 } 1725 1726 xcb_input_get_device_dont_propagate_list_reply_t * 1727 xcb_input_get_device_dont_propagate_list_reply (xcb_connection_t *c, 1728 xcb_input_get_device_dont_propagate_list_cookie_t cookie /**< */, 1729 xcb_generic_error_t **e) 1730 { 1731 return (xcb_input_get_device_dont_propagate_list_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1732 } 1733 1734 int 1735 xcb_input_device_time_coord_sizeof (const void *_buffer, 1736 uint8_t num_axes) 1737 { 1738 char *xcb_tmp = (char *)_buffer; 1739 unsigned int xcb_buffer_len = 0; 1740 unsigned int xcb_block_len = 0; 1741 unsigned int xcb_pad = 0; 1742 unsigned int xcb_align_to = 0; 1743 1744 1745 xcb_block_len += sizeof(xcb_input_device_time_coord_t); 1746 xcb_tmp += xcb_block_len; 1747 xcb_buffer_len += xcb_block_len; 1748 xcb_block_len = 0; 1749 /* axisvalues */ 1750 xcb_block_len += num_axes * sizeof(int32_t); 1751 xcb_tmp += xcb_block_len; 1752 xcb_align_to = ALIGNOF(int32_t); 1753 /* insert padding */ 1754 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1755 xcb_buffer_len += xcb_block_len + xcb_pad; 1756 if (0 != xcb_pad) { 1757 xcb_tmp += xcb_pad; 1758 xcb_pad = 0; 1759 } 1760 xcb_block_len = 0; 1761 1762 return xcb_buffer_len; 1763 } 1764 1765 int32_t * 1766 xcb_input_device_time_coord_axisvalues (const xcb_input_device_time_coord_t *R) 1767 { 1768 return (int32_t *) (R + 1); 1769 } 1770 1771 int 1772 xcb_input_device_time_coord_axisvalues_length (const xcb_input_device_time_coord_t *R, 1773 uint8_t num_axes) 1774 { 1775 return num_axes; 1776 } 1777 1778 xcb_generic_iterator_t 1779 xcb_input_device_time_coord_axisvalues_end (const xcb_input_device_time_coord_t *R, 1780 uint8_t num_axes) 1781 { 1782 xcb_generic_iterator_t i; 1783 i.data = ((int32_t *) (R + 1)) + (num_axes); 1784 i.rem = 0; 1785 i.index = (char *) i.data - (char *) R; 1786 return i; 1787 } 1788 1789 void 1790 xcb_input_device_time_coord_next (xcb_input_device_time_coord_iterator_t *i) 1791 { 1792 xcb_input_device_time_coord_t *R = i->data; 1793 xcb_generic_iterator_t child; 1794 child.data = (xcb_input_device_time_coord_t *)(((char *)R) + xcb_input_device_time_coord_sizeof(R, i->num_axes)); 1795 i->index = (char *) child.data - (char *) i->data; 1796 --i->rem; 1797 i->data = (xcb_input_device_time_coord_t *) child.data; 1798 } 1799 1800 xcb_generic_iterator_t 1801 xcb_input_device_time_coord_end (xcb_input_device_time_coord_iterator_t i) 1802 { 1803 xcb_generic_iterator_t ret; 1804 while(i.rem > 0) 1805 xcb_input_device_time_coord_next(&i); 1806 ret.data = i.data; 1807 ret.rem = i.rem; 1808 ret.index = i.index; 1809 return ret; 1810 } 1811 1812 int 1813 xcb_input_get_device_motion_events_sizeof (const void *_buffer) 1814 { 1815 char *xcb_tmp = (char *)_buffer; 1816 const xcb_input_get_device_motion_events_reply_t *_aux = (xcb_input_get_device_motion_events_reply_t *)_buffer; 1817 unsigned int xcb_buffer_len = 0; 1818 unsigned int xcb_block_len = 0; 1819 unsigned int xcb_pad = 0; 1820 unsigned int xcb_align_to = 0; 1821 1822 unsigned int i; 1823 unsigned int xcb_tmp_len; 1824 1825 xcb_block_len += sizeof(xcb_input_get_device_motion_events_reply_t); 1826 xcb_tmp += xcb_block_len; 1827 xcb_buffer_len += xcb_block_len; 1828 xcb_block_len = 0; 1829 /* events */ 1830 for(i=0; i<_aux->num_events; i++) { 1831 xcb_tmp_len = xcb_input_device_time_coord_sizeof(xcb_tmp, _aux->num_axes); 1832 xcb_block_len += xcb_tmp_len; 1833 xcb_tmp += xcb_tmp_len; 1834 } 1835 xcb_align_to = ALIGNOF(xcb_input_device_time_coord_t); 1836 /* insert padding */ 1837 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1838 xcb_buffer_len += xcb_block_len + xcb_pad; 1839 if (0 != xcb_pad) { 1840 xcb_tmp += xcb_pad; 1841 xcb_pad = 0; 1842 } 1843 xcb_block_len = 0; 1844 1845 return xcb_buffer_len; 1846 } 1847 1848 xcb_input_get_device_motion_events_cookie_t 1849 xcb_input_get_device_motion_events (xcb_connection_t *c, 1850 xcb_timestamp_t start, 1851 xcb_timestamp_t stop, 1852 uint8_t device_id) 1853 { 1854 static const xcb_protocol_request_t xcb_req = { 1855 .count = 2, 1856 .ext = &xcb_input_id, 1857 .opcode = XCB_INPUT_GET_DEVICE_MOTION_EVENTS, 1858 .isvoid = 0 1859 }; 1860 1861 struct iovec xcb_parts[4]; 1862 xcb_input_get_device_motion_events_cookie_t xcb_ret; 1863 xcb_input_get_device_motion_events_request_t xcb_out; 1864 1865 xcb_out.start = start; 1866 xcb_out.stop = stop; 1867 xcb_out.device_id = device_id; 1868 memset(xcb_out.pad0, 0, 3); 1869 1870 xcb_parts[2].iov_base = (char *) &xcb_out; 1871 xcb_parts[2].iov_len = sizeof(xcb_out); 1872 xcb_parts[3].iov_base = 0; 1873 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1874 1875 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1876 return xcb_ret; 1877 } 1878 1879 xcb_input_get_device_motion_events_cookie_t 1880 xcb_input_get_device_motion_events_unchecked (xcb_connection_t *c, 1881 xcb_timestamp_t start, 1882 xcb_timestamp_t stop, 1883 uint8_t device_id) 1884 { 1885 static const xcb_protocol_request_t xcb_req = { 1886 .count = 2, 1887 .ext = &xcb_input_id, 1888 .opcode = XCB_INPUT_GET_DEVICE_MOTION_EVENTS, 1889 .isvoid = 0 1890 }; 1891 1892 struct iovec xcb_parts[4]; 1893 xcb_input_get_device_motion_events_cookie_t xcb_ret; 1894 xcb_input_get_device_motion_events_request_t xcb_out; 1895 1896 xcb_out.start = start; 1897 xcb_out.stop = stop; 1898 xcb_out.device_id = device_id; 1899 memset(xcb_out.pad0, 0, 3); 1900 1901 xcb_parts[2].iov_base = (char *) &xcb_out; 1902 xcb_parts[2].iov_len = sizeof(xcb_out); 1903 xcb_parts[3].iov_base = 0; 1904 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1905 1906 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1907 return xcb_ret; 1908 } 1909 1910 int 1911 xcb_input_get_device_motion_events_events_length (const xcb_input_get_device_motion_events_reply_t *R) 1912 { 1913 return R->num_events; 1914 } 1915 1916 xcb_input_device_time_coord_iterator_t 1917 xcb_input_get_device_motion_events_events_iterator (const xcb_input_get_device_motion_events_reply_t *R) 1918 { 1919 xcb_input_device_time_coord_iterator_t i; 1920 i.data = (xcb_input_device_time_coord_t *) (R + 1); 1921 i.rem = R->num_events; 1922 i.index = (char *) i.data - (char *) R; 1923 i.num_axes = R->num_axes; 1924 return i; 1925 } 1926 1927 xcb_input_get_device_motion_events_reply_t * 1928 xcb_input_get_device_motion_events_reply (xcb_connection_t *c, 1929 xcb_input_get_device_motion_events_cookie_t cookie /**< */, 1930 xcb_generic_error_t **e) 1931 { 1932 return (xcb_input_get_device_motion_events_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1933 } 1934 1935 xcb_input_change_keyboard_device_cookie_t 1936 xcb_input_change_keyboard_device (xcb_connection_t *c, 1937 uint8_t device_id) 1938 { 1939 static const xcb_protocol_request_t xcb_req = { 1940 .count = 2, 1941 .ext = &xcb_input_id, 1942 .opcode = XCB_INPUT_CHANGE_KEYBOARD_DEVICE, 1943 .isvoid = 0 1944 }; 1945 1946 struct iovec xcb_parts[4]; 1947 xcb_input_change_keyboard_device_cookie_t xcb_ret; 1948 xcb_input_change_keyboard_device_request_t xcb_out; 1949 1950 xcb_out.device_id = device_id; 1951 memset(xcb_out.pad0, 0, 3); 1952 1953 xcb_parts[2].iov_base = (char *) &xcb_out; 1954 xcb_parts[2].iov_len = sizeof(xcb_out); 1955 xcb_parts[3].iov_base = 0; 1956 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1957 1958 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1959 return xcb_ret; 1960 } 1961 1962 xcb_input_change_keyboard_device_cookie_t 1963 xcb_input_change_keyboard_device_unchecked (xcb_connection_t *c, 1964 uint8_t device_id) 1965 { 1966 static const xcb_protocol_request_t xcb_req = { 1967 .count = 2, 1968 .ext = &xcb_input_id, 1969 .opcode = XCB_INPUT_CHANGE_KEYBOARD_DEVICE, 1970 .isvoid = 0 1971 }; 1972 1973 struct iovec xcb_parts[4]; 1974 xcb_input_change_keyboard_device_cookie_t xcb_ret; 1975 xcb_input_change_keyboard_device_request_t xcb_out; 1976 1977 xcb_out.device_id = device_id; 1978 memset(xcb_out.pad0, 0, 3); 1979 1980 xcb_parts[2].iov_base = (char *) &xcb_out; 1981 xcb_parts[2].iov_len = sizeof(xcb_out); 1982 xcb_parts[3].iov_base = 0; 1983 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1984 1985 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1986 return xcb_ret; 1987 } 1988 1989 xcb_input_change_keyboard_device_reply_t * 1990 xcb_input_change_keyboard_device_reply (xcb_connection_t *c, 1991 xcb_input_change_keyboard_device_cookie_t cookie /**< */, 1992 xcb_generic_error_t **e) 1993 { 1994 return (xcb_input_change_keyboard_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1995 } 1996 1997 xcb_input_change_pointer_device_cookie_t 1998 xcb_input_change_pointer_device (xcb_connection_t *c, 1999 uint8_t x_axis, 2000 uint8_t y_axis, 2001 uint8_t device_id) 2002 { 2003 static const xcb_protocol_request_t xcb_req = { 2004 .count = 2, 2005 .ext = &xcb_input_id, 2006 .opcode = XCB_INPUT_CHANGE_POINTER_DEVICE, 2007 .isvoid = 0 2008 }; 2009 2010 struct iovec xcb_parts[4]; 2011 xcb_input_change_pointer_device_cookie_t xcb_ret; 2012 xcb_input_change_pointer_device_request_t xcb_out; 2013 2014 xcb_out.x_axis = x_axis; 2015 xcb_out.y_axis = y_axis; 2016 xcb_out.device_id = device_id; 2017 xcb_out.pad0 = 0; 2018 2019 xcb_parts[2].iov_base = (char *) &xcb_out; 2020 xcb_parts[2].iov_len = sizeof(xcb_out); 2021 xcb_parts[3].iov_base = 0; 2022 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2023 2024 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2025 return xcb_ret; 2026 } 2027 2028 xcb_input_change_pointer_device_cookie_t 2029 xcb_input_change_pointer_device_unchecked (xcb_connection_t *c, 2030 uint8_t x_axis, 2031 uint8_t y_axis, 2032 uint8_t device_id) 2033 { 2034 static const xcb_protocol_request_t xcb_req = { 2035 .count = 2, 2036 .ext = &xcb_input_id, 2037 .opcode = XCB_INPUT_CHANGE_POINTER_DEVICE, 2038 .isvoid = 0 2039 }; 2040 2041 struct iovec xcb_parts[4]; 2042 xcb_input_change_pointer_device_cookie_t xcb_ret; 2043 xcb_input_change_pointer_device_request_t xcb_out; 2044 2045 xcb_out.x_axis = x_axis; 2046 xcb_out.y_axis = y_axis; 2047 xcb_out.device_id = device_id; 2048 xcb_out.pad0 = 0; 2049 2050 xcb_parts[2].iov_base = (char *) &xcb_out; 2051 xcb_parts[2].iov_len = sizeof(xcb_out); 2052 xcb_parts[3].iov_base = 0; 2053 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2054 2055 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2056 return xcb_ret; 2057 } 2058 2059 xcb_input_change_pointer_device_reply_t * 2060 xcb_input_change_pointer_device_reply (xcb_connection_t *c, 2061 xcb_input_change_pointer_device_cookie_t cookie /**< */, 2062 xcb_generic_error_t **e) 2063 { 2064 return (xcb_input_change_pointer_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2065 } 2066 2067 int 2068 xcb_input_grab_device_sizeof (const void *_buffer) 2069 { 2070 char *xcb_tmp = (char *)_buffer; 2071 const xcb_input_grab_device_request_t *_aux = (xcb_input_grab_device_request_t *)_buffer; 2072 unsigned int xcb_buffer_len = 0; 2073 unsigned int xcb_block_len = 0; 2074 unsigned int xcb_pad = 0; 2075 unsigned int xcb_align_to = 0; 2076 2077 2078 xcb_block_len += sizeof(xcb_input_grab_device_request_t); 2079 xcb_tmp += xcb_block_len; 2080 xcb_buffer_len += xcb_block_len; 2081 xcb_block_len = 0; 2082 /* classes */ 2083 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 2084 xcb_tmp += xcb_block_len; 2085 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 2086 /* insert padding */ 2087 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2088 xcb_buffer_len += xcb_block_len + xcb_pad; 2089 if (0 != xcb_pad) { 2090 xcb_tmp += xcb_pad; 2091 xcb_pad = 0; 2092 } 2093 xcb_block_len = 0; 2094 2095 return xcb_buffer_len; 2096 } 2097 2098 xcb_input_grab_device_cookie_t 2099 xcb_input_grab_device (xcb_connection_t *c, 2100 xcb_window_t grab_window, 2101 xcb_timestamp_t time, 2102 uint16_t num_classes, 2103 uint8_t this_device_mode, 2104 uint8_t other_device_mode, 2105 uint8_t owner_events, 2106 uint8_t device_id, 2107 const xcb_input_event_class_t *classes) 2108 { 2109 static const xcb_protocol_request_t xcb_req = { 2110 .count = 4, 2111 .ext = &xcb_input_id, 2112 .opcode = XCB_INPUT_GRAB_DEVICE, 2113 .isvoid = 0 2114 }; 2115 2116 struct iovec xcb_parts[6]; 2117 xcb_input_grab_device_cookie_t xcb_ret; 2118 xcb_input_grab_device_request_t xcb_out; 2119 2120 xcb_out.grab_window = grab_window; 2121 xcb_out.time = time; 2122 xcb_out.num_classes = num_classes; 2123 xcb_out.this_device_mode = this_device_mode; 2124 xcb_out.other_device_mode = other_device_mode; 2125 xcb_out.owner_events = owner_events; 2126 xcb_out.device_id = device_id; 2127 memset(xcb_out.pad0, 0, 2); 2128 2129 xcb_parts[2].iov_base = (char *) &xcb_out; 2130 xcb_parts[2].iov_len = sizeof(xcb_out); 2131 xcb_parts[3].iov_base = 0; 2132 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2133 /* xcb_input_event_class_t classes */ 2134 xcb_parts[4].iov_base = (char *) classes; 2135 xcb_parts[4].iov_len = num_classes * sizeof(uint32_t); 2136 xcb_parts[5].iov_base = 0; 2137 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2138 2139 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2140 return xcb_ret; 2141 } 2142 2143 xcb_input_grab_device_cookie_t 2144 xcb_input_grab_device_unchecked (xcb_connection_t *c, 2145 xcb_window_t grab_window, 2146 xcb_timestamp_t time, 2147 uint16_t num_classes, 2148 uint8_t this_device_mode, 2149 uint8_t other_device_mode, 2150 uint8_t owner_events, 2151 uint8_t device_id, 2152 const xcb_input_event_class_t *classes) 2153 { 2154 static const xcb_protocol_request_t xcb_req = { 2155 .count = 4, 2156 .ext = &xcb_input_id, 2157 .opcode = XCB_INPUT_GRAB_DEVICE, 2158 .isvoid = 0 2159 }; 2160 2161 struct iovec xcb_parts[6]; 2162 xcb_input_grab_device_cookie_t xcb_ret; 2163 xcb_input_grab_device_request_t xcb_out; 2164 2165 xcb_out.grab_window = grab_window; 2166 xcb_out.time = time; 2167 xcb_out.num_classes = num_classes; 2168 xcb_out.this_device_mode = this_device_mode; 2169 xcb_out.other_device_mode = other_device_mode; 2170 xcb_out.owner_events = owner_events; 2171 xcb_out.device_id = device_id; 2172 memset(xcb_out.pad0, 0, 2); 2173 2174 xcb_parts[2].iov_base = (char *) &xcb_out; 2175 xcb_parts[2].iov_len = sizeof(xcb_out); 2176 xcb_parts[3].iov_base = 0; 2177 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2178 /* xcb_input_event_class_t classes */ 2179 xcb_parts[4].iov_base = (char *) classes; 2180 xcb_parts[4].iov_len = num_classes * sizeof(uint32_t); 2181 xcb_parts[5].iov_base = 0; 2182 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2183 2184 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2185 return xcb_ret; 2186 } 2187 2188 xcb_input_grab_device_reply_t * 2189 xcb_input_grab_device_reply (xcb_connection_t *c, 2190 xcb_input_grab_device_cookie_t cookie /**< */, 2191 xcb_generic_error_t **e) 2192 { 2193 return (xcb_input_grab_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2194 } 2195 2196 xcb_void_cookie_t 2197 xcb_input_ungrab_device_checked (xcb_connection_t *c, 2198 xcb_timestamp_t time, 2199 uint8_t device_id) 2200 { 2201 static const xcb_protocol_request_t xcb_req = { 2202 .count = 2, 2203 .ext = &xcb_input_id, 2204 .opcode = XCB_INPUT_UNGRAB_DEVICE, 2205 .isvoid = 1 2206 }; 2207 2208 struct iovec xcb_parts[4]; 2209 xcb_void_cookie_t xcb_ret; 2210 xcb_input_ungrab_device_request_t xcb_out; 2211 2212 xcb_out.time = time; 2213 xcb_out.device_id = device_id; 2214 memset(xcb_out.pad0, 0, 3); 2215 2216 xcb_parts[2].iov_base = (char *) &xcb_out; 2217 xcb_parts[2].iov_len = sizeof(xcb_out); 2218 xcb_parts[3].iov_base = 0; 2219 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2220 2221 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2222 return xcb_ret; 2223 } 2224 2225 xcb_void_cookie_t 2226 xcb_input_ungrab_device (xcb_connection_t *c, 2227 xcb_timestamp_t time, 2228 uint8_t device_id) 2229 { 2230 static const xcb_protocol_request_t xcb_req = { 2231 .count = 2, 2232 .ext = &xcb_input_id, 2233 .opcode = XCB_INPUT_UNGRAB_DEVICE, 2234 .isvoid = 1 2235 }; 2236 2237 struct iovec xcb_parts[4]; 2238 xcb_void_cookie_t xcb_ret; 2239 xcb_input_ungrab_device_request_t xcb_out; 2240 2241 xcb_out.time = time; 2242 xcb_out.device_id = device_id; 2243 memset(xcb_out.pad0, 0, 3); 2244 2245 xcb_parts[2].iov_base = (char *) &xcb_out; 2246 xcb_parts[2].iov_len = sizeof(xcb_out); 2247 xcb_parts[3].iov_base = 0; 2248 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2249 2250 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2251 return xcb_ret; 2252 } 2253 2254 int 2255 xcb_input_grab_device_key_sizeof (const void *_buffer) 2256 { 2257 char *xcb_tmp = (char *)_buffer; 2258 const xcb_input_grab_device_key_request_t *_aux = (xcb_input_grab_device_key_request_t *)_buffer; 2259 unsigned int xcb_buffer_len = 0; 2260 unsigned int xcb_block_len = 0; 2261 unsigned int xcb_pad = 0; 2262 unsigned int xcb_align_to = 0; 2263 2264 2265 xcb_block_len += sizeof(xcb_input_grab_device_key_request_t); 2266 xcb_tmp += xcb_block_len; 2267 xcb_buffer_len += xcb_block_len; 2268 xcb_block_len = 0; 2269 /* classes */ 2270 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 2271 xcb_tmp += xcb_block_len; 2272 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 2273 /* insert padding */ 2274 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2275 xcb_buffer_len += xcb_block_len + xcb_pad; 2276 if (0 != xcb_pad) { 2277 xcb_tmp += xcb_pad; 2278 xcb_pad = 0; 2279 } 2280 xcb_block_len = 0; 2281 2282 return xcb_buffer_len; 2283 } 2284 2285 xcb_void_cookie_t 2286 xcb_input_grab_device_key_checked (xcb_connection_t *c, 2287 xcb_window_t grab_window, 2288 uint16_t num_classes, 2289 uint16_t modifiers, 2290 uint8_t modifier_device, 2291 uint8_t grabbed_device, 2292 uint8_t key, 2293 uint8_t this_device_mode, 2294 uint8_t other_device_mode, 2295 uint8_t owner_events, 2296 const xcb_input_event_class_t *classes) 2297 { 2298 static const xcb_protocol_request_t xcb_req = { 2299 .count = 4, 2300 .ext = &xcb_input_id, 2301 .opcode = XCB_INPUT_GRAB_DEVICE_KEY, 2302 .isvoid = 1 2303 }; 2304 2305 struct iovec xcb_parts[6]; 2306 xcb_void_cookie_t xcb_ret; 2307 xcb_input_grab_device_key_request_t xcb_out; 2308 2309 xcb_out.grab_window = grab_window; 2310 xcb_out.num_classes = num_classes; 2311 xcb_out.modifiers = modifiers; 2312 xcb_out.modifier_device = modifier_device; 2313 xcb_out.grabbed_device = grabbed_device; 2314 xcb_out.key = key; 2315 xcb_out.this_device_mode = this_device_mode; 2316 xcb_out.other_device_mode = other_device_mode; 2317 xcb_out.owner_events = owner_events; 2318 memset(xcb_out.pad0, 0, 2); 2319 2320 xcb_parts[2].iov_base = (char *) &xcb_out; 2321 xcb_parts[2].iov_len = sizeof(xcb_out); 2322 xcb_parts[3].iov_base = 0; 2323 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2324 /* xcb_input_event_class_t classes */ 2325 xcb_parts[4].iov_base = (char *) classes; 2326 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 2327 xcb_parts[5].iov_base = 0; 2328 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2329 2330 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2331 return xcb_ret; 2332 } 2333 2334 xcb_void_cookie_t 2335 xcb_input_grab_device_key (xcb_connection_t *c, 2336 xcb_window_t grab_window, 2337 uint16_t num_classes, 2338 uint16_t modifiers, 2339 uint8_t modifier_device, 2340 uint8_t grabbed_device, 2341 uint8_t key, 2342 uint8_t this_device_mode, 2343 uint8_t other_device_mode, 2344 uint8_t owner_events, 2345 const xcb_input_event_class_t *classes) 2346 { 2347 static const xcb_protocol_request_t xcb_req = { 2348 .count = 4, 2349 .ext = &xcb_input_id, 2350 .opcode = XCB_INPUT_GRAB_DEVICE_KEY, 2351 .isvoid = 1 2352 }; 2353 2354 struct iovec xcb_parts[6]; 2355 xcb_void_cookie_t xcb_ret; 2356 xcb_input_grab_device_key_request_t xcb_out; 2357 2358 xcb_out.grab_window = grab_window; 2359 xcb_out.num_classes = num_classes; 2360 xcb_out.modifiers = modifiers; 2361 xcb_out.modifier_device = modifier_device; 2362 xcb_out.grabbed_device = grabbed_device; 2363 xcb_out.key = key; 2364 xcb_out.this_device_mode = this_device_mode; 2365 xcb_out.other_device_mode = other_device_mode; 2366 xcb_out.owner_events = owner_events; 2367 memset(xcb_out.pad0, 0, 2); 2368 2369 xcb_parts[2].iov_base = (char *) &xcb_out; 2370 xcb_parts[2].iov_len = sizeof(xcb_out); 2371 xcb_parts[3].iov_base = 0; 2372 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2373 /* xcb_input_event_class_t classes */ 2374 xcb_parts[4].iov_base = (char *) classes; 2375 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 2376 xcb_parts[5].iov_base = 0; 2377 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2378 2379 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2380 return xcb_ret; 2381 } 2382 2383 xcb_input_event_class_t * 2384 xcb_input_grab_device_key_classes (const xcb_input_grab_device_key_request_t *R) 2385 { 2386 return (xcb_input_event_class_t *) (R + 1); 2387 } 2388 2389 int 2390 xcb_input_grab_device_key_classes_length (const xcb_input_grab_device_key_request_t *R) 2391 { 2392 return R->num_classes; 2393 } 2394 2395 xcb_generic_iterator_t 2396 xcb_input_grab_device_key_classes_end (const xcb_input_grab_device_key_request_t *R) 2397 { 2398 xcb_generic_iterator_t i; 2399 i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); 2400 i.rem = 0; 2401 i.index = (char *) i.data - (char *) R; 2402 return i; 2403 } 2404 2405 xcb_void_cookie_t 2406 xcb_input_ungrab_device_key_checked (xcb_connection_t *c, 2407 xcb_window_t grabWindow, 2408 uint16_t modifiers, 2409 uint8_t modifier_device, 2410 uint8_t key, 2411 uint8_t grabbed_device) 2412 { 2413 static const xcb_protocol_request_t xcb_req = { 2414 .count = 2, 2415 .ext = &xcb_input_id, 2416 .opcode = XCB_INPUT_UNGRAB_DEVICE_KEY, 2417 .isvoid = 1 2418 }; 2419 2420 struct iovec xcb_parts[4]; 2421 xcb_void_cookie_t xcb_ret; 2422 xcb_input_ungrab_device_key_request_t xcb_out; 2423 2424 xcb_out.grabWindow = grabWindow; 2425 xcb_out.modifiers = modifiers; 2426 xcb_out.modifier_device = modifier_device; 2427 xcb_out.key = key; 2428 xcb_out.grabbed_device = grabbed_device; 2429 2430 xcb_parts[2].iov_base = (char *) &xcb_out; 2431 xcb_parts[2].iov_len = sizeof(xcb_out); 2432 xcb_parts[3].iov_base = 0; 2433 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2434 2435 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2436 return xcb_ret; 2437 } 2438 2439 xcb_void_cookie_t 2440 xcb_input_ungrab_device_key (xcb_connection_t *c, 2441 xcb_window_t grabWindow, 2442 uint16_t modifiers, 2443 uint8_t modifier_device, 2444 uint8_t key, 2445 uint8_t grabbed_device) 2446 { 2447 static const xcb_protocol_request_t xcb_req = { 2448 .count = 2, 2449 .ext = &xcb_input_id, 2450 .opcode = XCB_INPUT_UNGRAB_DEVICE_KEY, 2451 .isvoid = 1 2452 }; 2453 2454 struct iovec xcb_parts[4]; 2455 xcb_void_cookie_t xcb_ret; 2456 xcb_input_ungrab_device_key_request_t xcb_out; 2457 2458 xcb_out.grabWindow = grabWindow; 2459 xcb_out.modifiers = modifiers; 2460 xcb_out.modifier_device = modifier_device; 2461 xcb_out.key = key; 2462 xcb_out.grabbed_device = grabbed_device; 2463 2464 xcb_parts[2].iov_base = (char *) &xcb_out; 2465 xcb_parts[2].iov_len = sizeof(xcb_out); 2466 xcb_parts[3].iov_base = 0; 2467 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2468 2469 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2470 return xcb_ret; 2471 } 2472 2473 int 2474 xcb_input_grab_device_button_sizeof (const void *_buffer) 2475 { 2476 char *xcb_tmp = (char *)_buffer; 2477 const xcb_input_grab_device_button_request_t *_aux = (xcb_input_grab_device_button_request_t *)_buffer; 2478 unsigned int xcb_buffer_len = 0; 2479 unsigned int xcb_block_len = 0; 2480 unsigned int xcb_pad = 0; 2481 unsigned int xcb_align_to = 0; 2482 2483 2484 xcb_block_len += sizeof(xcb_input_grab_device_button_request_t); 2485 xcb_tmp += xcb_block_len; 2486 xcb_buffer_len += xcb_block_len; 2487 xcb_block_len = 0; 2488 /* classes */ 2489 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 2490 xcb_tmp += xcb_block_len; 2491 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 2492 /* insert padding */ 2493 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2494 xcb_buffer_len += xcb_block_len + xcb_pad; 2495 if (0 != xcb_pad) { 2496 xcb_tmp += xcb_pad; 2497 xcb_pad = 0; 2498 } 2499 xcb_block_len = 0; 2500 2501 return xcb_buffer_len; 2502 } 2503 2504 xcb_void_cookie_t 2505 xcb_input_grab_device_button_checked (xcb_connection_t *c, 2506 xcb_window_t grab_window, 2507 uint8_t grabbed_device, 2508 uint8_t modifier_device, 2509 uint16_t num_classes, 2510 uint16_t modifiers, 2511 uint8_t this_device_mode, 2512 uint8_t other_device_mode, 2513 uint8_t button, 2514 uint8_t owner_events, 2515 const xcb_input_event_class_t *classes) 2516 { 2517 static const xcb_protocol_request_t xcb_req = { 2518 .count = 4, 2519 .ext = &xcb_input_id, 2520 .opcode = XCB_INPUT_GRAB_DEVICE_BUTTON, 2521 .isvoid = 1 2522 }; 2523 2524 struct iovec xcb_parts[6]; 2525 xcb_void_cookie_t xcb_ret; 2526 xcb_input_grab_device_button_request_t xcb_out; 2527 2528 xcb_out.grab_window = grab_window; 2529 xcb_out.grabbed_device = grabbed_device; 2530 xcb_out.modifier_device = modifier_device; 2531 xcb_out.num_classes = num_classes; 2532 xcb_out.modifiers = modifiers; 2533 xcb_out.this_device_mode = this_device_mode; 2534 xcb_out.other_device_mode = other_device_mode; 2535 xcb_out.button = button; 2536 xcb_out.owner_events = owner_events; 2537 memset(xcb_out.pad0, 0, 2); 2538 2539 xcb_parts[2].iov_base = (char *) &xcb_out; 2540 xcb_parts[2].iov_len = sizeof(xcb_out); 2541 xcb_parts[3].iov_base = 0; 2542 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2543 /* xcb_input_event_class_t classes */ 2544 xcb_parts[4].iov_base = (char *) classes; 2545 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 2546 xcb_parts[5].iov_base = 0; 2547 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2548 2549 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2550 return xcb_ret; 2551 } 2552 2553 xcb_void_cookie_t 2554 xcb_input_grab_device_button (xcb_connection_t *c, 2555 xcb_window_t grab_window, 2556 uint8_t grabbed_device, 2557 uint8_t modifier_device, 2558 uint16_t num_classes, 2559 uint16_t modifiers, 2560 uint8_t this_device_mode, 2561 uint8_t other_device_mode, 2562 uint8_t button, 2563 uint8_t owner_events, 2564 const xcb_input_event_class_t *classes) 2565 { 2566 static const xcb_protocol_request_t xcb_req = { 2567 .count = 4, 2568 .ext = &xcb_input_id, 2569 .opcode = XCB_INPUT_GRAB_DEVICE_BUTTON, 2570 .isvoid = 1 2571 }; 2572 2573 struct iovec xcb_parts[6]; 2574 xcb_void_cookie_t xcb_ret; 2575 xcb_input_grab_device_button_request_t xcb_out; 2576 2577 xcb_out.grab_window = grab_window; 2578 xcb_out.grabbed_device = grabbed_device; 2579 xcb_out.modifier_device = modifier_device; 2580 xcb_out.num_classes = num_classes; 2581 xcb_out.modifiers = modifiers; 2582 xcb_out.this_device_mode = this_device_mode; 2583 xcb_out.other_device_mode = other_device_mode; 2584 xcb_out.button = button; 2585 xcb_out.owner_events = owner_events; 2586 memset(xcb_out.pad0, 0, 2); 2587 2588 xcb_parts[2].iov_base = (char *) &xcb_out; 2589 xcb_parts[2].iov_len = sizeof(xcb_out); 2590 xcb_parts[3].iov_base = 0; 2591 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2592 /* xcb_input_event_class_t classes */ 2593 xcb_parts[4].iov_base = (char *) classes; 2594 xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); 2595 xcb_parts[5].iov_base = 0; 2596 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2597 2598 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2599 return xcb_ret; 2600 } 2601 2602 xcb_input_event_class_t * 2603 xcb_input_grab_device_button_classes (const xcb_input_grab_device_button_request_t *R) 2604 { 2605 return (xcb_input_event_class_t *) (R + 1); 2606 } 2607 2608 int 2609 xcb_input_grab_device_button_classes_length (const xcb_input_grab_device_button_request_t *R) 2610 { 2611 return R->num_classes; 2612 } 2613 2614 xcb_generic_iterator_t 2615 xcb_input_grab_device_button_classes_end (const xcb_input_grab_device_button_request_t *R) 2616 { 2617 xcb_generic_iterator_t i; 2618 i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); 2619 i.rem = 0; 2620 i.index = (char *) i.data - (char *) R; 2621 return i; 2622 } 2623 2624 xcb_void_cookie_t 2625 xcb_input_ungrab_device_button_checked (xcb_connection_t *c, 2626 xcb_window_t grab_window, 2627 uint16_t modifiers, 2628 uint8_t modifier_device, 2629 uint8_t button, 2630 uint8_t grabbed_device) 2631 { 2632 static const xcb_protocol_request_t xcb_req = { 2633 .count = 2, 2634 .ext = &xcb_input_id, 2635 .opcode = XCB_INPUT_UNGRAB_DEVICE_BUTTON, 2636 .isvoid = 1 2637 }; 2638 2639 struct iovec xcb_parts[4]; 2640 xcb_void_cookie_t xcb_ret; 2641 xcb_input_ungrab_device_button_request_t xcb_out; 2642 2643 xcb_out.grab_window = grab_window; 2644 xcb_out.modifiers = modifiers; 2645 xcb_out.modifier_device = modifier_device; 2646 xcb_out.button = button; 2647 xcb_out.grabbed_device = grabbed_device; 2648 memset(xcb_out.pad0, 0, 3); 2649 2650 xcb_parts[2].iov_base = (char *) &xcb_out; 2651 xcb_parts[2].iov_len = sizeof(xcb_out); 2652 xcb_parts[3].iov_base = 0; 2653 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2654 2655 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2656 return xcb_ret; 2657 } 2658 2659 xcb_void_cookie_t 2660 xcb_input_ungrab_device_button (xcb_connection_t *c, 2661 xcb_window_t grab_window, 2662 uint16_t modifiers, 2663 uint8_t modifier_device, 2664 uint8_t button, 2665 uint8_t grabbed_device) 2666 { 2667 static const xcb_protocol_request_t xcb_req = { 2668 .count = 2, 2669 .ext = &xcb_input_id, 2670 .opcode = XCB_INPUT_UNGRAB_DEVICE_BUTTON, 2671 .isvoid = 1 2672 }; 2673 2674 struct iovec xcb_parts[4]; 2675 xcb_void_cookie_t xcb_ret; 2676 xcb_input_ungrab_device_button_request_t xcb_out; 2677 2678 xcb_out.grab_window = grab_window; 2679 xcb_out.modifiers = modifiers; 2680 xcb_out.modifier_device = modifier_device; 2681 xcb_out.button = button; 2682 xcb_out.grabbed_device = grabbed_device; 2683 memset(xcb_out.pad0, 0, 3); 2684 2685 xcb_parts[2].iov_base = (char *) &xcb_out; 2686 xcb_parts[2].iov_len = sizeof(xcb_out); 2687 xcb_parts[3].iov_base = 0; 2688 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2689 2690 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2691 return xcb_ret; 2692 } 2693 2694 xcb_void_cookie_t 2695 xcb_input_allow_device_events_checked (xcb_connection_t *c, 2696 xcb_timestamp_t time, 2697 uint8_t mode, 2698 uint8_t device_id) 2699 { 2700 static const xcb_protocol_request_t xcb_req = { 2701 .count = 2, 2702 .ext = &xcb_input_id, 2703 .opcode = XCB_INPUT_ALLOW_DEVICE_EVENTS, 2704 .isvoid = 1 2705 }; 2706 2707 struct iovec xcb_parts[4]; 2708 xcb_void_cookie_t xcb_ret; 2709 xcb_input_allow_device_events_request_t xcb_out; 2710 2711 xcb_out.time = time; 2712 xcb_out.mode = mode; 2713 xcb_out.device_id = device_id; 2714 memset(xcb_out.pad0, 0, 2); 2715 2716 xcb_parts[2].iov_base = (char *) &xcb_out; 2717 xcb_parts[2].iov_len = sizeof(xcb_out); 2718 xcb_parts[3].iov_base = 0; 2719 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2720 2721 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2722 return xcb_ret; 2723 } 2724 2725 xcb_void_cookie_t 2726 xcb_input_allow_device_events (xcb_connection_t *c, 2727 xcb_timestamp_t time, 2728 uint8_t mode, 2729 uint8_t device_id) 2730 { 2731 static const xcb_protocol_request_t xcb_req = { 2732 .count = 2, 2733 .ext = &xcb_input_id, 2734 .opcode = XCB_INPUT_ALLOW_DEVICE_EVENTS, 2735 .isvoid = 1 2736 }; 2737 2738 struct iovec xcb_parts[4]; 2739 xcb_void_cookie_t xcb_ret; 2740 xcb_input_allow_device_events_request_t xcb_out; 2741 2742 xcb_out.time = time; 2743 xcb_out.mode = mode; 2744 xcb_out.device_id = device_id; 2745 memset(xcb_out.pad0, 0, 2); 2746 2747 xcb_parts[2].iov_base = (char *) &xcb_out; 2748 xcb_parts[2].iov_len = sizeof(xcb_out); 2749 xcb_parts[3].iov_base = 0; 2750 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2751 2752 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2753 return xcb_ret; 2754 } 2755 2756 xcb_input_get_device_focus_cookie_t 2757 xcb_input_get_device_focus (xcb_connection_t *c, 2758 uint8_t device_id) 2759 { 2760 static const xcb_protocol_request_t xcb_req = { 2761 .count = 2, 2762 .ext = &xcb_input_id, 2763 .opcode = XCB_INPUT_GET_DEVICE_FOCUS, 2764 .isvoid = 0 2765 }; 2766 2767 struct iovec xcb_parts[4]; 2768 xcb_input_get_device_focus_cookie_t xcb_ret; 2769 xcb_input_get_device_focus_request_t xcb_out; 2770 2771 xcb_out.device_id = device_id; 2772 memset(xcb_out.pad0, 0, 3); 2773 2774 xcb_parts[2].iov_base = (char *) &xcb_out; 2775 xcb_parts[2].iov_len = sizeof(xcb_out); 2776 xcb_parts[3].iov_base = 0; 2777 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2778 2779 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2780 return xcb_ret; 2781 } 2782 2783 xcb_input_get_device_focus_cookie_t 2784 xcb_input_get_device_focus_unchecked (xcb_connection_t *c, 2785 uint8_t device_id) 2786 { 2787 static const xcb_protocol_request_t xcb_req = { 2788 .count = 2, 2789 .ext = &xcb_input_id, 2790 .opcode = XCB_INPUT_GET_DEVICE_FOCUS, 2791 .isvoid = 0 2792 }; 2793 2794 struct iovec xcb_parts[4]; 2795 xcb_input_get_device_focus_cookie_t xcb_ret; 2796 xcb_input_get_device_focus_request_t xcb_out; 2797 2798 xcb_out.device_id = device_id; 2799 memset(xcb_out.pad0, 0, 3); 2800 2801 xcb_parts[2].iov_base = (char *) &xcb_out; 2802 xcb_parts[2].iov_len = sizeof(xcb_out); 2803 xcb_parts[3].iov_base = 0; 2804 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2805 2806 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2807 return xcb_ret; 2808 } 2809 2810 xcb_input_get_device_focus_reply_t * 2811 xcb_input_get_device_focus_reply (xcb_connection_t *c, 2812 xcb_input_get_device_focus_cookie_t cookie /**< */, 2813 xcb_generic_error_t **e) 2814 { 2815 return (xcb_input_get_device_focus_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2816 } 2817 2818 xcb_void_cookie_t 2819 xcb_input_set_device_focus_checked (xcb_connection_t *c, 2820 xcb_window_t focus, 2821 xcb_timestamp_t time, 2822 uint8_t revert_to, 2823 uint8_t device_id) 2824 { 2825 static const xcb_protocol_request_t xcb_req = { 2826 .count = 2, 2827 .ext = &xcb_input_id, 2828 .opcode = XCB_INPUT_SET_DEVICE_FOCUS, 2829 .isvoid = 1 2830 }; 2831 2832 struct iovec xcb_parts[4]; 2833 xcb_void_cookie_t xcb_ret; 2834 xcb_input_set_device_focus_request_t xcb_out; 2835 2836 xcb_out.focus = focus; 2837 xcb_out.time = time; 2838 xcb_out.revert_to = revert_to; 2839 xcb_out.device_id = device_id; 2840 memset(xcb_out.pad0, 0, 2); 2841 2842 xcb_parts[2].iov_base = (char *) &xcb_out; 2843 xcb_parts[2].iov_len = sizeof(xcb_out); 2844 xcb_parts[3].iov_base = 0; 2845 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2846 2847 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2848 return xcb_ret; 2849 } 2850 2851 xcb_void_cookie_t 2852 xcb_input_set_device_focus (xcb_connection_t *c, 2853 xcb_window_t focus, 2854 xcb_timestamp_t time, 2855 uint8_t revert_to, 2856 uint8_t device_id) 2857 { 2858 static const xcb_protocol_request_t xcb_req = { 2859 .count = 2, 2860 .ext = &xcb_input_id, 2861 .opcode = XCB_INPUT_SET_DEVICE_FOCUS, 2862 .isvoid = 1 2863 }; 2864 2865 struct iovec xcb_parts[4]; 2866 xcb_void_cookie_t xcb_ret; 2867 xcb_input_set_device_focus_request_t xcb_out; 2868 2869 xcb_out.focus = focus; 2870 xcb_out.time = time; 2871 xcb_out.revert_to = revert_to; 2872 xcb_out.device_id = device_id; 2873 memset(xcb_out.pad0, 0, 2); 2874 2875 xcb_parts[2].iov_base = (char *) &xcb_out; 2876 xcb_parts[2].iov_len = sizeof(xcb_out); 2877 xcb_parts[3].iov_base = 0; 2878 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2879 2880 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2881 return xcb_ret; 2882 } 2883 2884 void 2885 xcb_input_kbd_feedback_state_next (xcb_input_kbd_feedback_state_iterator_t *i) 2886 { 2887 --i->rem; 2888 ++i->data; 2889 i->index += sizeof(xcb_input_kbd_feedback_state_t); 2890 } 2891 2892 xcb_generic_iterator_t 2893 xcb_input_kbd_feedback_state_end (xcb_input_kbd_feedback_state_iterator_t i) 2894 { 2895 xcb_generic_iterator_t ret; 2896 ret.data = i.data + i.rem; 2897 ret.index = i.index + ((char *) ret.data - (char *) i.data); 2898 ret.rem = 0; 2899 return ret; 2900 } 2901 2902 void 2903 xcb_input_ptr_feedback_state_next (xcb_input_ptr_feedback_state_iterator_t *i) 2904 { 2905 --i->rem; 2906 ++i->data; 2907 i->index += sizeof(xcb_input_ptr_feedback_state_t); 2908 } 2909 2910 xcb_generic_iterator_t 2911 xcb_input_ptr_feedback_state_end (xcb_input_ptr_feedback_state_iterator_t i) 2912 { 2913 xcb_generic_iterator_t ret; 2914 ret.data = i.data + i.rem; 2915 ret.index = i.index + ((char *) ret.data - (char *) i.data); 2916 ret.rem = 0; 2917 return ret; 2918 } 2919 2920 void 2921 xcb_input_integer_feedback_state_next (xcb_input_integer_feedback_state_iterator_t *i) 2922 { 2923 --i->rem; 2924 ++i->data; 2925 i->index += sizeof(xcb_input_integer_feedback_state_t); 2926 } 2927 2928 xcb_generic_iterator_t 2929 xcb_input_integer_feedback_state_end (xcb_input_integer_feedback_state_iterator_t i) 2930 { 2931 xcb_generic_iterator_t ret; 2932 ret.data = i.data + i.rem; 2933 ret.index = i.index + ((char *) ret.data - (char *) i.data); 2934 ret.rem = 0; 2935 return ret; 2936 } 2937 2938 int 2939 xcb_input_string_feedback_state_sizeof (const void *_buffer) 2940 { 2941 char *xcb_tmp = (char *)_buffer; 2942 const xcb_input_string_feedback_state_t *_aux = (xcb_input_string_feedback_state_t *)_buffer; 2943 unsigned int xcb_buffer_len = 0; 2944 unsigned int xcb_block_len = 0; 2945 unsigned int xcb_pad = 0; 2946 unsigned int xcb_align_to = 0; 2947 2948 2949 xcb_block_len += sizeof(xcb_input_string_feedback_state_t); 2950 xcb_tmp += xcb_block_len; 2951 xcb_buffer_len += xcb_block_len; 2952 xcb_block_len = 0; 2953 /* keysyms */ 2954 xcb_block_len += _aux->num_keysyms * sizeof(xcb_keysym_t); 2955 xcb_tmp += xcb_block_len; 2956 xcb_align_to = ALIGNOF(xcb_keysym_t); 2957 /* insert padding */ 2958 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2959 xcb_buffer_len += xcb_block_len + xcb_pad; 2960 if (0 != xcb_pad) { 2961 xcb_tmp += xcb_pad; 2962 xcb_pad = 0; 2963 } 2964 xcb_block_len = 0; 2965 2966 return xcb_buffer_len; 2967 } 2968 2969 xcb_keysym_t * 2970 xcb_input_string_feedback_state_keysyms (const xcb_input_string_feedback_state_t *R) 2971 { 2972 return (xcb_keysym_t *) (R + 1); 2973 } 2974 2975 int 2976 xcb_input_string_feedback_state_keysyms_length (const xcb_input_string_feedback_state_t *R) 2977 { 2978 return R->num_keysyms; 2979 } 2980 2981 xcb_generic_iterator_t 2982 xcb_input_string_feedback_state_keysyms_end (const xcb_input_string_feedback_state_t *R) 2983 { 2984 xcb_generic_iterator_t i; 2985 i.data = ((xcb_keysym_t *) (R + 1)) + (R->num_keysyms); 2986 i.rem = 0; 2987 i.index = (char *) i.data - (char *) R; 2988 return i; 2989 } 2990 2991 void 2992 xcb_input_string_feedback_state_next (xcb_input_string_feedback_state_iterator_t *i) 2993 { 2994 xcb_input_string_feedback_state_t *R = i->data; 2995 xcb_generic_iterator_t child; 2996 child.data = (xcb_input_string_feedback_state_t *)(((char *)R) + xcb_input_string_feedback_state_sizeof(R)); 2997 i->index = (char *) child.data - (char *) i->data; 2998 --i->rem; 2999 i->data = (xcb_input_string_feedback_state_t *) child.data; 3000 } 3001 3002 xcb_generic_iterator_t 3003 xcb_input_string_feedback_state_end (xcb_input_string_feedback_state_iterator_t i) 3004 { 3005 xcb_generic_iterator_t ret; 3006 while(i.rem > 0) 3007 xcb_input_string_feedback_state_next(&i); 3008 ret.data = i.data; 3009 ret.rem = i.rem; 3010 ret.index = i.index; 3011 return ret; 3012 } 3013 3014 void 3015 xcb_input_bell_feedback_state_next (xcb_input_bell_feedback_state_iterator_t *i) 3016 { 3017 --i->rem; 3018 ++i->data; 3019 i->index += sizeof(xcb_input_bell_feedback_state_t); 3020 } 3021 3022 xcb_generic_iterator_t 3023 xcb_input_bell_feedback_state_end (xcb_input_bell_feedback_state_iterator_t i) 3024 { 3025 xcb_generic_iterator_t ret; 3026 ret.data = i.data + i.rem; 3027 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3028 ret.rem = 0; 3029 return ret; 3030 } 3031 3032 void 3033 xcb_input_led_feedback_state_next (xcb_input_led_feedback_state_iterator_t *i) 3034 { 3035 --i->rem; 3036 ++i->data; 3037 i->index += sizeof(xcb_input_led_feedback_state_t); 3038 } 3039 3040 xcb_generic_iterator_t 3041 xcb_input_led_feedback_state_end (xcb_input_led_feedback_state_iterator_t i) 3042 { 3043 xcb_generic_iterator_t ret; 3044 ret.data = i.data + i.rem; 3045 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3046 ret.rem = 0; 3047 return ret; 3048 } 3049 3050 xcb_keysym_t * 3051 xcb_input_feedback_state_data_string_keysyms (const xcb_input_feedback_state_data_t *S) 3052 { 3053 return S->string.keysyms; 3054 } 3055 3056 int 3057 xcb_input_feedback_state_data_string_keysyms_length (const xcb_input_feedback_state_t *R, 3058 const xcb_input_feedback_state_data_t *S) 3059 { 3060 return S->string.num_keysyms; 3061 } 3062 3063 xcb_generic_iterator_t 3064 xcb_input_feedback_state_data_string_keysyms_end (const xcb_input_feedback_state_t *R, 3065 const xcb_input_feedback_state_data_t *S) 3066 { 3067 xcb_generic_iterator_t i; 3068 i.data = S->string.keysyms + S->string.num_keysyms; 3069 i.rem = 0; 3070 i.index = (char *) i.data - (char *) S; 3071 return i; 3072 } 3073 3074 int 3075 xcb_input_feedback_state_data_serialize (void **_buffer, 3076 uint8_t class_id, 3077 const xcb_input_feedback_state_data_t *_aux) 3078 { 3079 char *xcb_out = *_buffer; 3080 unsigned int xcb_buffer_len = 0; 3081 unsigned int xcb_align_to = 0; 3082 unsigned int xcb_padding_offset = 0; 3083 3084 unsigned int xcb_pad = 0; 3085 char xcb_pad0[3] = {0, 0, 0}; 3086 struct iovec xcb_parts[27]; 3087 unsigned int xcb_parts_idx = 0; 3088 unsigned int xcb_block_len = 0; 3089 unsigned int i; 3090 char *xcb_tmp; 3091 3092 if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { 3093 /* xcb_input_feedback_state_data_t.keyboard.pitch */ 3094 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.pitch; 3095 xcb_block_len += sizeof(uint16_t); 3096 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3097 xcb_parts_idx++; 3098 xcb_align_to = ALIGNOF(uint16_t); 3099 /* xcb_input_feedback_state_data_t.keyboard.duration */ 3100 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.duration; 3101 xcb_block_len += sizeof(uint16_t); 3102 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3103 xcb_parts_idx++; 3104 xcb_align_to = ALIGNOF(uint16_t); 3105 /* xcb_input_feedback_state_data_t.keyboard.led_mask */ 3106 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_mask; 3107 xcb_block_len += sizeof(uint32_t); 3108 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3109 xcb_parts_idx++; 3110 xcb_align_to = ALIGNOF(uint32_t); 3111 /* xcb_input_feedback_state_data_t.keyboard.led_values */ 3112 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_values; 3113 xcb_block_len += sizeof(uint32_t); 3114 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3115 xcb_parts_idx++; 3116 xcb_align_to = ALIGNOF(uint32_t); 3117 /* xcb_input_feedback_state_data_t.keyboard.global_auto_repeat */ 3118 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.global_auto_repeat; 3119 xcb_block_len += sizeof(uint8_t); 3120 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 3121 xcb_parts_idx++; 3122 xcb_align_to = ALIGNOF(uint8_t); 3123 /* xcb_input_feedback_state_data_t.keyboard.click */ 3124 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.click; 3125 xcb_block_len += sizeof(uint8_t); 3126 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 3127 xcb_parts_idx++; 3128 xcb_align_to = ALIGNOF(uint8_t); 3129 /* xcb_input_feedback_state_data_t.keyboard.percent */ 3130 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.percent; 3131 xcb_block_len += sizeof(uint8_t); 3132 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 3133 xcb_parts_idx++; 3134 xcb_align_to = ALIGNOF(uint8_t); 3135 /* xcb_input_feedback_state_data_t.keyboard.pad0 */ 3136 xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; 3137 xcb_block_len += sizeof(uint8_t); 3138 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 3139 xcb_parts_idx++; 3140 xcb_align_to = ALIGNOF(uint8_t); 3141 /* xcb_input_feedback_state_data_t.keyboard.auto_repeats */ 3142 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyboard.auto_repeats; 3143 xcb_block_len += 32; 3144 xcb_parts[xcb_parts_idx].iov_len = 32; 3145 xcb_parts_idx++; 3146 xcb_align_to = ALIGNOF(uint8_t); 3147 } 3148 if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { 3149 /* xcb_input_feedback_state_data_t.pointer.pad1 */ 3150 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3151 xcb_block_len += sizeof(uint8_t)*2; 3152 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 3153 xcb_parts_idx++; 3154 xcb_align_to = ALIGNOF(uint8_t); 3155 /* xcb_input_feedback_state_data_t.pointer.accel_num */ 3156 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.accel_num; 3157 xcb_block_len += sizeof(uint16_t); 3158 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3159 xcb_parts_idx++; 3160 xcb_align_to = ALIGNOF(uint16_t); 3161 /* xcb_input_feedback_state_data_t.pointer.accel_denom */ 3162 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.accel_denom; 3163 xcb_block_len += sizeof(uint16_t); 3164 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3165 xcb_parts_idx++; 3166 xcb_align_to = ALIGNOF(uint16_t); 3167 /* xcb_input_feedback_state_data_t.pointer.threshold */ 3168 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.threshold; 3169 xcb_block_len += sizeof(uint16_t); 3170 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3171 xcb_parts_idx++; 3172 xcb_align_to = ALIGNOF(uint16_t); 3173 } 3174 if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { 3175 /* xcb_input_feedback_state_data_t.string.max_symbols */ 3176 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->string.max_symbols; 3177 xcb_block_len += sizeof(uint16_t); 3178 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3179 xcb_parts_idx++; 3180 xcb_align_to = ALIGNOF(uint16_t); 3181 /* xcb_input_feedback_state_data_t.string.num_keysyms */ 3182 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->string.num_keysyms; 3183 xcb_block_len += sizeof(uint16_t); 3184 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3185 xcb_parts_idx++; 3186 xcb_align_to = ALIGNOF(uint16_t); 3187 /* insert padding */ 3188 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 3189 xcb_buffer_len += xcb_block_len + xcb_pad; 3190 if (0 != xcb_pad) { 3191 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3192 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 3193 xcb_parts_idx++; 3194 xcb_pad = 0; 3195 } 3196 xcb_block_len = 0; 3197 xcb_padding_offset = 0; 3198 /* keysyms */ 3199 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->string.keysyms; 3200 xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); 3201 xcb_parts[xcb_parts_idx].iov_len = _aux->string.num_keysyms * sizeof(uint32_t); 3202 xcb_parts_idx++; 3203 xcb_align_to = ALIGNOF(xcb_keysym_t); 3204 } 3205 if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { 3206 /* xcb_input_feedback_state_data_t.integer.resolution */ 3207 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.resolution; 3208 xcb_block_len += sizeof(uint32_t); 3209 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3210 xcb_parts_idx++; 3211 xcb_align_to = ALIGNOF(uint32_t); 3212 /* xcb_input_feedback_state_data_t.integer.min_value */ 3213 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.min_value; 3214 xcb_block_len += sizeof(int32_t); 3215 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 3216 xcb_parts_idx++; 3217 xcb_align_to = ALIGNOF(int32_t); 3218 /* xcb_input_feedback_state_data_t.integer.max_value */ 3219 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.max_value; 3220 xcb_block_len += sizeof(int32_t); 3221 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 3222 xcb_parts_idx++; 3223 xcb_align_to = ALIGNOF(int32_t); 3224 } 3225 if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { 3226 /* xcb_input_feedback_state_data_t.led.led_mask */ 3227 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_mask; 3228 xcb_block_len += sizeof(uint32_t); 3229 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3230 xcb_parts_idx++; 3231 xcb_align_to = ALIGNOF(uint32_t); 3232 /* xcb_input_feedback_state_data_t.led.led_values */ 3233 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_values; 3234 xcb_block_len += sizeof(uint32_t); 3235 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3236 xcb_parts_idx++; 3237 xcb_align_to = ALIGNOF(uint32_t); 3238 } 3239 if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { 3240 /* xcb_input_feedback_state_data_t.bell.percent */ 3241 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.percent; 3242 xcb_block_len += sizeof(uint8_t); 3243 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 3244 xcb_parts_idx++; 3245 xcb_align_to = ALIGNOF(uint8_t); 3246 /* xcb_input_feedback_state_data_t.bell.pad2 */ 3247 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3248 xcb_block_len += sizeof(uint8_t)*3; 3249 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; 3250 xcb_parts_idx++; 3251 xcb_align_to = ALIGNOF(uint8_t); 3252 /* xcb_input_feedback_state_data_t.bell.pitch */ 3253 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.pitch; 3254 xcb_block_len += sizeof(uint16_t); 3255 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3256 xcb_parts_idx++; 3257 xcb_align_to = ALIGNOF(uint16_t); 3258 /* xcb_input_feedback_state_data_t.bell.duration */ 3259 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.duration; 3260 xcb_block_len += sizeof(uint16_t); 3261 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3262 xcb_parts_idx++; 3263 xcb_align_to = ALIGNOF(uint16_t); 3264 } 3265 /* insert padding */ 3266 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 3267 xcb_buffer_len += xcb_block_len + xcb_pad; 3268 if (0 != xcb_pad) { 3269 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3270 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 3271 xcb_parts_idx++; 3272 xcb_pad = 0; 3273 } 3274 xcb_block_len = 0; 3275 xcb_padding_offset = 0; 3276 3277 if (NULL == xcb_out) { 3278 /* allocate memory */ 3279 xcb_out = malloc(xcb_buffer_len); 3280 *_buffer = xcb_out; 3281 } 3282 3283 xcb_tmp = xcb_out; 3284 for(i=0; i<xcb_parts_idx; i++) { 3285 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 3286 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 3287 if (0 != xcb_parts[i].iov_len) 3288 xcb_tmp += xcb_parts[i].iov_len; 3289 } 3290 3291 return xcb_buffer_len; 3292 } 3293 3294 int 3295 xcb_input_feedback_state_data_unpack (const void *_buffer, 3296 uint8_t class_id, 3297 xcb_input_feedback_state_data_t *_aux) 3298 { 3299 char *xcb_tmp = (char *)_buffer; 3300 unsigned int xcb_buffer_len = 0; 3301 unsigned int xcb_block_len = 0; 3302 unsigned int xcb_pad = 0; 3303 unsigned int xcb_align_to = 0; 3304 unsigned int xcb_padding_offset = 0; 3305 3306 3307 if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { 3308 /* xcb_input_feedback_state_data_t.keyboard.pitch */ 3309 _aux->keyboard.pitch = *(uint16_t *)xcb_tmp; 3310 xcb_block_len += sizeof(uint16_t); 3311 xcb_tmp += sizeof(uint16_t); 3312 xcb_align_to = ALIGNOF(uint16_t); 3313 /* xcb_input_feedback_state_data_t.keyboard.duration */ 3314 _aux->keyboard.duration = *(uint16_t *)xcb_tmp; 3315 xcb_block_len += sizeof(uint16_t); 3316 xcb_tmp += sizeof(uint16_t); 3317 xcb_align_to = ALIGNOF(uint16_t); 3318 /* xcb_input_feedback_state_data_t.keyboard.led_mask */ 3319 _aux->keyboard.led_mask = *(uint32_t *)xcb_tmp; 3320 xcb_block_len += sizeof(uint32_t); 3321 xcb_tmp += sizeof(uint32_t); 3322 xcb_align_to = ALIGNOF(uint32_t); 3323 /* xcb_input_feedback_state_data_t.keyboard.led_values */ 3324 _aux->keyboard.led_values = *(uint32_t *)xcb_tmp; 3325 xcb_block_len += sizeof(uint32_t); 3326 xcb_tmp += sizeof(uint32_t); 3327 xcb_align_to = ALIGNOF(uint32_t); 3328 /* xcb_input_feedback_state_data_t.keyboard.global_auto_repeat */ 3329 _aux->keyboard.global_auto_repeat = *(uint8_t *)xcb_tmp; 3330 xcb_block_len += sizeof(uint8_t); 3331 xcb_tmp += sizeof(uint8_t); 3332 xcb_align_to = ALIGNOF(uint8_t); 3333 /* xcb_input_feedback_state_data_t.keyboard.click */ 3334 _aux->keyboard.click = *(uint8_t *)xcb_tmp; 3335 xcb_block_len += sizeof(uint8_t); 3336 xcb_tmp += sizeof(uint8_t); 3337 xcb_align_to = ALIGNOF(uint8_t); 3338 /* xcb_input_feedback_state_data_t.keyboard.percent */ 3339 _aux->keyboard.percent = *(uint8_t *)xcb_tmp; 3340 xcb_block_len += sizeof(uint8_t); 3341 xcb_tmp += sizeof(uint8_t); 3342 xcb_align_to = ALIGNOF(uint8_t); 3343 /* xcb_input_feedback_state_data_t.keyboard.pad0 */ 3344 _aux->keyboard.pad0 = *(uint8_t *)xcb_tmp; 3345 xcb_block_len += sizeof(uint8_t); 3346 xcb_tmp += sizeof(uint8_t); 3347 xcb_align_to = ALIGNOF(uint8_t); 3348 /* xcb_input_feedback_state_data_t.keyboard.auto_repeats */ 3349 memcpy(_aux->keyboard.auto_repeats, xcb_tmp, sizeof(uint8_t) * 32); 3350 xcb_block_len += sizeof(uint8_t) * 32; 3351 xcb_tmp += sizeof(uint8_t) * 32; 3352 xcb_align_to = ALIGNOF(uint8_t); 3353 } 3354 if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { 3355 /* xcb_input_feedback_state_data_t.pointer.pad1 */ 3356 _aux->pointer.pad1[0] = *(uint8_t *)xcb_tmp; 3357 _aux->pointer.pad1[1] = *(uint8_t *)xcb_tmp; 3358 xcb_block_len += sizeof(uint8_t) * 2; 3359 xcb_tmp += sizeof(uint8_t) * 2; 3360 xcb_align_to = ALIGNOF(uint8_t); 3361 /* xcb_input_feedback_state_data_t.pointer.accel_num */ 3362 _aux->pointer.accel_num = *(uint16_t *)xcb_tmp; 3363 xcb_block_len += sizeof(uint16_t); 3364 xcb_tmp += sizeof(uint16_t); 3365 xcb_align_to = ALIGNOF(uint16_t); 3366 /* xcb_input_feedback_state_data_t.pointer.accel_denom */ 3367 _aux->pointer.accel_denom = *(uint16_t *)xcb_tmp; 3368 xcb_block_len += sizeof(uint16_t); 3369 xcb_tmp += sizeof(uint16_t); 3370 xcb_align_to = ALIGNOF(uint16_t); 3371 /* xcb_input_feedback_state_data_t.pointer.threshold */ 3372 _aux->pointer.threshold = *(uint16_t *)xcb_tmp; 3373 xcb_block_len += sizeof(uint16_t); 3374 xcb_tmp += sizeof(uint16_t); 3375 xcb_align_to = ALIGNOF(uint16_t); 3376 } 3377 if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { 3378 /* xcb_input_feedback_state_data_t.string.max_symbols */ 3379 _aux->string.max_symbols = *(uint16_t *)xcb_tmp; 3380 xcb_block_len += sizeof(uint16_t); 3381 xcb_tmp += sizeof(uint16_t); 3382 xcb_align_to = ALIGNOF(uint16_t); 3383 /* xcb_input_feedback_state_data_t.string.num_keysyms */ 3384 _aux->string.num_keysyms = *(uint16_t *)xcb_tmp; 3385 xcb_block_len += sizeof(uint16_t); 3386 xcb_tmp += sizeof(uint16_t); 3387 xcb_align_to = ALIGNOF(uint16_t); 3388 /* insert padding */ 3389 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 3390 xcb_buffer_len += xcb_block_len + xcb_pad; 3391 if (0 != xcb_pad) { 3392 xcb_tmp += xcb_pad; 3393 xcb_pad = 0; 3394 } 3395 xcb_block_len = 0; 3396 xcb_padding_offset = 0; 3397 /* keysyms */ 3398 _aux->string.keysyms = (xcb_keysym_t *)xcb_tmp; 3399 xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); 3400 xcb_tmp += xcb_block_len; 3401 xcb_align_to = ALIGNOF(xcb_keysym_t); 3402 } 3403 if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { 3404 /* xcb_input_feedback_state_data_t.integer.resolution */ 3405 _aux->integer.resolution = *(uint32_t *)xcb_tmp; 3406 xcb_block_len += sizeof(uint32_t); 3407 xcb_tmp += sizeof(uint32_t); 3408 xcb_align_to = ALIGNOF(uint32_t); 3409 /* xcb_input_feedback_state_data_t.integer.min_value */ 3410 _aux->integer.min_value = *(int32_t *)xcb_tmp; 3411 xcb_block_len += sizeof(int32_t); 3412 xcb_tmp += sizeof(int32_t); 3413 xcb_align_to = ALIGNOF(int32_t); 3414 /* xcb_input_feedback_state_data_t.integer.max_value */ 3415 _aux->integer.max_value = *(int32_t *)xcb_tmp; 3416 xcb_block_len += sizeof(int32_t); 3417 xcb_tmp += sizeof(int32_t); 3418 xcb_align_to = ALIGNOF(int32_t); 3419 } 3420 if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { 3421 /* xcb_input_feedback_state_data_t.led.led_mask */ 3422 _aux->led.led_mask = *(uint32_t *)xcb_tmp; 3423 xcb_block_len += sizeof(uint32_t); 3424 xcb_tmp += sizeof(uint32_t); 3425 xcb_align_to = ALIGNOF(uint32_t); 3426 /* xcb_input_feedback_state_data_t.led.led_values */ 3427 _aux->led.led_values = *(uint32_t *)xcb_tmp; 3428 xcb_block_len += sizeof(uint32_t); 3429 xcb_tmp += sizeof(uint32_t); 3430 xcb_align_to = ALIGNOF(uint32_t); 3431 } 3432 if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { 3433 /* xcb_input_feedback_state_data_t.bell.percent */ 3434 _aux->bell.percent = *(uint8_t *)xcb_tmp; 3435 xcb_block_len += sizeof(uint8_t); 3436 xcb_tmp += sizeof(uint8_t); 3437 xcb_align_to = ALIGNOF(uint8_t); 3438 /* xcb_input_feedback_state_data_t.bell.pad2 */ 3439 _aux->bell.pad2[0] = *(uint8_t *)xcb_tmp; 3440 _aux->bell.pad2[1] = *(uint8_t *)xcb_tmp; 3441 _aux->bell.pad2[2] = *(uint8_t *)xcb_tmp; 3442 xcb_block_len += sizeof(uint8_t) * 3; 3443 xcb_tmp += sizeof(uint8_t) * 3; 3444 xcb_align_to = ALIGNOF(uint8_t); 3445 /* xcb_input_feedback_state_data_t.bell.pitch */ 3446 _aux->bell.pitch = *(uint16_t *)xcb_tmp; 3447 xcb_block_len += sizeof(uint16_t); 3448 xcb_tmp += sizeof(uint16_t); 3449 xcb_align_to = ALIGNOF(uint16_t); 3450 /* xcb_input_feedback_state_data_t.bell.duration */ 3451 _aux->bell.duration = *(uint16_t *)xcb_tmp; 3452 xcb_block_len += sizeof(uint16_t); 3453 xcb_tmp += sizeof(uint16_t); 3454 xcb_align_to = ALIGNOF(uint16_t); 3455 } 3456 /* insert padding */ 3457 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 3458 xcb_buffer_len += xcb_block_len + xcb_pad; 3459 if (0 != xcb_pad) { 3460 xcb_tmp += xcb_pad; 3461 xcb_pad = 0; 3462 } 3463 xcb_block_len = 0; 3464 xcb_padding_offset = 0; 3465 3466 return xcb_buffer_len; 3467 } 3468 3469 int 3470 xcb_input_feedback_state_data_sizeof (const void *_buffer, 3471 uint8_t class_id) 3472 { 3473 xcb_input_feedback_state_data_t _aux; 3474 return xcb_input_feedback_state_data_unpack(_buffer, class_id, &_aux); 3475 } 3476 3477 int 3478 xcb_input_feedback_state_sizeof (const void *_buffer) 3479 { 3480 char *xcb_tmp = (char *)_buffer; 3481 const xcb_input_feedback_state_t *_aux = (xcb_input_feedback_state_t *)_buffer; 3482 unsigned int xcb_buffer_len = 0; 3483 unsigned int xcb_block_len = 0; 3484 unsigned int xcb_pad = 0; 3485 unsigned int xcb_align_to = 0; 3486 3487 3488 xcb_block_len += sizeof(xcb_input_feedback_state_t); 3489 xcb_tmp += xcb_block_len; 3490 xcb_buffer_len += xcb_block_len; 3491 xcb_block_len = 0; 3492 /* data */ 3493 xcb_block_len += xcb_input_feedback_state_data_sizeof(xcb_tmp, _aux->class_id); 3494 xcb_tmp += xcb_block_len; 3495 xcb_align_to = ALIGNOF(char); 3496 /* insert padding */ 3497 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3498 xcb_buffer_len += xcb_block_len + xcb_pad; 3499 if (0 != xcb_pad) { 3500 xcb_tmp += xcb_pad; 3501 xcb_pad = 0; 3502 } 3503 xcb_block_len = 0; 3504 3505 return xcb_buffer_len; 3506 } 3507 3508 void * 3509 xcb_input_feedback_state_data (const xcb_input_feedback_state_t *R) 3510 { 3511 return (void *) (R + 1); 3512 } 3513 3514 void 3515 xcb_input_feedback_state_next (xcb_input_feedback_state_iterator_t *i) 3516 { 3517 xcb_input_feedback_state_t *R = i->data; 3518 xcb_generic_iterator_t child; 3519 child.data = (xcb_input_feedback_state_t *)(((char *)R) + xcb_input_feedback_state_sizeof(R)); 3520 i->index = (char *) child.data - (char *) i->data; 3521 --i->rem; 3522 i->data = (xcb_input_feedback_state_t *) child.data; 3523 } 3524 3525 xcb_generic_iterator_t 3526 xcb_input_feedback_state_end (xcb_input_feedback_state_iterator_t i) 3527 { 3528 xcb_generic_iterator_t ret; 3529 while(i.rem > 0) 3530 xcb_input_feedback_state_next(&i); 3531 ret.data = i.data; 3532 ret.rem = i.rem; 3533 ret.index = i.index; 3534 return ret; 3535 } 3536 3537 int 3538 xcb_input_get_feedback_control_sizeof (const void *_buffer) 3539 { 3540 char *xcb_tmp = (char *)_buffer; 3541 const xcb_input_get_feedback_control_reply_t *_aux = (xcb_input_get_feedback_control_reply_t *)_buffer; 3542 unsigned int xcb_buffer_len = 0; 3543 unsigned int xcb_block_len = 0; 3544 unsigned int xcb_pad = 0; 3545 unsigned int xcb_align_to = 0; 3546 3547 unsigned int i; 3548 unsigned int xcb_tmp_len; 3549 3550 xcb_block_len += sizeof(xcb_input_get_feedback_control_reply_t); 3551 xcb_tmp += xcb_block_len; 3552 xcb_buffer_len += xcb_block_len; 3553 xcb_block_len = 0; 3554 /* feedbacks */ 3555 for(i=0; i<_aux->num_feedbacks; i++) { 3556 xcb_tmp_len = xcb_input_feedback_state_sizeof(xcb_tmp); 3557 xcb_block_len += xcb_tmp_len; 3558 xcb_tmp += xcb_tmp_len; 3559 } 3560 xcb_align_to = ALIGNOF(xcb_input_feedback_state_t); 3561 /* insert padding */ 3562 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3563 xcb_buffer_len += xcb_block_len + xcb_pad; 3564 if (0 != xcb_pad) { 3565 xcb_tmp += xcb_pad; 3566 xcb_pad = 0; 3567 } 3568 xcb_block_len = 0; 3569 3570 return xcb_buffer_len; 3571 } 3572 3573 xcb_input_get_feedback_control_cookie_t 3574 xcb_input_get_feedback_control (xcb_connection_t *c, 3575 uint8_t device_id) 3576 { 3577 static const xcb_protocol_request_t xcb_req = { 3578 .count = 2, 3579 .ext = &xcb_input_id, 3580 .opcode = XCB_INPUT_GET_FEEDBACK_CONTROL, 3581 .isvoid = 0 3582 }; 3583 3584 struct iovec xcb_parts[4]; 3585 xcb_input_get_feedback_control_cookie_t xcb_ret; 3586 xcb_input_get_feedback_control_request_t xcb_out; 3587 3588 xcb_out.device_id = device_id; 3589 memset(xcb_out.pad0, 0, 3); 3590 3591 xcb_parts[2].iov_base = (char *) &xcb_out; 3592 xcb_parts[2].iov_len = sizeof(xcb_out); 3593 xcb_parts[3].iov_base = 0; 3594 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3595 3596 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3597 return xcb_ret; 3598 } 3599 3600 xcb_input_get_feedback_control_cookie_t 3601 xcb_input_get_feedback_control_unchecked (xcb_connection_t *c, 3602 uint8_t device_id) 3603 { 3604 static const xcb_protocol_request_t xcb_req = { 3605 .count = 2, 3606 .ext = &xcb_input_id, 3607 .opcode = XCB_INPUT_GET_FEEDBACK_CONTROL, 3608 .isvoid = 0 3609 }; 3610 3611 struct iovec xcb_parts[4]; 3612 xcb_input_get_feedback_control_cookie_t xcb_ret; 3613 xcb_input_get_feedback_control_request_t xcb_out; 3614 3615 xcb_out.device_id = device_id; 3616 memset(xcb_out.pad0, 0, 3); 3617 3618 xcb_parts[2].iov_base = (char *) &xcb_out; 3619 xcb_parts[2].iov_len = sizeof(xcb_out); 3620 xcb_parts[3].iov_base = 0; 3621 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3622 3623 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3624 return xcb_ret; 3625 } 3626 3627 int 3628 xcb_input_get_feedback_control_feedbacks_length (const xcb_input_get_feedback_control_reply_t *R) 3629 { 3630 return R->num_feedbacks; 3631 } 3632 3633 xcb_input_feedback_state_iterator_t 3634 xcb_input_get_feedback_control_feedbacks_iterator (const xcb_input_get_feedback_control_reply_t *R) 3635 { 3636 xcb_input_feedback_state_iterator_t i; 3637 i.data = (xcb_input_feedback_state_t *) (R + 1); 3638 i.rem = R->num_feedbacks; 3639 i.index = (char *) i.data - (char *) R; 3640 return i; 3641 } 3642 3643 xcb_input_get_feedback_control_reply_t * 3644 xcb_input_get_feedback_control_reply (xcb_connection_t *c, 3645 xcb_input_get_feedback_control_cookie_t cookie /**< */, 3646 xcb_generic_error_t **e) 3647 { 3648 return (xcb_input_get_feedback_control_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3649 } 3650 3651 void 3652 xcb_input_kbd_feedback_ctl_next (xcb_input_kbd_feedback_ctl_iterator_t *i) 3653 { 3654 --i->rem; 3655 ++i->data; 3656 i->index += sizeof(xcb_input_kbd_feedback_ctl_t); 3657 } 3658 3659 xcb_generic_iterator_t 3660 xcb_input_kbd_feedback_ctl_end (xcb_input_kbd_feedback_ctl_iterator_t i) 3661 { 3662 xcb_generic_iterator_t ret; 3663 ret.data = i.data + i.rem; 3664 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3665 ret.rem = 0; 3666 return ret; 3667 } 3668 3669 void 3670 xcb_input_ptr_feedback_ctl_next (xcb_input_ptr_feedback_ctl_iterator_t *i) 3671 { 3672 --i->rem; 3673 ++i->data; 3674 i->index += sizeof(xcb_input_ptr_feedback_ctl_t); 3675 } 3676 3677 xcb_generic_iterator_t 3678 xcb_input_ptr_feedback_ctl_end (xcb_input_ptr_feedback_ctl_iterator_t i) 3679 { 3680 xcb_generic_iterator_t ret; 3681 ret.data = i.data + i.rem; 3682 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3683 ret.rem = 0; 3684 return ret; 3685 } 3686 3687 void 3688 xcb_input_integer_feedback_ctl_next (xcb_input_integer_feedback_ctl_iterator_t *i) 3689 { 3690 --i->rem; 3691 ++i->data; 3692 i->index += sizeof(xcb_input_integer_feedback_ctl_t); 3693 } 3694 3695 xcb_generic_iterator_t 3696 xcb_input_integer_feedback_ctl_end (xcb_input_integer_feedback_ctl_iterator_t i) 3697 { 3698 xcb_generic_iterator_t ret; 3699 ret.data = i.data + i.rem; 3700 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3701 ret.rem = 0; 3702 return ret; 3703 } 3704 3705 int 3706 xcb_input_string_feedback_ctl_sizeof (const void *_buffer) 3707 { 3708 char *xcb_tmp = (char *)_buffer; 3709 const xcb_input_string_feedback_ctl_t *_aux = (xcb_input_string_feedback_ctl_t *)_buffer; 3710 unsigned int xcb_buffer_len = 0; 3711 unsigned int xcb_block_len = 0; 3712 unsigned int xcb_pad = 0; 3713 unsigned int xcb_align_to = 0; 3714 3715 3716 xcb_block_len += sizeof(xcb_input_string_feedback_ctl_t); 3717 xcb_tmp += xcb_block_len; 3718 xcb_buffer_len += xcb_block_len; 3719 xcb_block_len = 0; 3720 /* keysyms */ 3721 xcb_block_len += _aux->num_keysyms * sizeof(xcb_keysym_t); 3722 xcb_tmp += xcb_block_len; 3723 xcb_align_to = ALIGNOF(xcb_keysym_t); 3724 /* insert padding */ 3725 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3726 xcb_buffer_len += xcb_block_len + xcb_pad; 3727 if (0 != xcb_pad) { 3728 xcb_tmp += xcb_pad; 3729 xcb_pad = 0; 3730 } 3731 xcb_block_len = 0; 3732 3733 return xcb_buffer_len; 3734 } 3735 3736 xcb_keysym_t * 3737 xcb_input_string_feedback_ctl_keysyms (const xcb_input_string_feedback_ctl_t *R) 3738 { 3739 return (xcb_keysym_t *) (R + 1); 3740 } 3741 3742 int 3743 xcb_input_string_feedback_ctl_keysyms_length (const xcb_input_string_feedback_ctl_t *R) 3744 { 3745 return R->num_keysyms; 3746 } 3747 3748 xcb_generic_iterator_t 3749 xcb_input_string_feedback_ctl_keysyms_end (const xcb_input_string_feedback_ctl_t *R) 3750 { 3751 xcb_generic_iterator_t i; 3752 i.data = ((xcb_keysym_t *) (R + 1)) + (R->num_keysyms); 3753 i.rem = 0; 3754 i.index = (char *) i.data - (char *) R; 3755 return i; 3756 } 3757 3758 void 3759 xcb_input_string_feedback_ctl_next (xcb_input_string_feedback_ctl_iterator_t *i) 3760 { 3761 xcb_input_string_feedback_ctl_t *R = i->data; 3762 xcb_generic_iterator_t child; 3763 child.data = (xcb_input_string_feedback_ctl_t *)(((char *)R) + xcb_input_string_feedback_ctl_sizeof(R)); 3764 i->index = (char *) child.data - (char *) i->data; 3765 --i->rem; 3766 i->data = (xcb_input_string_feedback_ctl_t *) child.data; 3767 } 3768 3769 xcb_generic_iterator_t 3770 xcb_input_string_feedback_ctl_end (xcb_input_string_feedback_ctl_iterator_t i) 3771 { 3772 xcb_generic_iterator_t ret; 3773 while(i.rem > 0) 3774 xcb_input_string_feedback_ctl_next(&i); 3775 ret.data = i.data; 3776 ret.rem = i.rem; 3777 ret.index = i.index; 3778 return ret; 3779 } 3780 3781 void 3782 xcb_input_bell_feedback_ctl_next (xcb_input_bell_feedback_ctl_iterator_t *i) 3783 { 3784 --i->rem; 3785 ++i->data; 3786 i->index += sizeof(xcb_input_bell_feedback_ctl_t); 3787 } 3788 3789 xcb_generic_iterator_t 3790 xcb_input_bell_feedback_ctl_end (xcb_input_bell_feedback_ctl_iterator_t i) 3791 { 3792 xcb_generic_iterator_t ret; 3793 ret.data = i.data + i.rem; 3794 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3795 ret.rem = 0; 3796 return ret; 3797 } 3798 3799 void 3800 xcb_input_led_feedback_ctl_next (xcb_input_led_feedback_ctl_iterator_t *i) 3801 { 3802 --i->rem; 3803 ++i->data; 3804 i->index += sizeof(xcb_input_led_feedback_ctl_t); 3805 } 3806 3807 xcb_generic_iterator_t 3808 xcb_input_led_feedback_ctl_end (xcb_input_led_feedback_ctl_iterator_t i) 3809 { 3810 xcb_generic_iterator_t ret; 3811 ret.data = i.data + i.rem; 3812 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3813 ret.rem = 0; 3814 return ret; 3815 } 3816 3817 xcb_keysym_t * 3818 xcb_input_feedback_ctl_data_string_keysyms (const xcb_input_feedback_ctl_data_t *S) 3819 { 3820 return S->string.keysyms; 3821 } 3822 3823 int 3824 xcb_input_feedback_ctl_data_string_keysyms_length (const xcb_input_feedback_ctl_t *R, 3825 const xcb_input_feedback_ctl_data_t *S) 3826 { 3827 return S->string.num_keysyms; 3828 } 3829 3830 xcb_generic_iterator_t 3831 xcb_input_feedback_ctl_data_string_keysyms_end (const xcb_input_feedback_ctl_t *R, 3832 const xcb_input_feedback_ctl_data_t *S) 3833 { 3834 xcb_generic_iterator_t i; 3835 i.data = S->string.keysyms + S->string.num_keysyms; 3836 i.rem = 0; 3837 i.index = (char *) i.data - (char *) S; 3838 return i; 3839 } 3840 3841 int 3842 xcb_input_feedback_ctl_data_serialize (void **_buffer, 3843 uint8_t class_id, 3844 const xcb_input_feedback_ctl_data_t *_aux) 3845 { 3846 char *xcb_out = *_buffer; 3847 unsigned int xcb_buffer_len = 0; 3848 unsigned int xcb_align_to = 0; 3849 unsigned int xcb_padding_offset = 0; 3850 3851 unsigned int xcb_pad = 0; 3852 char xcb_pad0[3] = {0, 0, 0}; 3853 struct iovec xcb_parts[24]; 3854 unsigned int xcb_parts_idx = 0; 3855 unsigned int xcb_block_len = 0; 3856 unsigned int i; 3857 char *xcb_tmp; 3858 3859 if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { 3860 /* xcb_input_feedback_ctl_data_t.keyboard.key */ 3861 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.key; 3862 xcb_block_len += sizeof(xcb_input_key_code_t); 3863 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_key_code_t); 3864 xcb_parts_idx++; 3865 xcb_align_to = ALIGNOF(xcb_input_key_code_t); 3866 /* xcb_input_feedback_ctl_data_t.keyboard.auto_repeat_mode */ 3867 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.auto_repeat_mode; 3868 xcb_block_len += sizeof(uint8_t); 3869 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 3870 xcb_parts_idx++; 3871 xcb_align_to = ALIGNOF(uint8_t); 3872 /* xcb_input_feedback_ctl_data_t.keyboard.key_click_percent */ 3873 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.key_click_percent; 3874 xcb_block_len += sizeof(int8_t); 3875 xcb_parts[xcb_parts_idx].iov_len = sizeof(int8_t); 3876 xcb_parts_idx++; 3877 xcb_align_to = ALIGNOF(int8_t); 3878 /* xcb_input_feedback_ctl_data_t.keyboard.bell_percent */ 3879 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.bell_percent; 3880 xcb_block_len += sizeof(int8_t); 3881 xcb_parts[xcb_parts_idx].iov_len = sizeof(int8_t); 3882 xcb_parts_idx++; 3883 xcb_align_to = ALIGNOF(int8_t); 3884 /* xcb_input_feedback_ctl_data_t.keyboard.bell_pitch */ 3885 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.bell_pitch; 3886 xcb_block_len += sizeof(int16_t); 3887 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 3888 xcb_parts_idx++; 3889 xcb_align_to = ALIGNOF(int16_t); 3890 /* xcb_input_feedback_ctl_data_t.keyboard.bell_duration */ 3891 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.bell_duration; 3892 xcb_block_len += sizeof(int16_t); 3893 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 3894 xcb_parts_idx++; 3895 xcb_align_to = ALIGNOF(int16_t); 3896 /* xcb_input_feedback_ctl_data_t.keyboard.led_mask */ 3897 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_mask; 3898 xcb_block_len += sizeof(uint32_t); 3899 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3900 xcb_parts_idx++; 3901 xcb_align_to = ALIGNOF(uint32_t); 3902 /* xcb_input_feedback_ctl_data_t.keyboard.led_values */ 3903 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_values; 3904 xcb_block_len += sizeof(uint32_t); 3905 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3906 xcb_parts_idx++; 3907 xcb_align_to = ALIGNOF(uint32_t); 3908 } 3909 if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { 3910 /* xcb_input_feedback_ctl_data_t.pointer.pad0 */ 3911 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3912 xcb_block_len += sizeof(uint8_t)*2; 3913 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 3914 xcb_parts_idx++; 3915 xcb_align_to = ALIGNOF(uint8_t); 3916 /* xcb_input_feedback_ctl_data_t.pointer.num */ 3917 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.num; 3918 xcb_block_len += sizeof(int16_t); 3919 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 3920 xcb_parts_idx++; 3921 xcb_align_to = ALIGNOF(int16_t); 3922 /* xcb_input_feedback_ctl_data_t.pointer.denom */ 3923 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.denom; 3924 xcb_block_len += sizeof(int16_t); 3925 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 3926 xcb_parts_idx++; 3927 xcb_align_to = ALIGNOF(int16_t); 3928 /* xcb_input_feedback_ctl_data_t.pointer.threshold */ 3929 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.threshold; 3930 xcb_block_len += sizeof(int16_t); 3931 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 3932 xcb_parts_idx++; 3933 xcb_align_to = ALIGNOF(int16_t); 3934 } 3935 if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { 3936 /* xcb_input_feedback_ctl_data_t.string.pad1 */ 3937 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3938 xcb_block_len += sizeof(uint8_t)*2; 3939 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 3940 xcb_parts_idx++; 3941 xcb_align_to = ALIGNOF(uint8_t); 3942 /* xcb_input_feedback_ctl_data_t.string.num_keysyms */ 3943 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->string.num_keysyms; 3944 xcb_block_len += sizeof(uint16_t); 3945 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 3946 xcb_parts_idx++; 3947 xcb_align_to = ALIGNOF(uint16_t); 3948 /* insert padding */ 3949 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 3950 xcb_buffer_len += xcb_block_len + xcb_pad; 3951 if (0 != xcb_pad) { 3952 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3953 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 3954 xcb_parts_idx++; 3955 xcb_pad = 0; 3956 } 3957 xcb_block_len = 0; 3958 xcb_padding_offset = 0; 3959 /* keysyms */ 3960 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->string.keysyms; 3961 xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); 3962 xcb_parts[xcb_parts_idx].iov_len = _aux->string.num_keysyms * sizeof(uint32_t); 3963 xcb_parts_idx++; 3964 xcb_align_to = ALIGNOF(xcb_keysym_t); 3965 } 3966 if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { 3967 /* xcb_input_feedback_ctl_data_t.integer.int_to_display */ 3968 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.int_to_display; 3969 xcb_block_len += sizeof(int32_t); 3970 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 3971 xcb_parts_idx++; 3972 xcb_align_to = ALIGNOF(int32_t); 3973 } 3974 if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { 3975 /* xcb_input_feedback_ctl_data_t.led.led_mask */ 3976 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_mask; 3977 xcb_block_len += sizeof(uint32_t); 3978 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3979 xcb_parts_idx++; 3980 xcb_align_to = ALIGNOF(uint32_t); 3981 /* xcb_input_feedback_ctl_data_t.led.led_values */ 3982 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_values; 3983 xcb_block_len += sizeof(uint32_t); 3984 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 3985 xcb_parts_idx++; 3986 xcb_align_to = ALIGNOF(uint32_t); 3987 } 3988 if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { 3989 /* xcb_input_feedback_ctl_data_t.bell.percent */ 3990 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.percent; 3991 xcb_block_len += sizeof(int8_t); 3992 xcb_parts[xcb_parts_idx].iov_len = sizeof(int8_t); 3993 xcb_parts_idx++; 3994 xcb_align_to = ALIGNOF(int8_t); 3995 /* xcb_input_feedback_ctl_data_t.bell.pad2 */ 3996 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 3997 xcb_block_len += sizeof(uint8_t)*3; 3998 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; 3999 xcb_parts_idx++; 4000 xcb_align_to = ALIGNOF(uint8_t); 4001 /* xcb_input_feedback_ctl_data_t.bell.pitch */ 4002 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.pitch; 4003 xcb_block_len += sizeof(int16_t); 4004 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 4005 xcb_parts_idx++; 4006 xcb_align_to = ALIGNOF(int16_t); 4007 /* xcb_input_feedback_ctl_data_t.bell.duration */ 4008 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.duration; 4009 xcb_block_len += sizeof(int16_t); 4010 xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); 4011 xcb_parts_idx++; 4012 xcb_align_to = ALIGNOF(int16_t); 4013 } 4014 /* insert padding */ 4015 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 4016 xcb_buffer_len += xcb_block_len + xcb_pad; 4017 if (0 != xcb_pad) { 4018 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 4019 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 4020 xcb_parts_idx++; 4021 xcb_pad = 0; 4022 } 4023 xcb_block_len = 0; 4024 xcb_padding_offset = 0; 4025 4026 if (NULL == xcb_out) { 4027 /* allocate memory */ 4028 xcb_out = malloc(xcb_buffer_len); 4029 *_buffer = xcb_out; 4030 } 4031 4032 xcb_tmp = xcb_out; 4033 for(i=0; i<xcb_parts_idx; i++) { 4034 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 4035 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 4036 if (0 != xcb_parts[i].iov_len) 4037 xcb_tmp += xcb_parts[i].iov_len; 4038 } 4039 4040 return xcb_buffer_len; 4041 } 4042 4043 int 4044 xcb_input_feedback_ctl_data_unpack (const void *_buffer, 4045 uint8_t class_id, 4046 xcb_input_feedback_ctl_data_t *_aux) 4047 { 4048 char *xcb_tmp = (char *)_buffer; 4049 unsigned int xcb_buffer_len = 0; 4050 unsigned int xcb_block_len = 0; 4051 unsigned int xcb_pad = 0; 4052 unsigned int xcb_align_to = 0; 4053 unsigned int xcb_padding_offset = 0; 4054 4055 4056 if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { 4057 /* xcb_input_feedback_ctl_data_t.keyboard.key */ 4058 _aux->keyboard.key = *(xcb_input_key_code_t *)xcb_tmp; 4059 xcb_block_len += sizeof(xcb_input_key_code_t); 4060 xcb_tmp += sizeof(xcb_input_key_code_t); 4061 xcb_align_to = ALIGNOF(xcb_input_key_code_t); 4062 /* xcb_input_feedback_ctl_data_t.keyboard.auto_repeat_mode */ 4063 _aux->keyboard.auto_repeat_mode = *(uint8_t *)xcb_tmp; 4064 xcb_block_len += sizeof(uint8_t); 4065 xcb_tmp += sizeof(uint8_t); 4066 xcb_align_to = ALIGNOF(uint8_t); 4067 /* xcb_input_feedback_ctl_data_t.keyboard.key_click_percent */ 4068 _aux->keyboard.key_click_percent = *(int8_t *)xcb_tmp; 4069 xcb_block_len += sizeof(int8_t); 4070 xcb_tmp += sizeof(int8_t); 4071 xcb_align_to = ALIGNOF(int8_t); 4072 /* xcb_input_feedback_ctl_data_t.keyboard.bell_percent */ 4073 _aux->keyboard.bell_percent = *(int8_t *)xcb_tmp; 4074 xcb_block_len += sizeof(int8_t); 4075 xcb_tmp += sizeof(int8_t); 4076 xcb_align_to = ALIGNOF(int8_t); 4077 /* xcb_input_feedback_ctl_data_t.keyboard.bell_pitch */ 4078 _aux->keyboard.bell_pitch = *(int16_t *)xcb_tmp; 4079 xcb_block_len += sizeof(int16_t); 4080 xcb_tmp += sizeof(int16_t); 4081 xcb_align_to = ALIGNOF(int16_t); 4082 /* xcb_input_feedback_ctl_data_t.keyboard.bell_duration */ 4083 _aux->keyboard.bell_duration = *(int16_t *)xcb_tmp; 4084 xcb_block_len += sizeof(int16_t); 4085 xcb_tmp += sizeof(int16_t); 4086 xcb_align_to = ALIGNOF(int16_t); 4087 /* xcb_input_feedback_ctl_data_t.keyboard.led_mask */ 4088 _aux->keyboard.led_mask = *(uint32_t *)xcb_tmp; 4089 xcb_block_len += sizeof(uint32_t); 4090 xcb_tmp += sizeof(uint32_t); 4091 xcb_align_to = ALIGNOF(uint32_t); 4092 /* xcb_input_feedback_ctl_data_t.keyboard.led_values */ 4093 _aux->keyboard.led_values = *(uint32_t *)xcb_tmp; 4094 xcb_block_len += sizeof(uint32_t); 4095 xcb_tmp += sizeof(uint32_t); 4096 xcb_align_to = ALIGNOF(uint32_t); 4097 } 4098 if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { 4099 /* xcb_input_feedback_ctl_data_t.pointer.pad0 */ 4100 _aux->pointer.pad0[0] = *(uint8_t *)xcb_tmp; 4101 _aux->pointer.pad0[1] = *(uint8_t *)xcb_tmp; 4102 xcb_block_len += sizeof(uint8_t) * 2; 4103 xcb_tmp += sizeof(uint8_t) * 2; 4104 xcb_align_to = ALIGNOF(uint8_t); 4105 /* xcb_input_feedback_ctl_data_t.pointer.num */ 4106 _aux->pointer.num = *(int16_t *)xcb_tmp; 4107 xcb_block_len += sizeof(int16_t); 4108 xcb_tmp += sizeof(int16_t); 4109 xcb_align_to = ALIGNOF(int16_t); 4110 /* xcb_input_feedback_ctl_data_t.pointer.denom */ 4111 _aux->pointer.denom = *(int16_t *)xcb_tmp; 4112 xcb_block_len += sizeof(int16_t); 4113 xcb_tmp += sizeof(int16_t); 4114 xcb_align_to = ALIGNOF(int16_t); 4115 /* xcb_input_feedback_ctl_data_t.pointer.threshold */ 4116 _aux->pointer.threshold = *(int16_t *)xcb_tmp; 4117 xcb_block_len += sizeof(int16_t); 4118 xcb_tmp += sizeof(int16_t); 4119 xcb_align_to = ALIGNOF(int16_t); 4120 } 4121 if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { 4122 /* xcb_input_feedback_ctl_data_t.string.pad1 */ 4123 _aux->string.pad1[0] = *(uint8_t *)xcb_tmp; 4124 _aux->string.pad1[1] = *(uint8_t *)xcb_tmp; 4125 xcb_block_len += sizeof(uint8_t) * 2; 4126 xcb_tmp += sizeof(uint8_t) * 2; 4127 xcb_align_to = ALIGNOF(uint8_t); 4128 /* xcb_input_feedback_ctl_data_t.string.num_keysyms */ 4129 _aux->string.num_keysyms = *(uint16_t *)xcb_tmp; 4130 xcb_block_len += sizeof(uint16_t); 4131 xcb_tmp += sizeof(uint16_t); 4132 xcb_align_to = ALIGNOF(uint16_t); 4133 /* insert padding */ 4134 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 4135 xcb_buffer_len += xcb_block_len + xcb_pad; 4136 if (0 != xcb_pad) { 4137 xcb_tmp += xcb_pad; 4138 xcb_pad = 0; 4139 } 4140 xcb_block_len = 0; 4141 xcb_padding_offset = 0; 4142 /* keysyms */ 4143 _aux->string.keysyms = (xcb_keysym_t *)xcb_tmp; 4144 xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); 4145 xcb_tmp += xcb_block_len; 4146 xcb_align_to = ALIGNOF(xcb_keysym_t); 4147 } 4148 if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { 4149 /* xcb_input_feedback_ctl_data_t.integer.int_to_display */ 4150 _aux->integer.int_to_display = *(int32_t *)xcb_tmp; 4151 xcb_block_len += sizeof(int32_t); 4152 xcb_tmp += sizeof(int32_t); 4153 xcb_align_to = ALIGNOF(int32_t); 4154 } 4155 if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { 4156 /* xcb_input_feedback_ctl_data_t.led.led_mask */ 4157 _aux->led.led_mask = *(uint32_t *)xcb_tmp; 4158 xcb_block_len += sizeof(uint32_t); 4159 xcb_tmp += sizeof(uint32_t); 4160 xcb_align_to = ALIGNOF(uint32_t); 4161 /* xcb_input_feedback_ctl_data_t.led.led_values */ 4162 _aux->led.led_values = *(uint32_t *)xcb_tmp; 4163 xcb_block_len += sizeof(uint32_t); 4164 xcb_tmp += sizeof(uint32_t); 4165 xcb_align_to = ALIGNOF(uint32_t); 4166 } 4167 if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { 4168 /* xcb_input_feedback_ctl_data_t.bell.percent */ 4169 _aux->bell.percent = *(int8_t *)xcb_tmp; 4170 xcb_block_len += sizeof(int8_t); 4171 xcb_tmp += sizeof(int8_t); 4172 xcb_align_to = ALIGNOF(int8_t); 4173 /* xcb_input_feedback_ctl_data_t.bell.pad2 */ 4174 _aux->bell.pad2[0] = *(uint8_t *)xcb_tmp; 4175 _aux->bell.pad2[1] = *(uint8_t *)xcb_tmp; 4176 _aux->bell.pad2[2] = *(uint8_t *)xcb_tmp; 4177 xcb_block_len += sizeof(uint8_t) * 3; 4178 xcb_tmp += sizeof(uint8_t) * 3; 4179 xcb_align_to = ALIGNOF(uint8_t); 4180 /* xcb_input_feedback_ctl_data_t.bell.pitch */ 4181 _aux->bell.pitch = *(int16_t *)xcb_tmp; 4182 xcb_block_len += sizeof(int16_t); 4183 xcb_tmp += sizeof(int16_t); 4184 xcb_align_to = ALIGNOF(int16_t); 4185 /* xcb_input_feedback_ctl_data_t.bell.duration */ 4186 _aux->bell.duration = *(int16_t *)xcb_tmp; 4187 xcb_block_len += sizeof(int16_t); 4188 xcb_tmp += sizeof(int16_t); 4189 xcb_align_to = ALIGNOF(int16_t); 4190 } 4191 /* insert padding */ 4192 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 4193 xcb_buffer_len += xcb_block_len + xcb_pad; 4194 if (0 != xcb_pad) { 4195 xcb_tmp += xcb_pad; 4196 xcb_pad = 0; 4197 } 4198 xcb_block_len = 0; 4199 xcb_padding_offset = 0; 4200 4201 return xcb_buffer_len; 4202 } 4203 4204 int 4205 xcb_input_feedback_ctl_data_sizeof (const void *_buffer, 4206 uint8_t class_id) 4207 { 4208 xcb_input_feedback_ctl_data_t _aux; 4209 return xcb_input_feedback_ctl_data_unpack(_buffer, class_id, &_aux); 4210 } 4211 4212 int 4213 xcb_input_feedback_ctl_sizeof (const void *_buffer) 4214 { 4215 char *xcb_tmp = (char *)_buffer; 4216 const xcb_input_feedback_ctl_t *_aux = (xcb_input_feedback_ctl_t *)_buffer; 4217 unsigned int xcb_buffer_len = 0; 4218 unsigned int xcb_block_len = 0; 4219 unsigned int xcb_pad = 0; 4220 unsigned int xcb_align_to = 0; 4221 4222 4223 xcb_block_len += sizeof(xcb_input_feedback_ctl_t); 4224 xcb_tmp += xcb_block_len; 4225 xcb_buffer_len += xcb_block_len; 4226 xcb_block_len = 0; 4227 /* data */ 4228 xcb_block_len += xcb_input_feedback_ctl_data_sizeof(xcb_tmp, _aux->class_id); 4229 xcb_tmp += xcb_block_len; 4230 xcb_align_to = ALIGNOF(char); 4231 /* insert padding */ 4232 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4233 xcb_buffer_len += xcb_block_len + xcb_pad; 4234 if (0 != xcb_pad) { 4235 xcb_tmp += xcb_pad; 4236 xcb_pad = 0; 4237 } 4238 xcb_block_len = 0; 4239 4240 return xcb_buffer_len; 4241 } 4242 4243 void * 4244 xcb_input_feedback_ctl_data (const xcb_input_feedback_ctl_t *R) 4245 { 4246 return (void *) (R + 1); 4247 } 4248 4249 void 4250 xcb_input_feedback_ctl_next (xcb_input_feedback_ctl_iterator_t *i) 4251 { 4252 xcb_input_feedback_ctl_t *R = i->data; 4253 xcb_generic_iterator_t child; 4254 child.data = (xcb_input_feedback_ctl_t *)(((char *)R) + xcb_input_feedback_ctl_sizeof(R)); 4255 i->index = (char *) child.data - (char *) i->data; 4256 --i->rem; 4257 i->data = (xcb_input_feedback_ctl_t *) child.data; 4258 } 4259 4260 xcb_generic_iterator_t 4261 xcb_input_feedback_ctl_end (xcb_input_feedback_ctl_iterator_t i) 4262 { 4263 xcb_generic_iterator_t ret; 4264 while(i.rem > 0) 4265 xcb_input_feedback_ctl_next(&i); 4266 ret.data = i.data; 4267 ret.rem = i.rem; 4268 ret.index = i.index; 4269 return ret; 4270 } 4271 4272 int 4273 xcb_input_change_feedback_control_sizeof (const void *_buffer) 4274 { 4275 char *xcb_tmp = (char *)_buffer; 4276 unsigned int xcb_buffer_len = 0; 4277 unsigned int xcb_block_len = 0; 4278 unsigned int xcb_pad = 0; 4279 unsigned int xcb_align_to = 0; 4280 4281 4282 xcb_block_len += sizeof(xcb_input_change_feedback_control_request_t); 4283 xcb_tmp += xcb_block_len; 4284 xcb_buffer_len += xcb_block_len; 4285 xcb_block_len = 0; 4286 /* feedback */ 4287 xcb_block_len += xcb_input_feedback_ctl_sizeof(xcb_tmp); 4288 xcb_tmp += xcb_block_len; 4289 xcb_align_to = ALIGNOF(xcb_input_feedback_ctl_t); 4290 /* insert padding */ 4291 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4292 xcb_buffer_len += xcb_block_len + xcb_pad; 4293 if (0 != xcb_pad) { 4294 xcb_tmp += xcb_pad; 4295 xcb_pad = 0; 4296 } 4297 xcb_block_len = 0; 4298 4299 return xcb_buffer_len; 4300 } 4301 4302 xcb_void_cookie_t 4303 xcb_input_change_feedback_control_checked (xcb_connection_t *c, 4304 uint32_t mask, 4305 uint8_t device_id, 4306 uint8_t feedback_id, 4307 xcb_input_feedback_ctl_t *feedback) 4308 { 4309 static const xcb_protocol_request_t xcb_req = { 4310 .count = 4, 4311 .ext = &xcb_input_id, 4312 .opcode = XCB_INPUT_CHANGE_FEEDBACK_CONTROL, 4313 .isvoid = 1 4314 }; 4315 4316 struct iovec xcb_parts[6]; 4317 xcb_void_cookie_t xcb_ret; 4318 xcb_input_change_feedback_control_request_t xcb_out; 4319 4320 xcb_out.mask = mask; 4321 xcb_out.device_id = device_id; 4322 xcb_out.feedback_id = feedback_id; 4323 memset(xcb_out.pad0, 0, 2); 4324 4325 xcb_parts[2].iov_base = (char *) &xcb_out; 4326 xcb_parts[2].iov_len = sizeof(xcb_out); 4327 xcb_parts[3].iov_base = 0; 4328 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4329 /* xcb_input_feedback_ctl_t feedback */ 4330 xcb_parts[4].iov_base = (char *) feedback; 4331 xcb_parts[4].iov_len = 4332 xcb_input_feedback_ctl_sizeof (feedback); 4333 4334 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4335 return xcb_ret; 4336 } 4337 4338 xcb_void_cookie_t 4339 xcb_input_change_feedback_control (xcb_connection_t *c, 4340 uint32_t mask, 4341 uint8_t device_id, 4342 uint8_t feedback_id, 4343 xcb_input_feedback_ctl_t *feedback) 4344 { 4345 static const xcb_protocol_request_t xcb_req = { 4346 .count = 4, 4347 .ext = &xcb_input_id, 4348 .opcode = XCB_INPUT_CHANGE_FEEDBACK_CONTROL, 4349 .isvoid = 1 4350 }; 4351 4352 struct iovec xcb_parts[6]; 4353 xcb_void_cookie_t xcb_ret; 4354 xcb_input_change_feedback_control_request_t xcb_out; 4355 4356 xcb_out.mask = mask; 4357 xcb_out.device_id = device_id; 4358 xcb_out.feedback_id = feedback_id; 4359 memset(xcb_out.pad0, 0, 2); 4360 4361 xcb_parts[2].iov_base = (char *) &xcb_out; 4362 xcb_parts[2].iov_len = sizeof(xcb_out); 4363 xcb_parts[3].iov_base = 0; 4364 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4365 /* xcb_input_feedback_ctl_t feedback */ 4366 xcb_parts[4].iov_base = (char *) feedback; 4367 xcb_parts[4].iov_len = 4368 xcb_input_feedback_ctl_sizeof (feedback); 4369 4370 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4371 return xcb_ret; 4372 } 4373 4374 xcb_input_feedback_ctl_t * 4375 xcb_input_change_feedback_control_feedback (const xcb_input_change_feedback_control_request_t *R) 4376 { 4377 return (xcb_input_feedback_ctl_t *) (R + 1); 4378 } 4379 4380 int 4381 xcb_input_get_device_key_mapping_sizeof (const void *_buffer) 4382 { 4383 char *xcb_tmp = (char *)_buffer; 4384 const xcb_input_get_device_key_mapping_reply_t *_aux = (xcb_input_get_device_key_mapping_reply_t *)_buffer; 4385 unsigned int xcb_buffer_len = 0; 4386 unsigned int xcb_block_len = 0; 4387 unsigned int xcb_pad = 0; 4388 unsigned int xcb_align_to = 0; 4389 4390 4391 xcb_block_len += sizeof(xcb_input_get_device_key_mapping_reply_t); 4392 xcb_tmp += xcb_block_len; 4393 xcb_buffer_len += xcb_block_len; 4394 xcb_block_len = 0; 4395 /* keysyms */ 4396 xcb_block_len += _aux->length * sizeof(xcb_keysym_t); 4397 xcb_tmp += xcb_block_len; 4398 xcb_align_to = ALIGNOF(xcb_keysym_t); 4399 /* insert padding */ 4400 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4401 xcb_buffer_len += xcb_block_len + xcb_pad; 4402 if (0 != xcb_pad) { 4403 xcb_tmp += xcb_pad; 4404 xcb_pad = 0; 4405 } 4406 xcb_block_len = 0; 4407 4408 return xcb_buffer_len; 4409 } 4410 4411 xcb_input_get_device_key_mapping_cookie_t 4412 xcb_input_get_device_key_mapping (xcb_connection_t *c, 4413 uint8_t device_id, 4414 xcb_input_key_code_t first_keycode, 4415 uint8_t count) 4416 { 4417 static const xcb_protocol_request_t xcb_req = { 4418 .count = 2, 4419 .ext = &xcb_input_id, 4420 .opcode = XCB_INPUT_GET_DEVICE_KEY_MAPPING, 4421 .isvoid = 0 4422 }; 4423 4424 struct iovec xcb_parts[4]; 4425 xcb_input_get_device_key_mapping_cookie_t xcb_ret; 4426 xcb_input_get_device_key_mapping_request_t xcb_out; 4427 4428 xcb_out.device_id = device_id; 4429 xcb_out.first_keycode = first_keycode; 4430 xcb_out.count = count; 4431 xcb_out.pad0 = 0; 4432 4433 xcb_parts[2].iov_base = (char *) &xcb_out; 4434 xcb_parts[2].iov_len = sizeof(xcb_out); 4435 xcb_parts[3].iov_base = 0; 4436 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4437 4438 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4439 return xcb_ret; 4440 } 4441 4442 xcb_input_get_device_key_mapping_cookie_t 4443 xcb_input_get_device_key_mapping_unchecked (xcb_connection_t *c, 4444 uint8_t device_id, 4445 xcb_input_key_code_t first_keycode, 4446 uint8_t count) 4447 { 4448 static const xcb_protocol_request_t xcb_req = { 4449 .count = 2, 4450 .ext = &xcb_input_id, 4451 .opcode = XCB_INPUT_GET_DEVICE_KEY_MAPPING, 4452 .isvoid = 0 4453 }; 4454 4455 struct iovec xcb_parts[4]; 4456 xcb_input_get_device_key_mapping_cookie_t xcb_ret; 4457 xcb_input_get_device_key_mapping_request_t xcb_out; 4458 4459 xcb_out.device_id = device_id; 4460 xcb_out.first_keycode = first_keycode; 4461 xcb_out.count = count; 4462 xcb_out.pad0 = 0; 4463 4464 xcb_parts[2].iov_base = (char *) &xcb_out; 4465 xcb_parts[2].iov_len = sizeof(xcb_out); 4466 xcb_parts[3].iov_base = 0; 4467 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4468 4469 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4470 return xcb_ret; 4471 } 4472 4473 xcb_keysym_t * 4474 xcb_input_get_device_key_mapping_keysyms (const xcb_input_get_device_key_mapping_reply_t *R) 4475 { 4476 return (xcb_keysym_t *) (R + 1); 4477 } 4478 4479 int 4480 xcb_input_get_device_key_mapping_keysyms_length (const xcb_input_get_device_key_mapping_reply_t *R) 4481 { 4482 return R->length; 4483 } 4484 4485 xcb_generic_iterator_t 4486 xcb_input_get_device_key_mapping_keysyms_end (const xcb_input_get_device_key_mapping_reply_t *R) 4487 { 4488 xcb_generic_iterator_t i; 4489 i.data = ((xcb_keysym_t *) (R + 1)) + (R->length); 4490 i.rem = 0; 4491 i.index = (char *) i.data - (char *) R; 4492 return i; 4493 } 4494 4495 xcb_input_get_device_key_mapping_reply_t * 4496 xcb_input_get_device_key_mapping_reply (xcb_connection_t *c, 4497 xcb_input_get_device_key_mapping_cookie_t cookie /**< */, 4498 xcb_generic_error_t **e) 4499 { 4500 return (xcb_input_get_device_key_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4501 } 4502 4503 int 4504 xcb_input_change_device_key_mapping_sizeof (const void *_buffer) 4505 { 4506 char *xcb_tmp = (char *)_buffer; 4507 const xcb_input_change_device_key_mapping_request_t *_aux = (xcb_input_change_device_key_mapping_request_t *)_buffer; 4508 unsigned int xcb_buffer_len = 0; 4509 unsigned int xcb_block_len = 0; 4510 unsigned int xcb_pad = 0; 4511 unsigned int xcb_align_to = 0; 4512 4513 4514 xcb_block_len += sizeof(xcb_input_change_device_key_mapping_request_t); 4515 xcb_tmp += xcb_block_len; 4516 xcb_buffer_len += xcb_block_len; 4517 xcb_block_len = 0; 4518 /* keysyms */ 4519 xcb_block_len += (_aux->keycode_count * _aux->keysyms_per_keycode) * sizeof(xcb_keysym_t); 4520 xcb_tmp += xcb_block_len; 4521 xcb_align_to = ALIGNOF(xcb_keysym_t); 4522 /* insert padding */ 4523 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4524 xcb_buffer_len += xcb_block_len + xcb_pad; 4525 if (0 != xcb_pad) { 4526 xcb_tmp += xcb_pad; 4527 xcb_pad = 0; 4528 } 4529 xcb_block_len = 0; 4530 4531 return xcb_buffer_len; 4532 } 4533 4534 xcb_void_cookie_t 4535 xcb_input_change_device_key_mapping_checked (xcb_connection_t *c, 4536 uint8_t device_id, 4537 xcb_input_key_code_t first_keycode, 4538 uint8_t keysyms_per_keycode, 4539 uint8_t keycode_count, 4540 const xcb_keysym_t *keysyms) 4541 { 4542 static const xcb_protocol_request_t xcb_req = { 4543 .count = 4, 4544 .ext = &xcb_input_id, 4545 .opcode = XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING, 4546 .isvoid = 1 4547 }; 4548 4549 struct iovec xcb_parts[6]; 4550 xcb_void_cookie_t xcb_ret; 4551 xcb_input_change_device_key_mapping_request_t xcb_out; 4552 4553 xcb_out.device_id = device_id; 4554 xcb_out.first_keycode = first_keycode; 4555 xcb_out.keysyms_per_keycode = keysyms_per_keycode; 4556 xcb_out.keycode_count = keycode_count; 4557 4558 xcb_parts[2].iov_base = (char *) &xcb_out; 4559 xcb_parts[2].iov_len = sizeof(xcb_out); 4560 xcb_parts[3].iov_base = 0; 4561 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4562 /* xcb_keysym_t keysyms */ 4563 xcb_parts[4].iov_base = (char *) keysyms; 4564 xcb_parts[4].iov_len = (keycode_count * keysyms_per_keycode) * sizeof(xcb_keysym_t); 4565 xcb_parts[5].iov_base = 0; 4566 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4567 4568 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4569 return xcb_ret; 4570 } 4571 4572 xcb_void_cookie_t 4573 xcb_input_change_device_key_mapping (xcb_connection_t *c, 4574 uint8_t device_id, 4575 xcb_input_key_code_t first_keycode, 4576 uint8_t keysyms_per_keycode, 4577 uint8_t keycode_count, 4578 const xcb_keysym_t *keysyms) 4579 { 4580 static const xcb_protocol_request_t xcb_req = { 4581 .count = 4, 4582 .ext = &xcb_input_id, 4583 .opcode = XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING, 4584 .isvoid = 1 4585 }; 4586 4587 struct iovec xcb_parts[6]; 4588 xcb_void_cookie_t xcb_ret; 4589 xcb_input_change_device_key_mapping_request_t xcb_out; 4590 4591 xcb_out.device_id = device_id; 4592 xcb_out.first_keycode = first_keycode; 4593 xcb_out.keysyms_per_keycode = keysyms_per_keycode; 4594 xcb_out.keycode_count = keycode_count; 4595 4596 xcb_parts[2].iov_base = (char *) &xcb_out; 4597 xcb_parts[2].iov_len = sizeof(xcb_out); 4598 xcb_parts[3].iov_base = 0; 4599 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4600 /* xcb_keysym_t keysyms */ 4601 xcb_parts[4].iov_base = (char *) keysyms; 4602 xcb_parts[4].iov_len = (keycode_count * keysyms_per_keycode) * sizeof(xcb_keysym_t); 4603 xcb_parts[5].iov_base = 0; 4604 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4605 4606 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4607 return xcb_ret; 4608 } 4609 4610 xcb_keysym_t * 4611 xcb_input_change_device_key_mapping_keysyms (const xcb_input_change_device_key_mapping_request_t *R) 4612 { 4613 return (xcb_keysym_t *) (R + 1); 4614 } 4615 4616 int 4617 xcb_input_change_device_key_mapping_keysyms_length (const xcb_input_change_device_key_mapping_request_t *R) 4618 { 4619 return (R->keycode_count * R->keysyms_per_keycode); 4620 } 4621 4622 xcb_generic_iterator_t 4623 xcb_input_change_device_key_mapping_keysyms_end (const xcb_input_change_device_key_mapping_request_t *R) 4624 { 4625 xcb_generic_iterator_t i; 4626 i.data = ((xcb_keysym_t *) (R + 1)) + ((R->keycode_count * R->keysyms_per_keycode)); 4627 i.rem = 0; 4628 i.index = (char *) i.data - (char *) R; 4629 return i; 4630 } 4631 4632 int 4633 xcb_input_get_device_modifier_mapping_sizeof (const void *_buffer) 4634 { 4635 char *xcb_tmp = (char *)_buffer; 4636 const xcb_input_get_device_modifier_mapping_reply_t *_aux = (xcb_input_get_device_modifier_mapping_reply_t *)_buffer; 4637 unsigned int xcb_buffer_len = 0; 4638 unsigned int xcb_block_len = 0; 4639 unsigned int xcb_pad = 0; 4640 unsigned int xcb_align_to = 0; 4641 4642 4643 xcb_block_len += sizeof(xcb_input_get_device_modifier_mapping_reply_t); 4644 xcb_tmp += xcb_block_len; 4645 xcb_buffer_len += xcb_block_len; 4646 xcb_block_len = 0; 4647 /* keymaps */ 4648 xcb_block_len += (_aux->keycodes_per_modifier * 8) * sizeof(uint8_t); 4649 xcb_tmp += xcb_block_len; 4650 xcb_align_to = ALIGNOF(uint8_t); 4651 /* insert padding */ 4652 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4653 xcb_buffer_len += xcb_block_len + xcb_pad; 4654 if (0 != xcb_pad) { 4655 xcb_tmp += xcb_pad; 4656 xcb_pad = 0; 4657 } 4658 xcb_block_len = 0; 4659 4660 return xcb_buffer_len; 4661 } 4662 4663 xcb_input_get_device_modifier_mapping_cookie_t 4664 xcb_input_get_device_modifier_mapping (xcb_connection_t *c, 4665 uint8_t device_id) 4666 { 4667 static const xcb_protocol_request_t xcb_req = { 4668 .count = 2, 4669 .ext = &xcb_input_id, 4670 .opcode = XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING, 4671 .isvoid = 0 4672 }; 4673 4674 struct iovec xcb_parts[4]; 4675 xcb_input_get_device_modifier_mapping_cookie_t xcb_ret; 4676 xcb_input_get_device_modifier_mapping_request_t xcb_out; 4677 4678 xcb_out.device_id = device_id; 4679 memset(xcb_out.pad0, 0, 3); 4680 4681 xcb_parts[2].iov_base = (char *) &xcb_out; 4682 xcb_parts[2].iov_len = sizeof(xcb_out); 4683 xcb_parts[3].iov_base = 0; 4684 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4685 4686 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4687 return xcb_ret; 4688 } 4689 4690 xcb_input_get_device_modifier_mapping_cookie_t 4691 xcb_input_get_device_modifier_mapping_unchecked (xcb_connection_t *c, 4692 uint8_t device_id) 4693 { 4694 static const xcb_protocol_request_t xcb_req = { 4695 .count = 2, 4696 .ext = &xcb_input_id, 4697 .opcode = XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING, 4698 .isvoid = 0 4699 }; 4700 4701 struct iovec xcb_parts[4]; 4702 xcb_input_get_device_modifier_mapping_cookie_t xcb_ret; 4703 xcb_input_get_device_modifier_mapping_request_t xcb_out; 4704 4705 xcb_out.device_id = device_id; 4706 memset(xcb_out.pad0, 0, 3); 4707 4708 xcb_parts[2].iov_base = (char *) &xcb_out; 4709 xcb_parts[2].iov_len = sizeof(xcb_out); 4710 xcb_parts[3].iov_base = 0; 4711 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4712 4713 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4714 return xcb_ret; 4715 } 4716 4717 uint8_t * 4718 xcb_input_get_device_modifier_mapping_keymaps (const xcb_input_get_device_modifier_mapping_reply_t *R) 4719 { 4720 return (uint8_t *) (R + 1); 4721 } 4722 4723 int 4724 xcb_input_get_device_modifier_mapping_keymaps_length (const xcb_input_get_device_modifier_mapping_reply_t *R) 4725 { 4726 return (R->keycodes_per_modifier * 8); 4727 } 4728 4729 xcb_generic_iterator_t 4730 xcb_input_get_device_modifier_mapping_keymaps_end (const xcb_input_get_device_modifier_mapping_reply_t *R) 4731 { 4732 xcb_generic_iterator_t i; 4733 i.data = ((uint8_t *) (R + 1)) + ((R->keycodes_per_modifier * 8)); 4734 i.rem = 0; 4735 i.index = (char *) i.data - (char *) R; 4736 return i; 4737 } 4738 4739 xcb_input_get_device_modifier_mapping_reply_t * 4740 xcb_input_get_device_modifier_mapping_reply (xcb_connection_t *c, 4741 xcb_input_get_device_modifier_mapping_cookie_t cookie /**< */, 4742 xcb_generic_error_t **e) 4743 { 4744 return (xcb_input_get_device_modifier_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4745 } 4746 4747 int 4748 xcb_input_set_device_modifier_mapping_sizeof (const void *_buffer) 4749 { 4750 char *xcb_tmp = (char *)_buffer; 4751 const xcb_input_set_device_modifier_mapping_request_t *_aux = (xcb_input_set_device_modifier_mapping_request_t *)_buffer; 4752 unsigned int xcb_buffer_len = 0; 4753 unsigned int xcb_block_len = 0; 4754 unsigned int xcb_pad = 0; 4755 unsigned int xcb_align_to = 0; 4756 4757 4758 xcb_block_len += sizeof(xcb_input_set_device_modifier_mapping_request_t); 4759 xcb_tmp += xcb_block_len; 4760 xcb_buffer_len += xcb_block_len; 4761 xcb_block_len = 0; 4762 /* keymaps */ 4763 xcb_block_len += (_aux->keycodes_per_modifier * 8) * sizeof(uint8_t); 4764 xcb_tmp += xcb_block_len; 4765 xcb_align_to = ALIGNOF(uint8_t); 4766 /* insert padding */ 4767 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4768 xcb_buffer_len += xcb_block_len + xcb_pad; 4769 if (0 != xcb_pad) { 4770 xcb_tmp += xcb_pad; 4771 xcb_pad = 0; 4772 } 4773 xcb_block_len = 0; 4774 4775 return xcb_buffer_len; 4776 } 4777 4778 xcb_input_set_device_modifier_mapping_cookie_t 4779 xcb_input_set_device_modifier_mapping (xcb_connection_t *c, 4780 uint8_t device_id, 4781 uint8_t keycodes_per_modifier, 4782 const uint8_t *keymaps) 4783 { 4784 static const xcb_protocol_request_t xcb_req = { 4785 .count = 4, 4786 .ext = &xcb_input_id, 4787 .opcode = XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING, 4788 .isvoid = 0 4789 }; 4790 4791 struct iovec xcb_parts[6]; 4792 xcb_input_set_device_modifier_mapping_cookie_t xcb_ret; 4793 xcb_input_set_device_modifier_mapping_request_t xcb_out; 4794 4795 xcb_out.device_id = device_id; 4796 xcb_out.keycodes_per_modifier = keycodes_per_modifier; 4797 memset(xcb_out.pad0, 0, 2); 4798 4799 xcb_parts[2].iov_base = (char *) &xcb_out; 4800 xcb_parts[2].iov_len = sizeof(xcb_out); 4801 xcb_parts[3].iov_base = 0; 4802 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4803 /* uint8_t keymaps */ 4804 xcb_parts[4].iov_base = (char *) keymaps; 4805 xcb_parts[4].iov_len = (keycodes_per_modifier * 8) * sizeof(uint8_t); 4806 xcb_parts[5].iov_base = 0; 4807 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4808 4809 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4810 return xcb_ret; 4811 } 4812 4813 xcb_input_set_device_modifier_mapping_cookie_t 4814 xcb_input_set_device_modifier_mapping_unchecked (xcb_connection_t *c, 4815 uint8_t device_id, 4816 uint8_t keycodes_per_modifier, 4817 const uint8_t *keymaps) 4818 { 4819 static const xcb_protocol_request_t xcb_req = { 4820 .count = 4, 4821 .ext = &xcb_input_id, 4822 .opcode = XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING, 4823 .isvoid = 0 4824 }; 4825 4826 struct iovec xcb_parts[6]; 4827 xcb_input_set_device_modifier_mapping_cookie_t xcb_ret; 4828 xcb_input_set_device_modifier_mapping_request_t xcb_out; 4829 4830 xcb_out.device_id = device_id; 4831 xcb_out.keycodes_per_modifier = keycodes_per_modifier; 4832 memset(xcb_out.pad0, 0, 2); 4833 4834 xcb_parts[2].iov_base = (char *) &xcb_out; 4835 xcb_parts[2].iov_len = sizeof(xcb_out); 4836 xcb_parts[3].iov_base = 0; 4837 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4838 /* uint8_t keymaps */ 4839 xcb_parts[4].iov_base = (char *) keymaps; 4840 xcb_parts[4].iov_len = (keycodes_per_modifier * 8) * sizeof(uint8_t); 4841 xcb_parts[5].iov_base = 0; 4842 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4843 4844 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4845 return xcb_ret; 4846 } 4847 4848 xcb_input_set_device_modifier_mapping_reply_t * 4849 xcb_input_set_device_modifier_mapping_reply (xcb_connection_t *c, 4850 xcb_input_set_device_modifier_mapping_cookie_t cookie /**< */, 4851 xcb_generic_error_t **e) 4852 { 4853 return (xcb_input_set_device_modifier_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4854 } 4855 4856 int 4857 xcb_input_get_device_button_mapping_sizeof (const void *_buffer) 4858 { 4859 char *xcb_tmp = (char *)_buffer; 4860 const xcb_input_get_device_button_mapping_reply_t *_aux = (xcb_input_get_device_button_mapping_reply_t *)_buffer; 4861 unsigned int xcb_buffer_len = 0; 4862 unsigned int xcb_block_len = 0; 4863 unsigned int xcb_pad = 0; 4864 unsigned int xcb_align_to = 0; 4865 4866 4867 xcb_block_len += sizeof(xcb_input_get_device_button_mapping_reply_t); 4868 xcb_tmp += xcb_block_len; 4869 xcb_buffer_len += xcb_block_len; 4870 xcb_block_len = 0; 4871 /* map */ 4872 xcb_block_len += _aux->map_size * sizeof(uint8_t); 4873 xcb_tmp += xcb_block_len; 4874 xcb_align_to = ALIGNOF(uint8_t); 4875 xcb_align_to = 4; 4876 /* insert padding */ 4877 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4878 xcb_buffer_len += xcb_block_len + xcb_pad; 4879 if (0 != xcb_pad) { 4880 xcb_tmp += xcb_pad; 4881 xcb_pad = 0; 4882 } 4883 xcb_block_len = 0; 4884 /* insert padding */ 4885 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4886 xcb_buffer_len += xcb_block_len + xcb_pad; 4887 if (0 != xcb_pad) { 4888 xcb_tmp += xcb_pad; 4889 xcb_pad = 0; 4890 } 4891 xcb_block_len = 0; 4892 4893 return xcb_buffer_len; 4894 } 4895 4896 xcb_input_get_device_button_mapping_cookie_t 4897 xcb_input_get_device_button_mapping (xcb_connection_t *c, 4898 uint8_t device_id) 4899 { 4900 static const xcb_protocol_request_t xcb_req = { 4901 .count = 2, 4902 .ext = &xcb_input_id, 4903 .opcode = XCB_INPUT_GET_DEVICE_BUTTON_MAPPING, 4904 .isvoid = 0 4905 }; 4906 4907 struct iovec xcb_parts[4]; 4908 xcb_input_get_device_button_mapping_cookie_t xcb_ret; 4909 xcb_input_get_device_button_mapping_request_t xcb_out; 4910 4911 xcb_out.device_id = device_id; 4912 memset(xcb_out.pad0, 0, 3); 4913 4914 xcb_parts[2].iov_base = (char *) &xcb_out; 4915 xcb_parts[2].iov_len = sizeof(xcb_out); 4916 xcb_parts[3].iov_base = 0; 4917 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4918 4919 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4920 return xcb_ret; 4921 } 4922 4923 xcb_input_get_device_button_mapping_cookie_t 4924 xcb_input_get_device_button_mapping_unchecked (xcb_connection_t *c, 4925 uint8_t device_id) 4926 { 4927 static const xcb_protocol_request_t xcb_req = { 4928 .count = 2, 4929 .ext = &xcb_input_id, 4930 .opcode = XCB_INPUT_GET_DEVICE_BUTTON_MAPPING, 4931 .isvoid = 0 4932 }; 4933 4934 struct iovec xcb_parts[4]; 4935 xcb_input_get_device_button_mapping_cookie_t xcb_ret; 4936 xcb_input_get_device_button_mapping_request_t xcb_out; 4937 4938 xcb_out.device_id = device_id; 4939 memset(xcb_out.pad0, 0, 3); 4940 4941 xcb_parts[2].iov_base = (char *) &xcb_out; 4942 xcb_parts[2].iov_len = sizeof(xcb_out); 4943 xcb_parts[3].iov_base = 0; 4944 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4945 4946 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4947 return xcb_ret; 4948 } 4949 4950 uint8_t * 4951 xcb_input_get_device_button_mapping_map (const xcb_input_get_device_button_mapping_reply_t *R) 4952 { 4953 return (uint8_t *) (R + 1); 4954 } 4955 4956 int 4957 xcb_input_get_device_button_mapping_map_length (const xcb_input_get_device_button_mapping_reply_t *R) 4958 { 4959 return R->map_size; 4960 } 4961 4962 xcb_generic_iterator_t 4963 xcb_input_get_device_button_mapping_map_end (const xcb_input_get_device_button_mapping_reply_t *R) 4964 { 4965 xcb_generic_iterator_t i; 4966 i.data = ((uint8_t *) (R + 1)) + (R->map_size); 4967 i.rem = 0; 4968 i.index = (char *) i.data - (char *) R; 4969 return i; 4970 } 4971 4972 xcb_input_get_device_button_mapping_reply_t * 4973 xcb_input_get_device_button_mapping_reply (xcb_connection_t *c, 4974 xcb_input_get_device_button_mapping_cookie_t cookie /**< */, 4975 xcb_generic_error_t **e) 4976 { 4977 return (xcb_input_get_device_button_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4978 } 4979 4980 int 4981 xcb_input_set_device_button_mapping_sizeof (const void *_buffer) 4982 { 4983 char *xcb_tmp = (char *)_buffer; 4984 const xcb_input_set_device_button_mapping_request_t *_aux = (xcb_input_set_device_button_mapping_request_t *)_buffer; 4985 unsigned int xcb_buffer_len = 0; 4986 unsigned int xcb_block_len = 0; 4987 unsigned int xcb_pad = 0; 4988 unsigned int xcb_align_to = 0; 4989 4990 4991 xcb_block_len += sizeof(xcb_input_set_device_button_mapping_request_t); 4992 xcb_tmp += xcb_block_len; 4993 xcb_buffer_len += xcb_block_len; 4994 xcb_block_len = 0; 4995 /* map */ 4996 xcb_block_len += _aux->map_size * sizeof(uint8_t); 4997 xcb_tmp += xcb_block_len; 4998 xcb_align_to = ALIGNOF(uint8_t); 4999 /* insert padding */ 5000 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5001 xcb_buffer_len += xcb_block_len + xcb_pad; 5002 if (0 != xcb_pad) { 5003 xcb_tmp += xcb_pad; 5004 xcb_pad = 0; 5005 } 5006 xcb_block_len = 0; 5007 5008 return xcb_buffer_len; 5009 } 5010 5011 xcb_input_set_device_button_mapping_cookie_t 5012 xcb_input_set_device_button_mapping (xcb_connection_t *c, 5013 uint8_t device_id, 5014 uint8_t map_size, 5015 const uint8_t *map) 5016 { 5017 static const xcb_protocol_request_t xcb_req = { 5018 .count = 4, 5019 .ext = &xcb_input_id, 5020 .opcode = XCB_INPUT_SET_DEVICE_BUTTON_MAPPING, 5021 .isvoid = 0 5022 }; 5023 5024 struct iovec xcb_parts[6]; 5025 xcb_input_set_device_button_mapping_cookie_t xcb_ret; 5026 xcb_input_set_device_button_mapping_request_t xcb_out; 5027 5028 xcb_out.device_id = device_id; 5029 xcb_out.map_size = map_size; 5030 memset(xcb_out.pad0, 0, 2); 5031 5032 xcb_parts[2].iov_base = (char *) &xcb_out; 5033 xcb_parts[2].iov_len = sizeof(xcb_out); 5034 xcb_parts[3].iov_base = 0; 5035 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5036 /* uint8_t map */ 5037 xcb_parts[4].iov_base = (char *) map; 5038 xcb_parts[4].iov_len = map_size * sizeof(uint8_t); 5039 xcb_parts[5].iov_base = 0; 5040 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5041 5042 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5043 return xcb_ret; 5044 } 5045 5046 xcb_input_set_device_button_mapping_cookie_t 5047 xcb_input_set_device_button_mapping_unchecked (xcb_connection_t *c, 5048 uint8_t device_id, 5049 uint8_t map_size, 5050 const uint8_t *map) 5051 { 5052 static const xcb_protocol_request_t xcb_req = { 5053 .count = 4, 5054 .ext = &xcb_input_id, 5055 .opcode = XCB_INPUT_SET_DEVICE_BUTTON_MAPPING, 5056 .isvoid = 0 5057 }; 5058 5059 struct iovec xcb_parts[6]; 5060 xcb_input_set_device_button_mapping_cookie_t xcb_ret; 5061 xcb_input_set_device_button_mapping_request_t xcb_out; 5062 5063 xcb_out.device_id = device_id; 5064 xcb_out.map_size = map_size; 5065 memset(xcb_out.pad0, 0, 2); 5066 5067 xcb_parts[2].iov_base = (char *) &xcb_out; 5068 xcb_parts[2].iov_len = sizeof(xcb_out); 5069 xcb_parts[3].iov_base = 0; 5070 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5071 /* uint8_t map */ 5072 xcb_parts[4].iov_base = (char *) map; 5073 xcb_parts[4].iov_len = map_size * sizeof(uint8_t); 5074 xcb_parts[5].iov_base = 0; 5075 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5076 5077 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5078 return xcb_ret; 5079 } 5080 5081 xcb_input_set_device_button_mapping_reply_t * 5082 xcb_input_set_device_button_mapping_reply (xcb_connection_t *c, 5083 xcb_input_set_device_button_mapping_cookie_t cookie /**< */, 5084 xcb_generic_error_t **e) 5085 { 5086 return (xcb_input_set_device_button_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 5087 } 5088 5089 void 5090 xcb_input_key_state_next (xcb_input_key_state_iterator_t *i) 5091 { 5092 --i->rem; 5093 ++i->data; 5094 i->index += sizeof(xcb_input_key_state_t); 5095 } 5096 5097 xcb_generic_iterator_t 5098 xcb_input_key_state_end (xcb_input_key_state_iterator_t i) 5099 { 5100 xcb_generic_iterator_t ret; 5101 ret.data = i.data + i.rem; 5102 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5103 ret.rem = 0; 5104 return ret; 5105 } 5106 5107 void 5108 xcb_input_button_state_next (xcb_input_button_state_iterator_t *i) 5109 { 5110 --i->rem; 5111 ++i->data; 5112 i->index += sizeof(xcb_input_button_state_t); 5113 } 5114 5115 xcb_generic_iterator_t 5116 xcb_input_button_state_end (xcb_input_button_state_iterator_t i) 5117 { 5118 xcb_generic_iterator_t ret; 5119 ret.data = i.data + i.rem; 5120 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5121 ret.rem = 0; 5122 return ret; 5123 } 5124 5125 int 5126 xcb_input_valuator_state_sizeof (const void *_buffer) 5127 { 5128 char *xcb_tmp = (char *)_buffer; 5129 const xcb_input_valuator_state_t *_aux = (xcb_input_valuator_state_t *)_buffer; 5130 unsigned int xcb_buffer_len = 0; 5131 unsigned int xcb_block_len = 0; 5132 unsigned int xcb_pad = 0; 5133 unsigned int xcb_align_to = 0; 5134 5135 5136 xcb_block_len += sizeof(xcb_input_valuator_state_t); 5137 xcb_tmp += xcb_block_len; 5138 xcb_buffer_len += xcb_block_len; 5139 xcb_block_len = 0; 5140 /* valuators */ 5141 xcb_block_len += _aux->num_valuators * sizeof(int32_t); 5142 xcb_tmp += xcb_block_len; 5143 xcb_align_to = ALIGNOF(int32_t); 5144 /* insert padding */ 5145 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5146 xcb_buffer_len += xcb_block_len + xcb_pad; 5147 if (0 != xcb_pad) { 5148 xcb_tmp += xcb_pad; 5149 xcb_pad = 0; 5150 } 5151 xcb_block_len = 0; 5152 5153 return xcb_buffer_len; 5154 } 5155 5156 int32_t * 5157 xcb_input_valuator_state_valuators (const xcb_input_valuator_state_t *R) 5158 { 5159 return (int32_t *) (R + 1); 5160 } 5161 5162 int 5163 xcb_input_valuator_state_valuators_length (const xcb_input_valuator_state_t *R) 5164 { 5165 return R->num_valuators; 5166 } 5167 5168 xcb_generic_iterator_t 5169 xcb_input_valuator_state_valuators_end (const xcb_input_valuator_state_t *R) 5170 { 5171 xcb_generic_iterator_t i; 5172 i.data = ((int32_t *) (R + 1)) + (R->num_valuators); 5173 i.rem = 0; 5174 i.index = (char *) i.data - (char *) R; 5175 return i; 5176 } 5177 5178 void 5179 xcb_input_valuator_state_next (xcb_input_valuator_state_iterator_t *i) 5180 { 5181 xcb_input_valuator_state_t *R = i->data; 5182 xcb_generic_iterator_t child; 5183 child.data = (xcb_input_valuator_state_t *)(((char *)R) + xcb_input_valuator_state_sizeof(R)); 5184 i->index = (char *) child.data - (char *) i->data; 5185 --i->rem; 5186 i->data = (xcb_input_valuator_state_t *) child.data; 5187 } 5188 5189 xcb_generic_iterator_t 5190 xcb_input_valuator_state_end (xcb_input_valuator_state_iterator_t i) 5191 { 5192 xcb_generic_iterator_t ret; 5193 while(i.rem > 0) 5194 xcb_input_valuator_state_next(&i); 5195 ret.data = i.data; 5196 ret.rem = i.rem; 5197 ret.index = i.index; 5198 return ret; 5199 } 5200 5201 int32_t * 5202 xcb_input_input_state_data_valuator_valuators (const xcb_input_input_state_data_t *S) 5203 { 5204 return S->valuator.valuators; 5205 } 5206 5207 int 5208 xcb_input_input_state_data_valuator_valuators_length (const xcb_input_input_state_t *R, 5209 const xcb_input_input_state_data_t *S) 5210 { 5211 return S->valuator.num_valuators; 5212 } 5213 5214 xcb_generic_iterator_t 5215 xcb_input_input_state_data_valuator_valuators_end (const xcb_input_input_state_t *R, 5216 const xcb_input_input_state_data_t *S) 5217 { 5218 xcb_generic_iterator_t i; 5219 i.data = S->valuator.valuators + S->valuator.num_valuators; 5220 i.rem = 0; 5221 i.index = (char *) i.data - (char *) S; 5222 return i; 5223 } 5224 5225 int 5226 xcb_input_input_state_data_serialize (void **_buffer, 5227 uint8_t class_id, 5228 const xcb_input_input_state_data_t *_aux) 5229 { 5230 char *xcb_out = *_buffer; 5231 unsigned int xcb_buffer_len = 0; 5232 unsigned int xcb_align_to = 0; 5233 unsigned int xcb_padding_offset = 2; 5234 5235 unsigned int xcb_pad = 0; 5236 char xcb_pad0[3] = {0, 0, 0}; 5237 struct iovec xcb_parts[11]; 5238 unsigned int xcb_parts_idx = 0; 5239 unsigned int xcb_block_len = 0; 5240 unsigned int i; 5241 char *xcb_tmp; 5242 5243 if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { 5244 /* xcb_input_input_state_data_t.key.num_keys */ 5245 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.num_keys; 5246 xcb_block_len += sizeof(uint8_t); 5247 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 5248 xcb_parts_idx++; 5249 xcb_align_to = ALIGNOF(uint8_t); 5250 /* xcb_input_input_state_data_t.key.pad0 */ 5251 xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; 5252 xcb_block_len += sizeof(uint8_t); 5253 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 5254 xcb_parts_idx++; 5255 xcb_align_to = ALIGNOF(uint8_t); 5256 /* xcb_input_input_state_data_t.key.keys */ 5257 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->key.keys; 5258 xcb_block_len += 32; 5259 xcb_parts[xcb_parts_idx].iov_len = 32; 5260 xcb_parts_idx++; 5261 xcb_align_to = ALIGNOF(uint8_t); 5262 } 5263 if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { 5264 /* xcb_input_input_state_data_t.button.num_buttons */ 5265 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->button.num_buttons; 5266 xcb_block_len += sizeof(uint8_t); 5267 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 5268 xcb_parts_idx++; 5269 xcb_align_to = ALIGNOF(uint8_t); 5270 /* xcb_input_input_state_data_t.button.pad1 */ 5271 xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; 5272 xcb_block_len += sizeof(uint8_t); 5273 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 5274 xcb_parts_idx++; 5275 xcb_align_to = ALIGNOF(uint8_t); 5276 /* xcb_input_input_state_data_t.button.buttons */ 5277 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->button.buttons; 5278 xcb_block_len += 32; 5279 xcb_parts[xcb_parts_idx].iov_len = 32; 5280 xcb_parts_idx++; 5281 xcb_align_to = ALIGNOF(uint8_t); 5282 } 5283 if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { 5284 /* xcb_input_input_state_data_t.valuator.num_valuators */ 5285 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.num_valuators; 5286 xcb_block_len += sizeof(uint8_t); 5287 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 5288 xcb_parts_idx++; 5289 xcb_align_to = ALIGNOF(uint8_t); 5290 /* xcb_input_input_state_data_t.valuator.mode */ 5291 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.mode; 5292 xcb_block_len += sizeof(uint8_t); 5293 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 5294 xcb_parts_idx++; 5295 xcb_align_to = ALIGNOF(uint8_t); 5296 /* insert padding */ 5297 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 5298 xcb_buffer_len += xcb_block_len + xcb_pad; 5299 if (0 != xcb_pad) { 5300 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 5301 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 5302 xcb_parts_idx++; 5303 xcb_pad = 0; 5304 } 5305 xcb_block_len = 0; 5306 xcb_padding_offset = 0; 5307 /* valuators */ 5308 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->valuator.valuators; 5309 xcb_block_len += _aux->valuator.num_valuators * sizeof(int32_t); 5310 xcb_parts[xcb_parts_idx].iov_len = _aux->valuator.num_valuators * sizeof(int32_t); 5311 xcb_parts_idx++; 5312 xcb_align_to = ALIGNOF(int32_t); 5313 } 5314 /* insert padding */ 5315 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 5316 xcb_buffer_len += xcb_block_len + xcb_pad; 5317 if (0 != xcb_pad) { 5318 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 5319 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 5320 xcb_parts_idx++; 5321 xcb_pad = 0; 5322 } 5323 xcb_block_len = 0; 5324 xcb_padding_offset = 0; 5325 5326 if (NULL == xcb_out) { 5327 /* allocate memory */ 5328 xcb_out = malloc(xcb_buffer_len); 5329 *_buffer = xcb_out; 5330 } 5331 5332 xcb_tmp = xcb_out; 5333 for(i=0; i<xcb_parts_idx; i++) { 5334 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 5335 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 5336 if (0 != xcb_parts[i].iov_len) 5337 xcb_tmp += xcb_parts[i].iov_len; 5338 } 5339 5340 return xcb_buffer_len; 5341 } 5342 5343 int 5344 xcb_input_input_state_data_unpack (const void *_buffer, 5345 uint8_t class_id, 5346 xcb_input_input_state_data_t *_aux) 5347 { 5348 char *xcb_tmp = (char *)_buffer; 5349 unsigned int xcb_buffer_len = 0; 5350 unsigned int xcb_block_len = 0; 5351 unsigned int xcb_pad = 0; 5352 unsigned int xcb_align_to = 0; 5353 unsigned int xcb_padding_offset = 2; 5354 5355 5356 if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { 5357 /* xcb_input_input_state_data_t.key.num_keys */ 5358 _aux->key.num_keys = *(uint8_t *)xcb_tmp; 5359 xcb_block_len += sizeof(uint8_t); 5360 xcb_tmp += sizeof(uint8_t); 5361 xcb_align_to = ALIGNOF(uint8_t); 5362 /* xcb_input_input_state_data_t.key.pad0 */ 5363 _aux->key.pad0 = *(uint8_t *)xcb_tmp; 5364 xcb_block_len += sizeof(uint8_t); 5365 xcb_tmp += sizeof(uint8_t); 5366 xcb_align_to = ALIGNOF(uint8_t); 5367 /* xcb_input_input_state_data_t.key.keys */ 5368 memcpy(_aux->key.keys, xcb_tmp, sizeof(uint8_t) * 32); 5369 xcb_block_len += sizeof(uint8_t) * 32; 5370 xcb_tmp += sizeof(uint8_t) * 32; 5371 xcb_align_to = ALIGNOF(uint8_t); 5372 } 5373 if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { 5374 /* xcb_input_input_state_data_t.button.num_buttons */ 5375 _aux->button.num_buttons = *(uint8_t *)xcb_tmp; 5376 xcb_block_len += sizeof(uint8_t); 5377 xcb_tmp += sizeof(uint8_t); 5378 xcb_align_to = ALIGNOF(uint8_t); 5379 /* xcb_input_input_state_data_t.button.pad1 */ 5380 _aux->button.pad1 = *(uint8_t *)xcb_tmp; 5381 xcb_block_len += sizeof(uint8_t); 5382 xcb_tmp += sizeof(uint8_t); 5383 xcb_align_to = ALIGNOF(uint8_t); 5384 /* xcb_input_input_state_data_t.button.buttons */ 5385 memcpy(_aux->button.buttons, xcb_tmp, sizeof(uint8_t) * 32); 5386 xcb_block_len += sizeof(uint8_t) * 32; 5387 xcb_tmp += sizeof(uint8_t) * 32; 5388 xcb_align_to = ALIGNOF(uint8_t); 5389 } 5390 if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { 5391 /* xcb_input_input_state_data_t.valuator.num_valuators */ 5392 _aux->valuator.num_valuators = *(uint8_t *)xcb_tmp; 5393 xcb_block_len += sizeof(uint8_t); 5394 xcb_tmp += sizeof(uint8_t); 5395 xcb_align_to = ALIGNOF(uint8_t); 5396 /* xcb_input_input_state_data_t.valuator.mode */ 5397 _aux->valuator.mode = *(uint8_t *)xcb_tmp; 5398 xcb_block_len += sizeof(uint8_t); 5399 xcb_tmp += sizeof(uint8_t); 5400 xcb_align_to = ALIGNOF(uint8_t); 5401 /* insert padding */ 5402 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 5403 xcb_buffer_len += xcb_block_len + xcb_pad; 5404 if (0 != xcb_pad) { 5405 xcb_tmp += xcb_pad; 5406 xcb_pad = 0; 5407 } 5408 xcb_block_len = 0; 5409 xcb_padding_offset = 0; 5410 /* valuators */ 5411 _aux->valuator.valuators = (int32_t *)xcb_tmp; 5412 xcb_block_len += _aux->valuator.num_valuators * sizeof(int32_t); 5413 xcb_tmp += xcb_block_len; 5414 xcb_align_to = ALIGNOF(int32_t); 5415 } 5416 /* insert padding */ 5417 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 5418 xcb_buffer_len += xcb_block_len + xcb_pad; 5419 if (0 != xcb_pad) { 5420 xcb_tmp += xcb_pad; 5421 xcb_pad = 0; 5422 } 5423 xcb_block_len = 0; 5424 xcb_padding_offset = 0; 5425 5426 return xcb_buffer_len; 5427 } 5428 5429 int 5430 xcb_input_input_state_data_sizeof (const void *_buffer, 5431 uint8_t class_id) 5432 { 5433 xcb_input_input_state_data_t _aux; 5434 return xcb_input_input_state_data_unpack(_buffer, class_id, &_aux); 5435 } 5436 5437 int 5438 xcb_input_input_state_sizeof (const void *_buffer) 5439 { 5440 char *xcb_tmp = (char *)_buffer; 5441 const xcb_input_input_state_t *_aux = (xcb_input_input_state_t *)_buffer; 5442 unsigned int xcb_buffer_len = 0; 5443 unsigned int xcb_block_len = 0; 5444 unsigned int xcb_pad = 0; 5445 unsigned int xcb_align_to = 0; 5446 5447 5448 xcb_block_len += sizeof(xcb_input_input_state_t); 5449 xcb_tmp += xcb_block_len; 5450 xcb_buffer_len += xcb_block_len; 5451 xcb_block_len = 0; 5452 /* data */ 5453 xcb_block_len += xcb_input_input_state_data_sizeof(xcb_tmp, _aux->class_id); 5454 xcb_tmp += xcb_block_len; 5455 xcb_align_to = ALIGNOF(char); 5456 /* insert padding */ 5457 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5458 xcb_buffer_len += xcb_block_len + xcb_pad; 5459 if (0 != xcb_pad) { 5460 xcb_tmp += xcb_pad; 5461 xcb_pad = 0; 5462 } 5463 xcb_block_len = 0; 5464 5465 return xcb_buffer_len; 5466 } 5467 5468 void * 5469 xcb_input_input_state_data (const xcb_input_input_state_t *R) 5470 { 5471 return (void *) (R + 1); 5472 } 5473 5474 void 5475 xcb_input_input_state_next (xcb_input_input_state_iterator_t *i) 5476 { 5477 xcb_input_input_state_t *R = i->data; 5478 xcb_generic_iterator_t child; 5479 child.data = (xcb_input_input_state_t *)(((char *)R) + xcb_input_input_state_sizeof(R)); 5480 i->index = (char *) child.data - (char *) i->data; 5481 --i->rem; 5482 i->data = (xcb_input_input_state_t *) child.data; 5483 } 5484 5485 xcb_generic_iterator_t 5486 xcb_input_input_state_end (xcb_input_input_state_iterator_t i) 5487 { 5488 xcb_generic_iterator_t ret; 5489 while(i.rem > 0) 5490 xcb_input_input_state_next(&i); 5491 ret.data = i.data; 5492 ret.rem = i.rem; 5493 ret.index = i.index; 5494 return ret; 5495 } 5496 5497 int 5498 xcb_input_query_device_state_sizeof (const void *_buffer) 5499 { 5500 char *xcb_tmp = (char *)_buffer; 5501 const xcb_input_query_device_state_reply_t *_aux = (xcb_input_query_device_state_reply_t *)_buffer; 5502 unsigned int xcb_buffer_len = 0; 5503 unsigned int xcb_block_len = 0; 5504 unsigned int xcb_pad = 0; 5505 unsigned int xcb_align_to = 0; 5506 5507 unsigned int i; 5508 unsigned int xcb_tmp_len; 5509 5510 xcb_block_len += sizeof(xcb_input_query_device_state_reply_t); 5511 xcb_tmp += xcb_block_len; 5512 xcb_buffer_len += xcb_block_len; 5513 xcb_block_len = 0; 5514 /* classes */ 5515 for(i=0; i<_aux->num_classes; i++) { 5516 xcb_tmp_len = xcb_input_input_state_sizeof(xcb_tmp); 5517 xcb_block_len += xcb_tmp_len; 5518 xcb_tmp += xcb_tmp_len; 5519 } 5520 xcb_align_to = ALIGNOF(xcb_input_input_state_t); 5521 /* insert padding */ 5522 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5523 xcb_buffer_len += xcb_block_len + xcb_pad; 5524 if (0 != xcb_pad) { 5525 xcb_tmp += xcb_pad; 5526 xcb_pad = 0; 5527 } 5528 xcb_block_len = 0; 5529 5530 return xcb_buffer_len; 5531 } 5532 5533 xcb_input_query_device_state_cookie_t 5534 xcb_input_query_device_state (xcb_connection_t *c, 5535 uint8_t device_id) 5536 { 5537 static const xcb_protocol_request_t xcb_req = { 5538 .count = 2, 5539 .ext = &xcb_input_id, 5540 .opcode = XCB_INPUT_QUERY_DEVICE_STATE, 5541 .isvoid = 0 5542 }; 5543 5544 struct iovec xcb_parts[4]; 5545 xcb_input_query_device_state_cookie_t xcb_ret; 5546 xcb_input_query_device_state_request_t xcb_out; 5547 5548 xcb_out.device_id = device_id; 5549 memset(xcb_out.pad0, 0, 3); 5550 5551 xcb_parts[2].iov_base = (char *) &xcb_out; 5552 xcb_parts[2].iov_len = sizeof(xcb_out); 5553 xcb_parts[3].iov_base = 0; 5554 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5555 5556 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5557 return xcb_ret; 5558 } 5559 5560 xcb_input_query_device_state_cookie_t 5561 xcb_input_query_device_state_unchecked (xcb_connection_t *c, 5562 uint8_t device_id) 5563 { 5564 static const xcb_protocol_request_t xcb_req = { 5565 .count = 2, 5566 .ext = &xcb_input_id, 5567 .opcode = XCB_INPUT_QUERY_DEVICE_STATE, 5568 .isvoid = 0 5569 }; 5570 5571 struct iovec xcb_parts[4]; 5572 xcb_input_query_device_state_cookie_t xcb_ret; 5573 xcb_input_query_device_state_request_t xcb_out; 5574 5575 xcb_out.device_id = device_id; 5576 memset(xcb_out.pad0, 0, 3); 5577 5578 xcb_parts[2].iov_base = (char *) &xcb_out; 5579 xcb_parts[2].iov_len = sizeof(xcb_out); 5580 xcb_parts[3].iov_base = 0; 5581 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5582 5583 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5584 return xcb_ret; 5585 } 5586 5587 int 5588 xcb_input_query_device_state_classes_length (const xcb_input_query_device_state_reply_t *R) 5589 { 5590 return R->num_classes; 5591 } 5592 5593 xcb_input_input_state_iterator_t 5594 xcb_input_query_device_state_classes_iterator (const xcb_input_query_device_state_reply_t *R) 5595 { 5596 xcb_input_input_state_iterator_t i; 5597 i.data = (xcb_input_input_state_t *) (R + 1); 5598 i.rem = R->num_classes; 5599 i.index = (char *) i.data - (char *) R; 5600 return i; 5601 } 5602 5603 xcb_input_query_device_state_reply_t * 5604 xcb_input_query_device_state_reply (xcb_connection_t *c, 5605 xcb_input_query_device_state_cookie_t cookie /**< */, 5606 xcb_generic_error_t **e) 5607 { 5608 return (xcb_input_query_device_state_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 5609 } 5610 5611 int 5612 xcb_input_send_extension_event_sizeof (const void *_buffer) 5613 { 5614 char *xcb_tmp = (char *)_buffer; 5615 const xcb_input_send_extension_event_request_t *_aux = (xcb_input_send_extension_event_request_t *)_buffer; 5616 unsigned int xcb_buffer_len = 0; 5617 unsigned int xcb_block_len = 0; 5618 unsigned int xcb_pad = 0; 5619 unsigned int xcb_align_to = 0; 5620 5621 5622 xcb_block_len += sizeof(xcb_input_send_extension_event_request_t); 5623 xcb_tmp += xcb_block_len; 5624 xcb_buffer_len += xcb_block_len; 5625 xcb_block_len = 0; 5626 /* events */ 5627 xcb_block_len += (_aux->num_events * 32) * sizeof(uint8_t); 5628 xcb_tmp += xcb_block_len; 5629 xcb_align_to = ALIGNOF(uint8_t); 5630 /* insert padding */ 5631 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5632 xcb_buffer_len += xcb_block_len + xcb_pad; 5633 if (0 != xcb_pad) { 5634 xcb_tmp += xcb_pad; 5635 xcb_pad = 0; 5636 } 5637 xcb_block_len = 0; 5638 /* classes */ 5639 xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); 5640 xcb_tmp += xcb_block_len; 5641 xcb_align_to = ALIGNOF(xcb_input_event_class_t); 5642 /* insert padding */ 5643 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5644 xcb_buffer_len += xcb_block_len + xcb_pad; 5645 if (0 != xcb_pad) { 5646 xcb_tmp += xcb_pad; 5647 xcb_pad = 0; 5648 } 5649 xcb_block_len = 0; 5650 5651 return xcb_buffer_len; 5652 } 5653 5654 xcb_void_cookie_t 5655 xcb_input_send_extension_event_checked (xcb_connection_t *c, 5656 xcb_window_t destination, 5657 uint8_t device_id, 5658 uint8_t propagate, 5659 uint16_t num_classes, 5660 uint8_t num_events, 5661 const uint8_t *events, 5662 const xcb_input_event_class_t *classes) 5663 { 5664 static const xcb_protocol_request_t xcb_req = { 5665 .count = 6, 5666 .ext = &xcb_input_id, 5667 .opcode = XCB_INPUT_SEND_EXTENSION_EVENT, 5668 .isvoid = 1 5669 }; 5670 5671 struct iovec xcb_parts[8]; 5672 xcb_void_cookie_t xcb_ret; 5673 xcb_input_send_extension_event_request_t xcb_out; 5674 5675 xcb_out.destination = destination; 5676 xcb_out.device_id = device_id; 5677 xcb_out.propagate = propagate; 5678 xcb_out.num_classes = num_classes; 5679 xcb_out.num_events = num_events; 5680 memset(xcb_out.pad0, 0, 3); 5681 5682 xcb_parts[2].iov_base = (char *) &xcb_out; 5683 xcb_parts[2].iov_len = sizeof(xcb_out); 5684 xcb_parts[3].iov_base = 0; 5685 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5686 /* uint8_t events */ 5687 xcb_parts[4].iov_base = (char *) events; 5688 xcb_parts[4].iov_len = (num_events * 32) * sizeof(uint8_t); 5689 xcb_parts[5].iov_base = 0; 5690 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5691 /* xcb_input_event_class_t classes */ 5692 xcb_parts[6].iov_base = (char *) classes; 5693 xcb_parts[6].iov_len = num_classes * sizeof(xcb_input_event_class_t); 5694 xcb_parts[7].iov_base = 0; 5695 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 5696 5697 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5698 return xcb_ret; 5699 } 5700 5701 xcb_void_cookie_t 5702 xcb_input_send_extension_event (xcb_connection_t *c, 5703 xcb_window_t destination, 5704 uint8_t device_id, 5705 uint8_t propagate, 5706 uint16_t num_classes, 5707 uint8_t num_events, 5708 const uint8_t *events, 5709 const xcb_input_event_class_t *classes) 5710 { 5711 static const xcb_protocol_request_t xcb_req = { 5712 .count = 6, 5713 .ext = &xcb_input_id, 5714 .opcode = XCB_INPUT_SEND_EXTENSION_EVENT, 5715 .isvoid = 1 5716 }; 5717 5718 struct iovec xcb_parts[8]; 5719 xcb_void_cookie_t xcb_ret; 5720 xcb_input_send_extension_event_request_t xcb_out; 5721 5722 xcb_out.destination = destination; 5723 xcb_out.device_id = device_id; 5724 xcb_out.propagate = propagate; 5725 xcb_out.num_classes = num_classes; 5726 xcb_out.num_events = num_events; 5727 memset(xcb_out.pad0, 0, 3); 5728 5729 xcb_parts[2].iov_base = (char *) &xcb_out; 5730 xcb_parts[2].iov_len = sizeof(xcb_out); 5731 xcb_parts[3].iov_base = 0; 5732 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5733 /* uint8_t events */ 5734 xcb_parts[4].iov_base = (char *) events; 5735 xcb_parts[4].iov_len = (num_events * 32) * sizeof(uint8_t); 5736 xcb_parts[5].iov_base = 0; 5737 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5738 /* xcb_input_event_class_t classes */ 5739 xcb_parts[6].iov_base = (char *) classes; 5740 xcb_parts[6].iov_len = num_classes * sizeof(xcb_input_event_class_t); 5741 xcb_parts[7].iov_base = 0; 5742 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 5743 5744 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5745 return xcb_ret; 5746 } 5747 5748 uint8_t * 5749 xcb_input_send_extension_event_events (const xcb_input_send_extension_event_request_t *R) 5750 { 5751 return (uint8_t *) (R + 1); 5752 } 5753 5754 int 5755 xcb_input_send_extension_event_events_length (const xcb_input_send_extension_event_request_t *R) 5756 { 5757 return (R->num_events * 32); 5758 } 5759 5760 xcb_generic_iterator_t 5761 xcb_input_send_extension_event_events_end (const xcb_input_send_extension_event_request_t *R) 5762 { 5763 xcb_generic_iterator_t i; 5764 i.data = ((uint8_t *) (R + 1)) + ((R->num_events * 32)); 5765 i.rem = 0; 5766 i.index = (char *) i.data - (char *) R; 5767 return i; 5768 } 5769 5770 xcb_input_event_class_t * 5771 xcb_input_send_extension_event_classes (const xcb_input_send_extension_event_request_t *R) 5772 { 5773 xcb_generic_iterator_t prev = xcb_input_send_extension_event_events_end(R); 5774 return (xcb_input_event_class_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_event_class_t, prev.index) + 0); 5775 } 5776 5777 int 5778 xcb_input_send_extension_event_classes_length (const xcb_input_send_extension_event_request_t *R) 5779 { 5780 return R->num_classes; 5781 } 5782 5783 xcb_generic_iterator_t 5784 xcb_input_send_extension_event_classes_end (const xcb_input_send_extension_event_request_t *R) 5785 { 5786 xcb_generic_iterator_t i; 5787 xcb_generic_iterator_t prev = xcb_input_send_extension_event_events_end(R); 5788 i.data = ((xcb_input_event_class_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_input_event_class_t, prev.index))) + (R->num_classes); 5789 i.rem = 0; 5790 i.index = (char *) i.data - (char *) R; 5791 return i; 5792 } 5793 5794 xcb_void_cookie_t 5795 xcb_input_device_bell_checked (xcb_connection_t *c, 5796 uint8_t device_id, 5797 uint8_t feedback_id, 5798 uint8_t feedback_class, 5799 int8_t percent) 5800 { 5801 static const xcb_protocol_request_t xcb_req = { 5802 .count = 2, 5803 .ext = &xcb_input_id, 5804 .opcode = XCB_INPUT_DEVICE_BELL, 5805 .isvoid = 1 5806 }; 5807 5808 struct iovec xcb_parts[4]; 5809 xcb_void_cookie_t xcb_ret; 5810 xcb_input_device_bell_request_t xcb_out; 5811 5812 xcb_out.device_id = device_id; 5813 xcb_out.feedback_id = feedback_id; 5814 xcb_out.feedback_class = feedback_class; 5815 xcb_out.percent = percent; 5816 5817 xcb_parts[2].iov_base = (char *) &xcb_out; 5818 xcb_parts[2].iov_len = sizeof(xcb_out); 5819 xcb_parts[3].iov_base = 0; 5820 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5821 5822 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5823 return xcb_ret; 5824 } 5825 5826 xcb_void_cookie_t 5827 xcb_input_device_bell (xcb_connection_t *c, 5828 uint8_t device_id, 5829 uint8_t feedback_id, 5830 uint8_t feedback_class, 5831 int8_t percent) 5832 { 5833 static const xcb_protocol_request_t xcb_req = { 5834 .count = 2, 5835 .ext = &xcb_input_id, 5836 .opcode = XCB_INPUT_DEVICE_BELL, 5837 .isvoid = 1 5838 }; 5839 5840 struct iovec xcb_parts[4]; 5841 xcb_void_cookie_t xcb_ret; 5842 xcb_input_device_bell_request_t xcb_out; 5843 5844 xcb_out.device_id = device_id; 5845 xcb_out.feedback_id = feedback_id; 5846 xcb_out.feedback_class = feedback_class; 5847 xcb_out.percent = percent; 5848 5849 xcb_parts[2].iov_base = (char *) &xcb_out; 5850 xcb_parts[2].iov_len = sizeof(xcb_out); 5851 xcb_parts[3].iov_base = 0; 5852 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5853 5854 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5855 return xcb_ret; 5856 } 5857 5858 int 5859 xcb_input_set_device_valuators_sizeof (const void *_buffer) 5860 { 5861 char *xcb_tmp = (char *)_buffer; 5862 const xcb_input_set_device_valuators_request_t *_aux = (xcb_input_set_device_valuators_request_t *)_buffer; 5863 unsigned int xcb_buffer_len = 0; 5864 unsigned int xcb_block_len = 0; 5865 unsigned int xcb_pad = 0; 5866 unsigned int xcb_align_to = 0; 5867 5868 5869 xcb_block_len += sizeof(xcb_input_set_device_valuators_request_t); 5870 xcb_tmp += xcb_block_len; 5871 xcb_buffer_len += xcb_block_len; 5872 xcb_block_len = 0; 5873 /* valuators */ 5874 xcb_block_len += _aux->num_valuators * sizeof(int32_t); 5875 xcb_tmp += xcb_block_len; 5876 xcb_align_to = ALIGNOF(int32_t); 5877 /* insert padding */ 5878 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5879 xcb_buffer_len += xcb_block_len + xcb_pad; 5880 if (0 != xcb_pad) { 5881 xcb_tmp += xcb_pad; 5882 xcb_pad = 0; 5883 } 5884 xcb_block_len = 0; 5885 5886 return xcb_buffer_len; 5887 } 5888 5889 xcb_input_set_device_valuators_cookie_t 5890 xcb_input_set_device_valuators (xcb_connection_t *c, 5891 uint8_t device_id, 5892 uint8_t first_valuator, 5893 uint8_t num_valuators, 5894 const int32_t *valuators) 5895 { 5896 static const xcb_protocol_request_t xcb_req = { 5897 .count = 4, 5898 .ext = &xcb_input_id, 5899 .opcode = XCB_INPUT_SET_DEVICE_VALUATORS, 5900 .isvoid = 0 5901 }; 5902 5903 struct iovec xcb_parts[6]; 5904 xcb_input_set_device_valuators_cookie_t xcb_ret; 5905 xcb_input_set_device_valuators_request_t xcb_out; 5906 5907 xcb_out.device_id = device_id; 5908 xcb_out.first_valuator = first_valuator; 5909 xcb_out.num_valuators = num_valuators; 5910 xcb_out.pad0 = 0; 5911 5912 xcb_parts[2].iov_base = (char *) &xcb_out; 5913 xcb_parts[2].iov_len = sizeof(xcb_out); 5914 xcb_parts[3].iov_base = 0; 5915 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5916 /* int32_t valuators */ 5917 xcb_parts[4].iov_base = (char *) valuators; 5918 xcb_parts[4].iov_len = num_valuators * sizeof(int32_t); 5919 xcb_parts[5].iov_base = 0; 5920 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5921 5922 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5923 return xcb_ret; 5924 } 5925 5926 xcb_input_set_device_valuators_cookie_t 5927 xcb_input_set_device_valuators_unchecked (xcb_connection_t *c, 5928 uint8_t device_id, 5929 uint8_t first_valuator, 5930 uint8_t num_valuators, 5931 const int32_t *valuators) 5932 { 5933 static const xcb_protocol_request_t xcb_req = { 5934 .count = 4, 5935 .ext = &xcb_input_id, 5936 .opcode = XCB_INPUT_SET_DEVICE_VALUATORS, 5937 .isvoid = 0 5938 }; 5939 5940 struct iovec xcb_parts[6]; 5941 xcb_input_set_device_valuators_cookie_t xcb_ret; 5942 xcb_input_set_device_valuators_request_t xcb_out; 5943 5944 xcb_out.device_id = device_id; 5945 xcb_out.first_valuator = first_valuator; 5946 xcb_out.num_valuators = num_valuators; 5947 xcb_out.pad0 = 0; 5948 5949 xcb_parts[2].iov_base = (char *) &xcb_out; 5950 xcb_parts[2].iov_len = sizeof(xcb_out); 5951 xcb_parts[3].iov_base = 0; 5952 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5953 /* int32_t valuators */ 5954 xcb_parts[4].iov_base = (char *) valuators; 5955 xcb_parts[4].iov_len = num_valuators * sizeof(int32_t); 5956 xcb_parts[5].iov_base = 0; 5957 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5958 5959 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5960 return xcb_ret; 5961 } 5962 5963 xcb_input_set_device_valuators_reply_t * 5964 xcb_input_set_device_valuators_reply (xcb_connection_t *c, 5965 xcb_input_set_device_valuators_cookie_t cookie /**< */, 5966 xcb_generic_error_t **e) 5967 { 5968 return (xcb_input_set_device_valuators_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 5969 } 5970 5971 int 5972 xcb_input_device_resolution_state_sizeof (const void *_buffer) 5973 { 5974 char *xcb_tmp = (char *)_buffer; 5975 const xcb_input_device_resolution_state_t *_aux = (xcb_input_device_resolution_state_t *)_buffer; 5976 unsigned int xcb_buffer_len = 0; 5977 unsigned int xcb_block_len = 0; 5978 unsigned int xcb_pad = 0; 5979 unsigned int xcb_align_to = 0; 5980 5981 5982 xcb_block_len += sizeof(xcb_input_device_resolution_state_t); 5983 xcb_tmp += xcb_block_len; 5984 xcb_buffer_len += xcb_block_len; 5985 xcb_block_len = 0; 5986 /* resolution_values */ 5987 xcb_block_len += _aux->num_valuators * sizeof(uint32_t); 5988 xcb_tmp += xcb_block_len; 5989 xcb_align_to = ALIGNOF(uint32_t); 5990 /* insert padding */ 5991 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5992 xcb_buffer_len += xcb_block_len + xcb_pad; 5993 if (0 != xcb_pad) { 5994 xcb_tmp += xcb_pad; 5995 xcb_pad = 0; 5996 } 5997 xcb_block_len = 0; 5998 /* resolution_min */ 5999 xcb_block_len += _aux->num_valuators * sizeof(uint32_t); 6000 xcb_tmp += xcb_block_len; 6001 xcb_align_to = ALIGNOF(uint32_t); 6002 /* insert padding */ 6003 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 6004 xcb_buffer_len += xcb_block_len + xcb_pad; 6005 if (0 != xcb_pad) { 6006 xcb_tmp += xcb_pad; 6007 xcb_pad = 0; 6008 } 6009 xcb_block_len = 0; 6010 /* resolution_max */ 6011 xcb_block_len += _aux->num_valuators * sizeof(uint32_t); 6012 xcb_tmp += xcb_block_len; 6013 xcb_align_to = ALIGNOF(uint32_t); 6014 /* insert padding */ 6015 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 6016 xcb_buffer_len += xcb_block_len + xcb_pad; 6017 if (0 != xcb_pad) { 6018 xcb_tmp += xcb_pad; 6019 xcb_pad = 0; 6020 } 6021 xcb_block_len = 0; 6022 6023 return xcb_buffer_len; 6024 } 6025 6026 uint32_t * 6027 xcb_input_device_resolution_state_resolution_values (const xcb_input_device_resolution_state_t *R) 6028 { 6029 return (uint32_t *) (R + 1); 6030 } 6031 6032 int 6033 xcb_input_device_resolution_state_resolution_values_length (const xcb_input_device_resolution_state_t *R) 6034 { 6035 return R->num_valuators; 6036 } 6037 6038 xcb_generic_iterator_t 6039 xcb_input_device_resolution_state_resolution_values_end (const xcb_input_device_resolution_state_t *R) 6040 { 6041 xcb_generic_iterator_t i; 6042 i.data = ((uint32_t *) (R + 1)) + (R->num_valuators); 6043 i.rem = 0; 6044 i.index = (char *) i.data - (char *) R; 6045 return i; 6046 } 6047 6048 uint32_t * 6049 xcb_input_device_resolution_state_resolution_min (const xcb_input_device_resolution_state_t *R) 6050 { 6051 xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_values_end(R); 6052 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 6053 } 6054 6055 int 6056 xcb_input_device_resolution_state_resolution_min_length (const xcb_input_device_resolution_state_t *R) 6057 { 6058 return R->num_valuators; 6059 } 6060 6061 xcb_generic_iterator_t 6062 xcb_input_device_resolution_state_resolution_min_end (const xcb_input_device_resolution_state_t *R) 6063 { 6064 xcb_generic_iterator_t i; 6065 xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_values_end(R); 6066 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_valuators); 6067 i.rem = 0; 6068 i.index = (char *) i.data - (char *) R; 6069 return i; 6070 } 6071 6072 uint32_t * 6073 xcb_input_device_resolution_state_resolution_max (const xcb_input_device_resolution_state_t *R) 6074 { 6075 xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_min_end(R); 6076 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 6077 } 6078 6079 int 6080 xcb_input_device_resolution_state_resolution_max_length (const xcb_input_device_resolution_state_t *R) 6081 { 6082 return R->num_valuators; 6083 } 6084 6085 xcb_generic_iterator_t 6086 xcb_input_device_resolution_state_resolution_max_end (const xcb_input_device_resolution_state_t *R) 6087 { 6088 xcb_generic_iterator_t i; 6089 xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_min_end(R); 6090 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_valuators); 6091 i.rem = 0; 6092 i.index = (char *) i.data - (char *) R; 6093 return i; 6094 } 6095 6096 void 6097 xcb_input_device_resolution_state_next (xcb_input_device_resolution_state_iterator_t *i) 6098 { 6099 xcb_input_device_resolution_state_t *R = i->data; 6100 xcb_generic_iterator_t child; 6101 child.data = (xcb_input_device_resolution_state_t *)(((char *)R) + xcb_input_device_resolution_state_sizeof(R)); 6102 i->index = (char *) child.data - (char *) i->data; 6103 --i->rem; 6104 i->data = (xcb_input_device_resolution_state_t *) child.data; 6105 } 6106 6107 xcb_generic_iterator_t 6108 xcb_input_device_resolution_state_end (xcb_input_device_resolution_state_iterator_t i) 6109 { 6110 xcb_generic_iterator_t ret; 6111 while(i.rem > 0) 6112 xcb_input_device_resolution_state_next(&i); 6113 ret.data = i.data; 6114 ret.rem = i.rem; 6115 ret.index = i.index; 6116 return ret; 6117 } 6118 6119 void 6120 xcb_input_device_abs_calib_state_next (xcb_input_device_abs_calib_state_iterator_t *i) 6121 { 6122 --i->rem; 6123 ++i->data; 6124 i->index += sizeof(xcb_input_device_abs_calib_state_t); 6125 } 6126 6127 xcb_generic_iterator_t 6128 xcb_input_device_abs_calib_state_end (xcb_input_device_abs_calib_state_iterator_t i) 6129 { 6130 xcb_generic_iterator_t ret; 6131 ret.data = i.data + i.rem; 6132 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6133 ret.rem = 0; 6134 return ret; 6135 } 6136 6137 void 6138 xcb_input_device_abs_area_state_next (xcb_input_device_abs_area_state_iterator_t *i) 6139 { 6140 --i->rem; 6141 ++i->data; 6142 i->index += sizeof(xcb_input_device_abs_area_state_t); 6143 } 6144 6145 xcb_generic_iterator_t 6146 xcb_input_device_abs_area_state_end (xcb_input_device_abs_area_state_iterator_t i) 6147 { 6148 xcb_generic_iterator_t ret; 6149 ret.data = i.data + i.rem; 6150 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6151 ret.rem = 0; 6152 return ret; 6153 } 6154 6155 void 6156 xcb_input_device_core_state_next (xcb_input_device_core_state_iterator_t *i) 6157 { 6158 --i->rem; 6159 ++i->data; 6160 i->index += sizeof(xcb_input_device_core_state_t); 6161 } 6162 6163 xcb_generic_iterator_t 6164 xcb_input_device_core_state_end (xcb_input_device_core_state_iterator_t i) 6165 { 6166 xcb_generic_iterator_t ret; 6167 ret.data = i.data + i.rem; 6168 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6169 ret.rem = 0; 6170 return ret; 6171 } 6172 6173 void 6174 xcb_input_device_enable_state_next (xcb_input_device_enable_state_iterator_t *i) 6175 { 6176 --i->rem; 6177 ++i->data; 6178 i->index += sizeof(xcb_input_device_enable_state_t); 6179 } 6180 6181 xcb_generic_iterator_t 6182 xcb_input_device_enable_state_end (xcb_input_device_enable_state_iterator_t i) 6183 { 6184 xcb_generic_iterator_t ret; 6185 ret.data = i.data + i.rem; 6186 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6187 ret.rem = 0; 6188 return ret; 6189 } 6190 6191 uint32_t * 6192 xcb_input_device_state_data_resolution_resolution_values (const xcb_input_device_state_data_t *S) 6193 { 6194 return S->resolution.resolution_values; 6195 } 6196 6197 int 6198 xcb_input_device_state_data_resolution_resolution_values_length (const xcb_input_device_state_t *R, 6199 const xcb_input_device_state_data_t *S) 6200 { 6201 return S->resolution.num_valuators; 6202 } 6203 6204 xcb_generic_iterator_t 6205 xcb_input_device_state_data_resolution_resolution_values_end (const xcb_input_device_state_t *R, 6206 const xcb_input_device_state_data_t *S) 6207 { 6208 xcb_generic_iterator_t i; 6209 i.data = S->resolution.resolution_values + S->resolution.num_valuators; 6210 i.rem = 0; 6211 i.index = (char *) i.data - (char *) S; 6212 return i; 6213 } 6214 6215 uint32_t * 6216 xcb_input_device_state_data_resolution_resolution_min (const xcb_input_device_state_data_t *S) 6217 { 6218 return S->resolution.resolution_min; 6219 } 6220 6221 int 6222 xcb_input_device_state_data_resolution_resolution_min_length (const xcb_input_device_state_t *R, 6223 const xcb_input_device_state_data_t *S) 6224 { 6225 return S->resolution.num_valuators; 6226 } 6227 6228 xcb_generic_iterator_t 6229 xcb_input_device_state_data_resolution_resolution_min_end (const xcb_input_device_state_t *R, 6230 const xcb_input_device_state_data_t *S) 6231 { 6232 xcb_generic_iterator_t i; 6233 i.data = S->resolution.resolution_min + S->resolution.num_valuators; 6234 i.rem = 0; 6235 i.index = (char *) i.data - (char *) S; 6236 return i; 6237 } 6238 6239 uint32_t * 6240 xcb_input_device_state_data_resolution_resolution_max (const xcb_input_device_state_data_t *S) 6241 { 6242 return S->resolution.resolution_max; 6243 } 6244 6245 int 6246 xcb_input_device_state_data_resolution_resolution_max_length (const xcb_input_device_state_t *R, 6247 const xcb_input_device_state_data_t *S) 6248 { 6249 return S->resolution.num_valuators; 6250 } 6251 6252 xcb_generic_iterator_t 6253 xcb_input_device_state_data_resolution_resolution_max_end (const xcb_input_device_state_t *R, 6254 const xcb_input_device_state_data_t *S) 6255 { 6256 xcb_generic_iterator_t i; 6257 i.data = S->resolution.resolution_max + S->resolution.num_valuators; 6258 i.rem = 0; 6259 i.index = (char *) i.data - (char *) S; 6260 return i; 6261 } 6262 6263 int 6264 xcb_input_device_state_data_serialize (void **_buffer, 6265 uint16_t control_id, 6266 const xcb_input_device_state_data_t *_aux) 6267 { 6268 char *xcb_out = *_buffer; 6269 unsigned int xcb_buffer_len = 0; 6270 unsigned int xcb_align_to = 0; 6271 unsigned int xcb_padding_offset = 0; 6272 6273 unsigned int xcb_pad = 0; 6274 char xcb_pad0[3] = {0, 0, 0}; 6275 struct iovec xcb_parts[27]; 6276 unsigned int xcb_parts_idx = 0; 6277 unsigned int xcb_block_len = 0; 6278 unsigned int i; 6279 char *xcb_tmp; 6280 6281 if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { 6282 /* xcb_input_device_state_data_t.resolution.num_valuators */ 6283 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->resolution.num_valuators; 6284 xcb_block_len += sizeof(uint32_t); 6285 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6286 xcb_parts_idx++; 6287 xcb_align_to = ALIGNOF(uint32_t); 6288 /* insert padding */ 6289 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6290 xcb_buffer_len += xcb_block_len + xcb_pad; 6291 if (0 != xcb_pad) { 6292 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 6293 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 6294 xcb_parts_idx++; 6295 xcb_pad = 0; 6296 } 6297 xcb_block_len = 0; 6298 xcb_padding_offset = 0; 6299 /* resolution_values */ 6300 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_values; 6301 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 6302 xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); 6303 xcb_parts_idx++; 6304 xcb_align_to = ALIGNOF(uint32_t); 6305 /* insert padding */ 6306 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6307 xcb_buffer_len += xcb_block_len + xcb_pad; 6308 if (0 != xcb_pad) { 6309 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 6310 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 6311 xcb_parts_idx++; 6312 xcb_pad = 0; 6313 } 6314 xcb_block_len = 0; 6315 xcb_padding_offset = 0; 6316 /* resolution_min */ 6317 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_min; 6318 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 6319 xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); 6320 xcb_parts_idx++; 6321 xcb_align_to = ALIGNOF(uint32_t); 6322 /* insert padding */ 6323 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6324 xcb_buffer_len += xcb_block_len + xcb_pad; 6325 if (0 != xcb_pad) { 6326 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 6327 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 6328 xcb_parts_idx++; 6329 xcb_pad = 0; 6330 } 6331 xcb_block_len = 0; 6332 xcb_padding_offset = 0; 6333 /* resolution_max */ 6334 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_max; 6335 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 6336 xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); 6337 xcb_parts_idx++; 6338 xcb_align_to = ALIGNOF(uint32_t); 6339 } 6340 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { 6341 /* xcb_input_device_state_data_t.abs_calib.min_x */ 6342 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_x; 6343 xcb_block_len += sizeof(int32_t); 6344 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 6345 xcb_parts_idx++; 6346 xcb_align_to = ALIGNOF(int32_t); 6347 /* xcb_input_device_state_data_t.abs_calib.max_x */ 6348 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_x; 6349 xcb_block_len += sizeof(int32_t); 6350 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 6351 xcb_parts_idx++; 6352 xcb_align_to = ALIGNOF(int32_t); 6353 /* xcb_input_device_state_data_t.abs_calib.min_y */ 6354 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_y; 6355 xcb_block_len += sizeof(int32_t); 6356 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 6357 xcb_parts_idx++; 6358 xcb_align_to = ALIGNOF(int32_t); 6359 /* xcb_input_device_state_data_t.abs_calib.max_y */ 6360 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_y; 6361 xcb_block_len += sizeof(int32_t); 6362 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 6363 xcb_parts_idx++; 6364 xcb_align_to = ALIGNOF(int32_t); 6365 /* xcb_input_device_state_data_t.abs_calib.flip_x */ 6366 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_x; 6367 xcb_block_len += sizeof(uint32_t); 6368 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6369 xcb_parts_idx++; 6370 xcb_align_to = ALIGNOF(uint32_t); 6371 /* xcb_input_device_state_data_t.abs_calib.flip_y */ 6372 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_y; 6373 xcb_block_len += sizeof(uint32_t); 6374 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6375 xcb_parts_idx++; 6376 xcb_align_to = ALIGNOF(uint32_t); 6377 /* xcb_input_device_state_data_t.abs_calib.rotation */ 6378 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.rotation; 6379 xcb_block_len += sizeof(uint32_t); 6380 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6381 xcb_parts_idx++; 6382 xcb_align_to = ALIGNOF(uint32_t); 6383 /* xcb_input_device_state_data_t.abs_calib.button_threshold */ 6384 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.button_threshold; 6385 xcb_block_len += sizeof(uint32_t); 6386 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6387 xcb_parts_idx++; 6388 xcb_align_to = ALIGNOF(uint32_t); 6389 } 6390 if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { 6391 /* xcb_input_device_state_data_t.core.status */ 6392 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->core.status; 6393 xcb_block_len += sizeof(uint8_t); 6394 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 6395 xcb_parts_idx++; 6396 xcb_align_to = ALIGNOF(uint8_t); 6397 /* xcb_input_device_state_data_t.core.iscore */ 6398 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->core.iscore; 6399 xcb_block_len += sizeof(uint8_t); 6400 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 6401 xcb_parts_idx++; 6402 xcb_align_to = ALIGNOF(uint8_t); 6403 /* xcb_input_device_state_data_t.core.pad0 */ 6404 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 6405 xcb_block_len += sizeof(uint8_t)*2; 6406 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 6407 xcb_parts_idx++; 6408 xcb_align_to = ALIGNOF(uint8_t); 6409 } 6410 if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { 6411 /* xcb_input_device_state_data_t.enable.enable */ 6412 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->enable.enable; 6413 xcb_block_len += sizeof(uint8_t); 6414 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 6415 xcb_parts_idx++; 6416 xcb_align_to = ALIGNOF(uint8_t); 6417 /* xcb_input_device_state_data_t.enable.pad1 */ 6418 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 6419 xcb_block_len += sizeof(uint8_t)*3; 6420 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; 6421 xcb_parts_idx++; 6422 xcb_align_to = ALIGNOF(uint8_t); 6423 } 6424 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { 6425 /* xcb_input_device_state_data_t.abs_area.offset_x */ 6426 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_x; 6427 xcb_block_len += sizeof(uint32_t); 6428 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6429 xcb_parts_idx++; 6430 xcb_align_to = ALIGNOF(uint32_t); 6431 /* xcb_input_device_state_data_t.abs_area.offset_y */ 6432 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_y; 6433 xcb_block_len += sizeof(uint32_t); 6434 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6435 xcb_parts_idx++; 6436 xcb_align_to = ALIGNOF(uint32_t); 6437 /* xcb_input_device_state_data_t.abs_area.width */ 6438 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.width; 6439 xcb_block_len += sizeof(uint32_t); 6440 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6441 xcb_parts_idx++; 6442 xcb_align_to = ALIGNOF(uint32_t); 6443 /* xcb_input_device_state_data_t.abs_area.height */ 6444 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.height; 6445 xcb_block_len += sizeof(uint32_t); 6446 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6447 xcb_parts_idx++; 6448 xcb_align_to = ALIGNOF(uint32_t); 6449 /* xcb_input_device_state_data_t.abs_area.screen */ 6450 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.screen; 6451 xcb_block_len += sizeof(uint32_t); 6452 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6453 xcb_parts_idx++; 6454 xcb_align_to = ALIGNOF(uint32_t); 6455 /* xcb_input_device_state_data_t.abs_area.following */ 6456 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.following; 6457 xcb_block_len += sizeof(uint32_t); 6458 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 6459 xcb_parts_idx++; 6460 xcb_align_to = ALIGNOF(uint32_t); 6461 } 6462 /* insert padding */ 6463 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6464 xcb_buffer_len += xcb_block_len + xcb_pad; 6465 if (0 != xcb_pad) { 6466 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 6467 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 6468 xcb_parts_idx++; 6469 xcb_pad = 0; 6470 } 6471 xcb_block_len = 0; 6472 xcb_padding_offset = 0; 6473 6474 if (NULL == xcb_out) { 6475 /* allocate memory */ 6476 xcb_out = malloc(xcb_buffer_len); 6477 *_buffer = xcb_out; 6478 } 6479 6480 xcb_tmp = xcb_out; 6481 for(i=0; i<xcb_parts_idx; i++) { 6482 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 6483 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 6484 if (0 != xcb_parts[i].iov_len) 6485 xcb_tmp += xcb_parts[i].iov_len; 6486 } 6487 6488 return xcb_buffer_len; 6489 } 6490 6491 int 6492 xcb_input_device_state_data_unpack (const void *_buffer, 6493 uint16_t control_id, 6494 xcb_input_device_state_data_t *_aux) 6495 { 6496 char *xcb_tmp = (char *)_buffer; 6497 unsigned int xcb_buffer_len = 0; 6498 unsigned int xcb_block_len = 0; 6499 unsigned int xcb_pad = 0; 6500 unsigned int xcb_align_to = 0; 6501 unsigned int xcb_padding_offset = 0; 6502 6503 6504 if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { 6505 /* xcb_input_device_state_data_t.resolution.num_valuators */ 6506 _aux->resolution.num_valuators = *(uint32_t *)xcb_tmp; 6507 xcb_block_len += sizeof(uint32_t); 6508 xcb_tmp += sizeof(uint32_t); 6509 xcb_align_to = ALIGNOF(uint32_t); 6510 /* insert padding */ 6511 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6512 xcb_buffer_len += xcb_block_len + xcb_pad; 6513 if (0 != xcb_pad) { 6514 xcb_tmp += xcb_pad; 6515 xcb_pad = 0; 6516 } 6517 xcb_block_len = 0; 6518 xcb_padding_offset = 0; 6519 /* resolution_values */ 6520 _aux->resolution.resolution_values = (uint32_t *)xcb_tmp; 6521 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 6522 xcb_tmp += xcb_block_len; 6523 xcb_align_to = ALIGNOF(uint32_t); 6524 /* insert padding */ 6525 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6526 xcb_buffer_len += xcb_block_len + xcb_pad; 6527 if (0 != xcb_pad) { 6528 xcb_tmp += xcb_pad; 6529 xcb_pad = 0; 6530 } 6531 xcb_block_len = 0; 6532 xcb_padding_offset = 0; 6533 /* resolution_min */ 6534 _aux->resolution.resolution_min = (uint32_t *)xcb_tmp; 6535 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 6536 xcb_tmp += xcb_block_len; 6537 xcb_align_to = ALIGNOF(uint32_t); 6538 /* insert padding */ 6539 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6540 xcb_buffer_len += xcb_block_len + xcb_pad; 6541 if (0 != xcb_pad) { 6542 xcb_tmp += xcb_pad; 6543 xcb_pad = 0; 6544 } 6545 xcb_block_len = 0; 6546 xcb_padding_offset = 0; 6547 /* resolution_max */ 6548 _aux->resolution.resolution_max = (uint32_t *)xcb_tmp; 6549 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 6550 xcb_tmp += xcb_block_len; 6551 xcb_align_to = ALIGNOF(uint32_t); 6552 } 6553 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { 6554 /* xcb_input_device_state_data_t.abs_calib.min_x */ 6555 _aux->abs_calib.min_x = *(int32_t *)xcb_tmp; 6556 xcb_block_len += sizeof(int32_t); 6557 xcb_tmp += sizeof(int32_t); 6558 xcb_align_to = ALIGNOF(int32_t); 6559 /* xcb_input_device_state_data_t.abs_calib.max_x */ 6560 _aux->abs_calib.max_x = *(int32_t *)xcb_tmp; 6561 xcb_block_len += sizeof(int32_t); 6562 xcb_tmp += sizeof(int32_t); 6563 xcb_align_to = ALIGNOF(int32_t); 6564 /* xcb_input_device_state_data_t.abs_calib.min_y */ 6565 _aux->abs_calib.min_y = *(int32_t *)xcb_tmp; 6566 xcb_block_len += sizeof(int32_t); 6567 xcb_tmp += sizeof(int32_t); 6568 xcb_align_to = ALIGNOF(int32_t); 6569 /* xcb_input_device_state_data_t.abs_calib.max_y */ 6570 _aux->abs_calib.max_y = *(int32_t *)xcb_tmp; 6571 xcb_block_len += sizeof(int32_t); 6572 xcb_tmp += sizeof(int32_t); 6573 xcb_align_to = ALIGNOF(int32_t); 6574 /* xcb_input_device_state_data_t.abs_calib.flip_x */ 6575 _aux->abs_calib.flip_x = *(uint32_t *)xcb_tmp; 6576 xcb_block_len += sizeof(uint32_t); 6577 xcb_tmp += sizeof(uint32_t); 6578 xcb_align_to = ALIGNOF(uint32_t); 6579 /* xcb_input_device_state_data_t.abs_calib.flip_y */ 6580 _aux->abs_calib.flip_y = *(uint32_t *)xcb_tmp; 6581 xcb_block_len += sizeof(uint32_t); 6582 xcb_tmp += sizeof(uint32_t); 6583 xcb_align_to = ALIGNOF(uint32_t); 6584 /* xcb_input_device_state_data_t.abs_calib.rotation */ 6585 _aux->abs_calib.rotation = *(uint32_t *)xcb_tmp; 6586 xcb_block_len += sizeof(uint32_t); 6587 xcb_tmp += sizeof(uint32_t); 6588 xcb_align_to = ALIGNOF(uint32_t); 6589 /* xcb_input_device_state_data_t.abs_calib.button_threshold */ 6590 _aux->abs_calib.button_threshold = *(uint32_t *)xcb_tmp; 6591 xcb_block_len += sizeof(uint32_t); 6592 xcb_tmp += sizeof(uint32_t); 6593 xcb_align_to = ALIGNOF(uint32_t); 6594 } 6595 if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { 6596 /* xcb_input_device_state_data_t.core.status */ 6597 _aux->core.status = *(uint8_t *)xcb_tmp; 6598 xcb_block_len += sizeof(uint8_t); 6599 xcb_tmp += sizeof(uint8_t); 6600 xcb_align_to = ALIGNOF(uint8_t); 6601 /* xcb_input_device_state_data_t.core.iscore */ 6602 _aux->core.iscore = *(uint8_t *)xcb_tmp; 6603 xcb_block_len += sizeof(uint8_t); 6604 xcb_tmp += sizeof(uint8_t); 6605 xcb_align_to = ALIGNOF(uint8_t); 6606 /* xcb_input_device_state_data_t.core.pad0 */ 6607 _aux->core.pad0[0] = *(uint8_t *)xcb_tmp; 6608 _aux->core.pad0[1] = *(uint8_t *)xcb_tmp; 6609 xcb_block_len += sizeof(uint8_t) * 2; 6610 xcb_tmp += sizeof(uint8_t) * 2; 6611 xcb_align_to = ALIGNOF(uint8_t); 6612 } 6613 if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { 6614 /* xcb_input_device_state_data_t.enable.enable */ 6615 _aux->enable.enable = *(uint8_t *)xcb_tmp; 6616 xcb_block_len += sizeof(uint8_t); 6617 xcb_tmp += sizeof(uint8_t); 6618 xcb_align_to = ALIGNOF(uint8_t); 6619 /* xcb_input_device_state_data_t.enable.pad1 */ 6620 _aux->enable.pad1[0] = *(uint8_t *)xcb_tmp; 6621 _aux->enable.pad1[1] = *(uint8_t *)xcb_tmp; 6622 _aux->enable.pad1[2] = *(uint8_t *)xcb_tmp; 6623 xcb_block_len += sizeof(uint8_t) * 3; 6624 xcb_tmp += sizeof(uint8_t) * 3; 6625 xcb_align_to = ALIGNOF(uint8_t); 6626 } 6627 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { 6628 /* xcb_input_device_state_data_t.abs_area.offset_x */ 6629 _aux->abs_area.offset_x = *(uint32_t *)xcb_tmp; 6630 xcb_block_len += sizeof(uint32_t); 6631 xcb_tmp += sizeof(uint32_t); 6632 xcb_align_to = ALIGNOF(uint32_t); 6633 /* xcb_input_device_state_data_t.abs_area.offset_y */ 6634 _aux->abs_area.offset_y = *(uint32_t *)xcb_tmp; 6635 xcb_block_len += sizeof(uint32_t); 6636 xcb_tmp += sizeof(uint32_t); 6637 xcb_align_to = ALIGNOF(uint32_t); 6638 /* xcb_input_device_state_data_t.abs_area.width */ 6639 _aux->abs_area.width = *(uint32_t *)xcb_tmp; 6640 xcb_block_len += sizeof(uint32_t); 6641 xcb_tmp += sizeof(uint32_t); 6642 xcb_align_to = ALIGNOF(uint32_t); 6643 /* xcb_input_device_state_data_t.abs_area.height */ 6644 _aux->abs_area.height = *(uint32_t *)xcb_tmp; 6645 xcb_block_len += sizeof(uint32_t); 6646 xcb_tmp += sizeof(uint32_t); 6647 xcb_align_to = ALIGNOF(uint32_t); 6648 /* xcb_input_device_state_data_t.abs_area.screen */ 6649 _aux->abs_area.screen = *(uint32_t *)xcb_tmp; 6650 xcb_block_len += sizeof(uint32_t); 6651 xcb_tmp += sizeof(uint32_t); 6652 xcb_align_to = ALIGNOF(uint32_t); 6653 /* xcb_input_device_state_data_t.abs_area.following */ 6654 _aux->abs_area.following = *(uint32_t *)xcb_tmp; 6655 xcb_block_len += sizeof(uint32_t); 6656 xcb_tmp += sizeof(uint32_t); 6657 xcb_align_to = ALIGNOF(uint32_t); 6658 } 6659 /* insert padding */ 6660 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 6661 xcb_buffer_len += xcb_block_len + xcb_pad; 6662 if (0 != xcb_pad) { 6663 xcb_tmp += xcb_pad; 6664 xcb_pad = 0; 6665 } 6666 xcb_block_len = 0; 6667 xcb_padding_offset = 0; 6668 6669 return xcb_buffer_len; 6670 } 6671 6672 int 6673 xcb_input_device_state_data_sizeof (const void *_buffer, 6674 uint16_t control_id) 6675 { 6676 xcb_input_device_state_data_t _aux; 6677 return xcb_input_device_state_data_unpack(_buffer, control_id, &_aux); 6678 } 6679 6680 int 6681 xcb_input_device_state_sizeof (const void *_buffer) 6682 { 6683 char *xcb_tmp = (char *)_buffer; 6684 const xcb_input_device_state_t *_aux = (xcb_input_device_state_t *)_buffer; 6685 unsigned int xcb_buffer_len = 0; 6686 unsigned int xcb_block_len = 0; 6687 unsigned int xcb_pad = 0; 6688 unsigned int xcb_align_to = 0; 6689 6690 6691 xcb_block_len += sizeof(xcb_input_device_state_t); 6692 xcb_tmp += xcb_block_len; 6693 xcb_buffer_len += xcb_block_len; 6694 xcb_block_len = 0; 6695 /* data */ 6696 xcb_block_len += xcb_input_device_state_data_sizeof(xcb_tmp, _aux->control_id); 6697 xcb_tmp += xcb_block_len; 6698 xcb_align_to = ALIGNOF(char); 6699 /* insert padding */ 6700 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 6701 xcb_buffer_len += xcb_block_len + xcb_pad; 6702 if (0 != xcb_pad) { 6703 xcb_tmp += xcb_pad; 6704 xcb_pad = 0; 6705 } 6706 xcb_block_len = 0; 6707 6708 return xcb_buffer_len; 6709 } 6710 6711 void * 6712 xcb_input_device_state_data (const xcb_input_device_state_t *R) 6713 { 6714 return (void *) (R + 1); 6715 } 6716 6717 void 6718 xcb_input_device_state_next (xcb_input_device_state_iterator_t *i) 6719 { 6720 xcb_input_device_state_t *R = i->data; 6721 xcb_generic_iterator_t child; 6722 child.data = (xcb_input_device_state_t *)(((char *)R) + xcb_input_device_state_sizeof(R)); 6723 i->index = (char *) child.data - (char *) i->data; 6724 --i->rem; 6725 i->data = (xcb_input_device_state_t *) child.data; 6726 } 6727 6728 xcb_generic_iterator_t 6729 xcb_input_device_state_end (xcb_input_device_state_iterator_t i) 6730 { 6731 xcb_generic_iterator_t ret; 6732 while(i.rem > 0) 6733 xcb_input_device_state_next(&i); 6734 ret.data = i.data; 6735 ret.rem = i.rem; 6736 ret.index = i.index; 6737 return ret; 6738 } 6739 6740 int 6741 xcb_input_get_device_control_sizeof (const void *_buffer) 6742 { 6743 char *xcb_tmp = (char *)_buffer; 6744 unsigned int xcb_buffer_len = 0; 6745 unsigned int xcb_block_len = 0; 6746 unsigned int xcb_pad = 0; 6747 unsigned int xcb_align_to = 0; 6748 6749 6750 xcb_block_len += sizeof(xcb_input_get_device_control_reply_t); 6751 xcb_tmp += xcb_block_len; 6752 xcb_buffer_len += xcb_block_len; 6753 xcb_block_len = 0; 6754 /* control */ 6755 xcb_block_len += xcb_input_device_state_sizeof(xcb_tmp); 6756 xcb_tmp += xcb_block_len; 6757 xcb_align_to = ALIGNOF(xcb_input_device_state_t); 6758 /* insert padding */ 6759 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 6760 xcb_buffer_len += xcb_block_len + xcb_pad; 6761 if (0 != xcb_pad) { 6762 xcb_tmp += xcb_pad; 6763 xcb_pad = 0; 6764 } 6765 xcb_block_len = 0; 6766 6767 return xcb_buffer_len; 6768 } 6769 6770 xcb_input_get_device_control_cookie_t 6771 xcb_input_get_device_control (xcb_connection_t *c, 6772 uint16_t control_id, 6773 uint8_t device_id) 6774 { 6775 static const xcb_protocol_request_t xcb_req = { 6776 .count = 2, 6777 .ext = &xcb_input_id, 6778 .opcode = XCB_INPUT_GET_DEVICE_CONTROL, 6779 .isvoid = 0 6780 }; 6781 6782 struct iovec xcb_parts[4]; 6783 xcb_input_get_device_control_cookie_t xcb_ret; 6784 xcb_input_get_device_control_request_t xcb_out; 6785 6786 xcb_out.control_id = control_id; 6787 xcb_out.device_id = device_id; 6788 xcb_out.pad0 = 0; 6789 6790 xcb_parts[2].iov_base = (char *) &xcb_out; 6791 xcb_parts[2].iov_len = sizeof(xcb_out); 6792 xcb_parts[3].iov_base = 0; 6793 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 6794 6795 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 6796 return xcb_ret; 6797 } 6798 6799 xcb_input_get_device_control_cookie_t 6800 xcb_input_get_device_control_unchecked (xcb_connection_t *c, 6801 uint16_t control_id, 6802 uint8_t device_id) 6803 { 6804 static const xcb_protocol_request_t xcb_req = { 6805 .count = 2, 6806 .ext = &xcb_input_id, 6807 .opcode = XCB_INPUT_GET_DEVICE_CONTROL, 6808 .isvoid = 0 6809 }; 6810 6811 struct iovec xcb_parts[4]; 6812 xcb_input_get_device_control_cookie_t xcb_ret; 6813 xcb_input_get_device_control_request_t xcb_out; 6814 6815 xcb_out.control_id = control_id; 6816 xcb_out.device_id = device_id; 6817 xcb_out.pad0 = 0; 6818 6819 xcb_parts[2].iov_base = (char *) &xcb_out; 6820 xcb_parts[2].iov_len = sizeof(xcb_out); 6821 xcb_parts[3].iov_base = 0; 6822 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 6823 6824 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 6825 return xcb_ret; 6826 } 6827 6828 xcb_input_device_state_t * 6829 xcb_input_get_device_control_control (const xcb_input_get_device_control_reply_t *R) 6830 { 6831 return (xcb_input_device_state_t *) (R + 1); 6832 } 6833 6834 xcb_input_get_device_control_reply_t * 6835 xcb_input_get_device_control_reply (xcb_connection_t *c, 6836 xcb_input_get_device_control_cookie_t cookie /**< */, 6837 xcb_generic_error_t **e) 6838 { 6839 return (xcb_input_get_device_control_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 6840 } 6841 6842 int 6843 xcb_input_device_resolution_ctl_sizeof (const void *_buffer) 6844 { 6845 char *xcb_tmp = (char *)_buffer; 6846 const xcb_input_device_resolution_ctl_t *_aux = (xcb_input_device_resolution_ctl_t *)_buffer; 6847 unsigned int xcb_buffer_len = 0; 6848 unsigned int xcb_block_len = 0; 6849 unsigned int xcb_pad = 0; 6850 unsigned int xcb_align_to = 0; 6851 6852 6853 xcb_block_len += sizeof(xcb_input_device_resolution_ctl_t); 6854 xcb_tmp += xcb_block_len; 6855 xcb_buffer_len += xcb_block_len; 6856 xcb_block_len = 0; 6857 /* resolution_values */ 6858 xcb_block_len += _aux->num_valuators * sizeof(uint32_t); 6859 xcb_tmp += xcb_block_len; 6860 xcb_align_to = ALIGNOF(uint32_t); 6861 /* insert padding */ 6862 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 6863 xcb_buffer_len += xcb_block_len + xcb_pad; 6864 if (0 != xcb_pad) { 6865 xcb_tmp += xcb_pad; 6866 xcb_pad = 0; 6867 } 6868 xcb_block_len = 0; 6869 6870 return xcb_buffer_len; 6871 } 6872 6873 uint32_t * 6874 xcb_input_device_resolution_ctl_resolution_values (const xcb_input_device_resolution_ctl_t *R) 6875 { 6876 return (uint32_t *) (R + 1); 6877 } 6878 6879 int 6880 xcb_input_device_resolution_ctl_resolution_values_length (const xcb_input_device_resolution_ctl_t *R) 6881 { 6882 return R->num_valuators; 6883 } 6884 6885 xcb_generic_iterator_t 6886 xcb_input_device_resolution_ctl_resolution_values_end (const xcb_input_device_resolution_ctl_t *R) 6887 { 6888 xcb_generic_iterator_t i; 6889 i.data = ((uint32_t *) (R + 1)) + (R->num_valuators); 6890 i.rem = 0; 6891 i.index = (char *) i.data - (char *) R; 6892 return i; 6893 } 6894 6895 void 6896 xcb_input_device_resolution_ctl_next (xcb_input_device_resolution_ctl_iterator_t *i) 6897 { 6898 xcb_input_device_resolution_ctl_t *R = i->data; 6899 xcb_generic_iterator_t child; 6900 child.data = (xcb_input_device_resolution_ctl_t *)(((char *)R) + xcb_input_device_resolution_ctl_sizeof(R)); 6901 i->index = (char *) child.data - (char *) i->data; 6902 --i->rem; 6903 i->data = (xcb_input_device_resolution_ctl_t *) child.data; 6904 } 6905 6906 xcb_generic_iterator_t 6907 xcb_input_device_resolution_ctl_end (xcb_input_device_resolution_ctl_iterator_t i) 6908 { 6909 xcb_generic_iterator_t ret; 6910 while(i.rem > 0) 6911 xcb_input_device_resolution_ctl_next(&i); 6912 ret.data = i.data; 6913 ret.rem = i.rem; 6914 ret.index = i.index; 6915 return ret; 6916 } 6917 6918 void 6919 xcb_input_device_abs_calib_ctl_next (xcb_input_device_abs_calib_ctl_iterator_t *i) 6920 { 6921 --i->rem; 6922 ++i->data; 6923 i->index += sizeof(xcb_input_device_abs_calib_ctl_t); 6924 } 6925 6926 xcb_generic_iterator_t 6927 xcb_input_device_abs_calib_ctl_end (xcb_input_device_abs_calib_ctl_iterator_t i) 6928 { 6929 xcb_generic_iterator_t ret; 6930 ret.data = i.data + i.rem; 6931 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6932 ret.rem = 0; 6933 return ret; 6934 } 6935 6936 void 6937 xcb_input_device_abs_area_ctrl_next (xcb_input_device_abs_area_ctrl_iterator_t *i) 6938 { 6939 --i->rem; 6940 ++i->data; 6941 i->index += sizeof(xcb_input_device_abs_area_ctrl_t); 6942 } 6943 6944 xcb_generic_iterator_t 6945 xcb_input_device_abs_area_ctrl_end (xcb_input_device_abs_area_ctrl_iterator_t i) 6946 { 6947 xcb_generic_iterator_t ret; 6948 ret.data = i.data + i.rem; 6949 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6950 ret.rem = 0; 6951 return ret; 6952 } 6953 6954 void 6955 xcb_input_device_core_ctrl_next (xcb_input_device_core_ctrl_iterator_t *i) 6956 { 6957 --i->rem; 6958 ++i->data; 6959 i->index += sizeof(xcb_input_device_core_ctrl_t); 6960 } 6961 6962 xcb_generic_iterator_t 6963 xcb_input_device_core_ctrl_end (xcb_input_device_core_ctrl_iterator_t i) 6964 { 6965 xcb_generic_iterator_t ret; 6966 ret.data = i.data + i.rem; 6967 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6968 ret.rem = 0; 6969 return ret; 6970 } 6971 6972 void 6973 xcb_input_device_enable_ctrl_next (xcb_input_device_enable_ctrl_iterator_t *i) 6974 { 6975 --i->rem; 6976 ++i->data; 6977 i->index += sizeof(xcb_input_device_enable_ctrl_t); 6978 } 6979 6980 xcb_generic_iterator_t 6981 xcb_input_device_enable_ctrl_end (xcb_input_device_enable_ctrl_iterator_t i) 6982 { 6983 xcb_generic_iterator_t ret; 6984 ret.data = i.data + i.rem; 6985 ret.index = i.index + ((char *) ret.data - (char *) i.data); 6986 ret.rem = 0; 6987 return ret; 6988 } 6989 6990 uint32_t * 6991 xcb_input_device_ctl_data_resolution_resolution_values (const xcb_input_device_ctl_data_t *S) 6992 { 6993 return S->resolution.resolution_values; 6994 } 6995 6996 int 6997 xcb_input_device_ctl_data_resolution_resolution_values_length (const xcb_input_device_ctl_t *R, 6998 const xcb_input_device_ctl_data_t *S) 6999 { 7000 return S->resolution.num_valuators; 7001 } 7002 7003 xcb_generic_iterator_t 7004 xcb_input_device_ctl_data_resolution_resolution_values_end (const xcb_input_device_ctl_t *R, 7005 const xcb_input_device_ctl_data_t *S) 7006 { 7007 xcb_generic_iterator_t i; 7008 i.data = S->resolution.resolution_values + S->resolution.num_valuators; 7009 i.rem = 0; 7010 i.index = (char *) i.data - (char *) S; 7011 return i; 7012 } 7013 7014 int 7015 xcb_input_device_ctl_data_serialize (void **_buffer, 7016 uint16_t control_id, 7017 const xcb_input_device_ctl_data_t *_aux) 7018 { 7019 char *xcb_out = *_buffer; 7020 unsigned int xcb_buffer_len = 0; 7021 unsigned int xcb_align_to = 0; 7022 unsigned int xcb_padding_offset = 0; 7023 7024 unsigned int xcb_pad = 0; 7025 char xcb_pad0[3] = {0, 0, 0}; 7026 struct iovec xcb_parts[24]; 7027 unsigned int xcb_parts_idx = 0; 7028 unsigned int xcb_block_len = 0; 7029 unsigned int i; 7030 char *xcb_tmp; 7031 7032 if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { 7033 /* xcb_input_device_ctl_data_t.resolution.first_valuator */ 7034 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->resolution.first_valuator; 7035 xcb_block_len += sizeof(uint8_t); 7036 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 7037 xcb_parts_idx++; 7038 xcb_align_to = ALIGNOF(uint8_t); 7039 /* xcb_input_device_ctl_data_t.resolution.num_valuators */ 7040 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->resolution.num_valuators; 7041 xcb_block_len += sizeof(uint8_t); 7042 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 7043 xcb_parts_idx++; 7044 xcb_align_to = ALIGNOF(uint8_t); 7045 /* xcb_input_device_ctl_data_t.resolution.pad0 */ 7046 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7047 xcb_block_len += sizeof(uint8_t)*2; 7048 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 7049 xcb_parts_idx++; 7050 xcb_align_to = ALIGNOF(uint8_t); 7051 /* insert padding */ 7052 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7053 xcb_buffer_len += xcb_block_len + xcb_pad; 7054 if (0 != xcb_pad) { 7055 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7056 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7057 xcb_parts_idx++; 7058 xcb_pad = 0; 7059 } 7060 xcb_block_len = 0; 7061 xcb_padding_offset = 0; 7062 /* resolution_values */ 7063 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_values; 7064 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 7065 xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); 7066 xcb_parts_idx++; 7067 xcb_align_to = ALIGNOF(uint32_t); 7068 } 7069 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { 7070 /* xcb_input_device_ctl_data_t.abs_calib.min_x */ 7071 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_x; 7072 xcb_block_len += sizeof(int32_t); 7073 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7074 xcb_parts_idx++; 7075 xcb_align_to = ALIGNOF(int32_t); 7076 /* xcb_input_device_ctl_data_t.abs_calib.max_x */ 7077 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_x; 7078 xcb_block_len += sizeof(int32_t); 7079 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7080 xcb_parts_idx++; 7081 xcb_align_to = ALIGNOF(int32_t); 7082 /* xcb_input_device_ctl_data_t.abs_calib.min_y */ 7083 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_y; 7084 xcb_block_len += sizeof(int32_t); 7085 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7086 xcb_parts_idx++; 7087 xcb_align_to = ALIGNOF(int32_t); 7088 /* xcb_input_device_ctl_data_t.abs_calib.max_y */ 7089 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_y; 7090 xcb_block_len += sizeof(int32_t); 7091 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7092 xcb_parts_idx++; 7093 xcb_align_to = ALIGNOF(int32_t); 7094 /* xcb_input_device_ctl_data_t.abs_calib.flip_x */ 7095 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_x; 7096 xcb_block_len += sizeof(uint32_t); 7097 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7098 xcb_parts_idx++; 7099 xcb_align_to = ALIGNOF(uint32_t); 7100 /* xcb_input_device_ctl_data_t.abs_calib.flip_y */ 7101 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_y; 7102 xcb_block_len += sizeof(uint32_t); 7103 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7104 xcb_parts_idx++; 7105 xcb_align_to = ALIGNOF(uint32_t); 7106 /* xcb_input_device_ctl_data_t.abs_calib.rotation */ 7107 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.rotation; 7108 xcb_block_len += sizeof(uint32_t); 7109 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7110 xcb_parts_idx++; 7111 xcb_align_to = ALIGNOF(uint32_t); 7112 /* xcb_input_device_ctl_data_t.abs_calib.button_threshold */ 7113 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.button_threshold; 7114 xcb_block_len += sizeof(uint32_t); 7115 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7116 xcb_parts_idx++; 7117 xcb_align_to = ALIGNOF(uint32_t); 7118 } 7119 if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { 7120 /* xcb_input_device_ctl_data_t.core.status */ 7121 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->core.status; 7122 xcb_block_len += sizeof(uint8_t); 7123 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 7124 xcb_parts_idx++; 7125 xcb_align_to = ALIGNOF(uint8_t); 7126 /* xcb_input_device_ctl_data_t.core.pad1 */ 7127 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7128 xcb_block_len += sizeof(uint8_t)*3; 7129 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; 7130 xcb_parts_idx++; 7131 xcb_align_to = ALIGNOF(uint8_t); 7132 } 7133 if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { 7134 /* xcb_input_device_ctl_data_t.enable.enable */ 7135 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->enable.enable; 7136 xcb_block_len += sizeof(uint8_t); 7137 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 7138 xcb_parts_idx++; 7139 xcb_align_to = ALIGNOF(uint8_t); 7140 /* xcb_input_device_ctl_data_t.enable.pad2 */ 7141 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7142 xcb_block_len += sizeof(uint8_t)*3; 7143 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; 7144 xcb_parts_idx++; 7145 xcb_align_to = ALIGNOF(uint8_t); 7146 } 7147 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { 7148 /* xcb_input_device_ctl_data_t.abs_area.offset_x */ 7149 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_x; 7150 xcb_block_len += sizeof(uint32_t); 7151 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7152 xcb_parts_idx++; 7153 xcb_align_to = ALIGNOF(uint32_t); 7154 /* xcb_input_device_ctl_data_t.abs_area.offset_y */ 7155 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_y; 7156 xcb_block_len += sizeof(uint32_t); 7157 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7158 xcb_parts_idx++; 7159 xcb_align_to = ALIGNOF(uint32_t); 7160 /* xcb_input_device_ctl_data_t.abs_area.width */ 7161 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.width; 7162 xcb_block_len += sizeof(int32_t); 7163 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7164 xcb_parts_idx++; 7165 xcb_align_to = ALIGNOF(int32_t); 7166 /* xcb_input_device_ctl_data_t.abs_area.height */ 7167 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.height; 7168 xcb_block_len += sizeof(int32_t); 7169 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7170 xcb_parts_idx++; 7171 xcb_align_to = ALIGNOF(int32_t); 7172 /* xcb_input_device_ctl_data_t.abs_area.screen */ 7173 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.screen; 7174 xcb_block_len += sizeof(int32_t); 7175 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 7176 xcb_parts_idx++; 7177 xcb_align_to = ALIGNOF(int32_t); 7178 /* xcb_input_device_ctl_data_t.abs_area.following */ 7179 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.following; 7180 xcb_block_len += sizeof(uint32_t); 7181 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 7182 xcb_parts_idx++; 7183 xcb_align_to = ALIGNOF(uint32_t); 7184 } 7185 /* insert padding */ 7186 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7187 xcb_buffer_len += xcb_block_len + xcb_pad; 7188 if (0 != xcb_pad) { 7189 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7190 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7191 xcb_parts_idx++; 7192 xcb_pad = 0; 7193 } 7194 xcb_block_len = 0; 7195 xcb_padding_offset = 0; 7196 7197 if (NULL == xcb_out) { 7198 /* allocate memory */ 7199 xcb_out = malloc(xcb_buffer_len); 7200 *_buffer = xcb_out; 7201 } 7202 7203 xcb_tmp = xcb_out; 7204 for(i=0; i<xcb_parts_idx; i++) { 7205 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 7206 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 7207 if (0 != xcb_parts[i].iov_len) 7208 xcb_tmp += xcb_parts[i].iov_len; 7209 } 7210 7211 return xcb_buffer_len; 7212 } 7213 7214 int 7215 xcb_input_device_ctl_data_unpack (const void *_buffer, 7216 uint16_t control_id, 7217 xcb_input_device_ctl_data_t *_aux) 7218 { 7219 char *xcb_tmp = (char *)_buffer; 7220 unsigned int xcb_buffer_len = 0; 7221 unsigned int xcb_block_len = 0; 7222 unsigned int xcb_pad = 0; 7223 unsigned int xcb_align_to = 0; 7224 unsigned int xcb_padding_offset = 0; 7225 7226 7227 if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { 7228 /* xcb_input_device_ctl_data_t.resolution.first_valuator */ 7229 _aux->resolution.first_valuator = *(uint8_t *)xcb_tmp; 7230 xcb_block_len += sizeof(uint8_t); 7231 xcb_tmp += sizeof(uint8_t); 7232 xcb_align_to = ALIGNOF(uint8_t); 7233 /* xcb_input_device_ctl_data_t.resolution.num_valuators */ 7234 _aux->resolution.num_valuators = *(uint8_t *)xcb_tmp; 7235 xcb_block_len += sizeof(uint8_t); 7236 xcb_tmp += sizeof(uint8_t); 7237 xcb_align_to = ALIGNOF(uint8_t); 7238 /* xcb_input_device_ctl_data_t.resolution.pad0 */ 7239 _aux->resolution.pad0[0] = *(uint8_t *)xcb_tmp; 7240 _aux->resolution.pad0[1] = *(uint8_t *)xcb_tmp; 7241 xcb_block_len += sizeof(uint8_t) * 2; 7242 xcb_tmp += sizeof(uint8_t) * 2; 7243 xcb_align_to = ALIGNOF(uint8_t); 7244 /* insert padding */ 7245 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7246 xcb_buffer_len += xcb_block_len + xcb_pad; 7247 if (0 != xcb_pad) { 7248 xcb_tmp += xcb_pad; 7249 xcb_pad = 0; 7250 } 7251 xcb_block_len = 0; 7252 xcb_padding_offset = 0; 7253 /* resolution_values */ 7254 _aux->resolution.resolution_values = (uint32_t *)xcb_tmp; 7255 xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); 7256 xcb_tmp += xcb_block_len; 7257 xcb_align_to = ALIGNOF(uint32_t); 7258 } 7259 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { 7260 /* xcb_input_device_ctl_data_t.abs_calib.min_x */ 7261 _aux->abs_calib.min_x = *(int32_t *)xcb_tmp; 7262 xcb_block_len += sizeof(int32_t); 7263 xcb_tmp += sizeof(int32_t); 7264 xcb_align_to = ALIGNOF(int32_t); 7265 /* xcb_input_device_ctl_data_t.abs_calib.max_x */ 7266 _aux->abs_calib.max_x = *(int32_t *)xcb_tmp; 7267 xcb_block_len += sizeof(int32_t); 7268 xcb_tmp += sizeof(int32_t); 7269 xcb_align_to = ALIGNOF(int32_t); 7270 /* xcb_input_device_ctl_data_t.abs_calib.min_y */ 7271 _aux->abs_calib.min_y = *(int32_t *)xcb_tmp; 7272 xcb_block_len += sizeof(int32_t); 7273 xcb_tmp += sizeof(int32_t); 7274 xcb_align_to = ALIGNOF(int32_t); 7275 /* xcb_input_device_ctl_data_t.abs_calib.max_y */ 7276 _aux->abs_calib.max_y = *(int32_t *)xcb_tmp; 7277 xcb_block_len += sizeof(int32_t); 7278 xcb_tmp += sizeof(int32_t); 7279 xcb_align_to = ALIGNOF(int32_t); 7280 /* xcb_input_device_ctl_data_t.abs_calib.flip_x */ 7281 _aux->abs_calib.flip_x = *(uint32_t *)xcb_tmp; 7282 xcb_block_len += sizeof(uint32_t); 7283 xcb_tmp += sizeof(uint32_t); 7284 xcb_align_to = ALIGNOF(uint32_t); 7285 /* xcb_input_device_ctl_data_t.abs_calib.flip_y */ 7286 _aux->abs_calib.flip_y = *(uint32_t *)xcb_tmp; 7287 xcb_block_len += sizeof(uint32_t); 7288 xcb_tmp += sizeof(uint32_t); 7289 xcb_align_to = ALIGNOF(uint32_t); 7290 /* xcb_input_device_ctl_data_t.abs_calib.rotation */ 7291 _aux->abs_calib.rotation = *(uint32_t *)xcb_tmp; 7292 xcb_block_len += sizeof(uint32_t); 7293 xcb_tmp += sizeof(uint32_t); 7294 xcb_align_to = ALIGNOF(uint32_t); 7295 /* xcb_input_device_ctl_data_t.abs_calib.button_threshold */ 7296 _aux->abs_calib.button_threshold = *(uint32_t *)xcb_tmp; 7297 xcb_block_len += sizeof(uint32_t); 7298 xcb_tmp += sizeof(uint32_t); 7299 xcb_align_to = ALIGNOF(uint32_t); 7300 } 7301 if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { 7302 /* xcb_input_device_ctl_data_t.core.status */ 7303 _aux->core.status = *(uint8_t *)xcb_tmp; 7304 xcb_block_len += sizeof(uint8_t); 7305 xcb_tmp += sizeof(uint8_t); 7306 xcb_align_to = ALIGNOF(uint8_t); 7307 /* xcb_input_device_ctl_data_t.core.pad1 */ 7308 _aux->core.pad1[0] = *(uint8_t *)xcb_tmp; 7309 _aux->core.pad1[1] = *(uint8_t *)xcb_tmp; 7310 _aux->core.pad1[2] = *(uint8_t *)xcb_tmp; 7311 xcb_block_len += sizeof(uint8_t) * 3; 7312 xcb_tmp += sizeof(uint8_t) * 3; 7313 xcb_align_to = ALIGNOF(uint8_t); 7314 } 7315 if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { 7316 /* xcb_input_device_ctl_data_t.enable.enable */ 7317 _aux->enable.enable = *(uint8_t *)xcb_tmp; 7318 xcb_block_len += sizeof(uint8_t); 7319 xcb_tmp += sizeof(uint8_t); 7320 xcb_align_to = ALIGNOF(uint8_t); 7321 /* xcb_input_device_ctl_data_t.enable.pad2 */ 7322 _aux->enable.pad2[0] = *(uint8_t *)xcb_tmp; 7323 _aux->enable.pad2[1] = *(uint8_t *)xcb_tmp; 7324 _aux->enable.pad2[2] = *(uint8_t *)xcb_tmp; 7325 xcb_block_len += sizeof(uint8_t) * 3; 7326 xcb_tmp += sizeof(uint8_t) * 3; 7327 xcb_align_to = ALIGNOF(uint8_t); 7328 } 7329 if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { 7330 /* xcb_input_device_ctl_data_t.abs_area.offset_x */ 7331 _aux->abs_area.offset_x = *(uint32_t *)xcb_tmp; 7332 xcb_block_len += sizeof(uint32_t); 7333 xcb_tmp += sizeof(uint32_t); 7334 xcb_align_to = ALIGNOF(uint32_t); 7335 /* xcb_input_device_ctl_data_t.abs_area.offset_y */ 7336 _aux->abs_area.offset_y = *(uint32_t *)xcb_tmp; 7337 xcb_block_len += sizeof(uint32_t); 7338 xcb_tmp += sizeof(uint32_t); 7339 xcb_align_to = ALIGNOF(uint32_t); 7340 /* xcb_input_device_ctl_data_t.abs_area.width */ 7341 _aux->abs_area.width = *(int32_t *)xcb_tmp; 7342 xcb_block_len += sizeof(int32_t); 7343 xcb_tmp += sizeof(int32_t); 7344 xcb_align_to = ALIGNOF(int32_t); 7345 /* xcb_input_device_ctl_data_t.abs_area.height */ 7346 _aux->abs_area.height = *(int32_t *)xcb_tmp; 7347 xcb_block_len += sizeof(int32_t); 7348 xcb_tmp += sizeof(int32_t); 7349 xcb_align_to = ALIGNOF(int32_t); 7350 /* xcb_input_device_ctl_data_t.abs_area.screen */ 7351 _aux->abs_area.screen = *(int32_t *)xcb_tmp; 7352 xcb_block_len += sizeof(int32_t); 7353 xcb_tmp += sizeof(int32_t); 7354 xcb_align_to = ALIGNOF(int32_t); 7355 /* xcb_input_device_ctl_data_t.abs_area.following */ 7356 _aux->abs_area.following = *(uint32_t *)xcb_tmp; 7357 xcb_block_len += sizeof(uint32_t); 7358 xcb_tmp += sizeof(uint32_t); 7359 xcb_align_to = ALIGNOF(uint32_t); 7360 } 7361 /* insert padding */ 7362 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7363 xcb_buffer_len += xcb_block_len + xcb_pad; 7364 if (0 != xcb_pad) { 7365 xcb_tmp += xcb_pad; 7366 xcb_pad = 0; 7367 } 7368 xcb_block_len = 0; 7369 xcb_padding_offset = 0; 7370 7371 return xcb_buffer_len; 7372 } 7373 7374 int 7375 xcb_input_device_ctl_data_sizeof (const void *_buffer, 7376 uint16_t control_id) 7377 { 7378 xcb_input_device_ctl_data_t _aux; 7379 return xcb_input_device_ctl_data_unpack(_buffer, control_id, &_aux); 7380 } 7381 7382 int 7383 xcb_input_device_ctl_sizeof (const void *_buffer) 7384 { 7385 char *xcb_tmp = (char *)_buffer; 7386 const xcb_input_device_ctl_t *_aux = (xcb_input_device_ctl_t *)_buffer; 7387 unsigned int xcb_buffer_len = 0; 7388 unsigned int xcb_block_len = 0; 7389 unsigned int xcb_pad = 0; 7390 unsigned int xcb_align_to = 0; 7391 7392 7393 xcb_block_len += sizeof(xcb_input_device_ctl_t); 7394 xcb_tmp += xcb_block_len; 7395 xcb_buffer_len += xcb_block_len; 7396 xcb_block_len = 0; 7397 /* data */ 7398 xcb_block_len += xcb_input_device_ctl_data_sizeof(xcb_tmp, _aux->control_id); 7399 xcb_tmp += xcb_block_len; 7400 xcb_align_to = ALIGNOF(char); 7401 /* insert padding */ 7402 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 7403 xcb_buffer_len += xcb_block_len + xcb_pad; 7404 if (0 != xcb_pad) { 7405 xcb_tmp += xcb_pad; 7406 xcb_pad = 0; 7407 } 7408 xcb_block_len = 0; 7409 7410 return xcb_buffer_len; 7411 } 7412 7413 void * 7414 xcb_input_device_ctl_data (const xcb_input_device_ctl_t *R) 7415 { 7416 return (void *) (R + 1); 7417 } 7418 7419 void 7420 xcb_input_device_ctl_next (xcb_input_device_ctl_iterator_t *i) 7421 { 7422 xcb_input_device_ctl_t *R = i->data; 7423 xcb_generic_iterator_t child; 7424 child.data = (xcb_input_device_ctl_t *)(((char *)R) + xcb_input_device_ctl_sizeof(R)); 7425 i->index = (char *) child.data - (char *) i->data; 7426 --i->rem; 7427 i->data = (xcb_input_device_ctl_t *) child.data; 7428 } 7429 7430 xcb_generic_iterator_t 7431 xcb_input_device_ctl_end (xcb_input_device_ctl_iterator_t i) 7432 { 7433 xcb_generic_iterator_t ret; 7434 while(i.rem > 0) 7435 xcb_input_device_ctl_next(&i); 7436 ret.data = i.data; 7437 ret.rem = i.rem; 7438 ret.index = i.index; 7439 return ret; 7440 } 7441 7442 int 7443 xcb_input_change_device_control_sizeof (const void *_buffer) 7444 { 7445 char *xcb_tmp = (char *)_buffer; 7446 unsigned int xcb_buffer_len = 0; 7447 unsigned int xcb_block_len = 0; 7448 unsigned int xcb_pad = 0; 7449 unsigned int xcb_align_to = 0; 7450 7451 7452 xcb_block_len += sizeof(xcb_input_change_device_control_request_t); 7453 xcb_tmp += xcb_block_len; 7454 xcb_buffer_len += xcb_block_len; 7455 xcb_block_len = 0; 7456 /* control */ 7457 xcb_block_len += xcb_input_device_ctl_sizeof(xcb_tmp); 7458 xcb_tmp += xcb_block_len; 7459 xcb_align_to = ALIGNOF(xcb_input_device_ctl_t); 7460 /* insert padding */ 7461 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 7462 xcb_buffer_len += xcb_block_len + xcb_pad; 7463 if (0 != xcb_pad) { 7464 xcb_tmp += xcb_pad; 7465 xcb_pad = 0; 7466 } 7467 xcb_block_len = 0; 7468 7469 return xcb_buffer_len; 7470 } 7471 7472 xcb_input_change_device_control_cookie_t 7473 xcb_input_change_device_control (xcb_connection_t *c, 7474 uint16_t control_id, 7475 uint8_t device_id, 7476 xcb_input_device_ctl_t *control) 7477 { 7478 static const xcb_protocol_request_t xcb_req = { 7479 .count = 4, 7480 .ext = &xcb_input_id, 7481 .opcode = XCB_INPUT_CHANGE_DEVICE_CONTROL, 7482 .isvoid = 0 7483 }; 7484 7485 struct iovec xcb_parts[6]; 7486 xcb_input_change_device_control_cookie_t xcb_ret; 7487 xcb_input_change_device_control_request_t xcb_out; 7488 7489 xcb_out.control_id = control_id; 7490 xcb_out.device_id = device_id; 7491 xcb_out.pad0 = 0; 7492 7493 xcb_parts[2].iov_base = (char *) &xcb_out; 7494 xcb_parts[2].iov_len = sizeof(xcb_out); 7495 xcb_parts[3].iov_base = 0; 7496 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 7497 /* xcb_input_device_ctl_t control */ 7498 xcb_parts[4].iov_base = (char *) control; 7499 xcb_parts[4].iov_len = 7500 xcb_input_device_ctl_sizeof (control); 7501 7502 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 7503 return xcb_ret; 7504 } 7505 7506 xcb_input_change_device_control_cookie_t 7507 xcb_input_change_device_control_unchecked (xcb_connection_t *c, 7508 uint16_t control_id, 7509 uint8_t device_id, 7510 xcb_input_device_ctl_t *control) 7511 { 7512 static const xcb_protocol_request_t xcb_req = { 7513 .count = 4, 7514 .ext = &xcb_input_id, 7515 .opcode = XCB_INPUT_CHANGE_DEVICE_CONTROL, 7516 .isvoid = 0 7517 }; 7518 7519 struct iovec xcb_parts[6]; 7520 xcb_input_change_device_control_cookie_t xcb_ret; 7521 xcb_input_change_device_control_request_t xcb_out; 7522 7523 xcb_out.control_id = control_id; 7524 xcb_out.device_id = device_id; 7525 xcb_out.pad0 = 0; 7526 7527 xcb_parts[2].iov_base = (char *) &xcb_out; 7528 xcb_parts[2].iov_len = sizeof(xcb_out); 7529 xcb_parts[3].iov_base = 0; 7530 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 7531 /* xcb_input_device_ctl_t control */ 7532 xcb_parts[4].iov_base = (char *) control; 7533 xcb_parts[4].iov_len = 7534 xcb_input_device_ctl_sizeof (control); 7535 7536 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 7537 return xcb_ret; 7538 } 7539 7540 xcb_input_change_device_control_reply_t * 7541 xcb_input_change_device_control_reply (xcb_connection_t *c, 7542 xcb_input_change_device_control_cookie_t cookie /**< */, 7543 xcb_generic_error_t **e) 7544 { 7545 return (xcb_input_change_device_control_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 7546 } 7547 7548 int 7549 xcb_input_list_device_properties_sizeof (const void *_buffer) 7550 { 7551 char *xcb_tmp = (char *)_buffer; 7552 const xcb_input_list_device_properties_reply_t *_aux = (xcb_input_list_device_properties_reply_t *)_buffer; 7553 unsigned int xcb_buffer_len = 0; 7554 unsigned int xcb_block_len = 0; 7555 unsigned int xcb_pad = 0; 7556 unsigned int xcb_align_to = 0; 7557 7558 7559 xcb_block_len += sizeof(xcb_input_list_device_properties_reply_t); 7560 xcb_tmp += xcb_block_len; 7561 xcb_buffer_len += xcb_block_len; 7562 xcb_block_len = 0; 7563 /* atoms */ 7564 xcb_block_len += _aux->num_atoms * sizeof(xcb_atom_t); 7565 xcb_tmp += xcb_block_len; 7566 xcb_align_to = ALIGNOF(xcb_atom_t); 7567 /* insert padding */ 7568 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 7569 xcb_buffer_len += xcb_block_len + xcb_pad; 7570 if (0 != xcb_pad) { 7571 xcb_tmp += xcb_pad; 7572 xcb_pad = 0; 7573 } 7574 xcb_block_len = 0; 7575 7576 return xcb_buffer_len; 7577 } 7578 7579 xcb_input_list_device_properties_cookie_t 7580 xcb_input_list_device_properties (xcb_connection_t *c, 7581 uint8_t device_id) 7582 { 7583 static const xcb_protocol_request_t xcb_req = { 7584 .count = 2, 7585 .ext = &xcb_input_id, 7586 .opcode = XCB_INPUT_LIST_DEVICE_PROPERTIES, 7587 .isvoid = 0 7588 }; 7589 7590 struct iovec xcb_parts[4]; 7591 xcb_input_list_device_properties_cookie_t xcb_ret; 7592 xcb_input_list_device_properties_request_t xcb_out; 7593 7594 xcb_out.device_id = device_id; 7595 memset(xcb_out.pad0, 0, 3); 7596 7597 xcb_parts[2].iov_base = (char *) &xcb_out; 7598 xcb_parts[2].iov_len = sizeof(xcb_out); 7599 xcb_parts[3].iov_base = 0; 7600 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 7601 7602 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 7603 return xcb_ret; 7604 } 7605 7606 xcb_input_list_device_properties_cookie_t 7607 xcb_input_list_device_properties_unchecked (xcb_connection_t *c, 7608 uint8_t device_id) 7609 { 7610 static const xcb_protocol_request_t xcb_req = { 7611 .count = 2, 7612 .ext = &xcb_input_id, 7613 .opcode = XCB_INPUT_LIST_DEVICE_PROPERTIES, 7614 .isvoid = 0 7615 }; 7616 7617 struct iovec xcb_parts[4]; 7618 xcb_input_list_device_properties_cookie_t xcb_ret; 7619 xcb_input_list_device_properties_request_t xcb_out; 7620 7621 xcb_out.device_id = device_id; 7622 memset(xcb_out.pad0, 0, 3); 7623 7624 xcb_parts[2].iov_base = (char *) &xcb_out; 7625 xcb_parts[2].iov_len = sizeof(xcb_out); 7626 xcb_parts[3].iov_base = 0; 7627 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 7628 7629 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 7630 return xcb_ret; 7631 } 7632 7633 xcb_atom_t * 7634 xcb_input_list_device_properties_atoms (const xcb_input_list_device_properties_reply_t *R) 7635 { 7636 return (xcb_atom_t *) (R + 1); 7637 } 7638 7639 int 7640 xcb_input_list_device_properties_atoms_length (const xcb_input_list_device_properties_reply_t *R) 7641 { 7642 return R->num_atoms; 7643 } 7644 7645 xcb_generic_iterator_t 7646 xcb_input_list_device_properties_atoms_end (const xcb_input_list_device_properties_reply_t *R) 7647 { 7648 xcb_generic_iterator_t i; 7649 i.data = ((xcb_atom_t *) (R + 1)) + (R->num_atoms); 7650 i.rem = 0; 7651 i.index = (char *) i.data - (char *) R; 7652 return i; 7653 } 7654 7655 xcb_input_list_device_properties_reply_t * 7656 xcb_input_list_device_properties_reply (xcb_connection_t *c, 7657 xcb_input_list_device_properties_cookie_t cookie /**< */, 7658 xcb_generic_error_t **e) 7659 { 7660 return (xcb_input_list_device_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 7661 } 7662 7663 uint8_t * 7664 xcb_input_change_device_property_items_data_8 (const xcb_input_change_device_property_items_t *S) 7665 { 7666 return S->data8; 7667 } 7668 7669 int 7670 xcb_input_change_device_property_items_data_8_length (const xcb_input_change_device_property_request_t *R, 7671 const xcb_input_change_device_property_items_t *S) 7672 { 7673 return R->num_items; 7674 } 7675 7676 xcb_generic_iterator_t 7677 xcb_input_change_device_property_items_data_8_end (const xcb_input_change_device_property_request_t *R, 7678 const xcb_input_change_device_property_items_t *S) 7679 { 7680 xcb_generic_iterator_t i; 7681 i.data = S->data8 + R->num_items; 7682 i.rem = 0; 7683 i.index = (char *) i.data - (char *) S; 7684 return i; 7685 } 7686 7687 uint16_t * 7688 xcb_input_change_device_property_items_data_16 (const xcb_input_change_device_property_items_t *S) 7689 { 7690 return S->data16; 7691 } 7692 7693 int 7694 xcb_input_change_device_property_items_data_16_length (const xcb_input_change_device_property_request_t *R, 7695 const xcb_input_change_device_property_items_t *S) 7696 { 7697 return R->num_items; 7698 } 7699 7700 xcb_generic_iterator_t 7701 xcb_input_change_device_property_items_data_16_end (const xcb_input_change_device_property_request_t *R, 7702 const xcb_input_change_device_property_items_t *S) 7703 { 7704 xcb_generic_iterator_t i; 7705 i.data = S->data16 + R->num_items; 7706 i.rem = 0; 7707 i.index = (char *) i.data - (char *) S; 7708 return i; 7709 } 7710 7711 uint32_t * 7712 xcb_input_change_device_property_items_data_32 (const xcb_input_change_device_property_items_t *S) 7713 { 7714 return S->data32; 7715 } 7716 7717 int 7718 xcb_input_change_device_property_items_data_32_length (const xcb_input_change_device_property_request_t *R, 7719 const xcb_input_change_device_property_items_t *S) 7720 { 7721 return R->num_items; 7722 } 7723 7724 xcb_generic_iterator_t 7725 xcb_input_change_device_property_items_data_32_end (const xcb_input_change_device_property_request_t *R, 7726 const xcb_input_change_device_property_items_t *S) 7727 { 7728 xcb_generic_iterator_t i; 7729 i.data = S->data32 + R->num_items; 7730 i.rem = 0; 7731 i.index = (char *) i.data - (char *) S; 7732 return i; 7733 } 7734 7735 int 7736 xcb_input_change_device_property_items_serialize (void **_buffer, 7737 uint32_t num_items, 7738 uint8_t format, 7739 const xcb_input_change_device_property_items_t *_aux) 7740 { 7741 char *xcb_out = *_buffer; 7742 unsigned int xcb_buffer_len = 0; 7743 unsigned int xcb_align_to = 0; 7744 unsigned int xcb_padding_offset = 0; 7745 7746 unsigned int xcb_pad = 0; 7747 char xcb_pad0[3] = {0, 0, 0}; 7748 struct iovec xcb_parts[9]; 7749 unsigned int xcb_parts_idx = 0; 7750 unsigned int xcb_block_len = 0; 7751 unsigned int i; 7752 char *xcb_tmp; 7753 7754 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 7755 /* insert padding */ 7756 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7757 xcb_buffer_len += xcb_block_len + xcb_pad; 7758 if (0 != xcb_pad) { 7759 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7760 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7761 xcb_parts_idx++; 7762 xcb_pad = 0; 7763 } 7764 xcb_block_len = 0; 7765 xcb_padding_offset = 0; 7766 /* data8 */ 7767 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; 7768 xcb_block_len += num_items * sizeof(uint8_t); 7769 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); 7770 xcb_parts_idx++; 7771 xcb_align_to = ALIGNOF(uint8_t); 7772 xcb_align_to = 4; 7773 /* insert padding */ 7774 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7775 xcb_buffer_len += xcb_block_len + xcb_pad; 7776 if (0 != xcb_pad) { 7777 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7778 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7779 xcb_parts_idx++; 7780 xcb_pad = 0; 7781 } 7782 xcb_block_len = 0; 7783 xcb_padding_offset = 0; 7784 } 7785 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 7786 /* insert padding */ 7787 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7788 xcb_buffer_len += xcb_block_len + xcb_pad; 7789 if (0 != xcb_pad) { 7790 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7791 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7792 xcb_parts_idx++; 7793 xcb_pad = 0; 7794 } 7795 xcb_block_len = 0; 7796 xcb_padding_offset = 0; 7797 /* data16 */ 7798 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; 7799 xcb_block_len += num_items * sizeof(uint16_t); 7800 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); 7801 xcb_parts_idx++; 7802 xcb_align_to = ALIGNOF(uint16_t); 7803 xcb_align_to = 4; 7804 /* insert padding */ 7805 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7806 xcb_buffer_len += xcb_block_len + xcb_pad; 7807 if (0 != xcb_pad) { 7808 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7809 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7810 xcb_parts_idx++; 7811 xcb_pad = 0; 7812 } 7813 xcb_block_len = 0; 7814 xcb_padding_offset = 0; 7815 } 7816 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 7817 /* insert padding */ 7818 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7819 xcb_buffer_len += xcb_block_len + xcb_pad; 7820 if (0 != xcb_pad) { 7821 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7822 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7823 xcb_parts_idx++; 7824 xcb_pad = 0; 7825 } 7826 xcb_block_len = 0; 7827 xcb_padding_offset = 0; 7828 /* data32 */ 7829 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; 7830 xcb_block_len += num_items * sizeof(uint32_t); 7831 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); 7832 xcb_parts_idx++; 7833 xcb_align_to = ALIGNOF(uint32_t); 7834 } 7835 /* insert padding */ 7836 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7837 xcb_buffer_len += xcb_block_len + xcb_pad; 7838 if (0 != xcb_pad) { 7839 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 7840 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 7841 xcb_parts_idx++; 7842 xcb_pad = 0; 7843 } 7844 xcb_block_len = 0; 7845 xcb_padding_offset = 0; 7846 7847 if (NULL == xcb_out) { 7848 /* allocate memory */ 7849 xcb_out = malloc(xcb_buffer_len); 7850 *_buffer = xcb_out; 7851 } 7852 7853 xcb_tmp = xcb_out; 7854 for(i=0; i<xcb_parts_idx; i++) { 7855 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 7856 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 7857 if (0 != xcb_parts[i].iov_len) 7858 xcb_tmp += xcb_parts[i].iov_len; 7859 } 7860 7861 return xcb_buffer_len; 7862 } 7863 7864 int 7865 xcb_input_change_device_property_items_unpack (const void *_buffer, 7866 uint32_t num_items, 7867 uint8_t format, 7868 xcb_input_change_device_property_items_t *_aux) 7869 { 7870 char *xcb_tmp = (char *)_buffer; 7871 unsigned int xcb_buffer_len = 0; 7872 unsigned int xcb_block_len = 0; 7873 unsigned int xcb_pad = 0; 7874 unsigned int xcb_align_to = 0; 7875 unsigned int xcb_padding_offset = 0; 7876 7877 7878 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 7879 /* insert padding */ 7880 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7881 xcb_buffer_len += xcb_block_len + xcb_pad; 7882 if (0 != xcb_pad) { 7883 xcb_tmp += xcb_pad; 7884 xcb_pad = 0; 7885 } 7886 xcb_block_len = 0; 7887 xcb_padding_offset = 0; 7888 /* data8 */ 7889 _aux->data8 = (uint8_t *)xcb_tmp; 7890 xcb_block_len += num_items * sizeof(uint8_t); 7891 xcb_tmp += xcb_block_len; 7892 xcb_align_to = ALIGNOF(uint8_t); 7893 xcb_align_to = 4; 7894 /* insert padding */ 7895 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7896 xcb_buffer_len += xcb_block_len + xcb_pad; 7897 if (0 != xcb_pad) { 7898 xcb_tmp += xcb_pad; 7899 xcb_pad = 0; 7900 } 7901 xcb_block_len = 0; 7902 xcb_padding_offset = 0; 7903 } 7904 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 7905 /* insert padding */ 7906 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7907 xcb_buffer_len += xcb_block_len + xcb_pad; 7908 if (0 != xcb_pad) { 7909 xcb_tmp += xcb_pad; 7910 xcb_pad = 0; 7911 } 7912 xcb_block_len = 0; 7913 xcb_padding_offset = 0; 7914 /* data16 */ 7915 _aux->data16 = (uint16_t *)xcb_tmp; 7916 xcb_block_len += num_items * sizeof(uint16_t); 7917 xcb_tmp += xcb_block_len; 7918 xcb_align_to = ALIGNOF(uint16_t); 7919 xcb_align_to = 4; 7920 /* insert padding */ 7921 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7922 xcb_buffer_len += xcb_block_len + xcb_pad; 7923 if (0 != xcb_pad) { 7924 xcb_tmp += xcb_pad; 7925 xcb_pad = 0; 7926 } 7927 xcb_block_len = 0; 7928 xcb_padding_offset = 0; 7929 } 7930 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 7931 /* insert padding */ 7932 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7933 xcb_buffer_len += xcb_block_len + xcb_pad; 7934 if (0 != xcb_pad) { 7935 xcb_tmp += xcb_pad; 7936 xcb_pad = 0; 7937 } 7938 xcb_block_len = 0; 7939 xcb_padding_offset = 0; 7940 /* data32 */ 7941 _aux->data32 = (uint32_t *)xcb_tmp; 7942 xcb_block_len += num_items * sizeof(uint32_t); 7943 xcb_tmp += xcb_block_len; 7944 xcb_align_to = ALIGNOF(uint32_t); 7945 } 7946 /* insert padding */ 7947 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 7948 xcb_buffer_len += xcb_block_len + xcb_pad; 7949 if (0 != xcb_pad) { 7950 xcb_tmp += xcb_pad; 7951 xcb_pad = 0; 7952 } 7953 xcb_block_len = 0; 7954 xcb_padding_offset = 0; 7955 7956 return xcb_buffer_len; 7957 } 7958 7959 int 7960 xcb_input_change_device_property_items_sizeof (const void *_buffer, 7961 uint32_t num_items, 7962 uint8_t format) 7963 { 7964 xcb_input_change_device_property_items_t _aux; 7965 return xcb_input_change_device_property_items_unpack(_buffer, num_items, format, &_aux); 7966 } 7967 7968 int 7969 xcb_input_change_device_property_sizeof (const void *_buffer) 7970 { 7971 char *xcb_tmp = (char *)_buffer; 7972 const xcb_input_change_device_property_request_t *_aux = (xcb_input_change_device_property_request_t *)_buffer; 7973 unsigned int xcb_buffer_len = 0; 7974 unsigned int xcb_block_len = 0; 7975 unsigned int xcb_pad = 0; 7976 unsigned int xcb_align_to = 0; 7977 7978 7979 xcb_block_len += sizeof(xcb_input_change_device_property_request_t); 7980 xcb_tmp += xcb_block_len; 7981 xcb_buffer_len += xcb_block_len; 7982 xcb_block_len = 0; 7983 /* items */ 7984 xcb_block_len += xcb_input_change_device_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); 7985 xcb_tmp += xcb_block_len; 7986 xcb_align_to = ALIGNOF(char); 7987 /* insert padding */ 7988 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 7989 xcb_buffer_len += xcb_block_len + xcb_pad; 7990 if (0 != xcb_pad) { 7991 xcb_tmp += xcb_pad; 7992 xcb_pad = 0; 7993 } 7994 xcb_block_len = 0; 7995 7996 return xcb_buffer_len; 7997 } 7998 7999 xcb_void_cookie_t 8000 xcb_input_change_device_property_checked (xcb_connection_t *c, 8001 xcb_atom_t property, 8002 xcb_atom_t type, 8003 uint8_t device_id, 8004 uint8_t format, 8005 uint8_t mode, 8006 uint32_t num_items, 8007 const void *items) 8008 { 8009 static const xcb_protocol_request_t xcb_req = { 8010 .count = 3, 8011 .ext = &xcb_input_id, 8012 .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, 8013 .isvoid = 1 8014 }; 8015 8016 struct iovec xcb_parts[5]; 8017 xcb_void_cookie_t xcb_ret; 8018 xcb_input_change_device_property_request_t xcb_out; 8019 8020 xcb_out.property = property; 8021 xcb_out.type = type; 8022 xcb_out.device_id = device_id; 8023 xcb_out.format = format; 8024 xcb_out.mode = mode; 8025 xcb_out.pad0 = 0; 8026 xcb_out.num_items = num_items; 8027 8028 xcb_parts[2].iov_base = (char *) &xcb_out; 8029 xcb_parts[2].iov_len = sizeof(xcb_out); 8030 xcb_parts[3].iov_base = 0; 8031 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8032 /* xcb_input_change_device_property_items_t items */ 8033 xcb_parts[4].iov_base = (char *) items; 8034 xcb_parts[4].iov_len = 8035 xcb_input_change_device_property_items_sizeof (items, num_items, format); 8036 8037 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8038 return xcb_ret; 8039 } 8040 8041 xcb_void_cookie_t 8042 xcb_input_change_device_property (xcb_connection_t *c, 8043 xcb_atom_t property, 8044 xcb_atom_t type, 8045 uint8_t device_id, 8046 uint8_t format, 8047 uint8_t mode, 8048 uint32_t num_items, 8049 const void *items) 8050 { 8051 static const xcb_protocol_request_t xcb_req = { 8052 .count = 3, 8053 .ext = &xcb_input_id, 8054 .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, 8055 .isvoid = 1 8056 }; 8057 8058 struct iovec xcb_parts[5]; 8059 xcb_void_cookie_t xcb_ret; 8060 xcb_input_change_device_property_request_t xcb_out; 8061 8062 xcb_out.property = property; 8063 xcb_out.type = type; 8064 xcb_out.device_id = device_id; 8065 xcb_out.format = format; 8066 xcb_out.mode = mode; 8067 xcb_out.pad0 = 0; 8068 xcb_out.num_items = num_items; 8069 8070 xcb_parts[2].iov_base = (char *) &xcb_out; 8071 xcb_parts[2].iov_len = sizeof(xcb_out); 8072 xcb_parts[3].iov_base = 0; 8073 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8074 /* xcb_input_change_device_property_items_t items */ 8075 xcb_parts[4].iov_base = (char *) items; 8076 xcb_parts[4].iov_len = 8077 xcb_input_change_device_property_items_sizeof (items, num_items, format); 8078 8079 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8080 return xcb_ret; 8081 } 8082 8083 xcb_void_cookie_t 8084 xcb_input_change_device_property_aux_checked (xcb_connection_t *c, 8085 xcb_atom_t property, 8086 xcb_atom_t type, 8087 uint8_t device_id, 8088 uint8_t format, 8089 uint8_t mode, 8090 uint32_t num_items, 8091 const xcb_input_change_device_property_items_t *items) 8092 { 8093 static const xcb_protocol_request_t xcb_req = { 8094 .count = 3, 8095 .ext = &xcb_input_id, 8096 .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, 8097 .isvoid = 1 8098 }; 8099 8100 struct iovec xcb_parts[5]; 8101 xcb_void_cookie_t xcb_ret; 8102 xcb_input_change_device_property_request_t xcb_out; 8103 void *xcb_aux0 = 0; 8104 8105 xcb_out.property = property; 8106 xcb_out.type = type; 8107 xcb_out.device_id = device_id; 8108 xcb_out.format = format; 8109 xcb_out.mode = mode; 8110 xcb_out.pad0 = 0; 8111 xcb_out.num_items = num_items; 8112 8113 xcb_parts[2].iov_base = (char *) &xcb_out; 8114 xcb_parts[2].iov_len = sizeof(xcb_out); 8115 xcb_parts[3].iov_base = 0; 8116 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8117 /* xcb_input_change_device_property_items_t items */ 8118 xcb_parts[4].iov_len = 8119 xcb_input_change_device_property_items_serialize (&xcb_aux0, num_items, format, items); 8120 xcb_parts[4].iov_base = xcb_aux0; 8121 8122 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8123 free(xcb_aux0); 8124 return xcb_ret; 8125 } 8126 8127 xcb_void_cookie_t 8128 xcb_input_change_device_property_aux (xcb_connection_t *c, 8129 xcb_atom_t property, 8130 xcb_atom_t type, 8131 uint8_t device_id, 8132 uint8_t format, 8133 uint8_t mode, 8134 uint32_t num_items, 8135 const xcb_input_change_device_property_items_t *items) 8136 { 8137 static const xcb_protocol_request_t xcb_req = { 8138 .count = 3, 8139 .ext = &xcb_input_id, 8140 .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, 8141 .isvoid = 1 8142 }; 8143 8144 struct iovec xcb_parts[5]; 8145 xcb_void_cookie_t xcb_ret; 8146 xcb_input_change_device_property_request_t xcb_out; 8147 void *xcb_aux0 = 0; 8148 8149 xcb_out.property = property; 8150 xcb_out.type = type; 8151 xcb_out.device_id = device_id; 8152 xcb_out.format = format; 8153 xcb_out.mode = mode; 8154 xcb_out.pad0 = 0; 8155 xcb_out.num_items = num_items; 8156 8157 xcb_parts[2].iov_base = (char *) &xcb_out; 8158 xcb_parts[2].iov_len = sizeof(xcb_out); 8159 xcb_parts[3].iov_base = 0; 8160 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8161 /* xcb_input_change_device_property_items_t items */ 8162 xcb_parts[4].iov_len = 8163 xcb_input_change_device_property_items_serialize (&xcb_aux0, num_items, format, items); 8164 xcb_parts[4].iov_base = xcb_aux0; 8165 8166 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8167 free(xcb_aux0); 8168 return xcb_ret; 8169 } 8170 8171 void * 8172 xcb_input_change_device_property_items (const xcb_input_change_device_property_request_t *R) 8173 { 8174 return (void *) (R + 1); 8175 } 8176 8177 xcb_void_cookie_t 8178 xcb_input_delete_device_property_checked (xcb_connection_t *c, 8179 xcb_atom_t property, 8180 uint8_t device_id) 8181 { 8182 static const xcb_protocol_request_t xcb_req = { 8183 .count = 2, 8184 .ext = &xcb_input_id, 8185 .opcode = XCB_INPUT_DELETE_DEVICE_PROPERTY, 8186 .isvoid = 1 8187 }; 8188 8189 struct iovec xcb_parts[4]; 8190 xcb_void_cookie_t xcb_ret; 8191 xcb_input_delete_device_property_request_t xcb_out; 8192 8193 xcb_out.property = property; 8194 xcb_out.device_id = device_id; 8195 memset(xcb_out.pad0, 0, 3); 8196 8197 xcb_parts[2].iov_base = (char *) &xcb_out; 8198 xcb_parts[2].iov_len = sizeof(xcb_out); 8199 xcb_parts[3].iov_base = 0; 8200 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8201 8202 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8203 return xcb_ret; 8204 } 8205 8206 xcb_void_cookie_t 8207 xcb_input_delete_device_property (xcb_connection_t *c, 8208 xcb_atom_t property, 8209 uint8_t device_id) 8210 { 8211 static const xcb_protocol_request_t xcb_req = { 8212 .count = 2, 8213 .ext = &xcb_input_id, 8214 .opcode = XCB_INPUT_DELETE_DEVICE_PROPERTY, 8215 .isvoid = 1 8216 }; 8217 8218 struct iovec xcb_parts[4]; 8219 xcb_void_cookie_t xcb_ret; 8220 xcb_input_delete_device_property_request_t xcb_out; 8221 8222 xcb_out.property = property; 8223 xcb_out.device_id = device_id; 8224 memset(xcb_out.pad0, 0, 3); 8225 8226 xcb_parts[2].iov_base = (char *) &xcb_out; 8227 xcb_parts[2].iov_len = sizeof(xcb_out); 8228 xcb_parts[3].iov_base = 0; 8229 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8230 8231 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8232 return xcb_ret; 8233 } 8234 8235 uint8_t * 8236 xcb_input_get_device_property_items_data_8 (const xcb_input_get_device_property_items_t *S) 8237 { 8238 return S->data8; 8239 } 8240 8241 int 8242 xcb_input_get_device_property_items_data_8_length (const xcb_input_get_device_property_reply_t *R, 8243 const xcb_input_get_device_property_items_t *S) 8244 { 8245 return R->num_items; 8246 } 8247 8248 xcb_generic_iterator_t 8249 xcb_input_get_device_property_items_data_8_end (const xcb_input_get_device_property_reply_t *R, 8250 const xcb_input_get_device_property_items_t *S) 8251 { 8252 xcb_generic_iterator_t i; 8253 i.data = S->data8 + R->num_items; 8254 i.rem = 0; 8255 i.index = (char *) i.data - (char *) S; 8256 return i; 8257 } 8258 8259 uint16_t * 8260 xcb_input_get_device_property_items_data_16 (const xcb_input_get_device_property_items_t *S) 8261 { 8262 return S->data16; 8263 } 8264 8265 int 8266 xcb_input_get_device_property_items_data_16_length (const xcb_input_get_device_property_reply_t *R, 8267 const xcb_input_get_device_property_items_t *S) 8268 { 8269 return R->num_items; 8270 } 8271 8272 xcb_generic_iterator_t 8273 xcb_input_get_device_property_items_data_16_end (const xcb_input_get_device_property_reply_t *R, 8274 const xcb_input_get_device_property_items_t *S) 8275 { 8276 xcb_generic_iterator_t i; 8277 i.data = S->data16 + R->num_items; 8278 i.rem = 0; 8279 i.index = (char *) i.data - (char *) S; 8280 return i; 8281 } 8282 8283 uint32_t * 8284 xcb_input_get_device_property_items_data_32 (const xcb_input_get_device_property_items_t *S) 8285 { 8286 return S->data32; 8287 } 8288 8289 int 8290 xcb_input_get_device_property_items_data_32_length (const xcb_input_get_device_property_reply_t *R, 8291 const xcb_input_get_device_property_items_t *S) 8292 { 8293 return R->num_items; 8294 } 8295 8296 xcb_generic_iterator_t 8297 xcb_input_get_device_property_items_data_32_end (const xcb_input_get_device_property_reply_t *R, 8298 const xcb_input_get_device_property_items_t *S) 8299 { 8300 xcb_generic_iterator_t i; 8301 i.data = S->data32 + R->num_items; 8302 i.rem = 0; 8303 i.index = (char *) i.data - (char *) S; 8304 return i; 8305 } 8306 8307 int 8308 xcb_input_get_device_property_items_serialize (void **_buffer, 8309 uint32_t num_items, 8310 uint8_t format, 8311 const xcb_input_get_device_property_items_t *_aux) 8312 { 8313 char *xcb_out = *_buffer; 8314 unsigned int xcb_buffer_len = 0; 8315 unsigned int xcb_align_to = 0; 8316 unsigned int xcb_padding_offset = 0; 8317 8318 unsigned int xcb_pad = 0; 8319 char xcb_pad0[3] = {0, 0, 0}; 8320 struct iovec xcb_parts[9]; 8321 unsigned int xcb_parts_idx = 0; 8322 unsigned int xcb_block_len = 0; 8323 unsigned int i; 8324 char *xcb_tmp; 8325 8326 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 8327 /* insert padding */ 8328 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8329 xcb_buffer_len += xcb_block_len + xcb_pad; 8330 if (0 != xcb_pad) { 8331 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 8332 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 8333 xcb_parts_idx++; 8334 xcb_pad = 0; 8335 } 8336 xcb_block_len = 0; 8337 xcb_padding_offset = 0; 8338 /* data8 */ 8339 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; 8340 xcb_block_len += num_items * sizeof(uint8_t); 8341 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); 8342 xcb_parts_idx++; 8343 xcb_align_to = ALIGNOF(uint8_t); 8344 xcb_align_to = 4; 8345 /* insert padding */ 8346 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8347 xcb_buffer_len += xcb_block_len + xcb_pad; 8348 if (0 != xcb_pad) { 8349 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 8350 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 8351 xcb_parts_idx++; 8352 xcb_pad = 0; 8353 } 8354 xcb_block_len = 0; 8355 xcb_padding_offset = 0; 8356 } 8357 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 8358 /* insert padding */ 8359 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8360 xcb_buffer_len += xcb_block_len + xcb_pad; 8361 if (0 != xcb_pad) { 8362 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 8363 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 8364 xcb_parts_idx++; 8365 xcb_pad = 0; 8366 } 8367 xcb_block_len = 0; 8368 xcb_padding_offset = 0; 8369 /* data16 */ 8370 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; 8371 xcb_block_len += num_items * sizeof(uint16_t); 8372 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); 8373 xcb_parts_idx++; 8374 xcb_align_to = ALIGNOF(uint16_t); 8375 xcb_align_to = 4; 8376 /* insert padding */ 8377 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8378 xcb_buffer_len += xcb_block_len + xcb_pad; 8379 if (0 != xcb_pad) { 8380 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 8381 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 8382 xcb_parts_idx++; 8383 xcb_pad = 0; 8384 } 8385 xcb_block_len = 0; 8386 xcb_padding_offset = 0; 8387 } 8388 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 8389 /* insert padding */ 8390 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8391 xcb_buffer_len += xcb_block_len + xcb_pad; 8392 if (0 != xcb_pad) { 8393 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 8394 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 8395 xcb_parts_idx++; 8396 xcb_pad = 0; 8397 } 8398 xcb_block_len = 0; 8399 xcb_padding_offset = 0; 8400 /* data32 */ 8401 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; 8402 xcb_block_len += num_items * sizeof(uint32_t); 8403 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); 8404 xcb_parts_idx++; 8405 xcb_align_to = ALIGNOF(uint32_t); 8406 } 8407 /* insert padding */ 8408 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8409 xcb_buffer_len += xcb_block_len + xcb_pad; 8410 if (0 != xcb_pad) { 8411 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 8412 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 8413 xcb_parts_idx++; 8414 xcb_pad = 0; 8415 } 8416 xcb_block_len = 0; 8417 xcb_padding_offset = 0; 8418 8419 if (NULL == xcb_out) { 8420 /* allocate memory */ 8421 xcb_out = malloc(xcb_buffer_len); 8422 *_buffer = xcb_out; 8423 } 8424 8425 xcb_tmp = xcb_out; 8426 for(i=0; i<xcb_parts_idx; i++) { 8427 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 8428 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 8429 if (0 != xcb_parts[i].iov_len) 8430 xcb_tmp += xcb_parts[i].iov_len; 8431 } 8432 8433 return xcb_buffer_len; 8434 } 8435 8436 int 8437 xcb_input_get_device_property_items_unpack (const void *_buffer, 8438 uint32_t num_items, 8439 uint8_t format, 8440 xcb_input_get_device_property_items_t *_aux) 8441 { 8442 char *xcb_tmp = (char *)_buffer; 8443 unsigned int xcb_buffer_len = 0; 8444 unsigned int xcb_block_len = 0; 8445 unsigned int xcb_pad = 0; 8446 unsigned int xcb_align_to = 0; 8447 unsigned int xcb_padding_offset = 0; 8448 8449 8450 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 8451 /* insert padding */ 8452 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8453 xcb_buffer_len += xcb_block_len + xcb_pad; 8454 if (0 != xcb_pad) { 8455 xcb_tmp += xcb_pad; 8456 xcb_pad = 0; 8457 } 8458 xcb_block_len = 0; 8459 xcb_padding_offset = 0; 8460 /* data8 */ 8461 _aux->data8 = (uint8_t *)xcb_tmp; 8462 xcb_block_len += num_items * sizeof(uint8_t); 8463 xcb_tmp += xcb_block_len; 8464 xcb_align_to = ALIGNOF(uint8_t); 8465 xcb_align_to = 4; 8466 /* insert padding */ 8467 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8468 xcb_buffer_len += xcb_block_len + xcb_pad; 8469 if (0 != xcb_pad) { 8470 xcb_tmp += xcb_pad; 8471 xcb_pad = 0; 8472 } 8473 xcb_block_len = 0; 8474 xcb_padding_offset = 0; 8475 } 8476 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 8477 /* insert padding */ 8478 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8479 xcb_buffer_len += xcb_block_len + xcb_pad; 8480 if (0 != xcb_pad) { 8481 xcb_tmp += xcb_pad; 8482 xcb_pad = 0; 8483 } 8484 xcb_block_len = 0; 8485 xcb_padding_offset = 0; 8486 /* data16 */ 8487 _aux->data16 = (uint16_t *)xcb_tmp; 8488 xcb_block_len += num_items * sizeof(uint16_t); 8489 xcb_tmp += xcb_block_len; 8490 xcb_align_to = ALIGNOF(uint16_t); 8491 xcb_align_to = 4; 8492 /* insert padding */ 8493 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8494 xcb_buffer_len += xcb_block_len + xcb_pad; 8495 if (0 != xcb_pad) { 8496 xcb_tmp += xcb_pad; 8497 xcb_pad = 0; 8498 } 8499 xcb_block_len = 0; 8500 xcb_padding_offset = 0; 8501 } 8502 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 8503 /* insert padding */ 8504 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8505 xcb_buffer_len += xcb_block_len + xcb_pad; 8506 if (0 != xcb_pad) { 8507 xcb_tmp += xcb_pad; 8508 xcb_pad = 0; 8509 } 8510 xcb_block_len = 0; 8511 xcb_padding_offset = 0; 8512 /* data32 */ 8513 _aux->data32 = (uint32_t *)xcb_tmp; 8514 xcb_block_len += num_items * sizeof(uint32_t); 8515 xcb_tmp += xcb_block_len; 8516 xcb_align_to = ALIGNOF(uint32_t); 8517 } 8518 /* insert padding */ 8519 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 8520 xcb_buffer_len += xcb_block_len + xcb_pad; 8521 if (0 != xcb_pad) { 8522 xcb_tmp += xcb_pad; 8523 xcb_pad = 0; 8524 } 8525 xcb_block_len = 0; 8526 xcb_padding_offset = 0; 8527 8528 return xcb_buffer_len; 8529 } 8530 8531 int 8532 xcb_input_get_device_property_items_sizeof (const void *_buffer, 8533 uint32_t num_items, 8534 uint8_t format) 8535 { 8536 xcb_input_get_device_property_items_t _aux; 8537 return xcb_input_get_device_property_items_unpack(_buffer, num_items, format, &_aux); 8538 } 8539 8540 int 8541 xcb_input_get_device_property_sizeof (const void *_buffer) 8542 { 8543 char *xcb_tmp = (char *)_buffer; 8544 const xcb_input_get_device_property_reply_t *_aux = (xcb_input_get_device_property_reply_t *)_buffer; 8545 unsigned int xcb_buffer_len = 0; 8546 unsigned int xcb_block_len = 0; 8547 unsigned int xcb_pad = 0; 8548 unsigned int xcb_align_to = 0; 8549 8550 8551 xcb_block_len += sizeof(xcb_input_get_device_property_reply_t); 8552 xcb_tmp += xcb_block_len; 8553 xcb_buffer_len += xcb_block_len; 8554 xcb_block_len = 0; 8555 /* items */ 8556 xcb_block_len += xcb_input_get_device_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); 8557 xcb_tmp += xcb_block_len; 8558 xcb_align_to = ALIGNOF(char); 8559 /* insert padding */ 8560 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 8561 xcb_buffer_len += xcb_block_len + xcb_pad; 8562 if (0 != xcb_pad) { 8563 xcb_tmp += xcb_pad; 8564 xcb_pad = 0; 8565 } 8566 xcb_block_len = 0; 8567 8568 return xcb_buffer_len; 8569 } 8570 8571 xcb_input_get_device_property_cookie_t 8572 xcb_input_get_device_property (xcb_connection_t *c, 8573 xcb_atom_t property, 8574 xcb_atom_t type, 8575 uint32_t offset, 8576 uint32_t len, 8577 uint8_t device_id, 8578 uint8_t _delete) 8579 { 8580 static const xcb_protocol_request_t xcb_req = { 8581 .count = 2, 8582 .ext = &xcb_input_id, 8583 .opcode = XCB_INPUT_GET_DEVICE_PROPERTY, 8584 .isvoid = 0 8585 }; 8586 8587 struct iovec xcb_parts[4]; 8588 xcb_input_get_device_property_cookie_t xcb_ret; 8589 xcb_input_get_device_property_request_t xcb_out; 8590 8591 xcb_out.property = property; 8592 xcb_out.type = type; 8593 xcb_out.offset = offset; 8594 xcb_out.len = len; 8595 xcb_out.device_id = device_id; 8596 xcb_out._delete = _delete; 8597 memset(xcb_out.pad0, 0, 2); 8598 8599 xcb_parts[2].iov_base = (char *) &xcb_out; 8600 xcb_parts[2].iov_len = sizeof(xcb_out); 8601 xcb_parts[3].iov_base = 0; 8602 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8603 8604 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8605 return xcb_ret; 8606 } 8607 8608 xcb_input_get_device_property_cookie_t 8609 xcb_input_get_device_property_unchecked (xcb_connection_t *c, 8610 xcb_atom_t property, 8611 xcb_atom_t type, 8612 uint32_t offset, 8613 uint32_t len, 8614 uint8_t device_id, 8615 uint8_t _delete) 8616 { 8617 static const xcb_protocol_request_t xcb_req = { 8618 .count = 2, 8619 .ext = &xcb_input_id, 8620 .opcode = XCB_INPUT_GET_DEVICE_PROPERTY, 8621 .isvoid = 0 8622 }; 8623 8624 struct iovec xcb_parts[4]; 8625 xcb_input_get_device_property_cookie_t xcb_ret; 8626 xcb_input_get_device_property_request_t xcb_out; 8627 8628 xcb_out.property = property; 8629 xcb_out.type = type; 8630 xcb_out.offset = offset; 8631 xcb_out.len = len; 8632 xcb_out.device_id = device_id; 8633 xcb_out._delete = _delete; 8634 memset(xcb_out.pad0, 0, 2); 8635 8636 xcb_parts[2].iov_base = (char *) &xcb_out; 8637 xcb_parts[2].iov_len = sizeof(xcb_out); 8638 xcb_parts[3].iov_base = 0; 8639 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8640 8641 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8642 return xcb_ret; 8643 } 8644 8645 void * 8646 xcb_input_get_device_property_items (const xcb_input_get_device_property_reply_t *R) 8647 { 8648 return (void *) (R + 1); 8649 } 8650 8651 xcb_input_get_device_property_reply_t * 8652 xcb_input_get_device_property_reply (xcb_connection_t *c, 8653 xcb_input_get_device_property_cookie_t cookie /**< */, 8654 xcb_generic_error_t **e) 8655 { 8656 return (xcb_input_get_device_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 8657 } 8658 8659 void 8660 xcb_input_group_info_next (xcb_input_group_info_iterator_t *i) 8661 { 8662 --i->rem; 8663 ++i->data; 8664 i->index += sizeof(xcb_input_group_info_t); 8665 } 8666 8667 xcb_generic_iterator_t 8668 xcb_input_group_info_end (xcb_input_group_info_iterator_t i) 8669 { 8670 xcb_generic_iterator_t ret; 8671 ret.data = i.data + i.rem; 8672 ret.index = i.index + ((char *) ret.data - (char *) i.data); 8673 ret.rem = 0; 8674 return ret; 8675 } 8676 8677 void 8678 xcb_input_modifier_info_next (xcb_input_modifier_info_iterator_t *i) 8679 { 8680 --i->rem; 8681 ++i->data; 8682 i->index += sizeof(xcb_input_modifier_info_t); 8683 } 8684 8685 xcb_generic_iterator_t 8686 xcb_input_modifier_info_end (xcb_input_modifier_info_iterator_t i) 8687 { 8688 xcb_generic_iterator_t ret; 8689 ret.data = i.data + i.rem; 8690 ret.index = i.index + ((char *) ret.data - (char *) i.data); 8691 ret.rem = 0; 8692 return ret; 8693 } 8694 8695 int 8696 xcb_input_xi_query_pointer_sizeof (const void *_buffer) 8697 { 8698 char *xcb_tmp = (char *)_buffer; 8699 const xcb_input_xi_query_pointer_reply_t *_aux = (xcb_input_xi_query_pointer_reply_t *)_buffer; 8700 unsigned int xcb_buffer_len = 0; 8701 unsigned int xcb_block_len = 0; 8702 unsigned int xcb_pad = 0; 8703 unsigned int xcb_align_to = 0; 8704 8705 8706 xcb_block_len += sizeof(xcb_input_xi_query_pointer_reply_t); 8707 xcb_tmp += xcb_block_len; 8708 xcb_buffer_len += xcb_block_len; 8709 xcb_block_len = 0; 8710 /* buttons */ 8711 xcb_block_len += _aux->buttons_len * sizeof(uint32_t); 8712 xcb_tmp += xcb_block_len; 8713 xcb_align_to = ALIGNOF(uint32_t); 8714 /* insert padding */ 8715 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 8716 xcb_buffer_len += xcb_block_len + xcb_pad; 8717 if (0 != xcb_pad) { 8718 xcb_tmp += xcb_pad; 8719 xcb_pad = 0; 8720 } 8721 xcb_block_len = 0; 8722 8723 return xcb_buffer_len; 8724 } 8725 8726 xcb_input_xi_query_pointer_cookie_t 8727 xcb_input_xi_query_pointer (xcb_connection_t *c, 8728 xcb_window_t window, 8729 xcb_input_device_id_t deviceid) 8730 { 8731 static const xcb_protocol_request_t xcb_req = { 8732 .count = 2, 8733 .ext = &xcb_input_id, 8734 .opcode = XCB_INPUT_XI_QUERY_POINTER, 8735 .isvoid = 0 8736 }; 8737 8738 struct iovec xcb_parts[4]; 8739 xcb_input_xi_query_pointer_cookie_t xcb_ret; 8740 xcb_input_xi_query_pointer_request_t xcb_out; 8741 8742 xcb_out.window = window; 8743 xcb_out.deviceid = deviceid; 8744 memset(xcb_out.pad0, 0, 2); 8745 8746 xcb_parts[2].iov_base = (char *) &xcb_out; 8747 xcb_parts[2].iov_len = sizeof(xcb_out); 8748 xcb_parts[3].iov_base = 0; 8749 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8750 8751 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8752 return xcb_ret; 8753 } 8754 8755 xcb_input_xi_query_pointer_cookie_t 8756 xcb_input_xi_query_pointer_unchecked (xcb_connection_t *c, 8757 xcb_window_t window, 8758 xcb_input_device_id_t deviceid) 8759 { 8760 static const xcb_protocol_request_t xcb_req = { 8761 .count = 2, 8762 .ext = &xcb_input_id, 8763 .opcode = XCB_INPUT_XI_QUERY_POINTER, 8764 .isvoid = 0 8765 }; 8766 8767 struct iovec xcb_parts[4]; 8768 xcb_input_xi_query_pointer_cookie_t xcb_ret; 8769 xcb_input_xi_query_pointer_request_t xcb_out; 8770 8771 xcb_out.window = window; 8772 xcb_out.deviceid = deviceid; 8773 memset(xcb_out.pad0, 0, 2); 8774 8775 xcb_parts[2].iov_base = (char *) &xcb_out; 8776 xcb_parts[2].iov_len = sizeof(xcb_out); 8777 xcb_parts[3].iov_base = 0; 8778 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8779 8780 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8781 return xcb_ret; 8782 } 8783 8784 uint32_t * 8785 xcb_input_xi_query_pointer_buttons (const xcb_input_xi_query_pointer_reply_t *R) 8786 { 8787 return (uint32_t *) (R + 1); 8788 } 8789 8790 int 8791 xcb_input_xi_query_pointer_buttons_length (const xcb_input_xi_query_pointer_reply_t *R) 8792 { 8793 return R->buttons_len; 8794 } 8795 8796 xcb_generic_iterator_t 8797 xcb_input_xi_query_pointer_buttons_end (const xcb_input_xi_query_pointer_reply_t *R) 8798 { 8799 xcb_generic_iterator_t i; 8800 i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); 8801 i.rem = 0; 8802 i.index = (char *) i.data - (char *) R; 8803 return i; 8804 } 8805 8806 xcb_input_xi_query_pointer_reply_t * 8807 xcb_input_xi_query_pointer_reply (xcb_connection_t *c, 8808 xcb_input_xi_query_pointer_cookie_t cookie /**< */, 8809 xcb_generic_error_t **e) 8810 { 8811 return (xcb_input_xi_query_pointer_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 8812 } 8813 8814 xcb_void_cookie_t 8815 xcb_input_xi_warp_pointer_checked (xcb_connection_t *c, 8816 xcb_window_t src_win, 8817 xcb_window_t dst_win, 8818 xcb_input_fp1616_t src_x, 8819 xcb_input_fp1616_t src_y, 8820 uint16_t src_width, 8821 uint16_t src_height, 8822 xcb_input_fp1616_t dst_x, 8823 xcb_input_fp1616_t dst_y, 8824 xcb_input_device_id_t deviceid) 8825 { 8826 static const xcb_protocol_request_t xcb_req = { 8827 .count = 2, 8828 .ext = &xcb_input_id, 8829 .opcode = XCB_INPUT_XI_WARP_POINTER, 8830 .isvoid = 1 8831 }; 8832 8833 struct iovec xcb_parts[4]; 8834 xcb_void_cookie_t xcb_ret; 8835 xcb_input_xi_warp_pointer_request_t xcb_out; 8836 8837 xcb_out.src_win = src_win; 8838 xcb_out.dst_win = dst_win; 8839 xcb_out.src_x = src_x; 8840 xcb_out.src_y = src_y; 8841 xcb_out.src_width = src_width; 8842 xcb_out.src_height = src_height; 8843 xcb_out.dst_x = dst_x; 8844 xcb_out.dst_y = dst_y; 8845 xcb_out.deviceid = deviceid; 8846 memset(xcb_out.pad0, 0, 2); 8847 8848 xcb_parts[2].iov_base = (char *) &xcb_out; 8849 xcb_parts[2].iov_len = sizeof(xcb_out); 8850 xcb_parts[3].iov_base = 0; 8851 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8852 8853 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8854 return xcb_ret; 8855 } 8856 8857 xcb_void_cookie_t 8858 xcb_input_xi_warp_pointer (xcb_connection_t *c, 8859 xcb_window_t src_win, 8860 xcb_window_t dst_win, 8861 xcb_input_fp1616_t src_x, 8862 xcb_input_fp1616_t src_y, 8863 uint16_t src_width, 8864 uint16_t src_height, 8865 xcb_input_fp1616_t dst_x, 8866 xcb_input_fp1616_t dst_y, 8867 xcb_input_device_id_t deviceid) 8868 { 8869 static const xcb_protocol_request_t xcb_req = { 8870 .count = 2, 8871 .ext = &xcb_input_id, 8872 .opcode = XCB_INPUT_XI_WARP_POINTER, 8873 .isvoid = 1 8874 }; 8875 8876 struct iovec xcb_parts[4]; 8877 xcb_void_cookie_t xcb_ret; 8878 xcb_input_xi_warp_pointer_request_t xcb_out; 8879 8880 xcb_out.src_win = src_win; 8881 xcb_out.dst_win = dst_win; 8882 xcb_out.src_x = src_x; 8883 xcb_out.src_y = src_y; 8884 xcb_out.src_width = src_width; 8885 xcb_out.src_height = src_height; 8886 xcb_out.dst_x = dst_x; 8887 xcb_out.dst_y = dst_y; 8888 xcb_out.deviceid = deviceid; 8889 memset(xcb_out.pad0, 0, 2); 8890 8891 xcb_parts[2].iov_base = (char *) &xcb_out; 8892 xcb_parts[2].iov_len = sizeof(xcb_out); 8893 xcb_parts[3].iov_base = 0; 8894 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8895 8896 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8897 return xcb_ret; 8898 } 8899 8900 xcb_void_cookie_t 8901 xcb_input_xi_change_cursor_checked (xcb_connection_t *c, 8902 xcb_window_t window, 8903 xcb_cursor_t cursor, 8904 xcb_input_device_id_t deviceid) 8905 { 8906 static const xcb_protocol_request_t xcb_req = { 8907 .count = 2, 8908 .ext = &xcb_input_id, 8909 .opcode = XCB_INPUT_XI_CHANGE_CURSOR, 8910 .isvoid = 1 8911 }; 8912 8913 struct iovec xcb_parts[4]; 8914 xcb_void_cookie_t xcb_ret; 8915 xcb_input_xi_change_cursor_request_t xcb_out; 8916 8917 xcb_out.window = window; 8918 xcb_out.cursor = cursor; 8919 xcb_out.deviceid = deviceid; 8920 memset(xcb_out.pad0, 0, 2); 8921 8922 xcb_parts[2].iov_base = (char *) &xcb_out; 8923 xcb_parts[2].iov_len = sizeof(xcb_out); 8924 xcb_parts[3].iov_base = 0; 8925 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8926 8927 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 8928 return xcb_ret; 8929 } 8930 8931 xcb_void_cookie_t 8932 xcb_input_xi_change_cursor (xcb_connection_t *c, 8933 xcb_window_t window, 8934 xcb_cursor_t cursor, 8935 xcb_input_device_id_t deviceid) 8936 { 8937 static const xcb_protocol_request_t xcb_req = { 8938 .count = 2, 8939 .ext = &xcb_input_id, 8940 .opcode = XCB_INPUT_XI_CHANGE_CURSOR, 8941 .isvoid = 1 8942 }; 8943 8944 struct iovec xcb_parts[4]; 8945 xcb_void_cookie_t xcb_ret; 8946 xcb_input_xi_change_cursor_request_t xcb_out; 8947 8948 xcb_out.window = window; 8949 xcb_out.cursor = cursor; 8950 xcb_out.deviceid = deviceid; 8951 memset(xcb_out.pad0, 0, 2); 8952 8953 xcb_parts[2].iov_base = (char *) &xcb_out; 8954 xcb_parts[2].iov_len = sizeof(xcb_out); 8955 xcb_parts[3].iov_base = 0; 8956 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 8957 8958 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 8959 return xcb_ret; 8960 } 8961 8962 int 8963 xcb_input_add_master_sizeof (const void *_buffer) 8964 { 8965 char *xcb_tmp = (char *)_buffer; 8966 const xcb_input_add_master_t *_aux = (xcb_input_add_master_t *)_buffer; 8967 unsigned int xcb_buffer_len = 0; 8968 unsigned int xcb_block_len = 0; 8969 unsigned int xcb_pad = 0; 8970 unsigned int xcb_align_to = 0; 8971 8972 8973 xcb_block_len += sizeof(xcb_input_add_master_t); 8974 xcb_tmp += xcb_block_len; 8975 xcb_buffer_len += xcb_block_len; 8976 xcb_block_len = 0; 8977 /* name */ 8978 xcb_block_len += _aux->name_len * sizeof(char); 8979 xcb_tmp += xcb_block_len; 8980 xcb_align_to = ALIGNOF(char); 8981 xcb_align_to = 4; 8982 /* insert padding */ 8983 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 8984 xcb_buffer_len += xcb_block_len + xcb_pad; 8985 if (0 != xcb_pad) { 8986 xcb_tmp += xcb_pad; 8987 xcb_pad = 0; 8988 } 8989 xcb_block_len = 0; 8990 /* insert padding */ 8991 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 8992 xcb_buffer_len += xcb_block_len + xcb_pad; 8993 if (0 != xcb_pad) { 8994 xcb_tmp += xcb_pad; 8995 xcb_pad = 0; 8996 } 8997 xcb_block_len = 0; 8998 8999 return xcb_buffer_len; 9000 } 9001 9002 char * 9003 xcb_input_add_master_name (const xcb_input_add_master_t *R) 9004 { 9005 return (char *) (R + 1); 9006 } 9007 9008 int 9009 xcb_input_add_master_name_length (const xcb_input_add_master_t *R) 9010 { 9011 return R->name_len; 9012 } 9013 9014 xcb_generic_iterator_t 9015 xcb_input_add_master_name_end (const xcb_input_add_master_t *R) 9016 { 9017 xcb_generic_iterator_t i; 9018 i.data = ((char *) (R + 1)) + (R->name_len); 9019 i.rem = 0; 9020 i.index = (char *) i.data - (char *) R; 9021 return i; 9022 } 9023 9024 void 9025 xcb_input_add_master_next (xcb_input_add_master_iterator_t *i) 9026 { 9027 xcb_input_add_master_t *R = i->data; 9028 xcb_generic_iterator_t child; 9029 child.data = (xcb_input_add_master_t *)(((char *)R) + xcb_input_add_master_sizeof(R)); 9030 i->index = (char *) child.data - (char *) i->data; 9031 --i->rem; 9032 i->data = (xcb_input_add_master_t *) child.data; 9033 } 9034 9035 xcb_generic_iterator_t 9036 xcb_input_add_master_end (xcb_input_add_master_iterator_t i) 9037 { 9038 xcb_generic_iterator_t ret; 9039 while(i.rem > 0) 9040 xcb_input_add_master_next(&i); 9041 ret.data = i.data; 9042 ret.rem = i.rem; 9043 ret.index = i.index; 9044 return ret; 9045 } 9046 9047 void 9048 xcb_input_remove_master_next (xcb_input_remove_master_iterator_t *i) 9049 { 9050 --i->rem; 9051 ++i->data; 9052 i->index += sizeof(xcb_input_remove_master_t); 9053 } 9054 9055 xcb_generic_iterator_t 9056 xcb_input_remove_master_end (xcb_input_remove_master_iterator_t i) 9057 { 9058 xcb_generic_iterator_t ret; 9059 ret.data = i.data + i.rem; 9060 ret.index = i.index + ((char *) ret.data - (char *) i.data); 9061 ret.rem = 0; 9062 return ret; 9063 } 9064 9065 void 9066 xcb_input_attach_slave_next (xcb_input_attach_slave_iterator_t *i) 9067 { 9068 --i->rem; 9069 ++i->data; 9070 i->index += sizeof(xcb_input_attach_slave_t); 9071 } 9072 9073 xcb_generic_iterator_t 9074 xcb_input_attach_slave_end (xcb_input_attach_slave_iterator_t i) 9075 { 9076 xcb_generic_iterator_t ret; 9077 ret.data = i.data + i.rem; 9078 ret.index = i.index + ((char *) ret.data - (char *) i.data); 9079 ret.rem = 0; 9080 return ret; 9081 } 9082 9083 void 9084 xcb_input_detach_slave_next (xcb_input_detach_slave_iterator_t *i) 9085 { 9086 --i->rem; 9087 ++i->data; 9088 i->index += sizeof(xcb_input_detach_slave_t); 9089 } 9090 9091 xcb_generic_iterator_t 9092 xcb_input_detach_slave_end (xcb_input_detach_slave_iterator_t i) 9093 { 9094 xcb_generic_iterator_t ret; 9095 ret.data = i.data + i.rem; 9096 ret.index = i.index + ((char *) ret.data - (char *) i.data); 9097 ret.rem = 0; 9098 return ret; 9099 } 9100 9101 char * 9102 xcb_input_hierarchy_change_data_add_master_name (const xcb_input_hierarchy_change_data_t *S) 9103 { 9104 return S->add_master.name; 9105 } 9106 9107 int 9108 xcb_input_hierarchy_change_data_add_master_name_length (const xcb_input_hierarchy_change_t *R, 9109 const xcb_input_hierarchy_change_data_t *S) 9110 { 9111 return S->add_master.name_len; 9112 } 9113 9114 xcb_generic_iterator_t 9115 xcb_input_hierarchy_change_data_add_master_name_end (const xcb_input_hierarchy_change_t *R, 9116 const xcb_input_hierarchy_change_data_t *S) 9117 { 9118 xcb_generic_iterator_t i; 9119 i.data = S->add_master.name + S->add_master.name_len; 9120 i.rem = 0; 9121 i.index = (char *) i.data - (char *) S; 9122 return i; 9123 } 9124 9125 int 9126 xcb_input_hierarchy_change_data_serialize (void **_buffer, 9127 uint16_t type, 9128 const xcb_input_hierarchy_change_data_t *_aux) 9129 { 9130 char *xcb_out = *_buffer; 9131 unsigned int xcb_buffer_len = 0; 9132 unsigned int xcb_align_to = 0; 9133 unsigned int xcb_padding_offset = 0; 9134 9135 unsigned int xcb_pad = 0; 9136 char xcb_pad0[3] = {0, 0, 0}; 9137 struct iovec xcb_parts[16]; 9138 unsigned int xcb_parts_idx = 0; 9139 unsigned int xcb_block_len = 0; 9140 unsigned int i; 9141 char *xcb_tmp; 9142 9143 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER) { 9144 /* xcb_input_hierarchy_change_data_t.add_master.name_len */ 9145 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->add_master.name_len; 9146 xcb_block_len += sizeof(uint16_t); 9147 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 9148 xcb_parts_idx++; 9149 xcb_align_to = ALIGNOF(uint16_t); 9150 /* xcb_input_hierarchy_change_data_t.add_master.send_core */ 9151 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->add_master.send_core; 9152 xcb_block_len += sizeof(uint8_t); 9153 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 9154 xcb_parts_idx++; 9155 xcb_align_to = ALIGNOF(uint8_t); 9156 /* xcb_input_hierarchy_change_data_t.add_master.enable */ 9157 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->add_master.enable; 9158 xcb_block_len += sizeof(uint8_t); 9159 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 9160 xcb_parts_idx++; 9161 xcb_align_to = ALIGNOF(uint8_t); 9162 /* insert padding */ 9163 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 9164 xcb_buffer_len += xcb_block_len + xcb_pad; 9165 if (0 != xcb_pad) { 9166 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 9167 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 9168 xcb_parts_idx++; 9169 xcb_pad = 0; 9170 } 9171 xcb_block_len = 0; 9172 xcb_padding_offset = 0; 9173 /* name */ 9174 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->add_master.name; 9175 xcb_block_len += _aux->add_master.name_len * sizeof(char); 9176 xcb_parts[xcb_parts_idx].iov_len = _aux->add_master.name_len * sizeof(char); 9177 xcb_parts_idx++; 9178 xcb_align_to = ALIGNOF(char); 9179 xcb_align_to = 4; 9180 /* insert padding */ 9181 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 9182 xcb_buffer_len += xcb_block_len + xcb_pad; 9183 if (0 != xcb_pad) { 9184 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 9185 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 9186 xcb_parts_idx++; 9187 xcb_pad = 0; 9188 } 9189 xcb_block_len = 0; 9190 xcb_padding_offset = 0; 9191 } 9192 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER) { 9193 /* xcb_input_hierarchy_change_data_t.remove_master.deviceid */ 9194 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.deviceid; 9195 xcb_block_len += sizeof(xcb_input_device_id_t); 9196 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); 9197 xcb_parts_idx++; 9198 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9199 /* xcb_input_hierarchy_change_data_t.remove_master.return_mode */ 9200 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.return_mode; 9201 xcb_block_len += sizeof(uint8_t); 9202 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 9203 xcb_parts_idx++; 9204 xcb_align_to = ALIGNOF(uint8_t); 9205 /* xcb_input_hierarchy_change_data_t.remove_master.pad1 */ 9206 xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; 9207 xcb_block_len += sizeof(uint8_t); 9208 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 9209 xcb_parts_idx++; 9210 xcb_align_to = ALIGNOF(uint8_t); 9211 /* xcb_input_hierarchy_change_data_t.remove_master.return_pointer */ 9212 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.return_pointer; 9213 xcb_block_len += sizeof(xcb_input_device_id_t); 9214 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); 9215 xcb_parts_idx++; 9216 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9217 /* xcb_input_hierarchy_change_data_t.remove_master.return_keyboard */ 9218 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.return_keyboard; 9219 xcb_block_len += sizeof(xcb_input_device_id_t); 9220 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); 9221 xcb_parts_idx++; 9222 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9223 } 9224 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE) { 9225 /* xcb_input_hierarchy_change_data_t.attach_slave.deviceid */ 9226 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->attach_slave.deviceid; 9227 xcb_block_len += sizeof(xcb_input_device_id_t); 9228 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); 9229 xcb_parts_idx++; 9230 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9231 /* xcb_input_hierarchy_change_data_t.attach_slave.master */ 9232 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->attach_slave.master; 9233 xcb_block_len += sizeof(xcb_input_device_id_t); 9234 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); 9235 xcb_parts_idx++; 9236 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9237 } 9238 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE) { 9239 /* xcb_input_hierarchy_change_data_t.detach_slave.deviceid */ 9240 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->detach_slave.deviceid; 9241 xcb_block_len += sizeof(xcb_input_device_id_t); 9242 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); 9243 xcb_parts_idx++; 9244 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9245 /* xcb_input_hierarchy_change_data_t.detach_slave.pad2 */ 9246 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 9247 xcb_block_len += sizeof(uint8_t)*2; 9248 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 9249 xcb_parts_idx++; 9250 xcb_align_to = ALIGNOF(uint8_t); 9251 } 9252 /* insert padding */ 9253 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 9254 xcb_buffer_len += xcb_block_len + xcb_pad; 9255 if (0 != xcb_pad) { 9256 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 9257 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 9258 xcb_parts_idx++; 9259 xcb_pad = 0; 9260 } 9261 xcb_block_len = 0; 9262 xcb_padding_offset = 0; 9263 9264 if (NULL == xcb_out) { 9265 /* allocate memory */ 9266 xcb_out = malloc(xcb_buffer_len); 9267 *_buffer = xcb_out; 9268 } 9269 9270 xcb_tmp = xcb_out; 9271 for(i=0; i<xcb_parts_idx; i++) { 9272 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 9273 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 9274 if (0 != xcb_parts[i].iov_len) 9275 xcb_tmp += xcb_parts[i].iov_len; 9276 } 9277 9278 return xcb_buffer_len; 9279 } 9280 9281 int 9282 xcb_input_hierarchy_change_data_unpack (const void *_buffer, 9283 uint16_t type, 9284 xcb_input_hierarchy_change_data_t *_aux) 9285 { 9286 char *xcb_tmp = (char *)_buffer; 9287 unsigned int xcb_buffer_len = 0; 9288 unsigned int xcb_block_len = 0; 9289 unsigned int xcb_pad = 0; 9290 unsigned int xcb_align_to = 0; 9291 unsigned int xcb_padding_offset = 0; 9292 9293 9294 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER) { 9295 /* xcb_input_hierarchy_change_data_t.add_master.name_len */ 9296 _aux->add_master.name_len = *(uint16_t *)xcb_tmp; 9297 xcb_block_len += sizeof(uint16_t); 9298 xcb_tmp += sizeof(uint16_t); 9299 xcb_align_to = ALIGNOF(uint16_t); 9300 /* xcb_input_hierarchy_change_data_t.add_master.send_core */ 9301 _aux->add_master.send_core = *(uint8_t *)xcb_tmp; 9302 xcb_block_len += sizeof(uint8_t); 9303 xcb_tmp += sizeof(uint8_t); 9304 xcb_align_to = ALIGNOF(uint8_t); 9305 /* xcb_input_hierarchy_change_data_t.add_master.enable */ 9306 _aux->add_master.enable = *(uint8_t *)xcb_tmp; 9307 xcb_block_len += sizeof(uint8_t); 9308 xcb_tmp += sizeof(uint8_t); 9309 xcb_align_to = ALIGNOF(uint8_t); 9310 /* insert padding */ 9311 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 9312 xcb_buffer_len += xcb_block_len + xcb_pad; 9313 if (0 != xcb_pad) { 9314 xcb_tmp += xcb_pad; 9315 xcb_pad = 0; 9316 } 9317 xcb_block_len = 0; 9318 xcb_padding_offset = 0; 9319 /* name */ 9320 _aux->add_master.name = (char *)xcb_tmp; 9321 xcb_block_len += _aux->add_master.name_len * sizeof(char); 9322 xcb_tmp += xcb_block_len; 9323 xcb_align_to = ALIGNOF(char); 9324 xcb_align_to = 4; 9325 /* insert padding */ 9326 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 9327 xcb_buffer_len += xcb_block_len + xcb_pad; 9328 if (0 != xcb_pad) { 9329 xcb_tmp += xcb_pad; 9330 xcb_pad = 0; 9331 } 9332 xcb_block_len = 0; 9333 xcb_padding_offset = 0; 9334 } 9335 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER) { 9336 /* xcb_input_hierarchy_change_data_t.remove_master.deviceid */ 9337 _aux->remove_master.deviceid = *(xcb_input_device_id_t *)xcb_tmp; 9338 xcb_block_len += sizeof(xcb_input_device_id_t); 9339 xcb_tmp += sizeof(xcb_input_device_id_t); 9340 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9341 /* xcb_input_hierarchy_change_data_t.remove_master.return_mode */ 9342 _aux->remove_master.return_mode = *(uint8_t *)xcb_tmp; 9343 xcb_block_len += sizeof(uint8_t); 9344 xcb_tmp += sizeof(uint8_t); 9345 xcb_align_to = ALIGNOF(uint8_t); 9346 /* xcb_input_hierarchy_change_data_t.remove_master.pad1 */ 9347 _aux->remove_master.pad1 = *(uint8_t *)xcb_tmp; 9348 xcb_block_len += sizeof(uint8_t); 9349 xcb_tmp += sizeof(uint8_t); 9350 xcb_align_to = ALIGNOF(uint8_t); 9351 /* xcb_input_hierarchy_change_data_t.remove_master.return_pointer */ 9352 _aux->remove_master.return_pointer = *(xcb_input_device_id_t *)xcb_tmp; 9353 xcb_block_len += sizeof(xcb_input_device_id_t); 9354 xcb_tmp += sizeof(xcb_input_device_id_t); 9355 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9356 /* xcb_input_hierarchy_change_data_t.remove_master.return_keyboard */ 9357 _aux->remove_master.return_keyboard = *(xcb_input_device_id_t *)xcb_tmp; 9358 xcb_block_len += sizeof(xcb_input_device_id_t); 9359 xcb_tmp += sizeof(xcb_input_device_id_t); 9360 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9361 } 9362 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE) { 9363 /* xcb_input_hierarchy_change_data_t.attach_slave.deviceid */ 9364 _aux->attach_slave.deviceid = *(xcb_input_device_id_t *)xcb_tmp; 9365 xcb_block_len += sizeof(xcb_input_device_id_t); 9366 xcb_tmp += sizeof(xcb_input_device_id_t); 9367 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9368 /* xcb_input_hierarchy_change_data_t.attach_slave.master */ 9369 _aux->attach_slave.master = *(xcb_input_device_id_t *)xcb_tmp; 9370 xcb_block_len += sizeof(xcb_input_device_id_t); 9371 xcb_tmp += sizeof(xcb_input_device_id_t); 9372 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9373 } 9374 if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE) { 9375 /* xcb_input_hierarchy_change_data_t.detach_slave.deviceid */ 9376 _aux->detach_slave.deviceid = *(xcb_input_device_id_t *)xcb_tmp; 9377 xcb_block_len += sizeof(xcb_input_device_id_t); 9378 xcb_tmp += sizeof(xcb_input_device_id_t); 9379 xcb_align_to = ALIGNOF(xcb_input_device_id_t); 9380 /* xcb_input_hierarchy_change_data_t.detach_slave.pad2 */ 9381 _aux->detach_slave.pad2[0] = *(uint8_t *)xcb_tmp; 9382 _aux->detach_slave.pad2[1] = *(uint8_t *)xcb_tmp; 9383 xcb_block_len += sizeof(uint8_t) * 2; 9384 xcb_tmp += sizeof(uint8_t) * 2; 9385 xcb_align_to = ALIGNOF(uint8_t); 9386 } 9387 /* insert padding */ 9388 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 9389 xcb_buffer_len += xcb_block_len + xcb_pad; 9390 if (0 != xcb_pad) { 9391 xcb_tmp += xcb_pad; 9392 xcb_pad = 0; 9393 } 9394 xcb_block_len = 0; 9395 xcb_padding_offset = 0; 9396 9397 return xcb_buffer_len; 9398 } 9399 9400 int 9401 xcb_input_hierarchy_change_data_sizeof (const void *_buffer, 9402 uint16_t type) 9403 { 9404 xcb_input_hierarchy_change_data_t _aux; 9405 return xcb_input_hierarchy_change_data_unpack(_buffer, type, &_aux); 9406 } 9407 9408 int 9409 xcb_input_hierarchy_change_sizeof (const void *_buffer) 9410 { 9411 char *xcb_tmp = (char *)_buffer; 9412 const xcb_input_hierarchy_change_t *_aux = (xcb_input_hierarchy_change_t *)_buffer; 9413 unsigned int xcb_buffer_len = 0; 9414 unsigned int xcb_block_len = 0; 9415 unsigned int xcb_pad = 0; 9416 unsigned int xcb_align_to = 0; 9417 9418 9419 xcb_block_len += sizeof(xcb_input_hierarchy_change_t); 9420 xcb_tmp += xcb_block_len; 9421 xcb_buffer_len += xcb_block_len; 9422 xcb_block_len = 0; 9423 /* data */ 9424 xcb_block_len += xcb_input_hierarchy_change_data_sizeof(xcb_tmp, _aux->type); 9425 xcb_tmp += xcb_block_len; 9426 xcb_align_to = ALIGNOF(char); 9427 /* insert padding */ 9428 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 9429 xcb_buffer_len += xcb_block_len + xcb_pad; 9430 if (0 != xcb_pad) { 9431 xcb_tmp += xcb_pad; 9432 xcb_pad = 0; 9433 } 9434 xcb_block_len = 0; 9435 9436 return xcb_buffer_len; 9437 } 9438 9439 void * 9440 xcb_input_hierarchy_change_data (const xcb_input_hierarchy_change_t *R) 9441 { 9442 return (void *) (R + 1); 9443 } 9444 9445 void 9446 xcb_input_hierarchy_change_next (xcb_input_hierarchy_change_iterator_t *i) 9447 { 9448 xcb_input_hierarchy_change_t *R = i->data; 9449 xcb_generic_iterator_t child; 9450 child.data = (xcb_input_hierarchy_change_t *)(((char *)R) + xcb_input_hierarchy_change_sizeof(R)); 9451 i->index = (char *) child.data - (char *) i->data; 9452 --i->rem; 9453 i->data = (xcb_input_hierarchy_change_t *) child.data; 9454 } 9455 9456 xcb_generic_iterator_t 9457 xcb_input_hierarchy_change_end (xcb_input_hierarchy_change_iterator_t i) 9458 { 9459 xcb_generic_iterator_t ret; 9460 while(i.rem > 0) 9461 xcb_input_hierarchy_change_next(&i); 9462 ret.data = i.data; 9463 ret.rem = i.rem; 9464 ret.index = i.index; 9465 return ret; 9466 } 9467 9468 int 9469 xcb_input_xi_change_hierarchy_sizeof (const void *_buffer) 9470 { 9471 char *xcb_tmp = (char *)_buffer; 9472 const xcb_input_xi_change_hierarchy_request_t *_aux = (xcb_input_xi_change_hierarchy_request_t *)_buffer; 9473 unsigned int xcb_buffer_len = 0; 9474 unsigned int xcb_block_len = 0; 9475 unsigned int xcb_pad = 0; 9476 unsigned int xcb_align_to = 0; 9477 9478 unsigned int i; 9479 unsigned int xcb_tmp_len; 9480 9481 xcb_block_len += sizeof(xcb_input_xi_change_hierarchy_request_t); 9482 xcb_tmp += xcb_block_len; 9483 xcb_buffer_len += xcb_block_len; 9484 xcb_block_len = 0; 9485 /* changes */ 9486 for(i=0; i<_aux->num_changes; i++) { 9487 xcb_tmp_len = xcb_input_hierarchy_change_sizeof(xcb_tmp); 9488 xcb_block_len += xcb_tmp_len; 9489 xcb_tmp += xcb_tmp_len; 9490 } 9491 xcb_align_to = ALIGNOF(xcb_input_hierarchy_change_t); 9492 /* insert padding */ 9493 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 9494 xcb_buffer_len += xcb_block_len + xcb_pad; 9495 if (0 != xcb_pad) { 9496 xcb_tmp += xcb_pad; 9497 xcb_pad = 0; 9498 } 9499 xcb_block_len = 0; 9500 9501 return xcb_buffer_len; 9502 } 9503 9504 xcb_void_cookie_t 9505 xcb_input_xi_change_hierarchy_checked (xcb_connection_t *c, 9506 uint8_t num_changes, 9507 const xcb_input_hierarchy_change_t *changes) 9508 { 9509 static const xcb_protocol_request_t xcb_req = { 9510 .count = 4, 9511 .ext = &xcb_input_id, 9512 .opcode = XCB_INPUT_XI_CHANGE_HIERARCHY, 9513 .isvoid = 1 9514 }; 9515 9516 struct iovec xcb_parts[6]; 9517 xcb_void_cookie_t xcb_ret; 9518 xcb_input_xi_change_hierarchy_request_t xcb_out; 9519 unsigned int i; 9520 unsigned int xcb_tmp_len; 9521 char *xcb_tmp; 9522 9523 xcb_out.num_changes = num_changes; 9524 memset(xcb_out.pad0, 0, 3); 9525 9526 xcb_parts[2].iov_base = (char *) &xcb_out; 9527 xcb_parts[2].iov_len = sizeof(xcb_out); 9528 xcb_parts[3].iov_base = 0; 9529 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9530 /* xcb_input_hierarchy_change_t changes */ 9531 xcb_parts[4].iov_base = (char *) changes; 9532 xcb_parts[4].iov_len = 0; 9533 xcb_tmp = (char *)changes; 9534 for(i=0; i<num_changes; i++) { 9535 xcb_tmp_len = xcb_input_hierarchy_change_sizeof(xcb_tmp); 9536 xcb_parts[4].iov_len += xcb_tmp_len; 9537 xcb_tmp += xcb_tmp_len; 9538 } 9539 xcb_parts[5].iov_base = 0; 9540 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 9541 9542 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 9543 return xcb_ret; 9544 } 9545 9546 xcb_void_cookie_t 9547 xcb_input_xi_change_hierarchy (xcb_connection_t *c, 9548 uint8_t num_changes, 9549 const xcb_input_hierarchy_change_t *changes) 9550 { 9551 static const xcb_protocol_request_t xcb_req = { 9552 .count = 4, 9553 .ext = &xcb_input_id, 9554 .opcode = XCB_INPUT_XI_CHANGE_HIERARCHY, 9555 .isvoid = 1 9556 }; 9557 9558 struct iovec xcb_parts[6]; 9559 xcb_void_cookie_t xcb_ret; 9560 xcb_input_xi_change_hierarchy_request_t xcb_out; 9561 unsigned int i; 9562 unsigned int xcb_tmp_len; 9563 char *xcb_tmp; 9564 9565 xcb_out.num_changes = num_changes; 9566 memset(xcb_out.pad0, 0, 3); 9567 9568 xcb_parts[2].iov_base = (char *) &xcb_out; 9569 xcb_parts[2].iov_len = sizeof(xcb_out); 9570 xcb_parts[3].iov_base = 0; 9571 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9572 /* xcb_input_hierarchy_change_t changes */ 9573 xcb_parts[4].iov_base = (char *) changes; 9574 xcb_parts[4].iov_len = 0; 9575 xcb_tmp = (char *)changes; 9576 for(i=0; i<num_changes; i++) { 9577 xcb_tmp_len = xcb_input_hierarchy_change_sizeof(xcb_tmp); 9578 xcb_parts[4].iov_len += xcb_tmp_len; 9579 xcb_tmp += xcb_tmp_len; 9580 } 9581 xcb_parts[5].iov_base = 0; 9582 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 9583 9584 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 9585 return xcb_ret; 9586 } 9587 9588 int 9589 xcb_input_xi_change_hierarchy_changes_length (const xcb_input_xi_change_hierarchy_request_t *R) 9590 { 9591 return R->num_changes; 9592 } 9593 9594 xcb_input_hierarchy_change_iterator_t 9595 xcb_input_xi_change_hierarchy_changes_iterator (const xcb_input_xi_change_hierarchy_request_t *R) 9596 { 9597 xcb_input_hierarchy_change_iterator_t i; 9598 i.data = (xcb_input_hierarchy_change_t *) (R + 1); 9599 i.rem = R->num_changes; 9600 i.index = (char *) i.data - (char *) R; 9601 return i; 9602 } 9603 9604 xcb_void_cookie_t 9605 xcb_input_xi_set_client_pointer_checked (xcb_connection_t *c, 9606 xcb_window_t window, 9607 xcb_input_device_id_t deviceid) 9608 { 9609 static const xcb_protocol_request_t xcb_req = { 9610 .count = 2, 9611 .ext = &xcb_input_id, 9612 .opcode = XCB_INPUT_XI_SET_CLIENT_POINTER, 9613 .isvoid = 1 9614 }; 9615 9616 struct iovec xcb_parts[4]; 9617 xcb_void_cookie_t xcb_ret; 9618 xcb_input_xi_set_client_pointer_request_t xcb_out; 9619 9620 xcb_out.window = window; 9621 xcb_out.deviceid = deviceid; 9622 memset(xcb_out.pad0, 0, 2); 9623 9624 xcb_parts[2].iov_base = (char *) &xcb_out; 9625 xcb_parts[2].iov_len = sizeof(xcb_out); 9626 xcb_parts[3].iov_base = 0; 9627 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9628 9629 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 9630 return xcb_ret; 9631 } 9632 9633 xcb_void_cookie_t 9634 xcb_input_xi_set_client_pointer (xcb_connection_t *c, 9635 xcb_window_t window, 9636 xcb_input_device_id_t deviceid) 9637 { 9638 static const xcb_protocol_request_t xcb_req = { 9639 .count = 2, 9640 .ext = &xcb_input_id, 9641 .opcode = XCB_INPUT_XI_SET_CLIENT_POINTER, 9642 .isvoid = 1 9643 }; 9644 9645 struct iovec xcb_parts[4]; 9646 xcb_void_cookie_t xcb_ret; 9647 xcb_input_xi_set_client_pointer_request_t xcb_out; 9648 9649 xcb_out.window = window; 9650 xcb_out.deviceid = deviceid; 9651 memset(xcb_out.pad0, 0, 2); 9652 9653 xcb_parts[2].iov_base = (char *) &xcb_out; 9654 xcb_parts[2].iov_len = sizeof(xcb_out); 9655 xcb_parts[3].iov_base = 0; 9656 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9657 9658 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 9659 return xcb_ret; 9660 } 9661 9662 xcb_input_xi_get_client_pointer_cookie_t 9663 xcb_input_xi_get_client_pointer (xcb_connection_t *c, 9664 xcb_window_t window) 9665 { 9666 static const xcb_protocol_request_t xcb_req = { 9667 .count = 2, 9668 .ext = &xcb_input_id, 9669 .opcode = XCB_INPUT_XI_GET_CLIENT_POINTER, 9670 .isvoid = 0 9671 }; 9672 9673 struct iovec xcb_parts[4]; 9674 xcb_input_xi_get_client_pointer_cookie_t xcb_ret; 9675 xcb_input_xi_get_client_pointer_request_t xcb_out; 9676 9677 xcb_out.window = window; 9678 9679 xcb_parts[2].iov_base = (char *) &xcb_out; 9680 xcb_parts[2].iov_len = sizeof(xcb_out); 9681 xcb_parts[3].iov_base = 0; 9682 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9683 9684 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 9685 return xcb_ret; 9686 } 9687 9688 xcb_input_xi_get_client_pointer_cookie_t 9689 xcb_input_xi_get_client_pointer_unchecked (xcb_connection_t *c, 9690 xcb_window_t window) 9691 { 9692 static const xcb_protocol_request_t xcb_req = { 9693 .count = 2, 9694 .ext = &xcb_input_id, 9695 .opcode = XCB_INPUT_XI_GET_CLIENT_POINTER, 9696 .isvoid = 0 9697 }; 9698 9699 struct iovec xcb_parts[4]; 9700 xcb_input_xi_get_client_pointer_cookie_t xcb_ret; 9701 xcb_input_xi_get_client_pointer_request_t xcb_out; 9702 9703 xcb_out.window = window; 9704 9705 xcb_parts[2].iov_base = (char *) &xcb_out; 9706 xcb_parts[2].iov_len = sizeof(xcb_out); 9707 xcb_parts[3].iov_base = 0; 9708 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9709 9710 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 9711 return xcb_ret; 9712 } 9713 9714 xcb_input_xi_get_client_pointer_reply_t * 9715 xcb_input_xi_get_client_pointer_reply (xcb_connection_t *c, 9716 xcb_input_xi_get_client_pointer_cookie_t cookie /**< */, 9717 xcb_generic_error_t **e) 9718 { 9719 return (xcb_input_xi_get_client_pointer_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 9720 } 9721 9722 int 9723 xcb_input_event_mask_sizeof (const void *_buffer) 9724 { 9725 char *xcb_tmp = (char *)_buffer; 9726 const xcb_input_event_mask_t *_aux = (xcb_input_event_mask_t *)_buffer; 9727 unsigned int xcb_buffer_len = 0; 9728 unsigned int xcb_block_len = 0; 9729 unsigned int xcb_pad = 0; 9730 unsigned int xcb_align_to = 0; 9731 9732 9733 xcb_block_len += sizeof(xcb_input_event_mask_t); 9734 xcb_tmp += xcb_block_len; 9735 xcb_buffer_len += xcb_block_len; 9736 xcb_block_len = 0; 9737 /* mask */ 9738 xcb_block_len += _aux->mask_len * sizeof(uint32_t); 9739 xcb_tmp += xcb_block_len; 9740 xcb_align_to = ALIGNOF(uint32_t); 9741 /* insert padding */ 9742 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 9743 xcb_buffer_len += xcb_block_len + xcb_pad; 9744 if (0 != xcb_pad) { 9745 xcb_tmp += xcb_pad; 9746 xcb_pad = 0; 9747 } 9748 xcb_block_len = 0; 9749 9750 return xcb_buffer_len; 9751 } 9752 9753 uint32_t * 9754 xcb_input_event_mask_mask (const xcb_input_event_mask_t *R) 9755 { 9756 return (uint32_t *) (R + 1); 9757 } 9758 9759 int 9760 xcb_input_event_mask_mask_length (const xcb_input_event_mask_t *R) 9761 { 9762 return R->mask_len; 9763 } 9764 9765 xcb_generic_iterator_t 9766 xcb_input_event_mask_mask_end (const xcb_input_event_mask_t *R) 9767 { 9768 xcb_generic_iterator_t i; 9769 i.data = ((uint32_t *) (R + 1)) + (R->mask_len); 9770 i.rem = 0; 9771 i.index = (char *) i.data - (char *) R; 9772 return i; 9773 } 9774 9775 void 9776 xcb_input_event_mask_next (xcb_input_event_mask_iterator_t *i) 9777 { 9778 xcb_input_event_mask_t *R = i->data; 9779 xcb_generic_iterator_t child; 9780 child.data = (xcb_input_event_mask_t *)(((char *)R) + xcb_input_event_mask_sizeof(R)); 9781 i->index = (char *) child.data - (char *) i->data; 9782 --i->rem; 9783 i->data = (xcb_input_event_mask_t *) child.data; 9784 } 9785 9786 xcb_generic_iterator_t 9787 xcb_input_event_mask_end (xcb_input_event_mask_iterator_t i) 9788 { 9789 xcb_generic_iterator_t ret; 9790 while(i.rem > 0) 9791 xcb_input_event_mask_next(&i); 9792 ret.data = i.data; 9793 ret.rem = i.rem; 9794 ret.index = i.index; 9795 return ret; 9796 } 9797 9798 int 9799 xcb_input_xi_select_events_sizeof (const void *_buffer) 9800 { 9801 char *xcb_tmp = (char *)_buffer; 9802 const xcb_input_xi_select_events_request_t *_aux = (xcb_input_xi_select_events_request_t *)_buffer; 9803 unsigned int xcb_buffer_len = 0; 9804 unsigned int xcb_block_len = 0; 9805 unsigned int xcb_pad = 0; 9806 unsigned int xcb_align_to = 0; 9807 9808 unsigned int i; 9809 unsigned int xcb_tmp_len; 9810 9811 xcb_block_len += sizeof(xcb_input_xi_select_events_request_t); 9812 xcb_tmp += xcb_block_len; 9813 xcb_buffer_len += xcb_block_len; 9814 xcb_block_len = 0; 9815 /* masks */ 9816 for(i=0; i<_aux->num_mask; i++) { 9817 xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); 9818 xcb_block_len += xcb_tmp_len; 9819 xcb_tmp += xcb_tmp_len; 9820 } 9821 xcb_align_to = ALIGNOF(xcb_input_event_mask_t); 9822 /* insert padding */ 9823 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 9824 xcb_buffer_len += xcb_block_len + xcb_pad; 9825 if (0 != xcb_pad) { 9826 xcb_tmp += xcb_pad; 9827 xcb_pad = 0; 9828 } 9829 xcb_block_len = 0; 9830 9831 return xcb_buffer_len; 9832 } 9833 9834 xcb_void_cookie_t 9835 xcb_input_xi_select_events_checked (xcb_connection_t *c, 9836 xcb_window_t window, 9837 uint16_t num_mask, 9838 const xcb_input_event_mask_t *masks) 9839 { 9840 static const xcb_protocol_request_t xcb_req = { 9841 .count = 4, 9842 .ext = &xcb_input_id, 9843 .opcode = XCB_INPUT_XI_SELECT_EVENTS, 9844 .isvoid = 1 9845 }; 9846 9847 struct iovec xcb_parts[6]; 9848 xcb_void_cookie_t xcb_ret; 9849 xcb_input_xi_select_events_request_t xcb_out; 9850 unsigned int i; 9851 unsigned int xcb_tmp_len; 9852 char *xcb_tmp; 9853 9854 xcb_out.window = window; 9855 xcb_out.num_mask = num_mask; 9856 memset(xcb_out.pad0, 0, 2); 9857 9858 xcb_parts[2].iov_base = (char *) &xcb_out; 9859 xcb_parts[2].iov_len = sizeof(xcb_out); 9860 xcb_parts[3].iov_base = 0; 9861 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9862 /* xcb_input_event_mask_t masks */ 9863 xcb_parts[4].iov_base = (char *) masks; 9864 xcb_parts[4].iov_len = 0; 9865 xcb_tmp = (char *)masks; 9866 for(i=0; i<num_mask; i++) { 9867 xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); 9868 xcb_parts[4].iov_len += xcb_tmp_len; 9869 xcb_tmp += xcb_tmp_len; 9870 } 9871 xcb_parts[5].iov_base = 0; 9872 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 9873 9874 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 9875 return xcb_ret; 9876 } 9877 9878 xcb_void_cookie_t 9879 xcb_input_xi_select_events (xcb_connection_t *c, 9880 xcb_window_t window, 9881 uint16_t num_mask, 9882 const xcb_input_event_mask_t *masks) 9883 { 9884 static const xcb_protocol_request_t xcb_req = { 9885 .count = 4, 9886 .ext = &xcb_input_id, 9887 .opcode = XCB_INPUT_XI_SELECT_EVENTS, 9888 .isvoid = 1 9889 }; 9890 9891 struct iovec xcb_parts[6]; 9892 xcb_void_cookie_t xcb_ret; 9893 xcb_input_xi_select_events_request_t xcb_out; 9894 unsigned int i; 9895 unsigned int xcb_tmp_len; 9896 char *xcb_tmp; 9897 9898 xcb_out.window = window; 9899 xcb_out.num_mask = num_mask; 9900 memset(xcb_out.pad0, 0, 2); 9901 9902 xcb_parts[2].iov_base = (char *) &xcb_out; 9903 xcb_parts[2].iov_len = sizeof(xcb_out); 9904 xcb_parts[3].iov_base = 0; 9905 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9906 /* xcb_input_event_mask_t masks */ 9907 xcb_parts[4].iov_base = (char *) masks; 9908 xcb_parts[4].iov_len = 0; 9909 xcb_tmp = (char *)masks; 9910 for(i=0; i<num_mask; i++) { 9911 xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); 9912 xcb_parts[4].iov_len += xcb_tmp_len; 9913 xcb_tmp += xcb_tmp_len; 9914 } 9915 xcb_parts[5].iov_base = 0; 9916 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 9917 9918 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 9919 return xcb_ret; 9920 } 9921 9922 int 9923 xcb_input_xi_select_events_masks_length (const xcb_input_xi_select_events_request_t *R) 9924 { 9925 return R->num_mask; 9926 } 9927 9928 xcb_input_event_mask_iterator_t 9929 xcb_input_xi_select_events_masks_iterator (const xcb_input_xi_select_events_request_t *R) 9930 { 9931 xcb_input_event_mask_iterator_t i; 9932 i.data = (xcb_input_event_mask_t *) (R + 1); 9933 i.rem = R->num_mask; 9934 i.index = (char *) i.data - (char *) R; 9935 return i; 9936 } 9937 9938 xcb_input_xi_query_version_cookie_t 9939 xcb_input_xi_query_version (xcb_connection_t *c, 9940 uint16_t major_version, 9941 uint16_t minor_version) 9942 { 9943 static const xcb_protocol_request_t xcb_req = { 9944 .count = 2, 9945 .ext = &xcb_input_id, 9946 .opcode = XCB_INPUT_XI_QUERY_VERSION, 9947 .isvoid = 0 9948 }; 9949 9950 struct iovec xcb_parts[4]; 9951 xcb_input_xi_query_version_cookie_t xcb_ret; 9952 xcb_input_xi_query_version_request_t xcb_out; 9953 9954 xcb_out.major_version = major_version; 9955 xcb_out.minor_version = minor_version; 9956 9957 xcb_parts[2].iov_base = (char *) &xcb_out; 9958 xcb_parts[2].iov_len = sizeof(xcb_out); 9959 xcb_parts[3].iov_base = 0; 9960 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9961 9962 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 9963 return xcb_ret; 9964 } 9965 9966 xcb_input_xi_query_version_cookie_t 9967 xcb_input_xi_query_version_unchecked (xcb_connection_t *c, 9968 uint16_t major_version, 9969 uint16_t minor_version) 9970 { 9971 static const xcb_protocol_request_t xcb_req = { 9972 .count = 2, 9973 .ext = &xcb_input_id, 9974 .opcode = XCB_INPUT_XI_QUERY_VERSION, 9975 .isvoid = 0 9976 }; 9977 9978 struct iovec xcb_parts[4]; 9979 xcb_input_xi_query_version_cookie_t xcb_ret; 9980 xcb_input_xi_query_version_request_t xcb_out; 9981 9982 xcb_out.major_version = major_version; 9983 xcb_out.minor_version = minor_version; 9984 9985 xcb_parts[2].iov_base = (char *) &xcb_out; 9986 xcb_parts[2].iov_len = sizeof(xcb_out); 9987 xcb_parts[3].iov_base = 0; 9988 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 9989 9990 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 9991 return xcb_ret; 9992 } 9993 9994 xcb_input_xi_query_version_reply_t * 9995 xcb_input_xi_query_version_reply (xcb_connection_t *c, 9996 xcb_input_xi_query_version_cookie_t cookie /**< */, 9997 xcb_generic_error_t **e) 9998 { 9999 return (xcb_input_xi_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 10000 } 10001 10002 int 10003 xcb_input_button_class_sizeof (const void *_buffer) 10004 { 10005 char *xcb_tmp = (char *)_buffer; 10006 const xcb_input_button_class_t *_aux = (xcb_input_button_class_t *)_buffer; 10007 unsigned int xcb_buffer_len = 0; 10008 unsigned int xcb_block_len = 0; 10009 unsigned int xcb_pad = 0; 10010 unsigned int xcb_align_to = 0; 10011 10012 10013 xcb_block_len += sizeof(xcb_input_button_class_t); 10014 xcb_tmp += xcb_block_len; 10015 xcb_buffer_len += xcb_block_len; 10016 xcb_block_len = 0; 10017 /* state */ 10018 xcb_block_len += ((_aux->num_buttons + 31) / 32) * sizeof(xcb_atom_t); 10019 xcb_tmp += xcb_block_len; 10020 xcb_align_to = ALIGNOF(uint32_t); 10021 /* insert padding */ 10022 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10023 xcb_buffer_len += xcb_block_len + xcb_pad; 10024 if (0 != xcb_pad) { 10025 xcb_tmp += xcb_pad; 10026 xcb_pad = 0; 10027 } 10028 xcb_block_len = 0; 10029 /* labels */ 10030 xcb_block_len += _aux->num_buttons * sizeof(xcb_atom_t); 10031 xcb_tmp += xcb_block_len; 10032 xcb_align_to = ALIGNOF(xcb_atom_t); 10033 /* insert padding */ 10034 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10035 xcb_buffer_len += xcb_block_len + xcb_pad; 10036 if (0 != xcb_pad) { 10037 xcb_tmp += xcb_pad; 10038 xcb_pad = 0; 10039 } 10040 xcb_block_len = 0; 10041 10042 return xcb_buffer_len; 10043 } 10044 10045 uint32_t * 10046 xcb_input_button_class_state (const xcb_input_button_class_t *R) 10047 { 10048 return (uint32_t *) (R + 1); 10049 } 10050 10051 int 10052 xcb_input_button_class_state_length (const xcb_input_button_class_t *R) 10053 { 10054 return ((R->num_buttons + 31) / 32); 10055 } 10056 10057 xcb_generic_iterator_t 10058 xcb_input_button_class_state_end (const xcb_input_button_class_t *R) 10059 { 10060 xcb_generic_iterator_t i; 10061 i.data = ((uint32_t *) (R + 1)) + (((R->num_buttons + 31) / 32)); 10062 i.rem = 0; 10063 i.index = (char *) i.data - (char *) R; 10064 return i; 10065 } 10066 10067 xcb_atom_t * 10068 xcb_input_button_class_labels (const xcb_input_button_class_t *R) 10069 { 10070 xcb_generic_iterator_t prev = xcb_input_button_class_state_end(R); 10071 return (xcb_atom_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_atom_t, prev.index) + 0); 10072 } 10073 10074 int 10075 xcb_input_button_class_labels_length (const xcb_input_button_class_t *R) 10076 { 10077 return R->num_buttons; 10078 } 10079 10080 xcb_generic_iterator_t 10081 xcb_input_button_class_labels_end (const xcb_input_button_class_t *R) 10082 { 10083 xcb_generic_iterator_t i; 10084 xcb_generic_iterator_t prev = xcb_input_button_class_state_end(R); 10085 i.data = ((xcb_atom_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_atom_t, prev.index))) + (R->num_buttons); 10086 i.rem = 0; 10087 i.index = (char *) i.data - (char *) R; 10088 return i; 10089 } 10090 10091 void 10092 xcb_input_button_class_next (xcb_input_button_class_iterator_t *i) 10093 { 10094 xcb_input_button_class_t *R = i->data; 10095 xcb_generic_iterator_t child; 10096 child.data = (xcb_input_button_class_t *)(((char *)R) + xcb_input_button_class_sizeof(R)); 10097 i->index = (char *) child.data - (char *) i->data; 10098 --i->rem; 10099 i->data = (xcb_input_button_class_t *) child.data; 10100 } 10101 10102 xcb_generic_iterator_t 10103 xcb_input_button_class_end (xcb_input_button_class_iterator_t i) 10104 { 10105 xcb_generic_iterator_t ret; 10106 while(i.rem > 0) 10107 xcb_input_button_class_next(&i); 10108 ret.data = i.data; 10109 ret.rem = i.rem; 10110 ret.index = i.index; 10111 return ret; 10112 } 10113 10114 int 10115 xcb_input_key_class_sizeof (const void *_buffer) 10116 { 10117 char *xcb_tmp = (char *)_buffer; 10118 const xcb_input_key_class_t *_aux = (xcb_input_key_class_t *)_buffer; 10119 unsigned int xcb_buffer_len = 0; 10120 unsigned int xcb_block_len = 0; 10121 unsigned int xcb_pad = 0; 10122 unsigned int xcb_align_to = 0; 10123 10124 10125 xcb_block_len += sizeof(xcb_input_key_class_t); 10126 xcb_tmp += xcb_block_len; 10127 xcb_buffer_len += xcb_block_len; 10128 xcb_block_len = 0; 10129 /* keys */ 10130 xcb_block_len += _aux->num_keys * sizeof(uint32_t); 10131 xcb_tmp += xcb_block_len; 10132 xcb_align_to = ALIGNOF(uint32_t); 10133 /* insert padding */ 10134 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10135 xcb_buffer_len += xcb_block_len + xcb_pad; 10136 if (0 != xcb_pad) { 10137 xcb_tmp += xcb_pad; 10138 xcb_pad = 0; 10139 } 10140 xcb_block_len = 0; 10141 10142 return xcb_buffer_len; 10143 } 10144 10145 uint32_t * 10146 xcb_input_key_class_keys (const xcb_input_key_class_t *R) 10147 { 10148 return (uint32_t *) (R + 1); 10149 } 10150 10151 int 10152 xcb_input_key_class_keys_length (const xcb_input_key_class_t *R) 10153 { 10154 return R->num_keys; 10155 } 10156 10157 xcb_generic_iterator_t 10158 xcb_input_key_class_keys_end (const xcb_input_key_class_t *R) 10159 { 10160 xcb_generic_iterator_t i; 10161 i.data = ((uint32_t *) (R + 1)) + (R->num_keys); 10162 i.rem = 0; 10163 i.index = (char *) i.data - (char *) R; 10164 return i; 10165 } 10166 10167 void 10168 xcb_input_key_class_next (xcb_input_key_class_iterator_t *i) 10169 { 10170 xcb_input_key_class_t *R = i->data; 10171 xcb_generic_iterator_t child; 10172 child.data = (xcb_input_key_class_t *)(((char *)R) + xcb_input_key_class_sizeof(R)); 10173 i->index = (char *) child.data - (char *) i->data; 10174 --i->rem; 10175 i->data = (xcb_input_key_class_t *) child.data; 10176 } 10177 10178 xcb_generic_iterator_t 10179 xcb_input_key_class_end (xcb_input_key_class_iterator_t i) 10180 { 10181 xcb_generic_iterator_t ret; 10182 while(i.rem > 0) 10183 xcb_input_key_class_next(&i); 10184 ret.data = i.data; 10185 ret.rem = i.rem; 10186 ret.index = i.index; 10187 return ret; 10188 } 10189 10190 void 10191 xcb_input_scroll_class_next (xcb_input_scroll_class_iterator_t *i) 10192 { 10193 --i->rem; 10194 ++i->data; 10195 i->index += sizeof(xcb_input_scroll_class_t); 10196 } 10197 10198 xcb_generic_iterator_t 10199 xcb_input_scroll_class_end (xcb_input_scroll_class_iterator_t i) 10200 { 10201 xcb_generic_iterator_t ret; 10202 ret.data = i.data + i.rem; 10203 ret.index = i.index + ((char *) ret.data - (char *) i.data); 10204 ret.rem = 0; 10205 return ret; 10206 } 10207 10208 void 10209 xcb_input_touch_class_next (xcb_input_touch_class_iterator_t *i) 10210 { 10211 --i->rem; 10212 ++i->data; 10213 i->index += sizeof(xcb_input_touch_class_t); 10214 } 10215 10216 xcb_generic_iterator_t 10217 xcb_input_touch_class_end (xcb_input_touch_class_iterator_t i) 10218 { 10219 xcb_generic_iterator_t ret; 10220 ret.data = i.data + i.rem; 10221 ret.index = i.index + ((char *) ret.data - (char *) i.data); 10222 ret.rem = 0; 10223 return ret; 10224 } 10225 10226 void 10227 xcb_input_valuator_class_next (xcb_input_valuator_class_iterator_t *i) 10228 { 10229 --i->rem; 10230 ++i->data; 10231 i->index += sizeof(xcb_input_valuator_class_t); 10232 } 10233 10234 xcb_generic_iterator_t 10235 xcb_input_valuator_class_end (xcb_input_valuator_class_iterator_t i) 10236 { 10237 xcb_generic_iterator_t ret; 10238 ret.data = i.data + i.rem; 10239 ret.index = i.index + ((char *) ret.data - (char *) i.data); 10240 ret.rem = 0; 10241 return ret; 10242 } 10243 10244 uint32_t * 10245 xcb_input_device_class_data_key_keys (const xcb_input_device_class_data_t *S) 10246 { 10247 return S->key.keys; 10248 } 10249 10250 int 10251 xcb_input_device_class_data_key_keys_length (const xcb_input_device_class_t *R, 10252 const xcb_input_device_class_data_t *S) 10253 { 10254 return S->key.num_keys; 10255 } 10256 10257 xcb_generic_iterator_t 10258 xcb_input_device_class_data_key_keys_end (const xcb_input_device_class_t *R, 10259 const xcb_input_device_class_data_t *S) 10260 { 10261 xcb_generic_iterator_t i; 10262 i.data = S->key.keys + S->key.num_keys; 10263 i.rem = 0; 10264 i.index = (char *) i.data - (char *) S; 10265 return i; 10266 } 10267 10268 uint32_t * 10269 xcb_input_device_class_data_button_state (const xcb_input_device_class_data_t *S) 10270 { 10271 return S->button.state; 10272 } 10273 10274 int 10275 xcb_input_device_class_data_button_state_length (const xcb_input_device_class_t *R, 10276 const xcb_input_device_class_data_t *S) 10277 { 10278 return ((S->button.num_buttons + 31) / 32); 10279 } 10280 10281 xcb_generic_iterator_t 10282 xcb_input_device_class_data_button_state_end (const xcb_input_device_class_t *R, 10283 const xcb_input_device_class_data_t *S) 10284 { 10285 xcb_generic_iterator_t i; 10286 i.data = S->button.state + ((S->button.num_buttons + 31) / 32); 10287 i.rem = 0; 10288 i.index = (char *) i.data - (char *) S; 10289 return i; 10290 } 10291 10292 xcb_atom_t * 10293 xcb_input_device_class_data_button_labels (const xcb_input_device_class_data_t *S) 10294 { 10295 return S->button.labels; 10296 } 10297 10298 int 10299 xcb_input_device_class_data_button_labels_length (const xcb_input_device_class_t *R, 10300 const xcb_input_device_class_data_t *S) 10301 { 10302 return S->button.num_buttons; 10303 } 10304 10305 xcb_generic_iterator_t 10306 xcb_input_device_class_data_button_labels_end (const xcb_input_device_class_t *R, 10307 const xcb_input_device_class_data_t *S) 10308 { 10309 xcb_generic_iterator_t i; 10310 i.data = S->button.labels + S->button.num_buttons; 10311 i.rem = 0; 10312 i.index = (char *) i.data - (char *) S; 10313 return i; 10314 } 10315 10316 int 10317 xcb_input_device_class_data_serialize (void **_buffer, 10318 uint16_t type, 10319 const xcb_input_device_class_data_t *_aux) 10320 { 10321 char *xcb_out = *_buffer; 10322 unsigned int xcb_buffer_len = 0; 10323 unsigned int xcb_align_to = 0; 10324 unsigned int xcb_padding_offset = 2; 10325 10326 unsigned int xcb_pad = 0; 10327 char xcb_pad0[3] = {0, 0, 0}; 10328 struct iovec xcb_parts[24]; 10329 unsigned int xcb_parts_idx = 0; 10330 unsigned int xcb_block_len = 0; 10331 unsigned int i; 10332 char *xcb_tmp; 10333 10334 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_KEY) { 10335 /* xcb_input_device_class_data_t.key.num_keys */ 10336 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.num_keys; 10337 xcb_block_len += sizeof(uint16_t); 10338 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 10339 xcb_parts_idx++; 10340 xcb_align_to = ALIGNOF(uint16_t); 10341 /* insert padding */ 10342 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10343 xcb_buffer_len += xcb_block_len + xcb_pad; 10344 if (0 != xcb_pad) { 10345 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 10346 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 10347 xcb_parts_idx++; 10348 xcb_pad = 0; 10349 } 10350 xcb_block_len = 0; 10351 xcb_padding_offset = 0; 10352 /* keys */ 10353 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->key.keys; 10354 xcb_block_len += _aux->key.num_keys * sizeof(uint32_t); 10355 xcb_parts[xcb_parts_idx].iov_len = _aux->key.num_keys * sizeof(uint32_t); 10356 xcb_parts_idx++; 10357 xcb_align_to = ALIGNOF(uint32_t); 10358 } 10359 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON) { 10360 /* xcb_input_device_class_data_t.button.num_buttons */ 10361 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->button.num_buttons; 10362 xcb_block_len += sizeof(uint16_t); 10363 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 10364 xcb_parts_idx++; 10365 xcb_align_to = ALIGNOF(uint16_t); 10366 /* insert padding */ 10367 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10368 xcb_buffer_len += xcb_block_len + xcb_pad; 10369 if (0 != xcb_pad) { 10370 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 10371 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 10372 xcb_parts_idx++; 10373 xcb_pad = 0; 10374 } 10375 xcb_block_len = 0; 10376 xcb_padding_offset = 0; 10377 /* state */ 10378 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->button.state; 10379 xcb_block_len += ((_aux->button.num_buttons + 31) / 32) * sizeof(uint32_t); 10380 xcb_parts[xcb_parts_idx].iov_len = ((_aux->button.num_buttons + 31) / 32) * sizeof(uint32_t); 10381 xcb_parts_idx++; 10382 xcb_align_to = ALIGNOF(uint32_t); 10383 /* insert padding */ 10384 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10385 xcb_buffer_len += xcb_block_len + xcb_pad; 10386 if (0 != xcb_pad) { 10387 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 10388 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 10389 xcb_parts_idx++; 10390 xcb_pad = 0; 10391 } 10392 xcb_block_len = 0; 10393 xcb_padding_offset = 0; 10394 /* labels */ 10395 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->button.labels; 10396 xcb_block_len += _aux->button.num_buttons * sizeof(uint32_t); 10397 xcb_parts[xcb_parts_idx].iov_len = _aux->button.num_buttons * sizeof(uint32_t); 10398 xcb_parts_idx++; 10399 xcb_align_to = ALIGNOF(xcb_atom_t); 10400 } 10401 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR) { 10402 /* xcb_input_device_class_data_t.valuator.number */ 10403 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.number; 10404 xcb_block_len += sizeof(uint16_t); 10405 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 10406 xcb_parts_idx++; 10407 xcb_align_to = ALIGNOF(uint16_t); 10408 /* xcb_input_device_class_data_t.valuator.label */ 10409 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.label; 10410 xcb_block_len += sizeof(xcb_atom_t); 10411 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t); 10412 xcb_parts_idx++; 10413 xcb_align_to = ALIGNOF(xcb_atom_t); 10414 /* xcb_input_device_class_data_t.valuator.min */ 10415 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.min; 10416 xcb_block_len += sizeof(xcb_input_fp3232_t); 10417 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); 10418 xcb_parts_idx++; 10419 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10420 /* xcb_input_device_class_data_t.valuator.max */ 10421 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.max; 10422 xcb_block_len += sizeof(xcb_input_fp3232_t); 10423 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); 10424 xcb_parts_idx++; 10425 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10426 /* xcb_input_device_class_data_t.valuator.value */ 10427 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.value; 10428 xcb_block_len += sizeof(xcb_input_fp3232_t); 10429 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); 10430 xcb_parts_idx++; 10431 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10432 /* xcb_input_device_class_data_t.valuator.resolution */ 10433 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.resolution; 10434 xcb_block_len += sizeof(uint32_t); 10435 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 10436 xcb_parts_idx++; 10437 xcb_align_to = ALIGNOF(uint32_t); 10438 /* xcb_input_device_class_data_t.valuator.mode */ 10439 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.mode; 10440 xcb_block_len += sizeof(uint8_t); 10441 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 10442 xcb_parts_idx++; 10443 xcb_align_to = ALIGNOF(uint8_t); 10444 /* xcb_input_device_class_data_t.valuator.pad0 */ 10445 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 10446 xcb_block_len += sizeof(uint8_t)*3; 10447 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; 10448 xcb_parts_idx++; 10449 xcb_align_to = ALIGNOF(uint8_t); 10450 } 10451 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL) { 10452 /* xcb_input_device_class_data_t.scroll.number */ 10453 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.number; 10454 xcb_block_len += sizeof(uint16_t); 10455 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 10456 xcb_parts_idx++; 10457 xcb_align_to = ALIGNOF(uint16_t); 10458 /* xcb_input_device_class_data_t.scroll.scroll_type */ 10459 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.scroll_type; 10460 xcb_block_len += sizeof(uint16_t); 10461 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); 10462 xcb_parts_idx++; 10463 xcb_align_to = ALIGNOF(uint16_t); 10464 /* xcb_input_device_class_data_t.scroll.pad1 */ 10465 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 10466 xcb_block_len += sizeof(uint8_t)*2; 10467 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; 10468 xcb_parts_idx++; 10469 xcb_align_to = ALIGNOF(uint8_t); 10470 /* xcb_input_device_class_data_t.scroll.flags */ 10471 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.flags; 10472 xcb_block_len += sizeof(uint32_t); 10473 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 10474 xcb_parts_idx++; 10475 xcb_align_to = ALIGNOF(uint32_t); 10476 /* xcb_input_device_class_data_t.scroll.increment */ 10477 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.increment; 10478 xcb_block_len += sizeof(xcb_input_fp3232_t); 10479 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); 10480 xcb_parts_idx++; 10481 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10482 } 10483 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH) { 10484 /* xcb_input_device_class_data_t.touch.mode */ 10485 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->touch.mode; 10486 xcb_block_len += sizeof(uint8_t); 10487 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 10488 xcb_parts_idx++; 10489 xcb_align_to = ALIGNOF(uint8_t); 10490 /* xcb_input_device_class_data_t.touch.num_touches */ 10491 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->touch.num_touches; 10492 xcb_block_len += sizeof(uint8_t); 10493 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); 10494 xcb_parts_idx++; 10495 xcb_align_to = ALIGNOF(uint8_t); 10496 } 10497 /* insert padding */ 10498 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10499 xcb_buffer_len += xcb_block_len + xcb_pad; 10500 if (0 != xcb_pad) { 10501 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 10502 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 10503 xcb_parts_idx++; 10504 xcb_pad = 0; 10505 } 10506 xcb_block_len = 0; 10507 xcb_padding_offset = 0; 10508 10509 if (NULL == xcb_out) { 10510 /* allocate memory */ 10511 xcb_out = malloc(xcb_buffer_len); 10512 *_buffer = xcb_out; 10513 } 10514 10515 xcb_tmp = xcb_out; 10516 for(i=0; i<xcb_parts_idx; i++) { 10517 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 10518 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 10519 if (0 != xcb_parts[i].iov_len) 10520 xcb_tmp += xcb_parts[i].iov_len; 10521 } 10522 10523 return xcb_buffer_len; 10524 } 10525 10526 int 10527 xcb_input_device_class_data_unpack (const void *_buffer, 10528 uint16_t type, 10529 xcb_input_device_class_data_t *_aux) 10530 { 10531 char *xcb_tmp = (char *)_buffer; 10532 unsigned int xcb_buffer_len = 0; 10533 unsigned int xcb_block_len = 0; 10534 unsigned int xcb_pad = 0; 10535 unsigned int xcb_align_to = 0; 10536 unsigned int xcb_padding_offset = 2; 10537 10538 10539 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_KEY) { 10540 /* xcb_input_device_class_data_t.key.num_keys */ 10541 _aux->key.num_keys = *(uint16_t *)xcb_tmp; 10542 xcb_block_len += sizeof(uint16_t); 10543 xcb_tmp += sizeof(uint16_t); 10544 xcb_align_to = ALIGNOF(uint16_t); 10545 /* insert padding */ 10546 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10547 xcb_buffer_len += xcb_block_len + xcb_pad; 10548 if (0 != xcb_pad) { 10549 xcb_tmp += xcb_pad; 10550 xcb_pad = 0; 10551 } 10552 xcb_block_len = 0; 10553 xcb_padding_offset = 0; 10554 /* keys */ 10555 _aux->key.keys = (uint32_t *)xcb_tmp; 10556 xcb_block_len += _aux->key.num_keys * sizeof(uint32_t); 10557 xcb_tmp += xcb_block_len; 10558 xcb_align_to = ALIGNOF(uint32_t); 10559 } 10560 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON) { 10561 /* xcb_input_device_class_data_t.button.num_buttons */ 10562 _aux->button.num_buttons = *(uint16_t *)xcb_tmp; 10563 xcb_block_len += sizeof(uint16_t); 10564 xcb_tmp += sizeof(uint16_t); 10565 xcb_align_to = ALIGNOF(uint16_t); 10566 /* insert padding */ 10567 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10568 xcb_buffer_len += xcb_block_len + xcb_pad; 10569 if (0 != xcb_pad) { 10570 xcb_tmp += xcb_pad; 10571 xcb_pad = 0; 10572 } 10573 xcb_block_len = 0; 10574 xcb_padding_offset = 0; 10575 /* state */ 10576 _aux->button.state = (uint32_t *)xcb_tmp; 10577 xcb_block_len += ((_aux->button.num_buttons + 31) / 32) * sizeof(uint32_t); 10578 xcb_tmp += xcb_block_len; 10579 xcb_align_to = ALIGNOF(uint32_t); 10580 /* insert padding */ 10581 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10582 xcb_buffer_len += xcb_block_len + xcb_pad; 10583 if (0 != xcb_pad) { 10584 xcb_tmp += xcb_pad; 10585 xcb_pad = 0; 10586 } 10587 xcb_block_len = 0; 10588 xcb_padding_offset = 0; 10589 /* labels */ 10590 _aux->button.labels = (xcb_atom_t *)xcb_tmp; 10591 xcb_block_len += _aux->button.num_buttons * sizeof(uint32_t); 10592 xcb_tmp += xcb_block_len; 10593 xcb_align_to = ALIGNOF(xcb_atom_t); 10594 } 10595 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR) { 10596 /* xcb_input_device_class_data_t.valuator.number */ 10597 _aux->valuator.number = *(uint16_t *)xcb_tmp; 10598 xcb_block_len += sizeof(uint16_t); 10599 xcb_tmp += sizeof(uint16_t); 10600 xcb_align_to = ALIGNOF(uint16_t); 10601 /* xcb_input_device_class_data_t.valuator.label */ 10602 _aux->valuator.label = *(xcb_atom_t *)xcb_tmp; 10603 xcb_block_len += sizeof(xcb_atom_t); 10604 xcb_tmp += sizeof(xcb_atom_t); 10605 xcb_align_to = ALIGNOF(xcb_atom_t); 10606 /* xcb_input_device_class_data_t.valuator.min */ 10607 _aux->valuator.min = *(xcb_input_fp3232_t *)xcb_tmp; 10608 xcb_block_len += sizeof(xcb_input_fp3232_t); 10609 xcb_tmp += sizeof(xcb_input_fp3232_t); 10610 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10611 /* xcb_input_device_class_data_t.valuator.max */ 10612 _aux->valuator.max = *(xcb_input_fp3232_t *)xcb_tmp; 10613 xcb_block_len += sizeof(xcb_input_fp3232_t); 10614 xcb_tmp += sizeof(xcb_input_fp3232_t); 10615 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10616 /* xcb_input_device_class_data_t.valuator.value */ 10617 _aux->valuator.value = *(xcb_input_fp3232_t *)xcb_tmp; 10618 xcb_block_len += sizeof(xcb_input_fp3232_t); 10619 xcb_tmp += sizeof(xcb_input_fp3232_t); 10620 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10621 /* xcb_input_device_class_data_t.valuator.resolution */ 10622 _aux->valuator.resolution = *(uint32_t *)xcb_tmp; 10623 xcb_block_len += sizeof(uint32_t); 10624 xcb_tmp += sizeof(uint32_t); 10625 xcb_align_to = ALIGNOF(uint32_t); 10626 /* xcb_input_device_class_data_t.valuator.mode */ 10627 _aux->valuator.mode = *(uint8_t *)xcb_tmp; 10628 xcb_block_len += sizeof(uint8_t); 10629 xcb_tmp += sizeof(uint8_t); 10630 xcb_align_to = ALIGNOF(uint8_t); 10631 /* xcb_input_device_class_data_t.valuator.pad0 */ 10632 _aux->valuator.pad0[0] = *(uint8_t *)xcb_tmp; 10633 _aux->valuator.pad0[1] = *(uint8_t *)xcb_tmp; 10634 _aux->valuator.pad0[2] = *(uint8_t *)xcb_tmp; 10635 xcb_block_len += sizeof(uint8_t) * 3; 10636 xcb_tmp += sizeof(uint8_t) * 3; 10637 xcb_align_to = ALIGNOF(uint8_t); 10638 } 10639 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL) { 10640 /* xcb_input_device_class_data_t.scroll.number */ 10641 _aux->scroll.number = *(uint16_t *)xcb_tmp; 10642 xcb_block_len += sizeof(uint16_t); 10643 xcb_tmp += sizeof(uint16_t); 10644 xcb_align_to = ALIGNOF(uint16_t); 10645 /* xcb_input_device_class_data_t.scroll.scroll_type */ 10646 _aux->scroll.scroll_type = *(uint16_t *)xcb_tmp; 10647 xcb_block_len += sizeof(uint16_t); 10648 xcb_tmp += sizeof(uint16_t); 10649 xcb_align_to = ALIGNOF(uint16_t); 10650 /* xcb_input_device_class_data_t.scroll.pad1 */ 10651 _aux->scroll.pad1[0] = *(uint8_t *)xcb_tmp; 10652 _aux->scroll.pad1[1] = *(uint8_t *)xcb_tmp; 10653 xcb_block_len += sizeof(uint8_t) * 2; 10654 xcb_tmp += sizeof(uint8_t) * 2; 10655 xcb_align_to = ALIGNOF(uint8_t); 10656 /* xcb_input_device_class_data_t.scroll.flags */ 10657 _aux->scroll.flags = *(uint32_t *)xcb_tmp; 10658 xcb_block_len += sizeof(uint32_t); 10659 xcb_tmp += sizeof(uint32_t); 10660 xcb_align_to = ALIGNOF(uint32_t); 10661 /* xcb_input_device_class_data_t.scroll.increment */ 10662 _aux->scroll.increment = *(xcb_input_fp3232_t *)xcb_tmp; 10663 xcb_block_len += sizeof(xcb_input_fp3232_t); 10664 xcb_tmp += sizeof(xcb_input_fp3232_t); 10665 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 10666 } 10667 if(type == XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH) { 10668 /* xcb_input_device_class_data_t.touch.mode */ 10669 _aux->touch.mode = *(uint8_t *)xcb_tmp; 10670 xcb_block_len += sizeof(uint8_t); 10671 xcb_tmp += sizeof(uint8_t); 10672 xcb_align_to = ALIGNOF(uint8_t); 10673 /* xcb_input_device_class_data_t.touch.num_touches */ 10674 _aux->touch.num_touches = *(uint8_t *)xcb_tmp; 10675 xcb_block_len += sizeof(uint8_t); 10676 xcb_tmp += sizeof(uint8_t); 10677 xcb_align_to = ALIGNOF(uint8_t); 10678 } 10679 /* insert padding */ 10680 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 10681 xcb_buffer_len += xcb_block_len + xcb_pad; 10682 if (0 != xcb_pad) { 10683 xcb_tmp += xcb_pad; 10684 xcb_pad = 0; 10685 } 10686 xcb_block_len = 0; 10687 xcb_padding_offset = 0; 10688 10689 return xcb_buffer_len; 10690 } 10691 10692 int 10693 xcb_input_device_class_data_sizeof (const void *_buffer, 10694 uint16_t type) 10695 { 10696 xcb_input_device_class_data_t _aux; 10697 return xcb_input_device_class_data_unpack(_buffer, type, &_aux); 10698 } 10699 10700 int 10701 xcb_input_device_class_sizeof (const void *_buffer) 10702 { 10703 char *xcb_tmp = (char *)_buffer; 10704 const xcb_input_device_class_t *_aux = (xcb_input_device_class_t *)_buffer; 10705 unsigned int xcb_buffer_len = 0; 10706 unsigned int xcb_block_len = 0; 10707 unsigned int xcb_pad = 0; 10708 unsigned int xcb_align_to = 0; 10709 10710 10711 xcb_block_len += sizeof(xcb_input_device_class_t); 10712 xcb_tmp += xcb_block_len; 10713 xcb_buffer_len += xcb_block_len; 10714 xcb_block_len = 0; 10715 /* data */ 10716 xcb_block_len += xcb_input_device_class_data_sizeof(xcb_tmp, _aux->type); 10717 xcb_tmp += xcb_block_len; 10718 xcb_align_to = ALIGNOF(char); 10719 /* insert padding */ 10720 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10721 xcb_buffer_len += xcb_block_len + xcb_pad; 10722 if (0 != xcb_pad) { 10723 xcb_tmp += xcb_pad; 10724 xcb_pad = 0; 10725 } 10726 xcb_block_len = 0; 10727 10728 return xcb_buffer_len; 10729 } 10730 10731 void * 10732 xcb_input_device_class_data (const xcb_input_device_class_t *R) 10733 { 10734 return (void *) (R + 1); 10735 } 10736 10737 void 10738 xcb_input_device_class_next (xcb_input_device_class_iterator_t *i) 10739 { 10740 xcb_input_device_class_t *R = i->data; 10741 xcb_generic_iterator_t child; 10742 child.data = (xcb_input_device_class_t *)(((char *)R) + xcb_input_device_class_sizeof(R)); 10743 i->index = (char *) child.data - (char *) i->data; 10744 --i->rem; 10745 i->data = (xcb_input_device_class_t *) child.data; 10746 } 10747 10748 xcb_generic_iterator_t 10749 xcb_input_device_class_end (xcb_input_device_class_iterator_t i) 10750 { 10751 xcb_generic_iterator_t ret; 10752 while(i.rem > 0) 10753 xcb_input_device_class_next(&i); 10754 ret.data = i.data; 10755 ret.rem = i.rem; 10756 ret.index = i.index; 10757 return ret; 10758 } 10759 10760 int 10761 xcb_input_xi_device_info_sizeof (const void *_buffer) 10762 { 10763 char *xcb_tmp = (char *)_buffer; 10764 const xcb_input_xi_device_info_t *_aux = (xcb_input_xi_device_info_t *)_buffer; 10765 unsigned int xcb_buffer_len = 0; 10766 unsigned int xcb_block_len = 0; 10767 unsigned int xcb_pad = 0; 10768 unsigned int xcb_align_to = 0; 10769 10770 unsigned int i; 10771 unsigned int xcb_tmp_len; 10772 10773 xcb_block_len += sizeof(xcb_input_xi_device_info_t); 10774 xcb_tmp += xcb_block_len; 10775 xcb_buffer_len += xcb_block_len; 10776 xcb_block_len = 0; 10777 /* name */ 10778 xcb_block_len += _aux->name_len * sizeof(char); 10779 xcb_tmp += xcb_block_len; 10780 xcb_align_to = ALIGNOF(char); 10781 xcb_align_to = 4; 10782 /* insert padding */ 10783 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10784 xcb_buffer_len += xcb_block_len + xcb_pad; 10785 if (0 != xcb_pad) { 10786 xcb_tmp += xcb_pad; 10787 xcb_pad = 0; 10788 } 10789 xcb_block_len = 0; 10790 /* insert padding */ 10791 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10792 xcb_buffer_len += xcb_block_len + xcb_pad; 10793 if (0 != xcb_pad) { 10794 xcb_tmp += xcb_pad; 10795 xcb_pad = 0; 10796 } 10797 xcb_block_len = 0; 10798 /* classes */ 10799 for(i=0; i<_aux->num_classes; i++) { 10800 xcb_tmp_len = xcb_input_device_class_sizeof(xcb_tmp); 10801 xcb_block_len += xcb_tmp_len; 10802 xcb_tmp += xcb_tmp_len; 10803 } 10804 xcb_align_to = ALIGNOF(xcb_input_device_class_t); 10805 /* insert padding */ 10806 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10807 xcb_buffer_len += xcb_block_len + xcb_pad; 10808 if (0 != xcb_pad) { 10809 xcb_tmp += xcb_pad; 10810 xcb_pad = 0; 10811 } 10812 xcb_block_len = 0; 10813 10814 return xcb_buffer_len; 10815 } 10816 10817 char * 10818 xcb_input_xi_device_info_name (const xcb_input_xi_device_info_t *R) 10819 { 10820 return (char *) (R + 1); 10821 } 10822 10823 int 10824 xcb_input_xi_device_info_name_length (const xcb_input_xi_device_info_t *R) 10825 { 10826 return R->name_len; 10827 } 10828 10829 xcb_generic_iterator_t 10830 xcb_input_xi_device_info_name_end (const xcb_input_xi_device_info_t *R) 10831 { 10832 xcb_generic_iterator_t i; 10833 i.data = ((char *) (R + 1)) + (R->name_len); 10834 i.rem = 0; 10835 i.index = (char *) i.data - (char *) R; 10836 return i; 10837 } 10838 10839 int 10840 xcb_input_xi_device_info_classes_length (const xcb_input_xi_device_info_t *R) 10841 { 10842 return R->num_classes; 10843 } 10844 10845 xcb_input_device_class_iterator_t 10846 xcb_input_xi_device_info_classes_iterator (const xcb_input_xi_device_info_t *R) 10847 { 10848 xcb_input_device_class_iterator_t i; 10849 xcb_generic_iterator_t prev = xcb_input_xi_device_info_name_end(R); 10850 i.data = (xcb_input_device_class_t *) ((char *) prev.data + ((-prev.index) & (4 - 1))); 10851 i.rem = R->num_classes; 10852 i.index = (char *) i.data - (char *) R; 10853 return i; 10854 } 10855 10856 void 10857 xcb_input_xi_device_info_next (xcb_input_xi_device_info_iterator_t *i) 10858 { 10859 xcb_input_xi_device_info_t *R = i->data; 10860 xcb_generic_iterator_t child; 10861 child.data = (xcb_input_xi_device_info_t *)(((char *)R) + xcb_input_xi_device_info_sizeof(R)); 10862 i->index = (char *) child.data - (char *) i->data; 10863 --i->rem; 10864 i->data = (xcb_input_xi_device_info_t *) child.data; 10865 } 10866 10867 xcb_generic_iterator_t 10868 xcb_input_xi_device_info_end (xcb_input_xi_device_info_iterator_t i) 10869 { 10870 xcb_generic_iterator_t ret; 10871 while(i.rem > 0) 10872 xcb_input_xi_device_info_next(&i); 10873 ret.data = i.data; 10874 ret.rem = i.rem; 10875 ret.index = i.index; 10876 return ret; 10877 } 10878 10879 int 10880 xcb_input_xi_query_device_sizeof (const void *_buffer) 10881 { 10882 char *xcb_tmp = (char *)_buffer; 10883 const xcb_input_xi_query_device_reply_t *_aux = (xcb_input_xi_query_device_reply_t *)_buffer; 10884 unsigned int xcb_buffer_len = 0; 10885 unsigned int xcb_block_len = 0; 10886 unsigned int xcb_pad = 0; 10887 unsigned int xcb_align_to = 0; 10888 10889 unsigned int i; 10890 unsigned int xcb_tmp_len; 10891 10892 xcb_block_len += sizeof(xcb_input_xi_query_device_reply_t); 10893 xcb_tmp += xcb_block_len; 10894 xcb_buffer_len += xcb_block_len; 10895 xcb_block_len = 0; 10896 /* infos */ 10897 for(i=0; i<_aux->num_infos; i++) { 10898 xcb_tmp_len = xcb_input_xi_device_info_sizeof(xcb_tmp); 10899 xcb_block_len += xcb_tmp_len; 10900 xcb_tmp += xcb_tmp_len; 10901 } 10902 xcb_align_to = ALIGNOF(xcb_input_xi_device_info_t); 10903 /* insert padding */ 10904 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 10905 xcb_buffer_len += xcb_block_len + xcb_pad; 10906 if (0 != xcb_pad) { 10907 xcb_tmp += xcb_pad; 10908 xcb_pad = 0; 10909 } 10910 xcb_block_len = 0; 10911 10912 return xcb_buffer_len; 10913 } 10914 10915 xcb_input_xi_query_device_cookie_t 10916 xcb_input_xi_query_device (xcb_connection_t *c, 10917 xcb_input_device_id_t deviceid) 10918 { 10919 static const xcb_protocol_request_t xcb_req = { 10920 .count = 2, 10921 .ext = &xcb_input_id, 10922 .opcode = XCB_INPUT_XI_QUERY_DEVICE, 10923 .isvoid = 0 10924 }; 10925 10926 struct iovec xcb_parts[4]; 10927 xcb_input_xi_query_device_cookie_t xcb_ret; 10928 xcb_input_xi_query_device_request_t xcb_out; 10929 10930 xcb_out.deviceid = deviceid; 10931 memset(xcb_out.pad0, 0, 2); 10932 10933 xcb_parts[2].iov_base = (char *) &xcb_out; 10934 xcb_parts[2].iov_len = sizeof(xcb_out); 10935 xcb_parts[3].iov_base = 0; 10936 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 10937 10938 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 10939 return xcb_ret; 10940 } 10941 10942 xcb_input_xi_query_device_cookie_t 10943 xcb_input_xi_query_device_unchecked (xcb_connection_t *c, 10944 xcb_input_device_id_t deviceid) 10945 { 10946 static const xcb_protocol_request_t xcb_req = { 10947 .count = 2, 10948 .ext = &xcb_input_id, 10949 .opcode = XCB_INPUT_XI_QUERY_DEVICE, 10950 .isvoid = 0 10951 }; 10952 10953 struct iovec xcb_parts[4]; 10954 xcb_input_xi_query_device_cookie_t xcb_ret; 10955 xcb_input_xi_query_device_request_t xcb_out; 10956 10957 xcb_out.deviceid = deviceid; 10958 memset(xcb_out.pad0, 0, 2); 10959 10960 xcb_parts[2].iov_base = (char *) &xcb_out; 10961 xcb_parts[2].iov_len = sizeof(xcb_out); 10962 xcb_parts[3].iov_base = 0; 10963 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 10964 10965 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 10966 return xcb_ret; 10967 } 10968 10969 int 10970 xcb_input_xi_query_device_infos_length (const xcb_input_xi_query_device_reply_t *R) 10971 { 10972 return R->num_infos; 10973 } 10974 10975 xcb_input_xi_device_info_iterator_t 10976 xcb_input_xi_query_device_infos_iterator (const xcb_input_xi_query_device_reply_t *R) 10977 { 10978 xcb_input_xi_device_info_iterator_t i; 10979 i.data = (xcb_input_xi_device_info_t *) (R + 1); 10980 i.rem = R->num_infos; 10981 i.index = (char *) i.data - (char *) R; 10982 return i; 10983 } 10984 10985 xcb_input_xi_query_device_reply_t * 10986 xcb_input_xi_query_device_reply (xcb_connection_t *c, 10987 xcb_input_xi_query_device_cookie_t cookie /**< */, 10988 xcb_generic_error_t **e) 10989 { 10990 return (xcb_input_xi_query_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 10991 } 10992 10993 xcb_void_cookie_t 10994 xcb_input_xi_set_focus_checked (xcb_connection_t *c, 10995 xcb_window_t window, 10996 xcb_timestamp_t time, 10997 xcb_input_device_id_t deviceid) 10998 { 10999 static const xcb_protocol_request_t xcb_req = { 11000 .count = 2, 11001 .ext = &xcb_input_id, 11002 .opcode = XCB_INPUT_XI_SET_FOCUS, 11003 .isvoid = 1 11004 }; 11005 11006 struct iovec xcb_parts[4]; 11007 xcb_void_cookie_t xcb_ret; 11008 xcb_input_xi_set_focus_request_t xcb_out; 11009 11010 xcb_out.window = window; 11011 xcb_out.time = time; 11012 xcb_out.deviceid = deviceid; 11013 memset(xcb_out.pad0, 0, 2); 11014 11015 xcb_parts[2].iov_base = (char *) &xcb_out; 11016 xcb_parts[2].iov_len = sizeof(xcb_out); 11017 xcb_parts[3].iov_base = 0; 11018 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11019 11020 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11021 return xcb_ret; 11022 } 11023 11024 xcb_void_cookie_t 11025 xcb_input_xi_set_focus (xcb_connection_t *c, 11026 xcb_window_t window, 11027 xcb_timestamp_t time, 11028 xcb_input_device_id_t deviceid) 11029 { 11030 static const xcb_protocol_request_t xcb_req = { 11031 .count = 2, 11032 .ext = &xcb_input_id, 11033 .opcode = XCB_INPUT_XI_SET_FOCUS, 11034 .isvoid = 1 11035 }; 11036 11037 struct iovec xcb_parts[4]; 11038 xcb_void_cookie_t xcb_ret; 11039 xcb_input_xi_set_focus_request_t xcb_out; 11040 11041 xcb_out.window = window; 11042 xcb_out.time = time; 11043 xcb_out.deviceid = deviceid; 11044 memset(xcb_out.pad0, 0, 2); 11045 11046 xcb_parts[2].iov_base = (char *) &xcb_out; 11047 xcb_parts[2].iov_len = sizeof(xcb_out); 11048 xcb_parts[3].iov_base = 0; 11049 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11050 11051 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11052 return xcb_ret; 11053 } 11054 11055 xcb_input_xi_get_focus_cookie_t 11056 xcb_input_xi_get_focus (xcb_connection_t *c, 11057 xcb_input_device_id_t deviceid) 11058 { 11059 static const xcb_protocol_request_t xcb_req = { 11060 .count = 2, 11061 .ext = &xcb_input_id, 11062 .opcode = XCB_INPUT_XI_GET_FOCUS, 11063 .isvoid = 0 11064 }; 11065 11066 struct iovec xcb_parts[4]; 11067 xcb_input_xi_get_focus_cookie_t xcb_ret; 11068 xcb_input_xi_get_focus_request_t xcb_out; 11069 11070 xcb_out.deviceid = deviceid; 11071 memset(xcb_out.pad0, 0, 2); 11072 11073 xcb_parts[2].iov_base = (char *) &xcb_out; 11074 xcb_parts[2].iov_len = sizeof(xcb_out); 11075 xcb_parts[3].iov_base = 0; 11076 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11077 11078 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11079 return xcb_ret; 11080 } 11081 11082 xcb_input_xi_get_focus_cookie_t 11083 xcb_input_xi_get_focus_unchecked (xcb_connection_t *c, 11084 xcb_input_device_id_t deviceid) 11085 { 11086 static const xcb_protocol_request_t xcb_req = { 11087 .count = 2, 11088 .ext = &xcb_input_id, 11089 .opcode = XCB_INPUT_XI_GET_FOCUS, 11090 .isvoid = 0 11091 }; 11092 11093 struct iovec xcb_parts[4]; 11094 xcb_input_xi_get_focus_cookie_t xcb_ret; 11095 xcb_input_xi_get_focus_request_t xcb_out; 11096 11097 xcb_out.deviceid = deviceid; 11098 memset(xcb_out.pad0, 0, 2); 11099 11100 xcb_parts[2].iov_base = (char *) &xcb_out; 11101 xcb_parts[2].iov_len = sizeof(xcb_out); 11102 xcb_parts[3].iov_base = 0; 11103 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11104 11105 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11106 return xcb_ret; 11107 } 11108 11109 xcb_input_xi_get_focus_reply_t * 11110 xcb_input_xi_get_focus_reply (xcb_connection_t *c, 11111 xcb_input_xi_get_focus_cookie_t cookie /**< */, 11112 xcb_generic_error_t **e) 11113 { 11114 return (xcb_input_xi_get_focus_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 11115 } 11116 11117 int 11118 xcb_input_xi_grab_device_sizeof (const void *_buffer) 11119 { 11120 char *xcb_tmp = (char *)_buffer; 11121 const xcb_input_xi_grab_device_request_t *_aux = (xcb_input_xi_grab_device_request_t *)_buffer; 11122 unsigned int xcb_buffer_len = 0; 11123 unsigned int xcb_block_len = 0; 11124 unsigned int xcb_pad = 0; 11125 unsigned int xcb_align_to = 0; 11126 11127 11128 xcb_block_len += sizeof(xcb_input_xi_grab_device_request_t); 11129 xcb_tmp += xcb_block_len; 11130 xcb_buffer_len += xcb_block_len; 11131 xcb_block_len = 0; 11132 /* mask */ 11133 xcb_block_len += _aux->mask_len * sizeof(uint32_t); 11134 xcb_tmp += xcb_block_len; 11135 xcb_align_to = ALIGNOF(uint32_t); 11136 /* insert padding */ 11137 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 11138 xcb_buffer_len += xcb_block_len + xcb_pad; 11139 if (0 != xcb_pad) { 11140 xcb_tmp += xcb_pad; 11141 xcb_pad = 0; 11142 } 11143 xcb_block_len = 0; 11144 11145 return xcb_buffer_len; 11146 } 11147 11148 xcb_input_xi_grab_device_cookie_t 11149 xcb_input_xi_grab_device (xcb_connection_t *c, 11150 xcb_window_t window, 11151 xcb_timestamp_t time, 11152 xcb_cursor_t cursor, 11153 xcb_input_device_id_t deviceid, 11154 uint8_t mode, 11155 uint8_t paired_device_mode, 11156 uint8_t owner_events, 11157 uint16_t mask_len, 11158 const uint32_t *mask) 11159 { 11160 static const xcb_protocol_request_t xcb_req = { 11161 .count = 4, 11162 .ext = &xcb_input_id, 11163 .opcode = XCB_INPUT_XI_GRAB_DEVICE, 11164 .isvoid = 0 11165 }; 11166 11167 struct iovec xcb_parts[6]; 11168 xcb_input_xi_grab_device_cookie_t xcb_ret; 11169 xcb_input_xi_grab_device_request_t xcb_out; 11170 11171 xcb_out.window = window; 11172 xcb_out.time = time; 11173 xcb_out.cursor = cursor; 11174 xcb_out.deviceid = deviceid; 11175 xcb_out.mode = mode; 11176 xcb_out.paired_device_mode = paired_device_mode; 11177 xcb_out.owner_events = owner_events; 11178 xcb_out.pad0 = 0; 11179 xcb_out.mask_len = mask_len; 11180 11181 xcb_parts[2].iov_base = (char *) &xcb_out; 11182 xcb_parts[2].iov_len = sizeof(xcb_out); 11183 xcb_parts[3].iov_base = 0; 11184 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11185 /* uint32_t mask */ 11186 xcb_parts[4].iov_base = (char *) mask; 11187 xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); 11188 xcb_parts[5].iov_base = 0; 11189 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 11190 11191 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11192 return xcb_ret; 11193 } 11194 11195 xcb_input_xi_grab_device_cookie_t 11196 xcb_input_xi_grab_device_unchecked (xcb_connection_t *c, 11197 xcb_window_t window, 11198 xcb_timestamp_t time, 11199 xcb_cursor_t cursor, 11200 xcb_input_device_id_t deviceid, 11201 uint8_t mode, 11202 uint8_t paired_device_mode, 11203 uint8_t owner_events, 11204 uint16_t mask_len, 11205 const uint32_t *mask) 11206 { 11207 static const xcb_protocol_request_t xcb_req = { 11208 .count = 4, 11209 .ext = &xcb_input_id, 11210 .opcode = XCB_INPUT_XI_GRAB_DEVICE, 11211 .isvoid = 0 11212 }; 11213 11214 struct iovec xcb_parts[6]; 11215 xcb_input_xi_grab_device_cookie_t xcb_ret; 11216 xcb_input_xi_grab_device_request_t xcb_out; 11217 11218 xcb_out.window = window; 11219 xcb_out.time = time; 11220 xcb_out.cursor = cursor; 11221 xcb_out.deviceid = deviceid; 11222 xcb_out.mode = mode; 11223 xcb_out.paired_device_mode = paired_device_mode; 11224 xcb_out.owner_events = owner_events; 11225 xcb_out.pad0 = 0; 11226 xcb_out.mask_len = mask_len; 11227 11228 xcb_parts[2].iov_base = (char *) &xcb_out; 11229 xcb_parts[2].iov_len = sizeof(xcb_out); 11230 xcb_parts[3].iov_base = 0; 11231 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11232 /* uint32_t mask */ 11233 xcb_parts[4].iov_base = (char *) mask; 11234 xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); 11235 xcb_parts[5].iov_base = 0; 11236 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 11237 11238 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11239 return xcb_ret; 11240 } 11241 11242 xcb_input_xi_grab_device_reply_t * 11243 xcb_input_xi_grab_device_reply (xcb_connection_t *c, 11244 xcb_input_xi_grab_device_cookie_t cookie /**< */, 11245 xcb_generic_error_t **e) 11246 { 11247 return (xcb_input_xi_grab_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 11248 } 11249 11250 xcb_void_cookie_t 11251 xcb_input_xi_ungrab_device_checked (xcb_connection_t *c, 11252 xcb_timestamp_t time, 11253 xcb_input_device_id_t deviceid) 11254 { 11255 static const xcb_protocol_request_t xcb_req = { 11256 .count = 2, 11257 .ext = &xcb_input_id, 11258 .opcode = XCB_INPUT_XI_UNGRAB_DEVICE, 11259 .isvoid = 1 11260 }; 11261 11262 struct iovec xcb_parts[4]; 11263 xcb_void_cookie_t xcb_ret; 11264 xcb_input_xi_ungrab_device_request_t xcb_out; 11265 11266 xcb_out.time = time; 11267 xcb_out.deviceid = deviceid; 11268 memset(xcb_out.pad0, 0, 2); 11269 11270 xcb_parts[2].iov_base = (char *) &xcb_out; 11271 xcb_parts[2].iov_len = sizeof(xcb_out); 11272 xcb_parts[3].iov_base = 0; 11273 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11274 11275 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11276 return xcb_ret; 11277 } 11278 11279 xcb_void_cookie_t 11280 xcb_input_xi_ungrab_device (xcb_connection_t *c, 11281 xcb_timestamp_t time, 11282 xcb_input_device_id_t deviceid) 11283 { 11284 static const xcb_protocol_request_t xcb_req = { 11285 .count = 2, 11286 .ext = &xcb_input_id, 11287 .opcode = XCB_INPUT_XI_UNGRAB_DEVICE, 11288 .isvoid = 1 11289 }; 11290 11291 struct iovec xcb_parts[4]; 11292 xcb_void_cookie_t xcb_ret; 11293 xcb_input_xi_ungrab_device_request_t xcb_out; 11294 11295 xcb_out.time = time; 11296 xcb_out.deviceid = deviceid; 11297 memset(xcb_out.pad0, 0, 2); 11298 11299 xcb_parts[2].iov_base = (char *) &xcb_out; 11300 xcb_parts[2].iov_len = sizeof(xcb_out); 11301 xcb_parts[3].iov_base = 0; 11302 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11303 11304 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11305 return xcb_ret; 11306 } 11307 11308 xcb_void_cookie_t 11309 xcb_input_xi_allow_events_checked (xcb_connection_t *c, 11310 xcb_timestamp_t time, 11311 xcb_input_device_id_t deviceid, 11312 uint8_t event_mode, 11313 uint32_t touchid, 11314 xcb_window_t grab_window) 11315 { 11316 static const xcb_protocol_request_t xcb_req = { 11317 .count = 2, 11318 .ext = &xcb_input_id, 11319 .opcode = XCB_INPUT_XI_ALLOW_EVENTS, 11320 .isvoid = 1 11321 }; 11322 11323 struct iovec xcb_parts[4]; 11324 xcb_void_cookie_t xcb_ret; 11325 xcb_input_xi_allow_events_request_t xcb_out; 11326 11327 xcb_out.time = time; 11328 xcb_out.deviceid = deviceid; 11329 xcb_out.event_mode = event_mode; 11330 xcb_out.pad0 = 0; 11331 xcb_out.touchid = touchid; 11332 xcb_out.grab_window = grab_window; 11333 11334 xcb_parts[2].iov_base = (char *) &xcb_out; 11335 xcb_parts[2].iov_len = sizeof(xcb_out); 11336 xcb_parts[3].iov_base = 0; 11337 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11338 11339 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11340 return xcb_ret; 11341 } 11342 11343 xcb_void_cookie_t 11344 xcb_input_xi_allow_events (xcb_connection_t *c, 11345 xcb_timestamp_t time, 11346 xcb_input_device_id_t deviceid, 11347 uint8_t event_mode, 11348 uint32_t touchid, 11349 xcb_window_t grab_window) 11350 { 11351 static const xcb_protocol_request_t xcb_req = { 11352 .count = 2, 11353 .ext = &xcb_input_id, 11354 .opcode = XCB_INPUT_XI_ALLOW_EVENTS, 11355 .isvoid = 1 11356 }; 11357 11358 struct iovec xcb_parts[4]; 11359 xcb_void_cookie_t xcb_ret; 11360 xcb_input_xi_allow_events_request_t xcb_out; 11361 11362 xcb_out.time = time; 11363 xcb_out.deviceid = deviceid; 11364 xcb_out.event_mode = event_mode; 11365 xcb_out.pad0 = 0; 11366 xcb_out.touchid = touchid; 11367 xcb_out.grab_window = grab_window; 11368 11369 xcb_parts[2].iov_base = (char *) &xcb_out; 11370 xcb_parts[2].iov_len = sizeof(xcb_out); 11371 xcb_parts[3].iov_base = 0; 11372 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11373 11374 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11375 return xcb_ret; 11376 } 11377 11378 void 11379 xcb_input_grab_modifier_info_next (xcb_input_grab_modifier_info_iterator_t *i) 11380 { 11381 --i->rem; 11382 ++i->data; 11383 i->index += sizeof(xcb_input_grab_modifier_info_t); 11384 } 11385 11386 xcb_generic_iterator_t 11387 xcb_input_grab_modifier_info_end (xcb_input_grab_modifier_info_iterator_t i) 11388 { 11389 xcb_generic_iterator_t ret; 11390 ret.data = i.data + i.rem; 11391 ret.index = i.index + ((char *) ret.data - (char *) i.data); 11392 ret.rem = 0; 11393 return ret; 11394 } 11395 11396 int 11397 xcb_input_xi_passive_grab_device_sizeof (const void *_buffer) 11398 { 11399 char *xcb_tmp = (char *)_buffer; 11400 const xcb_input_xi_passive_grab_device_request_t *_aux = (xcb_input_xi_passive_grab_device_request_t *)_buffer; 11401 unsigned int xcb_buffer_len = 0; 11402 unsigned int xcb_block_len = 0; 11403 unsigned int xcb_pad = 0; 11404 unsigned int xcb_align_to = 0; 11405 11406 11407 xcb_block_len += sizeof(xcb_input_xi_passive_grab_device_request_t); 11408 xcb_tmp += xcb_block_len; 11409 xcb_buffer_len += xcb_block_len; 11410 xcb_block_len = 0; 11411 /* mask */ 11412 xcb_block_len += _aux->mask_len * sizeof(uint32_t); 11413 xcb_tmp += xcb_block_len; 11414 xcb_align_to = ALIGNOF(uint32_t); 11415 /* insert padding */ 11416 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 11417 xcb_buffer_len += xcb_block_len + xcb_pad; 11418 if (0 != xcb_pad) { 11419 xcb_tmp += xcb_pad; 11420 xcb_pad = 0; 11421 } 11422 xcb_block_len = 0; 11423 /* modifiers */ 11424 xcb_block_len += _aux->num_modifiers * sizeof(uint32_t); 11425 xcb_tmp += xcb_block_len; 11426 xcb_align_to = ALIGNOF(uint32_t); 11427 /* insert padding */ 11428 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 11429 xcb_buffer_len += xcb_block_len + xcb_pad; 11430 if (0 != xcb_pad) { 11431 xcb_tmp += xcb_pad; 11432 xcb_pad = 0; 11433 } 11434 xcb_block_len = 0; 11435 11436 return xcb_buffer_len; 11437 } 11438 11439 xcb_input_xi_passive_grab_device_cookie_t 11440 xcb_input_xi_passive_grab_device (xcb_connection_t *c, 11441 xcb_timestamp_t time, 11442 xcb_window_t grab_window, 11443 xcb_cursor_t cursor, 11444 uint32_t detail, 11445 xcb_input_device_id_t deviceid, 11446 uint16_t num_modifiers, 11447 uint16_t mask_len, 11448 uint8_t grab_type, 11449 uint8_t grab_mode, 11450 uint8_t paired_device_mode, 11451 uint8_t owner_events, 11452 const uint32_t *mask, 11453 const uint32_t *modifiers) 11454 { 11455 static const xcb_protocol_request_t xcb_req = { 11456 .count = 6, 11457 .ext = &xcb_input_id, 11458 .opcode = XCB_INPUT_XI_PASSIVE_GRAB_DEVICE, 11459 .isvoid = 0 11460 }; 11461 11462 struct iovec xcb_parts[8]; 11463 xcb_input_xi_passive_grab_device_cookie_t xcb_ret; 11464 xcb_input_xi_passive_grab_device_request_t xcb_out; 11465 11466 xcb_out.time = time; 11467 xcb_out.grab_window = grab_window; 11468 xcb_out.cursor = cursor; 11469 xcb_out.detail = detail; 11470 xcb_out.deviceid = deviceid; 11471 xcb_out.num_modifiers = num_modifiers; 11472 xcb_out.mask_len = mask_len; 11473 xcb_out.grab_type = grab_type; 11474 xcb_out.grab_mode = grab_mode; 11475 xcb_out.paired_device_mode = paired_device_mode; 11476 xcb_out.owner_events = owner_events; 11477 memset(xcb_out.pad0, 0, 2); 11478 11479 xcb_parts[2].iov_base = (char *) &xcb_out; 11480 xcb_parts[2].iov_len = sizeof(xcb_out); 11481 xcb_parts[3].iov_base = 0; 11482 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11483 /* uint32_t mask */ 11484 xcb_parts[4].iov_base = (char *) mask; 11485 xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); 11486 xcb_parts[5].iov_base = 0; 11487 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 11488 /* uint32_t modifiers */ 11489 xcb_parts[6].iov_base = (char *) modifiers; 11490 xcb_parts[6].iov_len = num_modifiers * sizeof(uint32_t); 11491 xcb_parts[7].iov_base = 0; 11492 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 11493 11494 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11495 return xcb_ret; 11496 } 11497 11498 xcb_input_xi_passive_grab_device_cookie_t 11499 xcb_input_xi_passive_grab_device_unchecked (xcb_connection_t *c, 11500 xcb_timestamp_t time, 11501 xcb_window_t grab_window, 11502 xcb_cursor_t cursor, 11503 uint32_t detail, 11504 xcb_input_device_id_t deviceid, 11505 uint16_t num_modifiers, 11506 uint16_t mask_len, 11507 uint8_t grab_type, 11508 uint8_t grab_mode, 11509 uint8_t paired_device_mode, 11510 uint8_t owner_events, 11511 const uint32_t *mask, 11512 const uint32_t *modifiers) 11513 { 11514 static const xcb_protocol_request_t xcb_req = { 11515 .count = 6, 11516 .ext = &xcb_input_id, 11517 .opcode = XCB_INPUT_XI_PASSIVE_GRAB_DEVICE, 11518 .isvoid = 0 11519 }; 11520 11521 struct iovec xcb_parts[8]; 11522 xcb_input_xi_passive_grab_device_cookie_t xcb_ret; 11523 xcb_input_xi_passive_grab_device_request_t xcb_out; 11524 11525 xcb_out.time = time; 11526 xcb_out.grab_window = grab_window; 11527 xcb_out.cursor = cursor; 11528 xcb_out.detail = detail; 11529 xcb_out.deviceid = deviceid; 11530 xcb_out.num_modifiers = num_modifiers; 11531 xcb_out.mask_len = mask_len; 11532 xcb_out.grab_type = grab_type; 11533 xcb_out.grab_mode = grab_mode; 11534 xcb_out.paired_device_mode = paired_device_mode; 11535 xcb_out.owner_events = owner_events; 11536 memset(xcb_out.pad0, 0, 2); 11537 11538 xcb_parts[2].iov_base = (char *) &xcb_out; 11539 xcb_parts[2].iov_len = sizeof(xcb_out); 11540 xcb_parts[3].iov_base = 0; 11541 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11542 /* uint32_t mask */ 11543 xcb_parts[4].iov_base = (char *) mask; 11544 xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); 11545 xcb_parts[5].iov_base = 0; 11546 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 11547 /* uint32_t modifiers */ 11548 xcb_parts[6].iov_base = (char *) modifiers; 11549 xcb_parts[6].iov_len = num_modifiers * sizeof(uint32_t); 11550 xcb_parts[7].iov_base = 0; 11551 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 11552 11553 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11554 return xcb_ret; 11555 } 11556 11557 xcb_input_grab_modifier_info_t * 11558 xcb_input_xi_passive_grab_device_modifiers (const xcb_input_xi_passive_grab_device_reply_t *R) 11559 { 11560 return (xcb_input_grab_modifier_info_t *) (R + 1); 11561 } 11562 11563 int 11564 xcb_input_xi_passive_grab_device_modifiers_length (const xcb_input_xi_passive_grab_device_reply_t *R) 11565 { 11566 return R->num_modifiers; 11567 } 11568 11569 xcb_input_grab_modifier_info_iterator_t 11570 xcb_input_xi_passive_grab_device_modifiers_iterator (const xcb_input_xi_passive_grab_device_reply_t *R) 11571 { 11572 xcb_input_grab_modifier_info_iterator_t i; 11573 i.data = (xcb_input_grab_modifier_info_t *) (R + 1); 11574 i.rem = R->num_modifiers; 11575 i.index = (char *) i.data - (char *) R; 11576 return i; 11577 } 11578 11579 xcb_input_xi_passive_grab_device_reply_t * 11580 xcb_input_xi_passive_grab_device_reply (xcb_connection_t *c, 11581 xcb_input_xi_passive_grab_device_cookie_t cookie /**< */, 11582 xcb_generic_error_t **e) 11583 { 11584 return (xcb_input_xi_passive_grab_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 11585 } 11586 11587 int 11588 xcb_input_xi_passive_ungrab_device_sizeof (const void *_buffer) 11589 { 11590 char *xcb_tmp = (char *)_buffer; 11591 const xcb_input_xi_passive_ungrab_device_request_t *_aux = (xcb_input_xi_passive_ungrab_device_request_t *)_buffer; 11592 unsigned int xcb_buffer_len = 0; 11593 unsigned int xcb_block_len = 0; 11594 unsigned int xcb_pad = 0; 11595 unsigned int xcb_align_to = 0; 11596 11597 11598 xcb_block_len += sizeof(xcb_input_xi_passive_ungrab_device_request_t); 11599 xcb_tmp += xcb_block_len; 11600 xcb_buffer_len += xcb_block_len; 11601 xcb_block_len = 0; 11602 /* modifiers */ 11603 xcb_block_len += _aux->num_modifiers * sizeof(uint32_t); 11604 xcb_tmp += xcb_block_len; 11605 xcb_align_to = ALIGNOF(uint32_t); 11606 /* insert padding */ 11607 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 11608 xcb_buffer_len += xcb_block_len + xcb_pad; 11609 if (0 != xcb_pad) { 11610 xcb_tmp += xcb_pad; 11611 xcb_pad = 0; 11612 } 11613 xcb_block_len = 0; 11614 11615 return xcb_buffer_len; 11616 } 11617 11618 xcb_void_cookie_t 11619 xcb_input_xi_passive_ungrab_device_checked (xcb_connection_t *c, 11620 xcb_window_t grab_window, 11621 uint32_t detail, 11622 xcb_input_device_id_t deviceid, 11623 uint16_t num_modifiers, 11624 uint8_t grab_type, 11625 const uint32_t *modifiers) 11626 { 11627 static const xcb_protocol_request_t xcb_req = { 11628 .count = 4, 11629 .ext = &xcb_input_id, 11630 .opcode = XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE, 11631 .isvoid = 1 11632 }; 11633 11634 struct iovec xcb_parts[6]; 11635 xcb_void_cookie_t xcb_ret; 11636 xcb_input_xi_passive_ungrab_device_request_t xcb_out; 11637 11638 xcb_out.grab_window = grab_window; 11639 xcb_out.detail = detail; 11640 xcb_out.deviceid = deviceid; 11641 xcb_out.num_modifiers = num_modifiers; 11642 xcb_out.grab_type = grab_type; 11643 memset(xcb_out.pad0, 0, 3); 11644 11645 xcb_parts[2].iov_base = (char *) &xcb_out; 11646 xcb_parts[2].iov_len = sizeof(xcb_out); 11647 xcb_parts[3].iov_base = 0; 11648 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11649 /* uint32_t modifiers */ 11650 xcb_parts[4].iov_base = (char *) modifiers; 11651 xcb_parts[4].iov_len = num_modifiers * sizeof(uint32_t); 11652 xcb_parts[5].iov_base = 0; 11653 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 11654 11655 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11656 return xcb_ret; 11657 } 11658 11659 xcb_void_cookie_t 11660 xcb_input_xi_passive_ungrab_device (xcb_connection_t *c, 11661 xcb_window_t grab_window, 11662 uint32_t detail, 11663 xcb_input_device_id_t deviceid, 11664 uint16_t num_modifiers, 11665 uint8_t grab_type, 11666 const uint32_t *modifiers) 11667 { 11668 static const xcb_protocol_request_t xcb_req = { 11669 .count = 4, 11670 .ext = &xcb_input_id, 11671 .opcode = XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE, 11672 .isvoid = 1 11673 }; 11674 11675 struct iovec xcb_parts[6]; 11676 xcb_void_cookie_t xcb_ret; 11677 xcb_input_xi_passive_ungrab_device_request_t xcb_out; 11678 11679 xcb_out.grab_window = grab_window; 11680 xcb_out.detail = detail; 11681 xcb_out.deviceid = deviceid; 11682 xcb_out.num_modifiers = num_modifiers; 11683 xcb_out.grab_type = grab_type; 11684 memset(xcb_out.pad0, 0, 3); 11685 11686 xcb_parts[2].iov_base = (char *) &xcb_out; 11687 xcb_parts[2].iov_len = sizeof(xcb_out); 11688 xcb_parts[3].iov_base = 0; 11689 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11690 /* uint32_t modifiers */ 11691 xcb_parts[4].iov_base = (char *) modifiers; 11692 xcb_parts[4].iov_len = num_modifiers * sizeof(uint32_t); 11693 xcb_parts[5].iov_base = 0; 11694 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 11695 11696 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11697 return xcb_ret; 11698 } 11699 11700 uint32_t * 11701 xcb_input_xi_passive_ungrab_device_modifiers (const xcb_input_xi_passive_ungrab_device_request_t *R) 11702 { 11703 return (uint32_t *) (R + 1); 11704 } 11705 11706 int 11707 xcb_input_xi_passive_ungrab_device_modifiers_length (const xcb_input_xi_passive_ungrab_device_request_t *R) 11708 { 11709 return R->num_modifiers; 11710 } 11711 11712 xcb_generic_iterator_t 11713 xcb_input_xi_passive_ungrab_device_modifiers_end (const xcb_input_xi_passive_ungrab_device_request_t *R) 11714 { 11715 xcb_generic_iterator_t i; 11716 i.data = ((uint32_t *) (R + 1)) + (R->num_modifiers); 11717 i.rem = 0; 11718 i.index = (char *) i.data - (char *) R; 11719 return i; 11720 } 11721 11722 int 11723 xcb_input_xi_list_properties_sizeof (const void *_buffer) 11724 { 11725 char *xcb_tmp = (char *)_buffer; 11726 const xcb_input_xi_list_properties_reply_t *_aux = (xcb_input_xi_list_properties_reply_t *)_buffer; 11727 unsigned int xcb_buffer_len = 0; 11728 unsigned int xcb_block_len = 0; 11729 unsigned int xcb_pad = 0; 11730 unsigned int xcb_align_to = 0; 11731 11732 11733 xcb_block_len += sizeof(xcb_input_xi_list_properties_reply_t); 11734 xcb_tmp += xcb_block_len; 11735 xcb_buffer_len += xcb_block_len; 11736 xcb_block_len = 0; 11737 /* properties */ 11738 xcb_block_len += _aux->num_properties * sizeof(xcb_atom_t); 11739 xcb_tmp += xcb_block_len; 11740 xcb_align_to = ALIGNOF(xcb_atom_t); 11741 /* insert padding */ 11742 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 11743 xcb_buffer_len += xcb_block_len + xcb_pad; 11744 if (0 != xcb_pad) { 11745 xcb_tmp += xcb_pad; 11746 xcb_pad = 0; 11747 } 11748 xcb_block_len = 0; 11749 11750 return xcb_buffer_len; 11751 } 11752 11753 xcb_input_xi_list_properties_cookie_t 11754 xcb_input_xi_list_properties (xcb_connection_t *c, 11755 xcb_input_device_id_t deviceid) 11756 { 11757 static const xcb_protocol_request_t xcb_req = { 11758 .count = 2, 11759 .ext = &xcb_input_id, 11760 .opcode = XCB_INPUT_XI_LIST_PROPERTIES, 11761 .isvoid = 0 11762 }; 11763 11764 struct iovec xcb_parts[4]; 11765 xcb_input_xi_list_properties_cookie_t xcb_ret; 11766 xcb_input_xi_list_properties_request_t xcb_out; 11767 11768 xcb_out.deviceid = deviceid; 11769 memset(xcb_out.pad0, 0, 2); 11770 11771 xcb_parts[2].iov_base = (char *) &xcb_out; 11772 xcb_parts[2].iov_len = sizeof(xcb_out); 11773 xcb_parts[3].iov_base = 0; 11774 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11775 11776 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 11777 return xcb_ret; 11778 } 11779 11780 xcb_input_xi_list_properties_cookie_t 11781 xcb_input_xi_list_properties_unchecked (xcb_connection_t *c, 11782 xcb_input_device_id_t deviceid) 11783 { 11784 static const xcb_protocol_request_t xcb_req = { 11785 .count = 2, 11786 .ext = &xcb_input_id, 11787 .opcode = XCB_INPUT_XI_LIST_PROPERTIES, 11788 .isvoid = 0 11789 }; 11790 11791 struct iovec xcb_parts[4]; 11792 xcb_input_xi_list_properties_cookie_t xcb_ret; 11793 xcb_input_xi_list_properties_request_t xcb_out; 11794 11795 xcb_out.deviceid = deviceid; 11796 memset(xcb_out.pad0, 0, 2); 11797 11798 xcb_parts[2].iov_base = (char *) &xcb_out; 11799 xcb_parts[2].iov_len = sizeof(xcb_out); 11800 xcb_parts[3].iov_base = 0; 11801 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 11802 11803 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 11804 return xcb_ret; 11805 } 11806 11807 xcb_atom_t * 11808 xcb_input_xi_list_properties_properties (const xcb_input_xi_list_properties_reply_t *R) 11809 { 11810 return (xcb_atom_t *) (R + 1); 11811 } 11812 11813 int 11814 xcb_input_xi_list_properties_properties_length (const xcb_input_xi_list_properties_reply_t *R) 11815 { 11816 return R->num_properties; 11817 } 11818 11819 xcb_generic_iterator_t 11820 xcb_input_xi_list_properties_properties_end (const xcb_input_xi_list_properties_reply_t *R) 11821 { 11822 xcb_generic_iterator_t i; 11823 i.data = ((xcb_atom_t *) (R + 1)) + (R->num_properties); 11824 i.rem = 0; 11825 i.index = (char *) i.data - (char *) R; 11826 return i; 11827 } 11828 11829 xcb_input_xi_list_properties_reply_t * 11830 xcb_input_xi_list_properties_reply (xcb_connection_t *c, 11831 xcb_input_xi_list_properties_cookie_t cookie /**< */, 11832 xcb_generic_error_t **e) 11833 { 11834 return (xcb_input_xi_list_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 11835 } 11836 11837 uint8_t * 11838 xcb_input_xi_change_property_items_data_8 (const xcb_input_xi_change_property_items_t *S) 11839 { 11840 return S->data8; 11841 } 11842 11843 int 11844 xcb_input_xi_change_property_items_data_8_length (const xcb_input_xi_change_property_request_t *R, 11845 const xcb_input_xi_change_property_items_t *S) 11846 { 11847 return R->num_items; 11848 } 11849 11850 xcb_generic_iterator_t 11851 xcb_input_xi_change_property_items_data_8_end (const xcb_input_xi_change_property_request_t *R, 11852 const xcb_input_xi_change_property_items_t *S) 11853 { 11854 xcb_generic_iterator_t i; 11855 i.data = S->data8 + R->num_items; 11856 i.rem = 0; 11857 i.index = (char *) i.data - (char *) S; 11858 return i; 11859 } 11860 11861 uint16_t * 11862 xcb_input_xi_change_property_items_data_16 (const xcb_input_xi_change_property_items_t *S) 11863 { 11864 return S->data16; 11865 } 11866 11867 int 11868 xcb_input_xi_change_property_items_data_16_length (const xcb_input_xi_change_property_request_t *R, 11869 const xcb_input_xi_change_property_items_t *S) 11870 { 11871 return R->num_items; 11872 } 11873 11874 xcb_generic_iterator_t 11875 xcb_input_xi_change_property_items_data_16_end (const xcb_input_xi_change_property_request_t *R, 11876 const xcb_input_xi_change_property_items_t *S) 11877 { 11878 xcb_generic_iterator_t i; 11879 i.data = S->data16 + R->num_items; 11880 i.rem = 0; 11881 i.index = (char *) i.data - (char *) S; 11882 return i; 11883 } 11884 11885 uint32_t * 11886 xcb_input_xi_change_property_items_data_32 (const xcb_input_xi_change_property_items_t *S) 11887 { 11888 return S->data32; 11889 } 11890 11891 int 11892 xcb_input_xi_change_property_items_data_32_length (const xcb_input_xi_change_property_request_t *R, 11893 const xcb_input_xi_change_property_items_t *S) 11894 { 11895 return R->num_items; 11896 } 11897 11898 xcb_generic_iterator_t 11899 xcb_input_xi_change_property_items_data_32_end (const xcb_input_xi_change_property_request_t *R, 11900 const xcb_input_xi_change_property_items_t *S) 11901 { 11902 xcb_generic_iterator_t i; 11903 i.data = S->data32 + R->num_items; 11904 i.rem = 0; 11905 i.index = (char *) i.data - (char *) S; 11906 return i; 11907 } 11908 11909 int 11910 xcb_input_xi_change_property_items_serialize (void **_buffer, 11911 uint32_t num_items, 11912 uint8_t format, 11913 const xcb_input_xi_change_property_items_t *_aux) 11914 { 11915 char *xcb_out = *_buffer; 11916 unsigned int xcb_buffer_len = 0; 11917 unsigned int xcb_align_to = 0; 11918 unsigned int xcb_padding_offset = 0; 11919 11920 unsigned int xcb_pad = 0; 11921 char xcb_pad0[3] = {0, 0, 0}; 11922 struct iovec xcb_parts[9]; 11923 unsigned int xcb_parts_idx = 0; 11924 unsigned int xcb_block_len = 0; 11925 unsigned int i; 11926 char *xcb_tmp; 11927 11928 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 11929 /* insert padding */ 11930 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 11931 xcb_buffer_len += xcb_block_len + xcb_pad; 11932 if (0 != xcb_pad) { 11933 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 11934 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 11935 xcb_parts_idx++; 11936 xcb_pad = 0; 11937 } 11938 xcb_block_len = 0; 11939 xcb_padding_offset = 0; 11940 /* data8 */ 11941 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; 11942 xcb_block_len += num_items * sizeof(uint8_t); 11943 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); 11944 xcb_parts_idx++; 11945 xcb_align_to = ALIGNOF(uint8_t); 11946 xcb_align_to = 4; 11947 /* insert padding */ 11948 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 11949 xcb_buffer_len += xcb_block_len + xcb_pad; 11950 if (0 != xcb_pad) { 11951 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 11952 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 11953 xcb_parts_idx++; 11954 xcb_pad = 0; 11955 } 11956 xcb_block_len = 0; 11957 xcb_padding_offset = 0; 11958 } 11959 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 11960 /* insert padding */ 11961 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 11962 xcb_buffer_len += xcb_block_len + xcb_pad; 11963 if (0 != xcb_pad) { 11964 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 11965 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 11966 xcb_parts_idx++; 11967 xcb_pad = 0; 11968 } 11969 xcb_block_len = 0; 11970 xcb_padding_offset = 0; 11971 /* data16 */ 11972 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; 11973 xcb_block_len += num_items * sizeof(uint16_t); 11974 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); 11975 xcb_parts_idx++; 11976 xcb_align_to = ALIGNOF(uint16_t); 11977 xcb_align_to = 4; 11978 /* insert padding */ 11979 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 11980 xcb_buffer_len += xcb_block_len + xcb_pad; 11981 if (0 != xcb_pad) { 11982 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 11983 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 11984 xcb_parts_idx++; 11985 xcb_pad = 0; 11986 } 11987 xcb_block_len = 0; 11988 xcb_padding_offset = 0; 11989 } 11990 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 11991 /* insert padding */ 11992 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 11993 xcb_buffer_len += xcb_block_len + xcb_pad; 11994 if (0 != xcb_pad) { 11995 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 11996 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 11997 xcb_parts_idx++; 11998 xcb_pad = 0; 11999 } 12000 xcb_block_len = 0; 12001 xcb_padding_offset = 0; 12002 /* data32 */ 12003 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; 12004 xcb_block_len += num_items * sizeof(uint32_t); 12005 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); 12006 xcb_parts_idx++; 12007 xcb_align_to = ALIGNOF(uint32_t); 12008 } 12009 /* insert padding */ 12010 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12011 xcb_buffer_len += xcb_block_len + xcb_pad; 12012 if (0 != xcb_pad) { 12013 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12014 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12015 xcb_parts_idx++; 12016 xcb_pad = 0; 12017 } 12018 xcb_block_len = 0; 12019 xcb_padding_offset = 0; 12020 12021 if (NULL == xcb_out) { 12022 /* allocate memory */ 12023 xcb_out = malloc(xcb_buffer_len); 12024 *_buffer = xcb_out; 12025 } 12026 12027 xcb_tmp = xcb_out; 12028 for(i=0; i<xcb_parts_idx; i++) { 12029 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 12030 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 12031 if (0 != xcb_parts[i].iov_len) 12032 xcb_tmp += xcb_parts[i].iov_len; 12033 } 12034 12035 return xcb_buffer_len; 12036 } 12037 12038 int 12039 xcb_input_xi_change_property_items_unpack (const void *_buffer, 12040 uint32_t num_items, 12041 uint8_t format, 12042 xcb_input_xi_change_property_items_t *_aux) 12043 { 12044 char *xcb_tmp = (char *)_buffer; 12045 unsigned int xcb_buffer_len = 0; 12046 unsigned int xcb_block_len = 0; 12047 unsigned int xcb_pad = 0; 12048 unsigned int xcb_align_to = 0; 12049 unsigned int xcb_padding_offset = 0; 12050 12051 12052 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 12053 /* insert padding */ 12054 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12055 xcb_buffer_len += xcb_block_len + xcb_pad; 12056 if (0 != xcb_pad) { 12057 xcb_tmp += xcb_pad; 12058 xcb_pad = 0; 12059 } 12060 xcb_block_len = 0; 12061 xcb_padding_offset = 0; 12062 /* data8 */ 12063 _aux->data8 = (uint8_t *)xcb_tmp; 12064 xcb_block_len += num_items * sizeof(uint8_t); 12065 xcb_tmp += xcb_block_len; 12066 xcb_align_to = ALIGNOF(uint8_t); 12067 xcb_align_to = 4; 12068 /* insert padding */ 12069 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12070 xcb_buffer_len += xcb_block_len + xcb_pad; 12071 if (0 != xcb_pad) { 12072 xcb_tmp += xcb_pad; 12073 xcb_pad = 0; 12074 } 12075 xcb_block_len = 0; 12076 xcb_padding_offset = 0; 12077 } 12078 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 12079 /* insert padding */ 12080 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12081 xcb_buffer_len += xcb_block_len + xcb_pad; 12082 if (0 != xcb_pad) { 12083 xcb_tmp += xcb_pad; 12084 xcb_pad = 0; 12085 } 12086 xcb_block_len = 0; 12087 xcb_padding_offset = 0; 12088 /* data16 */ 12089 _aux->data16 = (uint16_t *)xcb_tmp; 12090 xcb_block_len += num_items * sizeof(uint16_t); 12091 xcb_tmp += xcb_block_len; 12092 xcb_align_to = ALIGNOF(uint16_t); 12093 xcb_align_to = 4; 12094 /* insert padding */ 12095 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12096 xcb_buffer_len += xcb_block_len + xcb_pad; 12097 if (0 != xcb_pad) { 12098 xcb_tmp += xcb_pad; 12099 xcb_pad = 0; 12100 } 12101 xcb_block_len = 0; 12102 xcb_padding_offset = 0; 12103 } 12104 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 12105 /* insert padding */ 12106 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12107 xcb_buffer_len += xcb_block_len + xcb_pad; 12108 if (0 != xcb_pad) { 12109 xcb_tmp += xcb_pad; 12110 xcb_pad = 0; 12111 } 12112 xcb_block_len = 0; 12113 xcb_padding_offset = 0; 12114 /* data32 */ 12115 _aux->data32 = (uint32_t *)xcb_tmp; 12116 xcb_block_len += num_items * sizeof(uint32_t); 12117 xcb_tmp += xcb_block_len; 12118 xcb_align_to = ALIGNOF(uint32_t); 12119 } 12120 /* insert padding */ 12121 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12122 xcb_buffer_len += xcb_block_len + xcb_pad; 12123 if (0 != xcb_pad) { 12124 xcb_tmp += xcb_pad; 12125 xcb_pad = 0; 12126 } 12127 xcb_block_len = 0; 12128 xcb_padding_offset = 0; 12129 12130 return xcb_buffer_len; 12131 } 12132 12133 int 12134 xcb_input_xi_change_property_items_sizeof (const void *_buffer, 12135 uint32_t num_items, 12136 uint8_t format) 12137 { 12138 xcb_input_xi_change_property_items_t _aux; 12139 return xcb_input_xi_change_property_items_unpack(_buffer, num_items, format, &_aux); 12140 } 12141 12142 int 12143 xcb_input_xi_change_property_sizeof (const void *_buffer) 12144 { 12145 char *xcb_tmp = (char *)_buffer; 12146 const xcb_input_xi_change_property_request_t *_aux = (xcb_input_xi_change_property_request_t *)_buffer; 12147 unsigned int xcb_buffer_len = 0; 12148 unsigned int xcb_block_len = 0; 12149 unsigned int xcb_pad = 0; 12150 unsigned int xcb_align_to = 0; 12151 12152 12153 xcb_block_len += sizeof(xcb_input_xi_change_property_request_t); 12154 xcb_tmp += xcb_block_len; 12155 xcb_buffer_len += xcb_block_len; 12156 xcb_block_len = 0; 12157 /* items */ 12158 xcb_block_len += xcb_input_xi_change_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); 12159 xcb_tmp += xcb_block_len; 12160 xcb_align_to = ALIGNOF(char); 12161 /* insert padding */ 12162 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 12163 xcb_buffer_len += xcb_block_len + xcb_pad; 12164 if (0 != xcb_pad) { 12165 xcb_tmp += xcb_pad; 12166 xcb_pad = 0; 12167 } 12168 xcb_block_len = 0; 12169 12170 return xcb_buffer_len; 12171 } 12172 12173 xcb_void_cookie_t 12174 xcb_input_xi_change_property_checked (xcb_connection_t *c, 12175 xcb_input_device_id_t deviceid, 12176 uint8_t mode, 12177 uint8_t format, 12178 xcb_atom_t property, 12179 xcb_atom_t type, 12180 uint32_t num_items, 12181 const void *items) 12182 { 12183 static const xcb_protocol_request_t xcb_req = { 12184 .count = 3, 12185 .ext = &xcb_input_id, 12186 .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, 12187 .isvoid = 1 12188 }; 12189 12190 struct iovec xcb_parts[5]; 12191 xcb_void_cookie_t xcb_ret; 12192 xcb_input_xi_change_property_request_t xcb_out; 12193 12194 xcb_out.deviceid = deviceid; 12195 xcb_out.mode = mode; 12196 xcb_out.format = format; 12197 xcb_out.property = property; 12198 xcb_out.type = type; 12199 xcb_out.num_items = num_items; 12200 12201 xcb_parts[2].iov_base = (char *) &xcb_out; 12202 xcb_parts[2].iov_len = sizeof(xcb_out); 12203 xcb_parts[3].iov_base = 0; 12204 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12205 /* xcb_input_xi_change_property_items_t items */ 12206 xcb_parts[4].iov_base = (char *) items; 12207 xcb_parts[4].iov_len = 12208 xcb_input_xi_change_property_items_sizeof (items, num_items, format); 12209 12210 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 12211 return xcb_ret; 12212 } 12213 12214 xcb_void_cookie_t 12215 xcb_input_xi_change_property (xcb_connection_t *c, 12216 xcb_input_device_id_t deviceid, 12217 uint8_t mode, 12218 uint8_t format, 12219 xcb_atom_t property, 12220 xcb_atom_t type, 12221 uint32_t num_items, 12222 const void *items) 12223 { 12224 static const xcb_protocol_request_t xcb_req = { 12225 .count = 3, 12226 .ext = &xcb_input_id, 12227 .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, 12228 .isvoid = 1 12229 }; 12230 12231 struct iovec xcb_parts[5]; 12232 xcb_void_cookie_t xcb_ret; 12233 xcb_input_xi_change_property_request_t xcb_out; 12234 12235 xcb_out.deviceid = deviceid; 12236 xcb_out.mode = mode; 12237 xcb_out.format = format; 12238 xcb_out.property = property; 12239 xcb_out.type = type; 12240 xcb_out.num_items = num_items; 12241 12242 xcb_parts[2].iov_base = (char *) &xcb_out; 12243 xcb_parts[2].iov_len = sizeof(xcb_out); 12244 xcb_parts[3].iov_base = 0; 12245 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12246 /* xcb_input_xi_change_property_items_t items */ 12247 xcb_parts[4].iov_base = (char *) items; 12248 xcb_parts[4].iov_len = 12249 xcb_input_xi_change_property_items_sizeof (items, num_items, format); 12250 12251 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 12252 return xcb_ret; 12253 } 12254 12255 xcb_void_cookie_t 12256 xcb_input_xi_change_property_aux_checked (xcb_connection_t *c, 12257 xcb_input_device_id_t deviceid, 12258 uint8_t mode, 12259 uint8_t format, 12260 xcb_atom_t property, 12261 xcb_atom_t type, 12262 uint32_t num_items, 12263 const xcb_input_xi_change_property_items_t *items) 12264 { 12265 static const xcb_protocol_request_t xcb_req = { 12266 .count = 3, 12267 .ext = &xcb_input_id, 12268 .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, 12269 .isvoid = 1 12270 }; 12271 12272 struct iovec xcb_parts[5]; 12273 xcb_void_cookie_t xcb_ret; 12274 xcb_input_xi_change_property_request_t xcb_out; 12275 void *xcb_aux0 = 0; 12276 12277 xcb_out.deviceid = deviceid; 12278 xcb_out.mode = mode; 12279 xcb_out.format = format; 12280 xcb_out.property = property; 12281 xcb_out.type = type; 12282 xcb_out.num_items = num_items; 12283 12284 xcb_parts[2].iov_base = (char *) &xcb_out; 12285 xcb_parts[2].iov_len = sizeof(xcb_out); 12286 xcb_parts[3].iov_base = 0; 12287 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12288 /* xcb_input_xi_change_property_items_t items */ 12289 xcb_parts[4].iov_len = 12290 xcb_input_xi_change_property_items_serialize (&xcb_aux0, num_items, format, items); 12291 xcb_parts[4].iov_base = xcb_aux0; 12292 12293 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 12294 free(xcb_aux0); 12295 return xcb_ret; 12296 } 12297 12298 xcb_void_cookie_t 12299 xcb_input_xi_change_property_aux (xcb_connection_t *c, 12300 xcb_input_device_id_t deviceid, 12301 uint8_t mode, 12302 uint8_t format, 12303 xcb_atom_t property, 12304 xcb_atom_t type, 12305 uint32_t num_items, 12306 const xcb_input_xi_change_property_items_t *items) 12307 { 12308 static const xcb_protocol_request_t xcb_req = { 12309 .count = 3, 12310 .ext = &xcb_input_id, 12311 .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, 12312 .isvoid = 1 12313 }; 12314 12315 struct iovec xcb_parts[5]; 12316 xcb_void_cookie_t xcb_ret; 12317 xcb_input_xi_change_property_request_t xcb_out; 12318 void *xcb_aux0 = 0; 12319 12320 xcb_out.deviceid = deviceid; 12321 xcb_out.mode = mode; 12322 xcb_out.format = format; 12323 xcb_out.property = property; 12324 xcb_out.type = type; 12325 xcb_out.num_items = num_items; 12326 12327 xcb_parts[2].iov_base = (char *) &xcb_out; 12328 xcb_parts[2].iov_len = sizeof(xcb_out); 12329 xcb_parts[3].iov_base = 0; 12330 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12331 /* xcb_input_xi_change_property_items_t items */ 12332 xcb_parts[4].iov_len = 12333 xcb_input_xi_change_property_items_serialize (&xcb_aux0, num_items, format, items); 12334 xcb_parts[4].iov_base = xcb_aux0; 12335 12336 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 12337 free(xcb_aux0); 12338 return xcb_ret; 12339 } 12340 12341 void * 12342 xcb_input_xi_change_property_items (const xcb_input_xi_change_property_request_t *R) 12343 { 12344 return (void *) (R + 1); 12345 } 12346 12347 xcb_void_cookie_t 12348 xcb_input_xi_delete_property_checked (xcb_connection_t *c, 12349 xcb_input_device_id_t deviceid, 12350 xcb_atom_t property) 12351 { 12352 static const xcb_protocol_request_t xcb_req = { 12353 .count = 2, 12354 .ext = &xcb_input_id, 12355 .opcode = XCB_INPUT_XI_DELETE_PROPERTY, 12356 .isvoid = 1 12357 }; 12358 12359 struct iovec xcb_parts[4]; 12360 xcb_void_cookie_t xcb_ret; 12361 xcb_input_xi_delete_property_request_t xcb_out; 12362 12363 xcb_out.deviceid = deviceid; 12364 memset(xcb_out.pad0, 0, 2); 12365 xcb_out.property = property; 12366 12367 xcb_parts[2].iov_base = (char *) &xcb_out; 12368 xcb_parts[2].iov_len = sizeof(xcb_out); 12369 xcb_parts[3].iov_base = 0; 12370 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12371 12372 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 12373 return xcb_ret; 12374 } 12375 12376 xcb_void_cookie_t 12377 xcb_input_xi_delete_property (xcb_connection_t *c, 12378 xcb_input_device_id_t deviceid, 12379 xcb_atom_t property) 12380 { 12381 static const xcb_protocol_request_t xcb_req = { 12382 .count = 2, 12383 .ext = &xcb_input_id, 12384 .opcode = XCB_INPUT_XI_DELETE_PROPERTY, 12385 .isvoid = 1 12386 }; 12387 12388 struct iovec xcb_parts[4]; 12389 xcb_void_cookie_t xcb_ret; 12390 xcb_input_xi_delete_property_request_t xcb_out; 12391 12392 xcb_out.deviceid = deviceid; 12393 memset(xcb_out.pad0, 0, 2); 12394 xcb_out.property = property; 12395 12396 xcb_parts[2].iov_base = (char *) &xcb_out; 12397 xcb_parts[2].iov_len = sizeof(xcb_out); 12398 xcb_parts[3].iov_base = 0; 12399 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12400 12401 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 12402 return xcb_ret; 12403 } 12404 12405 uint8_t * 12406 xcb_input_xi_get_property_items_data_8 (const xcb_input_xi_get_property_items_t *S) 12407 { 12408 return S->data8; 12409 } 12410 12411 int 12412 xcb_input_xi_get_property_items_data_8_length (const xcb_input_xi_get_property_reply_t *R, 12413 const xcb_input_xi_get_property_items_t *S) 12414 { 12415 return R->num_items; 12416 } 12417 12418 xcb_generic_iterator_t 12419 xcb_input_xi_get_property_items_data_8_end (const xcb_input_xi_get_property_reply_t *R, 12420 const xcb_input_xi_get_property_items_t *S) 12421 { 12422 xcb_generic_iterator_t i; 12423 i.data = S->data8 + R->num_items; 12424 i.rem = 0; 12425 i.index = (char *) i.data - (char *) S; 12426 return i; 12427 } 12428 12429 uint16_t * 12430 xcb_input_xi_get_property_items_data_16 (const xcb_input_xi_get_property_items_t *S) 12431 { 12432 return S->data16; 12433 } 12434 12435 int 12436 xcb_input_xi_get_property_items_data_16_length (const xcb_input_xi_get_property_reply_t *R, 12437 const xcb_input_xi_get_property_items_t *S) 12438 { 12439 return R->num_items; 12440 } 12441 12442 xcb_generic_iterator_t 12443 xcb_input_xi_get_property_items_data_16_end (const xcb_input_xi_get_property_reply_t *R, 12444 const xcb_input_xi_get_property_items_t *S) 12445 { 12446 xcb_generic_iterator_t i; 12447 i.data = S->data16 + R->num_items; 12448 i.rem = 0; 12449 i.index = (char *) i.data - (char *) S; 12450 return i; 12451 } 12452 12453 uint32_t * 12454 xcb_input_xi_get_property_items_data_32 (const xcb_input_xi_get_property_items_t *S) 12455 { 12456 return S->data32; 12457 } 12458 12459 int 12460 xcb_input_xi_get_property_items_data_32_length (const xcb_input_xi_get_property_reply_t *R, 12461 const xcb_input_xi_get_property_items_t *S) 12462 { 12463 return R->num_items; 12464 } 12465 12466 xcb_generic_iterator_t 12467 xcb_input_xi_get_property_items_data_32_end (const xcb_input_xi_get_property_reply_t *R, 12468 const xcb_input_xi_get_property_items_t *S) 12469 { 12470 xcb_generic_iterator_t i; 12471 i.data = S->data32 + R->num_items; 12472 i.rem = 0; 12473 i.index = (char *) i.data - (char *) S; 12474 return i; 12475 } 12476 12477 int 12478 xcb_input_xi_get_property_items_serialize (void **_buffer, 12479 uint32_t num_items, 12480 uint8_t format, 12481 const xcb_input_xi_get_property_items_t *_aux) 12482 { 12483 char *xcb_out = *_buffer; 12484 unsigned int xcb_buffer_len = 0; 12485 unsigned int xcb_align_to = 0; 12486 unsigned int xcb_padding_offset = 0; 12487 12488 unsigned int xcb_pad = 0; 12489 char xcb_pad0[3] = {0, 0, 0}; 12490 struct iovec xcb_parts[9]; 12491 unsigned int xcb_parts_idx = 0; 12492 unsigned int xcb_block_len = 0; 12493 unsigned int i; 12494 char *xcb_tmp; 12495 12496 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 12497 /* insert padding */ 12498 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12499 xcb_buffer_len += xcb_block_len + xcb_pad; 12500 if (0 != xcb_pad) { 12501 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12502 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12503 xcb_parts_idx++; 12504 xcb_pad = 0; 12505 } 12506 xcb_block_len = 0; 12507 xcb_padding_offset = 0; 12508 /* data8 */ 12509 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; 12510 xcb_block_len += num_items * sizeof(uint8_t); 12511 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); 12512 xcb_parts_idx++; 12513 xcb_align_to = ALIGNOF(uint8_t); 12514 xcb_align_to = 4; 12515 /* insert padding */ 12516 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12517 xcb_buffer_len += xcb_block_len + xcb_pad; 12518 if (0 != xcb_pad) { 12519 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12520 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12521 xcb_parts_idx++; 12522 xcb_pad = 0; 12523 } 12524 xcb_block_len = 0; 12525 xcb_padding_offset = 0; 12526 } 12527 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 12528 /* insert padding */ 12529 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12530 xcb_buffer_len += xcb_block_len + xcb_pad; 12531 if (0 != xcb_pad) { 12532 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12533 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12534 xcb_parts_idx++; 12535 xcb_pad = 0; 12536 } 12537 xcb_block_len = 0; 12538 xcb_padding_offset = 0; 12539 /* data16 */ 12540 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; 12541 xcb_block_len += num_items * sizeof(uint16_t); 12542 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); 12543 xcb_parts_idx++; 12544 xcb_align_to = ALIGNOF(uint16_t); 12545 xcb_align_to = 4; 12546 /* insert padding */ 12547 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12548 xcb_buffer_len += xcb_block_len + xcb_pad; 12549 if (0 != xcb_pad) { 12550 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12551 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12552 xcb_parts_idx++; 12553 xcb_pad = 0; 12554 } 12555 xcb_block_len = 0; 12556 xcb_padding_offset = 0; 12557 } 12558 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 12559 /* insert padding */ 12560 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12561 xcb_buffer_len += xcb_block_len + xcb_pad; 12562 if (0 != xcb_pad) { 12563 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12564 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12565 xcb_parts_idx++; 12566 xcb_pad = 0; 12567 } 12568 xcb_block_len = 0; 12569 xcb_padding_offset = 0; 12570 /* data32 */ 12571 xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; 12572 xcb_block_len += num_items * sizeof(uint32_t); 12573 xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); 12574 xcb_parts_idx++; 12575 xcb_align_to = ALIGNOF(uint32_t); 12576 } 12577 /* insert padding */ 12578 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12579 xcb_buffer_len += xcb_block_len + xcb_pad; 12580 if (0 != xcb_pad) { 12581 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 12582 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 12583 xcb_parts_idx++; 12584 xcb_pad = 0; 12585 } 12586 xcb_block_len = 0; 12587 xcb_padding_offset = 0; 12588 12589 if (NULL == xcb_out) { 12590 /* allocate memory */ 12591 xcb_out = malloc(xcb_buffer_len); 12592 *_buffer = xcb_out; 12593 } 12594 12595 xcb_tmp = xcb_out; 12596 for(i=0; i<xcb_parts_idx; i++) { 12597 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 12598 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 12599 if (0 != xcb_parts[i].iov_len) 12600 xcb_tmp += xcb_parts[i].iov_len; 12601 } 12602 12603 return xcb_buffer_len; 12604 } 12605 12606 int 12607 xcb_input_xi_get_property_items_unpack (const void *_buffer, 12608 uint32_t num_items, 12609 uint8_t format, 12610 xcb_input_xi_get_property_items_t *_aux) 12611 { 12612 char *xcb_tmp = (char *)_buffer; 12613 unsigned int xcb_buffer_len = 0; 12614 unsigned int xcb_block_len = 0; 12615 unsigned int xcb_pad = 0; 12616 unsigned int xcb_align_to = 0; 12617 unsigned int xcb_padding_offset = 0; 12618 12619 12620 if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { 12621 /* insert padding */ 12622 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12623 xcb_buffer_len += xcb_block_len + xcb_pad; 12624 if (0 != xcb_pad) { 12625 xcb_tmp += xcb_pad; 12626 xcb_pad = 0; 12627 } 12628 xcb_block_len = 0; 12629 xcb_padding_offset = 0; 12630 /* data8 */ 12631 _aux->data8 = (uint8_t *)xcb_tmp; 12632 xcb_block_len += num_items * sizeof(uint8_t); 12633 xcb_tmp += xcb_block_len; 12634 xcb_align_to = ALIGNOF(uint8_t); 12635 xcb_align_to = 4; 12636 /* insert padding */ 12637 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12638 xcb_buffer_len += xcb_block_len + xcb_pad; 12639 if (0 != xcb_pad) { 12640 xcb_tmp += xcb_pad; 12641 xcb_pad = 0; 12642 } 12643 xcb_block_len = 0; 12644 xcb_padding_offset = 0; 12645 } 12646 if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { 12647 /* insert padding */ 12648 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12649 xcb_buffer_len += xcb_block_len + xcb_pad; 12650 if (0 != xcb_pad) { 12651 xcb_tmp += xcb_pad; 12652 xcb_pad = 0; 12653 } 12654 xcb_block_len = 0; 12655 xcb_padding_offset = 0; 12656 /* data16 */ 12657 _aux->data16 = (uint16_t *)xcb_tmp; 12658 xcb_block_len += num_items * sizeof(uint16_t); 12659 xcb_tmp += xcb_block_len; 12660 xcb_align_to = ALIGNOF(uint16_t); 12661 xcb_align_to = 4; 12662 /* insert padding */ 12663 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12664 xcb_buffer_len += xcb_block_len + xcb_pad; 12665 if (0 != xcb_pad) { 12666 xcb_tmp += xcb_pad; 12667 xcb_pad = 0; 12668 } 12669 xcb_block_len = 0; 12670 xcb_padding_offset = 0; 12671 } 12672 if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { 12673 /* insert padding */ 12674 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12675 xcb_buffer_len += xcb_block_len + xcb_pad; 12676 if (0 != xcb_pad) { 12677 xcb_tmp += xcb_pad; 12678 xcb_pad = 0; 12679 } 12680 xcb_block_len = 0; 12681 xcb_padding_offset = 0; 12682 /* data32 */ 12683 _aux->data32 = (uint32_t *)xcb_tmp; 12684 xcb_block_len += num_items * sizeof(uint32_t); 12685 xcb_tmp += xcb_block_len; 12686 xcb_align_to = ALIGNOF(uint32_t); 12687 } 12688 /* insert padding */ 12689 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 12690 xcb_buffer_len += xcb_block_len + xcb_pad; 12691 if (0 != xcb_pad) { 12692 xcb_tmp += xcb_pad; 12693 xcb_pad = 0; 12694 } 12695 xcb_block_len = 0; 12696 xcb_padding_offset = 0; 12697 12698 return xcb_buffer_len; 12699 } 12700 12701 int 12702 xcb_input_xi_get_property_items_sizeof (const void *_buffer, 12703 uint32_t num_items, 12704 uint8_t format) 12705 { 12706 xcb_input_xi_get_property_items_t _aux; 12707 return xcb_input_xi_get_property_items_unpack(_buffer, num_items, format, &_aux); 12708 } 12709 12710 int 12711 xcb_input_xi_get_property_sizeof (const void *_buffer) 12712 { 12713 char *xcb_tmp = (char *)_buffer; 12714 const xcb_input_xi_get_property_reply_t *_aux = (xcb_input_xi_get_property_reply_t *)_buffer; 12715 unsigned int xcb_buffer_len = 0; 12716 unsigned int xcb_block_len = 0; 12717 unsigned int xcb_pad = 0; 12718 unsigned int xcb_align_to = 0; 12719 12720 12721 xcb_block_len += sizeof(xcb_input_xi_get_property_reply_t); 12722 xcb_tmp += xcb_block_len; 12723 xcb_buffer_len += xcb_block_len; 12724 xcb_block_len = 0; 12725 /* items */ 12726 xcb_block_len += xcb_input_xi_get_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); 12727 xcb_tmp += xcb_block_len; 12728 xcb_align_to = ALIGNOF(char); 12729 /* insert padding */ 12730 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 12731 xcb_buffer_len += xcb_block_len + xcb_pad; 12732 if (0 != xcb_pad) { 12733 xcb_tmp += xcb_pad; 12734 xcb_pad = 0; 12735 } 12736 xcb_block_len = 0; 12737 12738 return xcb_buffer_len; 12739 } 12740 12741 xcb_input_xi_get_property_cookie_t 12742 xcb_input_xi_get_property (xcb_connection_t *c, 12743 xcb_input_device_id_t deviceid, 12744 uint8_t _delete, 12745 xcb_atom_t property, 12746 xcb_atom_t type, 12747 uint32_t offset, 12748 uint32_t len) 12749 { 12750 static const xcb_protocol_request_t xcb_req = { 12751 .count = 2, 12752 .ext = &xcb_input_id, 12753 .opcode = XCB_INPUT_XI_GET_PROPERTY, 12754 .isvoid = 0 12755 }; 12756 12757 struct iovec xcb_parts[4]; 12758 xcb_input_xi_get_property_cookie_t xcb_ret; 12759 xcb_input_xi_get_property_request_t xcb_out; 12760 12761 xcb_out.deviceid = deviceid; 12762 xcb_out._delete = _delete; 12763 xcb_out.pad0 = 0; 12764 xcb_out.property = property; 12765 xcb_out.type = type; 12766 xcb_out.offset = offset; 12767 xcb_out.len = len; 12768 12769 xcb_parts[2].iov_base = (char *) &xcb_out; 12770 xcb_parts[2].iov_len = sizeof(xcb_out); 12771 xcb_parts[3].iov_base = 0; 12772 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12773 12774 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 12775 return xcb_ret; 12776 } 12777 12778 xcb_input_xi_get_property_cookie_t 12779 xcb_input_xi_get_property_unchecked (xcb_connection_t *c, 12780 xcb_input_device_id_t deviceid, 12781 uint8_t _delete, 12782 xcb_atom_t property, 12783 xcb_atom_t type, 12784 uint32_t offset, 12785 uint32_t len) 12786 { 12787 static const xcb_protocol_request_t xcb_req = { 12788 .count = 2, 12789 .ext = &xcb_input_id, 12790 .opcode = XCB_INPUT_XI_GET_PROPERTY, 12791 .isvoid = 0 12792 }; 12793 12794 struct iovec xcb_parts[4]; 12795 xcb_input_xi_get_property_cookie_t xcb_ret; 12796 xcb_input_xi_get_property_request_t xcb_out; 12797 12798 xcb_out.deviceid = deviceid; 12799 xcb_out._delete = _delete; 12800 xcb_out.pad0 = 0; 12801 xcb_out.property = property; 12802 xcb_out.type = type; 12803 xcb_out.offset = offset; 12804 xcb_out.len = len; 12805 12806 xcb_parts[2].iov_base = (char *) &xcb_out; 12807 xcb_parts[2].iov_len = sizeof(xcb_out); 12808 xcb_parts[3].iov_base = 0; 12809 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12810 12811 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 12812 return xcb_ret; 12813 } 12814 12815 void * 12816 xcb_input_xi_get_property_items (const xcb_input_xi_get_property_reply_t *R) 12817 { 12818 return (void *) (R + 1); 12819 } 12820 12821 xcb_input_xi_get_property_reply_t * 12822 xcb_input_xi_get_property_reply (xcb_connection_t *c, 12823 xcb_input_xi_get_property_cookie_t cookie /**< */, 12824 xcb_generic_error_t **e) 12825 { 12826 return (xcb_input_xi_get_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 12827 } 12828 12829 int 12830 xcb_input_xi_get_selected_events_sizeof (const void *_buffer) 12831 { 12832 char *xcb_tmp = (char *)_buffer; 12833 const xcb_input_xi_get_selected_events_reply_t *_aux = (xcb_input_xi_get_selected_events_reply_t *)_buffer; 12834 unsigned int xcb_buffer_len = 0; 12835 unsigned int xcb_block_len = 0; 12836 unsigned int xcb_pad = 0; 12837 unsigned int xcb_align_to = 0; 12838 12839 unsigned int i; 12840 unsigned int xcb_tmp_len; 12841 12842 xcb_block_len += sizeof(xcb_input_xi_get_selected_events_reply_t); 12843 xcb_tmp += xcb_block_len; 12844 xcb_buffer_len += xcb_block_len; 12845 xcb_block_len = 0; 12846 /* masks */ 12847 for(i=0; i<_aux->num_masks; i++) { 12848 xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); 12849 xcb_block_len += xcb_tmp_len; 12850 xcb_tmp += xcb_tmp_len; 12851 } 12852 xcb_align_to = ALIGNOF(xcb_input_event_mask_t); 12853 /* insert padding */ 12854 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 12855 xcb_buffer_len += xcb_block_len + xcb_pad; 12856 if (0 != xcb_pad) { 12857 xcb_tmp += xcb_pad; 12858 xcb_pad = 0; 12859 } 12860 xcb_block_len = 0; 12861 12862 return xcb_buffer_len; 12863 } 12864 12865 xcb_input_xi_get_selected_events_cookie_t 12866 xcb_input_xi_get_selected_events (xcb_connection_t *c, 12867 xcb_window_t window) 12868 { 12869 static const xcb_protocol_request_t xcb_req = { 12870 .count = 2, 12871 .ext = &xcb_input_id, 12872 .opcode = XCB_INPUT_XI_GET_SELECTED_EVENTS, 12873 .isvoid = 0 12874 }; 12875 12876 struct iovec xcb_parts[4]; 12877 xcb_input_xi_get_selected_events_cookie_t xcb_ret; 12878 xcb_input_xi_get_selected_events_request_t xcb_out; 12879 12880 xcb_out.window = window; 12881 12882 xcb_parts[2].iov_base = (char *) &xcb_out; 12883 xcb_parts[2].iov_len = sizeof(xcb_out); 12884 xcb_parts[3].iov_base = 0; 12885 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12886 12887 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 12888 return xcb_ret; 12889 } 12890 12891 xcb_input_xi_get_selected_events_cookie_t 12892 xcb_input_xi_get_selected_events_unchecked (xcb_connection_t *c, 12893 xcb_window_t window) 12894 { 12895 static const xcb_protocol_request_t xcb_req = { 12896 .count = 2, 12897 .ext = &xcb_input_id, 12898 .opcode = XCB_INPUT_XI_GET_SELECTED_EVENTS, 12899 .isvoid = 0 12900 }; 12901 12902 struct iovec xcb_parts[4]; 12903 xcb_input_xi_get_selected_events_cookie_t xcb_ret; 12904 xcb_input_xi_get_selected_events_request_t xcb_out; 12905 12906 xcb_out.window = window; 12907 12908 xcb_parts[2].iov_base = (char *) &xcb_out; 12909 xcb_parts[2].iov_len = sizeof(xcb_out); 12910 xcb_parts[3].iov_base = 0; 12911 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 12912 12913 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 12914 return xcb_ret; 12915 } 12916 12917 int 12918 xcb_input_xi_get_selected_events_masks_length (const xcb_input_xi_get_selected_events_reply_t *R) 12919 { 12920 return R->num_masks; 12921 } 12922 12923 xcb_input_event_mask_iterator_t 12924 xcb_input_xi_get_selected_events_masks_iterator (const xcb_input_xi_get_selected_events_reply_t *R) 12925 { 12926 xcb_input_event_mask_iterator_t i; 12927 i.data = (xcb_input_event_mask_t *) (R + 1); 12928 i.rem = R->num_masks; 12929 i.index = (char *) i.data - (char *) R; 12930 return i; 12931 } 12932 12933 xcb_input_xi_get_selected_events_reply_t * 12934 xcb_input_xi_get_selected_events_reply (xcb_connection_t *c, 12935 xcb_input_xi_get_selected_events_cookie_t cookie /**< */, 12936 xcb_generic_error_t **e) 12937 { 12938 return (xcb_input_xi_get_selected_events_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 12939 } 12940 12941 void 12942 xcb_input_barrier_release_pointer_info_next (xcb_input_barrier_release_pointer_info_iterator_t *i) 12943 { 12944 --i->rem; 12945 ++i->data; 12946 i->index += sizeof(xcb_input_barrier_release_pointer_info_t); 12947 } 12948 12949 xcb_generic_iterator_t 12950 xcb_input_barrier_release_pointer_info_end (xcb_input_barrier_release_pointer_info_iterator_t i) 12951 { 12952 xcb_generic_iterator_t ret; 12953 ret.data = i.data + i.rem; 12954 ret.index = i.index + ((char *) ret.data - (char *) i.data); 12955 ret.rem = 0; 12956 return ret; 12957 } 12958 12959 int 12960 xcb_input_xi_barrier_release_pointer_sizeof (const void *_buffer) 12961 { 12962 char *xcb_tmp = (char *)_buffer; 12963 const xcb_input_xi_barrier_release_pointer_request_t *_aux = (xcb_input_xi_barrier_release_pointer_request_t *)_buffer; 12964 unsigned int xcb_buffer_len = 0; 12965 unsigned int xcb_block_len = 0; 12966 unsigned int xcb_pad = 0; 12967 unsigned int xcb_align_to = 0; 12968 12969 12970 xcb_block_len += sizeof(xcb_input_xi_barrier_release_pointer_request_t); 12971 xcb_tmp += xcb_block_len; 12972 xcb_buffer_len += xcb_block_len; 12973 xcb_block_len = 0; 12974 /* barriers */ 12975 xcb_block_len += _aux->num_barriers * sizeof(xcb_input_barrier_release_pointer_info_t); 12976 xcb_tmp += xcb_block_len; 12977 xcb_align_to = ALIGNOF(xcb_input_barrier_release_pointer_info_t); 12978 /* insert padding */ 12979 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 12980 xcb_buffer_len += xcb_block_len + xcb_pad; 12981 if (0 != xcb_pad) { 12982 xcb_tmp += xcb_pad; 12983 xcb_pad = 0; 12984 } 12985 xcb_block_len = 0; 12986 12987 return xcb_buffer_len; 12988 } 12989 12990 xcb_void_cookie_t 12991 xcb_input_xi_barrier_release_pointer_checked (xcb_connection_t *c, 12992 uint32_t num_barriers, 12993 const xcb_input_barrier_release_pointer_info_t *barriers) 12994 { 12995 static const xcb_protocol_request_t xcb_req = { 12996 .count = 4, 12997 .ext = &xcb_input_id, 12998 .opcode = XCB_INPUT_XI_BARRIER_RELEASE_POINTER, 12999 .isvoid = 1 13000 }; 13001 13002 struct iovec xcb_parts[6]; 13003 xcb_void_cookie_t xcb_ret; 13004 xcb_input_xi_barrier_release_pointer_request_t xcb_out; 13005 13006 xcb_out.num_barriers = num_barriers; 13007 13008 xcb_parts[2].iov_base = (char *) &xcb_out; 13009 xcb_parts[2].iov_len = sizeof(xcb_out); 13010 xcb_parts[3].iov_base = 0; 13011 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 13012 /* xcb_input_barrier_release_pointer_info_t barriers */ 13013 xcb_parts[4].iov_base = (char *) barriers; 13014 xcb_parts[4].iov_len = num_barriers * sizeof(xcb_input_barrier_release_pointer_info_t); 13015 xcb_parts[5].iov_base = 0; 13016 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 13017 13018 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 13019 return xcb_ret; 13020 } 13021 13022 xcb_void_cookie_t 13023 xcb_input_xi_barrier_release_pointer (xcb_connection_t *c, 13024 uint32_t num_barriers, 13025 const xcb_input_barrier_release_pointer_info_t *barriers) 13026 { 13027 static const xcb_protocol_request_t xcb_req = { 13028 .count = 4, 13029 .ext = &xcb_input_id, 13030 .opcode = XCB_INPUT_XI_BARRIER_RELEASE_POINTER, 13031 .isvoid = 1 13032 }; 13033 13034 struct iovec xcb_parts[6]; 13035 xcb_void_cookie_t xcb_ret; 13036 xcb_input_xi_barrier_release_pointer_request_t xcb_out; 13037 13038 xcb_out.num_barriers = num_barriers; 13039 13040 xcb_parts[2].iov_base = (char *) &xcb_out; 13041 xcb_parts[2].iov_len = sizeof(xcb_out); 13042 xcb_parts[3].iov_base = 0; 13043 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 13044 /* xcb_input_barrier_release_pointer_info_t barriers */ 13045 xcb_parts[4].iov_base = (char *) barriers; 13046 xcb_parts[4].iov_len = num_barriers * sizeof(xcb_input_barrier_release_pointer_info_t); 13047 xcb_parts[5].iov_base = 0; 13048 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 13049 13050 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 13051 return xcb_ret; 13052 } 13053 13054 xcb_input_barrier_release_pointer_info_t * 13055 xcb_input_xi_barrier_release_pointer_barriers (const xcb_input_xi_barrier_release_pointer_request_t *R) 13056 { 13057 return (xcb_input_barrier_release_pointer_info_t *) (R + 1); 13058 } 13059 13060 int 13061 xcb_input_xi_barrier_release_pointer_barriers_length (const xcb_input_xi_barrier_release_pointer_request_t *R) 13062 { 13063 return R->num_barriers; 13064 } 13065 13066 xcb_input_barrier_release_pointer_info_iterator_t 13067 xcb_input_xi_barrier_release_pointer_barriers_iterator (const xcb_input_xi_barrier_release_pointer_request_t *R) 13068 { 13069 xcb_input_barrier_release_pointer_info_iterator_t i; 13070 i.data = (xcb_input_barrier_release_pointer_info_t *) (R + 1); 13071 i.rem = R->num_barriers; 13072 i.index = (char *) i.data - (char *) R; 13073 return i; 13074 } 13075 13076 int 13077 xcb_input_device_changed_sizeof (const void *_buffer) 13078 { 13079 char *xcb_tmp = (char *)_buffer; 13080 const xcb_input_device_changed_event_t *_aux = (xcb_input_device_changed_event_t *)_buffer; 13081 unsigned int xcb_buffer_len = 0; 13082 unsigned int xcb_block_len = 0; 13083 unsigned int xcb_pad = 0; 13084 unsigned int xcb_align_to = 0; 13085 13086 unsigned int i; 13087 unsigned int xcb_tmp_len; 13088 13089 xcb_block_len += sizeof(xcb_input_device_changed_event_t); 13090 xcb_tmp += xcb_block_len; 13091 xcb_buffer_len += xcb_block_len; 13092 xcb_block_len = 0; 13093 /* classes */ 13094 for(i=0; i<_aux->num_classes; i++) { 13095 xcb_tmp_len = xcb_input_device_class_sizeof(xcb_tmp); 13096 xcb_block_len += xcb_tmp_len; 13097 xcb_tmp += xcb_tmp_len; 13098 } 13099 xcb_align_to = ALIGNOF(xcb_input_device_class_t); 13100 /* insert padding */ 13101 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13102 xcb_buffer_len += xcb_block_len + xcb_pad; 13103 if (0 != xcb_pad) { 13104 xcb_tmp += xcb_pad; 13105 xcb_pad = 0; 13106 } 13107 xcb_block_len = 0; 13108 13109 return xcb_buffer_len; 13110 } 13111 13112 int 13113 xcb_input_device_changed_classes_length (const xcb_input_device_changed_event_t *R) 13114 { 13115 return R->num_classes; 13116 } 13117 13118 xcb_input_device_class_iterator_t 13119 xcb_input_device_changed_classes_iterator (const xcb_input_device_changed_event_t *R) 13120 { 13121 xcb_input_device_class_iterator_t i; 13122 i.data = (xcb_input_device_class_t *) (R + 1); 13123 i.rem = R->num_classes; 13124 i.index = (char *) i.data - (char *) R; 13125 return i; 13126 } 13127 13128 int 13129 xcb_input_key_press_sizeof (const void *_buffer) 13130 { 13131 char *xcb_tmp = (char *)_buffer; 13132 const xcb_input_key_press_event_t *_aux = (xcb_input_key_press_event_t *)_buffer; 13133 unsigned int xcb_buffer_len = 0; 13134 unsigned int xcb_block_len = 0; 13135 unsigned int xcb_pad = 0; 13136 unsigned int xcb_align_to = 0; 13137 13138 int xcb_pre_tmp_1; /* sumof length */ 13139 int xcb_pre_tmp_2; /* sumof loop counter */ 13140 int64_t xcb_pre_tmp_3; /* sumof sum */ 13141 const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ 13142 13143 xcb_block_len += sizeof(xcb_input_key_press_event_t); 13144 xcb_tmp += xcb_block_len; 13145 xcb_buffer_len += xcb_block_len; 13146 xcb_block_len = 0; 13147 /* button_mask */ 13148 xcb_block_len += _aux->buttons_len * sizeof(uint32_t); 13149 xcb_tmp += xcb_block_len; 13150 xcb_align_to = ALIGNOF(uint32_t); 13151 /* insert padding */ 13152 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13153 xcb_buffer_len += xcb_block_len + xcb_pad; 13154 if (0 != xcb_pad) { 13155 xcb_tmp += xcb_pad; 13156 xcb_pad = 0; 13157 } 13158 xcb_block_len = 0; 13159 /* valuator_mask */ 13160 xcb_block_len += _aux->valuators_len * sizeof(uint32_t); 13161 xcb_tmp += xcb_block_len; 13162 xcb_align_to = ALIGNOF(uint32_t); 13163 /* insert padding */ 13164 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13165 xcb_buffer_len += xcb_block_len + xcb_pad; 13166 if (0 != xcb_pad) { 13167 xcb_tmp += xcb_pad; 13168 xcb_pad = 0; 13169 } 13170 xcb_block_len = 0; 13171 /* axisvalues */ 13172 /* sumof start */ 13173 xcb_pre_tmp_1 = _aux->valuators_len; 13174 xcb_pre_tmp_3 = 0; 13175 xcb_pre_tmp_4 = xcb_input_key_press_valuator_mask(_aux); 13176 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 13177 const uint32_t *xcb_listelement = xcb_pre_tmp_4; 13178 xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); 13179 xcb_pre_tmp_4++; 13180 } 13181 /* sumof end. Result is in xcb_pre_tmp_3 */ 13182 xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); 13183 xcb_tmp += xcb_block_len; 13184 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 13185 /* insert padding */ 13186 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13187 xcb_buffer_len += xcb_block_len + xcb_pad; 13188 if (0 != xcb_pad) { 13189 xcb_tmp += xcb_pad; 13190 xcb_pad = 0; 13191 } 13192 xcb_block_len = 0; 13193 13194 return xcb_buffer_len; 13195 } 13196 13197 uint32_t * 13198 xcb_input_key_press_button_mask (const xcb_input_key_press_event_t *R) 13199 { 13200 return (uint32_t *) (R + 1); 13201 } 13202 13203 int 13204 xcb_input_key_press_button_mask_length (const xcb_input_key_press_event_t *R) 13205 { 13206 return R->buttons_len; 13207 } 13208 13209 xcb_generic_iterator_t 13210 xcb_input_key_press_button_mask_end (const xcb_input_key_press_event_t *R) 13211 { 13212 xcb_generic_iterator_t i; 13213 i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); 13214 i.rem = 0; 13215 i.index = (char *) i.data - (char *) R; 13216 return i; 13217 } 13218 13219 uint32_t * 13220 xcb_input_key_press_valuator_mask (const xcb_input_key_press_event_t *R) 13221 { 13222 xcb_generic_iterator_t prev = xcb_input_key_press_button_mask_end(R); 13223 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 13224 } 13225 13226 int 13227 xcb_input_key_press_valuator_mask_length (const xcb_input_key_press_event_t *R) 13228 { 13229 return R->valuators_len; 13230 } 13231 13232 xcb_generic_iterator_t 13233 xcb_input_key_press_valuator_mask_end (const xcb_input_key_press_event_t *R) 13234 { 13235 xcb_generic_iterator_t i; 13236 xcb_generic_iterator_t prev = xcb_input_key_press_button_mask_end(R); 13237 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->valuators_len); 13238 i.rem = 0; 13239 i.index = (char *) i.data - (char *) R; 13240 return i; 13241 } 13242 13243 xcb_input_fp3232_t * 13244 xcb_input_key_press_axisvalues (const xcb_input_key_press_event_t *R) 13245 { 13246 xcb_generic_iterator_t prev = xcb_input_key_press_valuator_mask_end(R); 13247 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 13248 } 13249 13250 int 13251 xcb_input_key_press_axisvalues_length (const xcb_input_key_press_event_t *R) 13252 { 13253 int xcb_pre_tmp_5; /* sumof length */ 13254 int xcb_pre_tmp_6; /* sumof loop counter */ 13255 int64_t xcb_pre_tmp_7; /* sumof sum */ 13256 const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ 13257 /* sumof start */ 13258 xcb_pre_tmp_5 = R->valuators_len; 13259 xcb_pre_tmp_7 = 0; 13260 xcb_pre_tmp_8 = xcb_input_key_press_valuator_mask(R); 13261 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 13262 const uint32_t *xcb_listelement = xcb_pre_tmp_8; 13263 xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); 13264 xcb_pre_tmp_8++; 13265 } 13266 /* sumof end. Result is in xcb_pre_tmp_7 */ 13267 return xcb_pre_tmp_7; 13268 } 13269 13270 xcb_input_fp3232_iterator_t 13271 xcb_input_key_press_axisvalues_iterator (const xcb_input_key_press_event_t *R) 13272 { 13273 xcb_input_fp3232_iterator_t i; 13274 xcb_generic_iterator_t prev = xcb_input_key_press_valuator_mask_end(R); 13275 int xcb_pre_tmp_9; /* sumof length */ 13276 int xcb_pre_tmp_10; /* sumof loop counter */ 13277 int64_t xcb_pre_tmp_11; /* sumof sum */ 13278 const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ 13279 /* sumof start */ 13280 xcb_pre_tmp_9 = R->valuators_len; 13281 xcb_pre_tmp_11 = 0; 13282 xcb_pre_tmp_12 = xcb_input_key_press_valuator_mask(R); 13283 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 13284 const uint32_t *xcb_listelement = xcb_pre_tmp_12; 13285 xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); 13286 xcb_pre_tmp_12++; 13287 } 13288 /* sumof end. Result is in xcb_pre_tmp_11 */ 13289 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 13290 i.rem = xcb_pre_tmp_11; 13291 i.index = (char *) i.data - (char *) R; 13292 return i; 13293 } 13294 13295 int 13296 xcb_input_key_release_sizeof (const void *_buffer /**< */) 13297 { 13298 return xcb_input_key_press_sizeof(_buffer); 13299 } 13300 13301 int 13302 xcb_input_button_press_sizeof (const void *_buffer) 13303 { 13304 char *xcb_tmp = (char *)_buffer; 13305 const xcb_input_button_press_event_t *_aux = (xcb_input_button_press_event_t *)_buffer; 13306 unsigned int xcb_buffer_len = 0; 13307 unsigned int xcb_block_len = 0; 13308 unsigned int xcb_pad = 0; 13309 unsigned int xcb_align_to = 0; 13310 13311 int xcb_pre_tmp_1; /* sumof length */ 13312 int xcb_pre_tmp_2; /* sumof loop counter */ 13313 int64_t xcb_pre_tmp_3; /* sumof sum */ 13314 const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ 13315 13316 xcb_block_len += sizeof(xcb_input_button_press_event_t); 13317 xcb_tmp += xcb_block_len; 13318 xcb_buffer_len += xcb_block_len; 13319 xcb_block_len = 0; 13320 /* button_mask */ 13321 xcb_block_len += _aux->buttons_len * sizeof(uint32_t); 13322 xcb_tmp += xcb_block_len; 13323 xcb_align_to = ALIGNOF(uint32_t); 13324 /* insert padding */ 13325 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13326 xcb_buffer_len += xcb_block_len + xcb_pad; 13327 if (0 != xcb_pad) { 13328 xcb_tmp += xcb_pad; 13329 xcb_pad = 0; 13330 } 13331 xcb_block_len = 0; 13332 /* valuator_mask */ 13333 xcb_block_len += _aux->valuators_len * sizeof(uint32_t); 13334 xcb_tmp += xcb_block_len; 13335 xcb_align_to = ALIGNOF(uint32_t); 13336 /* insert padding */ 13337 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13338 xcb_buffer_len += xcb_block_len + xcb_pad; 13339 if (0 != xcb_pad) { 13340 xcb_tmp += xcb_pad; 13341 xcb_pad = 0; 13342 } 13343 xcb_block_len = 0; 13344 /* axisvalues */ 13345 /* sumof start */ 13346 xcb_pre_tmp_1 = _aux->valuators_len; 13347 xcb_pre_tmp_3 = 0; 13348 xcb_pre_tmp_4 = xcb_input_button_press_valuator_mask(_aux); 13349 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 13350 const uint32_t *xcb_listelement = xcb_pre_tmp_4; 13351 xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); 13352 xcb_pre_tmp_4++; 13353 } 13354 /* sumof end. Result is in xcb_pre_tmp_3 */ 13355 xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); 13356 xcb_tmp += xcb_block_len; 13357 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 13358 /* insert padding */ 13359 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13360 xcb_buffer_len += xcb_block_len + xcb_pad; 13361 if (0 != xcb_pad) { 13362 xcb_tmp += xcb_pad; 13363 xcb_pad = 0; 13364 } 13365 xcb_block_len = 0; 13366 13367 return xcb_buffer_len; 13368 } 13369 13370 uint32_t * 13371 xcb_input_button_press_button_mask (const xcb_input_button_press_event_t *R) 13372 { 13373 return (uint32_t *) (R + 1); 13374 } 13375 13376 int 13377 xcb_input_button_press_button_mask_length (const xcb_input_button_press_event_t *R) 13378 { 13379 return R->buttons_len; 13380 } 13381 13382 xcb_generic_iterator_t 13383 xcb_input_button_press_button_mask_end (const xcb_input_button_press_event_t *R) 13384 { 13385 xcb_generic_iterator_t i; 13386 i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); 13387 i.rem = 0; 13388 i.index = (char *) i.data - (char *) R; 13389 return i; 13390 } 13391 13392 uint32_t * 13393 xcb_input_button_press_valuator_mask (const xcb_input_button_press_event_t *R) 13394 { 13395 xcb_generic_iterator_t prev = xcb_input_button_press_button_mask_end(R); 13396 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 13397 } 13398 13399 int 13400 xcb_input_button_press_valuator_mask_length (const xcb_input_button_press_event_t *R) 13401 { 13402 return R->valuators_len; 13403 } 13404 13405 xcb_generic_iterator_t 13406 xcb_input_button_press_valuator_mask_end (const xcb_input_button_press_event_t *R) 13407 { 13408 xcb_generic_iterator_t i; 13409 xcb_generic_iterator_t prev = xcb_input_button_press_button_mask_end(R); 13410 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->valuators_len); 13411 i.rem = 0; 13412 i.index = (char *) i.data - (char *) R; 13413 return i; 13414 } 13415 13416 xcb_input_fp3232_t * 13417 xcb_input_button_press_axisvalues (const xcb_input_button_press_event_t *R) 13418 { 13419 xcb_generic_iterator_t prev = xcb_input_button_press_valuator_mask_end(R); 13420 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 13421 } 13422 13423 int 13424 xcb_input_button_press_axisvalues_length (const xcb_input_button_press_event_t *R) 13425 { 13426 int xcb_pre_tmp_5; /* sumof length */ 13427 int xcb_pre_tmp_6; /* sumof loop counter */ 13428 int64_t xcb_pre_tmp_7; /* sumof sum */ 13429 const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ 13430 /* sumof start */ 13431 xcb_pre_tmp_5 = R->valuators_len; 13432 xcb_pre_tmp_7 = 0; 13433 xcb_pre_tmp_8 = xcb_input_button_press_valuator_mask(R); 13434 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 13435 const uint32_t *xcb_listelement = xcb_pre_tmp_8; 13436 xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); 13437 xcb_pre_tmp_8++; 13438 } 13439 /* sumof end. Result is in xcb_pre_tmp_7 */ 13440 return xcb_pre_tmp_7; 13441 } 13442 13443 xcb_input_fp3232_iterator_t 13444 xcb_input_button_press_axisvalues_iterator (const xcb_input_button_press_event_t *R) 13445 { 13446 xcb_input_fp3232_iterator_t i; 13447 xcb_generic_iterator_t prev = xcb_input_button_press_valuator_mask_end(R); 13448 int xcb_pre_tmp_9; /* sumof length */ 13449 int xcb_pre_tmp_10; /* sumof loop counter */ 13450 int64_t xcb_pre_tmp_11; /* sumof sum */ 13451 const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ 13452 /* sumof start */ 13453 xcb_pre_tmp_9 = R->valuators_len; 13454 xcb_pre_tmp_11 = 0; 13455 xcb_pre_tmp_12 = xcb_input_button_press_valuator_mask(R); 13456 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 13457 const uint32_t *xcb_listelement = xcb_pre_tmp_12; 13458 xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); 13459 xcb_pre_tmp_12++; 13460 } 13461 /* sumof end. Result is in xcb_pre_tmp_11 */ 13462 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 13463 i.rem = xcb_pre_tmp_11; 13464 i.index = (char *) i.data - (char *) R; 13465 return i; 13466 } 13467 13468 int 13469 xcb_input_button_release_sizeof (const void *_buffer /**< */) 13470 { 13471 return xcb_input_button_press_sizeof(_buffer); 13472 } 13473 13474 int 13475 xcb_input_motion_sizeof (const void *_buffer /**< */) 13476 { 13477 return xcb_input_button_press_sizeof(_buffer); 13478 } 13479 13480 int 13481 xcb_input_enter_sizeof (const void *_buffer) 13482 { 13483 char *xcb_tmp = (char *)_buffer; 13484 const xcb_input_enter_event_t *_aux = (xcb_input_enter_event_t *)_buffer; 13485 unsigned int xcb_buffer_len = 0; 13486 unsigned int xcb_block_len = 0; 13487 unsigned int xcb_pad = 0; 13488 unsigned int xcb_align_to = 0; 13489 13490 13491 xcb_block_len += sizeof(xcb_input_enter_event_t); 13492 xcb_tmp += xcb_block_len; 13493 xcb_buffer_len += xcb_block_len; 13494 xcb_block_len = 0; 13495 /* buttons */ 13496 xcb_block_len += _aux->buttons_len * sizeof(uint32_t); 13497 xcb_tmp += xcb_block_len; 13498 xcb_align_to = ALIGNOF(uint32_t); 13499 /* insert padding */ 13500 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13501 xcb_buffer_len += xcb_block_len + xcb_pad; 13502 if (0 != xcb_pad) { 13503 xcb_tmp += xcb_pad; 13504 xcb_pad = 0; 13505 } 13506 xcb_block_len = 0; 13507 13508 return xcb_buffer_len; 13509 } 13510 13511 uint32_t * 13512 xcb_input_enter_buttons (const xcb_input_enter_event_t *R) 13513 { 13514 return (uint32_t *) (R + 1); 13515 } 13516 13517 int 13518 xcb_input_enter_buttons_length (const xcb_input_enter_event_t *R) 13519 { 13520 return R->buttons_len; 13521 } 13522 13523 xcb_generic_iterator_t 13524 xcb_input_enter_buttons_end (const xcb_input_enter_event_t *R) 13525 { 13526 xcb_generic_iterator_t i; 13527 i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); 13528 i.rem = 0; 13529 i.index = (char *) i.data - (char *) R; 13530 return i; 13531 } 13532 13533 int 13534 xcb_input_leave_sizeof (const void *_buffer /**< */) 13535 { 13536 return xcb_input_enter_sizeof(_buffer); 13537 } 13538 13539 int 13540 xcb_input_focus_in_sizeof (const void *_buffer /**< */) 13541 { 13542 return xcb_input_enter_sizeof(_buffer); 13543 } 13544 13545 int 13546 xcb_input_focus_out_sizeof (const void *_buffer /**< */) 13547 { 13548 return xcb_input_enter_sizeof(_buffer); 13549 } 13550 13551 void 13552 xcb_input_hierarchy_info_next (xcb_input_hierarchy_info_iterator_t *i) 13553 { 13554 --i->rem; 13555 ++i->data; 13556 i->index += sizeof(xcb_input_hierarchy_info_t); 13557 } 13558 13559 xcb_generic_iterator_t 13560 xcb_input_hierarchy_info_end (xcb_input_hierarchy_info_iterator_t i) 13561 { 13562 xcb_generic_iterator_t ret; 13563 ret.data = i.data + i.rem; 13564 ret.index = i.index + ((char *) ret.data - (char *) i.data); 13565 ret.rem = 0; 13566 return ret; 13567 } 13568 13569 int 13570 xcb_input_hierarchy_sizeof (const void *_buffer) 13571 { 13572 char *xcb_tmp = (char *)_buffer; 13573 const xcb_input_hierarchy_event_t *_aux = (xcb_input_hierarchy_event_t *)_buffer; 13574 unsigned int xcb_buffer_len = 0; 13575 unsigned int xcb_block_len = 0; 13576 unsigned int xcb_pad = 0; 13577 unsigned int xcb_align_to = 0; 13578 13579 13580 xcb_block_len += sizeof(xcb_input_hierarchy_event_t); 13581 xcb_tmp += xcb_block_len; 13582 xcb_buffer_len += xcb_block_len; 13583 xcb_block_len = 0; 13584 /* infos */ 13585 xcb_block_len += _aux->num_infos * sizeof(xcb_input_hierarchy_info_t); 13586 xcb_tmp += xcb_block_len; 13587 xcb_align_to = ALIGNOF(xcb_input_hierarchy_info_t); 13588 /* insert padding */ 13589 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13590 xcb_buffer_len += xcb_block_len + xcb_pad; 13591 if (0 != xcb_pad) { 13592 xcb_tmp += xcb_pad; 13593 xcb_pad = 0; 13594 } 13595 xcb_block_len = 0; 13596 13597 return xcb_buffer_len; 13598 } 13599 13600 xcb_input_hierarchy_info_t * 13601 xcb_input_hierarchy_infos (const xcb_input_hierarchy_event_t *R) 13602 { 13603 return (xcb_input_hierarchy_info_t *) (R + 1); 13604 } 13605 13606 int 13607 xcb_input_hierarchy_infos_length (const xcb_input_hierarchy_event_t *R) 13608 { 13609 return R->num_infos; 13610 } 13611 13612 xcb_input_hierarchy_info_iterator_t 13613 xcb_input_hierarchy_infos_iterator (const xcb_input_hierarchy_event_t *R) 13614 { 13615 xcb_input_hierarchy_info_iterator_t i; 13616 i.data = (xcb_input_hierarchy_info_t *) (R + 1); 13617 i.rem = R->num_infos; 13618 i.index = (char *) i.data - (char *) R; 13619 return i; 13620 } 13621 13622 int 13623 xcb_input_raw_key_press_sizeof (const void *_buffer) 13624 { 13625 char *xcb_tmp = (char *)_buffer; 13626 const xcb_input_raw_key_press_event_t *_aux = (xcb_input_raw_key_press_event_t *)_buffer; 13627 unsigned int xcb_buffer_len = 0; 13628 unsigned int xcb_block_len = 0; 13629 unsigned int xcb_pad = 0; 13630 unsigned int xcb_align_to = 0; 13631 13632 int xcb_pre_tmp_1; /* sumof length */ 13633 int xcb_pre_tmp_2; /* sumof loop counter */ 13634 int64_t xcb_pre_tmp_3; /* sumof sum */ 13635 const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ 13636 int xcb_pre_tmp_5; /* sumof length */ 13637 int xcb_pre_tmp_6; /* sumof loop counter */ 13638 int64_t xcb_pre_tmp_7; /* sumof sum */ 13639 const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ 13640 13641 xcb_block_len += sizeof(xcb_input_raw_key_press_event_t); 13642 xcb_tmp += xcb_block_len; 13643 xcb_buffer_len += xcb_block_len; 13644 xcb_block_len = 0; 13645 /* valuator_mask */ 13646 xcb_block_len += _aux->valuators_len * sizeof(uint32_t); 13647 xcb_tmp += xcb_block_len; 13648 xcb_align_to = ALIGNOF(uint32_t); 13649 /* insert padding */ 13650 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13651 xcb_buffer_len += xcb_block_len + xcb_pad; 13652 if (0 != xcb_pad) { 13653 xcb_tmp += xcb_pad; 13654 xcb_pad = 0; 13655 } 13656 xcb_block_len = 0; 13657 /* axisvalues */ 13658 /* sumof start */ 13659 xcb_pre_tmp_1 = _aux->valuators_len; 13660 xcb_pre_tmp_3 = 0; 13661 xcb_pre_tmp_4 = xcb_input_raw_key_press_valuator_mask(_aux); 13662 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 13663 const uint32_t *xcb_listelement = xcb_pre_tmp_4; 13664 xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); 13665 xcb_pre_tmp_4++; 13666 } 13667 /* sumof end. Result is in xcb_pre_tmp_3 */ 13668 xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); 13669 xcb_tmp += xcb_block_len; 13670 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 13671 /* insert padding */ 13672 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13673 xcb_buffer_len += xcb_block_len + xcb_pad; 13674 if (0 != xcb_pad) { 13675 xcb_tmp += xcb_pad; 13676 xcb_pad = 0; 13677 } 13678 xcb_block_len = 0; 13679 /* axisvalues_raw */ 13680 /* sumof start */ 13681 xcb_pre_tmp_5 = _aux->valuators_len; 13682 xcb_pre_tmp_7 = 0; 13683 xcb_pre_tmp_8 = xcb_input_raw_key_press_valuator_mask(_aux); 13684 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 13685 const uint32_t *xcb_listelement = xcb_pre_tmp_8; 13686 xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); 13687 xcb_pre_tmp_8++; 13688 } 13689 /* sumof end. Result is in xcb_pre_tmp_7 */ 13690 xcb_block_len += xcb_pre_tmp_7 * sizeof(xcb_input_fp3232_t); 13691 xcb_tmp += xcb_block_len; 13692 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 13693 /* insert padding */ 13694 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13695 xcb_buffer_len += xcb_block_len + xcb_pad; 13696 if (0 != xcb_pad) { 13697 xcb_tmp += xcb_pad; 13698 xcb_pad = 0; 13699 } 13700 xcb_block_len = 0; 13701 13702 return xcb_buffer_len; 13703 } 13704 13705 uint32_t * 13706 xcb_input_raw_key_press_valuator_mask (const xcb_input_raw_key_press_event_t *R) 13707 { 13708 return (uint32_t *) (R + 1); 13709 } 13710 13711 int 13712 xcb_input_raw_key_press_valuator_mask_length (const xcb_input_raw_key_press_event_t *R) 13713 { 13714 return R->valuators_len; 13715 } 13716 13717 xcb_generic_iterator_t 13718 xcb_input_raw_key_press_valuator_mask_end (const xcb_input_raw_key_press_event_t *R) 13719 { 13720 xcb_generic_iterator_t i; 13721 i.data = ((uint32_t *) (R + 1)) + (R->valuators_len); 13722 i.rem = 0; 13723 i.index = (char *) i.data - (char *) R; 13724 return i; 13725 } 13726 13727 xcb_input_fp3232_t * 13728 xcb_input_raw_key_press_axisvalues (const xcb_input_raw_key_press_event_t *R) 13729 { 13730 xcb_generic_iterator_t prev = xcb_input_raw_key_press_valuator_mask_end(R); 13731 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 13732 } 13733 13734 int 13735 xcb_input_raw_key_press_axisvalues_length (const xcb_input_raw_key_press_event_t *R) 13736 { 13737 int xcb_pre_tmp_9; /* sumof length */ 13738 int xcb_pre_tmp_10; /* sumof loop counter */ 13739 int64_t xcb_pre_tmp_11; /* sumof sum */ 13740 const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ 13741 /* sumof start */ 13742 xcb_pre_tmp_9 = R->valuators_len; 13743 xcb_pre_tmp_11 = 0; 13744 xcb_pre_tmp_12 = xcb_input_raw_key_press_valuator_mask(R); 13745 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 13746 const uint32_t *xcb_listelement = xcb_pre_tmp_12; 13747 xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); 13748 xcb_pre_tmp_12++; 13749 } 13750 /* sumof end. Result is in xcb_pre_tmp_11 */ 13751 return xcb_pre_tmp_11; 13752 } 13753 13754 xcb_input_fp3232_iterator_t 13755 xcb_input_raw_key_press_axisvalues_iterator (const xcb_input_raw_key_press_event_t *R) 13756 { 13757 xcb_input_fp3232_iterator_t i; 13758 xcb_generic_iterator_t prev = xcb_input_raw_key_press_valuator_mask_end(R); 13759 int xcb_pre_tmp_13; /* sumof length */ 13760 int xcb_pre_tmp_14; /* sumof loop counter */ 13761 int64_t xcb_pre_tmp_15; /* sumof sum */ 13762 const uint32_t* xcb_pre_tmp_16; /* sumof list ptr */ 13763 /* sumof start */ 13764 xcb_pre_tmp_13 = R->valuators_len; 13765 xcb_pre_tmp_15 = 0; 13766 xcb_pre_tmp_16 = xcb_input_raw_key_press_valuator_mask(R); 13767 for (xcb_pre_tmp_14 = 0; xcb_pre_tmp_14 < xcb_pre_tmp_13; xcb_pre_tmp_14++) { 13768 const uint32_t *xcb_listelement = xcb_pre_tmp_16; 13769 xcb_pre_tmp_15 += xcb_popcount((*xcb_listelement)); 13770 xcb_pre_tmp_16++; 13771 } 13772 /* sumof end. Result is in xcb_pre_tmp_15 */ 13773 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 13774 i.rem = xcb_pre_tmp_15; 13775 i.index = (char *) i.data - (char *) R; 13776 return i; 13777 } 13778 13779 xcb_input_fp3232_t * 13780 xcb_input_raw_key_press_axisvalues_raw (const xcb_input_raw_key_press_event_t *R) 13781 { 13782 xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_key_press_axisvalues_iterator(R)); 13783 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 13784 } 13785 13786 int 13787 xcb_input_raw_key_press_axisvalues_raw_length (const xcb_input_raw_key_press_event_t *R) 13788 { 13789 int xcb_pre_tmp_17; /* sumof length */ 13790 int xcb_pre_tmp_18; /* sumof loop counter */ 13791 int64_t xcb_pre_tmp_19; /* sumof sum */ 13792 const uint32_t* xcb_pre_tmp_20; /* sumof list ptr */ 13793 /* sumof start */ 13794 xcb_pre_tmp_17 = R->valuators_len; 13795 xcb_pre_tmp_19 = 0; 13796 xcb_pre_tmp_20 = xcb_input_raw_key_press_valuator_mask(R); 13797 for (xcb_pre_tmp_18 = 0; xcb_pre_tmp_18 < xcb_pre_tmp_17; xcb_pre_tmp_18++) { 13798 const uint32_t *xcb_listelement = xcb_pre_tmp_20; 13799 xcb_pre_tmp_19 += xcb_popcount((*xcb_listelement)); 13800 xcb_pre_tmp_20++; 13801 } 13802 /* sumof end. Result is in xcb_pre_tmp_19 */ 13803 return xcb_pre_tmp_19; 13804 } 13805 13806 xcb_input_fp3232_iterator_t 13807 xcb_input_raw_key_press_axisvalues_raw_iterator (const xcb_input_raw_key_press_event_t *R) 13808 { 13809 xcb_input_fp3232_iterator_t i; 13810 xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_key_press_axisvalues_iterator(R)); 13811 int xcb_pre_tmp_21; /* sumof length */ 13812 int xcb_pre_tmp_22; /* sumof loop counter */ 13813 int64_t xcb_pre_tmp_23; /* sumof sum */ 13814 const uint32_t* xcb_pre_tmp_24; /* sumof list ptr */ 13815 /* sumof start */ 13816 xcb_pre_tmp_21 = R->valuators_len; 13817 xcb_pre_tmp_23 = 0; 13818 xcb_pre_tmp_24 = xcb_input_raw_key_press_valuator_mask(R); 13819 for (xcb_pre_tmp_22 = 0; xcb_pre_tmp_22 < xcb_pre_tmp_21; xcb_pre_tmp_22++) { 13820 const uint32_t *xcb_listelement = xcb_pre_tmp_24; 13821 xcb_pre_tmp_23 += xcb_popcount((*xcb_listelement)); 13822 xcb_pre_tmp_24++; 13823 } 13824 /* sumof end. Result is in xcb_pre_tmp_23 */ 13825 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 13826 i.rem = xcb_pre_tmp_23; 13827 i.index = (char *) i.data - (char *) R; 13828 return i; 13829 } 13830 13831 int 13832 xcb_input_raw_key_release_sizeof (const void *_buffer /**< */) 13833 { 13834 return xcb_input_raw_key_press_sizeof(_buffer); 13835 } 13836 13837 int 13838 xcb_input_raw_button_press_sizeof (const void *_buffer) 13839 { 13840 char *xcb_tmp = (char *)_buffer; 13841 const xcb_input_raw_button_press_event_t *_aux = (xcb_input_raw_button_press_event_t *)_buffer; 13842 unsigned int xcb_buffer_len = 0; 13843 unsigned int xcb_block_len = 0; 13844 unsigned int xcb_pad = 0; 13845 unsigned int xcb_align_to = 0; 13846 13847 int xcb_pre_tmp_1; /* sumof length */ 13848 int xcb_pre_tmp_2; /* sumof loop counter */ 13849 int64_t xcb_pre_tmp_3; /* sumof sum */ 13850 const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ 13851 int xcb_pre_tmp_5; /* sumof length */ 13852 int xcb_pre_tmp_6; /* sumof loop counter */ 13853 int64_t xcb_pre_tmp_7; /* sumof sum */ 13854 const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ 13855 13856 xcb_block_len += sizeof(xcb_input_raw_button_press_event_t); 13857 xcb_tmp += xcb_block_len; 13858 xcb_buffer_len += xcb_block_len; 13859 xcb_block_len = 0; 13860 /* valuator_mask */ 13861 xcb_block_len += _aux->valuators_len * sizeof(uint32_t); 13862 xcb_tmp += xcb_block_len; 13863 xcb_align_to = ALIGNOF(uint32_t); 13864 /* insert padding */ 13865 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13866 xcb_buffer_len += xcb_block_len + xcb_pad; 13867 if (0 != xcb_pad) { 13868 xcb_tmp += xcb_pad; 13869 xcb_pad = 0; 13870 } 13871 xcb_block_len = 0; 13872 /* axisvalues */ 13873 /* sumof start */ 13874 xcb_pre_tmp_1 = _aux->valuators_len; 13875 xcb_pre_tmp_3 = 0; 13876 xcb_pre_tmp_4 = xcb_input_raw_button_press_valuator_mask(_aux); 13877 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 13878 const uint32_t *xcb_listelement = xcb_pre_tmp_4; 13879 xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); 13880 xcb_pre_tmp_4++; 13881 } 13882 /* sumof end. Result is in xcb_pre_tmp_3 */ 13883 xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); 13884 xcb_tmp += xcb_block_len; 13885 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 13886 /* insert padding */ 13887 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13888 xcb_buffer_len += xcb_block_len + xcb_pad; 13889 if (0 != xcb_pad) { 13890 xcb_tmp += xcb_pad; 13891 xcb_pad = 0; 13892 } 13893 xcb_block_len = 0; 13894 /* axisvalues_raw */ 13895 /* sumof start */ 13896 xcb_pre_tmp_5 = _aux->valuators_len; 13897 xcb_pre_tmp_7 = 0; 13898 xcb_pre_tmp_8 = xcb_input_raw_button_press_valuator_mask(_aux); 13899 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 13900 const uint32_t *xcb_listelement = xcb_pre_tmp_8; 13901 xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); 13902 xcb_pre_tmp_8++; 13903 } 13904 /* sumof end. Result is in xcb_pre_tmp_7 */ 13905 xcb_block_len += xcb_pre_tmp_7 * sizeof(xcb_input_fp3232_t); 13906 xcb_tmp += xcb_block_len; 13907 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 13908 /* insert padding */ 13909 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 13910 xcb_buffer_len += xcb_block_len + xcb_pad; 13911 if (0 != xcb_pad) { 13912 xcb_tmp += xcb_pad; 13913 xcb_pad = 0; 13914 } 13915 xcb_block_len = 0; 13916 13917 return xcb_buffer_len; 13918 } 13919 13920 uint32_t * 13921 xcb_input_raw_button_press_valuator_mask (const xcb_input_raw_button_press_event_t *R) 13922 { 13923 return (uint32_t *) (R + 1); 13924 } 13925 13926 int 13927 xcb_input_raw_button_press_valuator_mask_length (const xcb_input_raw_button_press_event_t *R) 13928 { 13929 return R->valuators_len; 13930 } 13931 13932 xcb_generic_iterator_t 13933 xcb_input_raw_button_press_valuator_mask_end (const xcb_input_raw_button_press_event_t *R) 13934 { 13935 xcb_generic_iterator_t i; 13936 i.data = ((uint32_t *) (R + 1)) + (R->valuators_len); 13937 i.rem = 0; 13938 i.index = (char *) i.data - (char *) R; 13939 return i; 13940 } 13941 13942 xcb_input_fp3232_t * 13943 xcb_input_raw_button_press_axisvalues (const xcb_input_raw_button_press_event_t *R) 13944 { 13945 xcb_generic_iterator_t prev = xcb_input_raw_button_press_valuator_mask_end(R); 13946 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 13947 } 13948 13949 int 13950 xcb_input_raw_button_press_axisvalues_length (const xcb_input_raw_button_press_event_t *R) 13951 { 13952 int xcb_pre_tmp_9; /* sumof length */ 13953 int xcb_pre_tmp_10; /* sumof loop counter */ 13954 int64_t xcb_pre_tmp_11; /* sumof sum */ 13955 const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ 13956 /* sumof start */ 13957 xcb_pre_tmp_9 = R->valuators_len; 13958 xcb_pre_tmp_11 = 0; 13959 xcb_pre_tmp_12 = xcb_input_raw_button_press_valuator_mask(R); 13960 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 13961 const uint32_t *xcb_listelement = xcb_pre_tmp_12; 13962 xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); 13963 xcb_pre_tmp_12++; 13964 } 13965 /* sumof end. Result is in xcb_pre_tmp_11 */ 13966 return xcb_pre_tmp_11; 13967 } 13968 13969 xcb_input_fp3232_iterator_t 13970 xcb_input_raw_button_press_axisvalues_iterator (const xcb_input_raw_button_press_event_t *R) 13971 { 13972 xcb_input_fp3232_iterator_t i; 13973 xcb_generic_iterator_t prev = xcb_input_raw_button_press_valuator_mask_end(R); 13974 int xcb_pre_tmp_13; /* sumof length */ 13975 int xcb_pre_tmp_14; /* sumof loop counter */ 13976 int64_t xcb_pre_tmp_15; /* sumof sum */ 13977 const uint32_t* xcb_pre_tmp_16; /* sumof list ptr */ 13978 /* sumof start */ 13979 xcb_pre_tmp_13 = R->valuators_len; 13980 xcb_pre_tmp_15 = 0; 13981 xcb_pre_tmp_16 = xcb_input_raw_button_press_valuator_mask(R); 13982 for (xcb_pre_tmp_14 = 0; xcb_pre_tmp_14 < xcb_pre_tmp_13; xcb_pre_tmp_14++) { 13983 const uint32_t *xcb_listelement = xcb_pre_tmp_16; 13984 xcb_pre_tmp_15 += xcb_popcount((*xcb_listelement)); 13985 xcb_pre_tmp_16++; 13986 } 13987 /* sumof end. Result is in xcb_pre_tmp_15 */ 13988 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 13989 i.rem = xcb_pre_tmp_15; 13990 i.index = (char *) i.data - (char *) R; 13991 return i; 13992 } 13993 13994 xcb_input_fp3232_t * 13995 xcb_input_raw_button_press_axisvalues_raw (const xcb_input_raw_button_press_event_t *R) 13996 { 13997 xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_button_press_axisvalues_iterator(R)); 13998 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 13999 } 14000 14001 int 14002 xcb_input_raw_button_press_axisvalues_raw_length (const xcb_input_raw_button_press_event_t *R) 14003 { 14004 int xcb_pre_tmp_17; /* sumof length */ 14005 int xcb_pre_tmp_18; /* sumof loop counter */ 14006 int64_t xcb_pre_tmp_19; /* sumof sum */ 14007 const uint32_t* xcb_pre_tmp_20; /* sumof list ptr */ 14008 /* sumof start */ 14009 xcb_pre_tmp_17 = R->valuators_len; 14010 xcb_pre_tmp_19 = 0; 14011 xcb_pre_tmp_20 = xcb_input_raw_button_press_valuator_mask(R); 14012 for (xcb_pre_tmp_18 = 0; xcb_pre_tmp_18 < xcb_pre_tmp_17; xcb_pre_tmp_18++) { 14013 const uint32_t *xcb_listelement = xcb_pre_tmp_20; 14014 xcb_pre_tmp_19 += xcb_popcount((*xcb_listelement)); 14015 xcb_pre_tmp_20++; 14016 } 14017 /* sumof end. Result is in xcb_pre_tmp_19 */ 14018 return xcb_pre_tmp_19; 14019 } 14020 14021 xcb_input_fp3232_iterator_t 14022 xcb_input_raw_button_press_axisvalues_raw_iterator (const xcb_input_raw_button_press_event_t *R) 14023 { 14024 xcb_input_fp3232_iterator_t i; 14025 xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_button_press_axisvalues_iterator(R)); 14026 int xcb_pre_tmp_21; /* sumof length */ 14027 int xcb_pre_tmp_22; /* sumof loop counter */ 14028 int64_t xcb_pre_tmp_23; /* sumof sum */ 14029 const uint32_t* xcb_pre_tmp_24; /* sumof list ptr */ 14030 /* sumof start */ 14031 xcb_pre_tmp_21 = R->valuators_len; 14032 xcb_pre_tmp_23 = 0; 14033 xcb_pre_tmp_24 = xcb_input_raw_button_press_valuator_mask(R); 14034 for (xcb_pre_tmp_22 = 0; xcb_pre_tmp_22 < xcb_pre_tmp_21; xcb_pre_tmp_22++) { 14035 const uint32_t *xcb_listelement = xcb_pre_tmp_24; 14036 xcb_pre_tmp_23 += xcb_popcount((*xcb_listelement)); 14037 xcb_pre_tmp_24++; 14038 } 14039 /* sumof end. Result is in xcb_pre_tmp_23 */ 14040 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 14041 i.rem = xcb_pre_tmp_23; 14042 i.index = (char *) i.data - (char *) R; 14043 return i; 14044 } 14045 14046 int 14047 xcb_input_raw_button_release_sizeof (const void *_buffer /**< */) 14048 { 14049 return xcb_input_raw_button_press_sizeof(_buffer); 14050 } 14051 14052 int 14053 xcb_input_raw_motion_sizeof (const void *_buffer /**< */) 14054 { 14055 return xcb_input_raw_button_press_sizeof(_buffer); 14056 } 14057 14058 int 14059 xcb_input_touch_begin_sizeof (const void *_buffer) 14060 { 14061 char *xcb_tmp = (char *)_buffer; 14062 const xcb_input_touch_begin_event_t *_aux = (xcb_input_touch_begin_event_t *)_buffer; 14063 unsigned int xcb_buffer_len = 0; 14064 unsigned int xcb_block_len = 0; 14065 unsigned int xcb_pad = 0; 14066 unsigned int xcb_align_to = 0; 14067 14068 int xcb_pre_tmp_1; /* sumof length */ 14069 int xcb_pre_tmp_2; /* sumof loop counter */ 14070 int64_t xcb_pre_tmp_3; /* sumof sum */ 14071 const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ 14072 14073 xcb_block_len += sizeof(xcb_input_touch_begin_event_t); 14074 xcb_tmp += xcb_block_len; 14075 xcb_buffer_len += xcb_block_len; 14076 xcb_block_len = 0; 14077 /* button_mask */ 14078 xcb_block_len += _aux->buttons_len * sizeof(uint32_t); 14079 xcb_tmp += xcb_block_len; 14080 xcb_align_to = ALIGNOF(uint32_t); 14081 /* insert padding */ 14082 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 14083 xcb_buffer_len += xcb_block_len + xcb_pad; 14084 if (0 != xcb_pad) { 14085 xcb_tmp += xcb_pad; 14086 xcb_pad = 0; 14087 } 14088 xcb_block_len = 0; 14089 /* valuator_mask */ 14090 xcb_block_len += _aux->valuators_len * sizeof(uint32_t); 14091 xcb_tmp += xcb_block_len; 14092 xcb_align_to = ALIGNOF(uint32_t); 14093 /* insert padding */ 14094 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 14095 xcb_buffer_len += xcb_block_len + xcb_pad; 14096 if (0 != xcb_pad) { 14097 xcb_tmp += xcb_pad; 14098 xcb_pad = 0; 14099 } 14100 xcb_block_len = 0; 14101 /* axisvalues */ 14102 /* sumof start */ 14103 xcb_pre_tmp_1 = _aux->valuators_len; 14104 xcb_pre_tmp_3 = 0; 14105 xcb_pre_tmp_4 = xcb_input_touch_begin_valuator_mask(_aux); 14106 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 14107 const uint32_t *xcb_listelement = xcb_pre_tmp_4; 14108 xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); 14109 xcb_pre_tmp_4++; 14110 } 14111 /* sumof end. Result is in xcb_pre_tmp_3 */ 14112 xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); 14113 xcb_tmp += xcb_block_len; 14114 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 14115 /* insert padding */ 14116 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 14117 xcb_buffer_len += xcb_block_len + xcb_pad; 14118 if (0 != xcb_pad) { 14119 xcb_tmp += xcb_pad; 14120 xcb_pad = 0; 14121 } 14122 xcb_block_len = 0; 14123 14124 return xcb_buffer_len; 14125 } 14126 14127 uint32_t * 14128 xcb_input_touch_begin_button_mask (const xcb_input_touch_begin_event_t *R) 14129 { 14130 return (uint32_t *) (R + 1); 14131 } 14132 14133 int 14134 xcb_input_touch_begin_button_mask_length (const xcb_input_touch_begin_event_t *R) 14135 { 14136 return R->buttons_len; 14137 } 14138 14139 xcb_generic_iterator_t 14140 xcb_input_touch_begin_button_mask_end (const xcb_input_touch_begin_event_t *R) 14141 { 14142 xcb_generic_iterator_t i; 14143 i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); 14144 i.rem = 0; 14145 i.index = (char *) i.data - (char *) R; 14146 return i; 14147 } 14148 14149 uint32_t * 14150 xcb_input_touch_begin_valuator_mask (const xcb_input_touch_begin_event_t *R) 14151 { 14152 xcb_generic_iterator_t prev = xcb_input_touch_begin_button_mask_end(R); 14153 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 14154 } 14155 14156 int 14157 xcb_input_touch_begin_valuator_mask_length (const xcb_input_touch_begin_event_t *R) 14158 { 14159 return R->valuators_len; 14160 } 14161 14162 xcb_generic_iterator_t 14163 xcb_input_touch_begin_valuator_mask_end (const xcb_input_touch_begin_event_t *R) 14164 { 14165 xcb_generic_iterator_t i; 14166 xcb_generic_iterator_t prev = xcb_input_touch_begin_button_mask_end(R); 14167 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->valuators_len); 14168 i.rem = 0; 14169 i.index = (char *) i.data - (char *) R; 14170 return i; 14171 } 14172 14173 xcb_input_fp3232_t * 14174 xcb_input_touch_begin_axisvalues (const xcb_input_touch_begin_event_t *R) 14175 { 14176 xcb_generic_iterator_t prev = xcb_input_touch_begin_valuator_mask_end(R); 14177 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 14178 } 14179 14180 int 14181 xcb_input_touch_begin_axisvalues_length (const xcb_input_touch_begin_event_t *R) 14182 { 14183 int xcb_pre_tmp_5; /* sumof length */ 14184 int xcb_pre_tmp_6; /* sumof loop counter */ 14185 int64_t xcb_pre_tmp_7; /* sumof sum */ 14186 const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ 14187 /* sumof start */ 14188 xcb_pre_tmp_5 = R->valuators_len; 14189 xcb_pre_tmp_7 = 0; 14190 xcb_pre_tmp_8 = xcb_input_touch_begin_valuator_mask(R); 14191 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 14192 const uint32_t *xcb_listelement = xcb_pre_tmp_8; 14193 xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); 14194 xcb_pre_tmp_8++; 14195 } 14196 /* sumof end. Result is in xcb_pre_tmp_7 */ 14197 return xcb_pre_tmp_7; 14198 } 14199 14200 xcb_input_fp3232_iterator_t 14201 xcb_input_touch_begin_axisvalues_iterator (const xcb_input_touch_begin_event_t *R) 14202 { 14203 xcb_input_fp3232_iterator_t i; 14204 xcb_generic_iterator_t prev = xcb_input_touch_begin_valuator_mask_end(R); 14205 int xcb_pre_tmp_9; /* sumof length */ 14206 int xcb_pre_tmp_10; /* sumof loop counter */ 14207 int64_t xcb_pre_tmp_11; /* sumof sum */ 14208 const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ 14209 /* sumof start */ 14210 xcb_pre_tmp_9 = R->valuators_len; 14211 xcb_pre_tmp_11 = 0; 14212 xcb_pre_tmp_12 = xcb_input_touch_begin_valuator_mask(R); 14213 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 14214 const uint32_t *xcb_listelement = xcb_pre_tmp_12; 14215 xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); 14216 xcb_pre_tmp_12++; 14217 } 14218 /* sumof end. Result is in xcb_pre_tmp_11 */ 14219 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 14220 i.rem = xcb_pre_tmp_11; 14221 i.index = (char *) i.data - (char *) R; 14222 return i; 14223 } 14224 14225 int 14226 xcb_input_touch_update_sizeof (const void *_buffer /**< */) 14227 { 14228 return xcb_input_touch_begin_sizeof(_buffer); 14229 } 14230 14231 int 14232 xcb_input_touch_end_sizeof (const void *_buffer /**< */) 14233 { 14234 return xcb_input_touch_begin_sizeof(_buffer); 14235 } 14236 14237 int 14238 xcb_input_raw_touch_begin_sizeof (const void *_buffer) 14239 { 14240 char *xcb_tmp = (char *)_buffer; 14241 const xcb_input_raw_touch_begin_event_t *_aux = (xcb_input_raw_touch_begin_event_t *)_buffer; 14242 unsigned int xcb_buffer_len = 0; 14243 unsigned int xcb_block_len = 0; 14244 unsigned int xcb_pad = 0; 14245 unsigned int xcb_align_to = 0; 14246 14247 int xcb_pre_tmp_1; /* sumof length */ 14248 int xcb_pre_tmp_2; /* sumof loop counter */ 14249 int64_t xcb_pre_tmp_3; /* sumof sum */ 14250 const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ 14251 int xcb_pre_tmp_5; /* sumof length */ 14252 int xcb_pre_tmp_6; /* sumof loop counter */ 14253 int64_t xcb_pre_tmp_7; /* sumof sum */ 14254 const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ 14255 14256 xcb_block_len += sizeof(xcb_input_raw_touch_begin_event_t); 14257 xcb_tmp += xcb_block_len; 14258 xcb_buffer_len += xcb_block_len; 14259 xcb_block_len = 0; 14260 /* valuator_mask */ 14261 xcb_block_len += _aux->valuators_len * sizeof(uint32_t); 14262 xcb_tmp += xcb_block_len; 14263 xcb_align_to = ALIGNOF(uint32_t); 14264 /* insert padding */ 14265 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 14266 xcb_buffer_len += xcb_block_len + xcb_pad; 14267 if (0 != xcb_pad) { 14268 xcb_tmp += xcb_pad; 14269 xcb_pad = 0; 14270 } 14271 xcb_block_len = 0; 14272 /* axisvalues */ 14273 /* sumof start */ 14274 xcb_pre_tmp_1 = _aux->valuators_len; 14275 xcb_pre_tmp_3 = 0; 14276 xcb_pre_tmp_4 = xcb_input_raw_touch_begin_valuator_mask(_aux); 14277 for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { 14278 const uint32_t *xcb_listelement = xcb_pre_tmp_4; 14279 xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); 14280 xcb_pre_tmp_4++; 14281 } 14282 /* sumof end. Result is in xcb_pre_tmp_3 */ 14283 xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); 14284 xcb_tmp += xcb_block_len; 14285 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 14286 /* insert padding */ 14287 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 14288 xcb_buffer_len += xcb_block_len + xcb_pad; 14289 if (0 != xcb_pad) { 14290 xcb_tmp += xcb_pad; 14291 xcb_pad = 0; 14292 } 14293 xcb_block_len = 0; 14294 /* axisvalues_raw */ 14295 /* sumof start */ 14296 xcb_pre_tmp_5 = _aux->valuators_len; 14297 xcb_pre_tmp_7 = 0; 14298 xcb_pre_tmp_8 = xcb_input_raw_touch_begin_valuator_mask(_aux); 14299 for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { 14300 const uint32_t *xcb_listelement = xcb_pre_tmp_8; 14301 xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); 14302 xcb_pre_tmp_8++; 14303 } 14304 /* sumof end. Result is in xcb_pre_tmp_7 */ 14305 xcb_block_len += xcb_pre_tmp_7 * sizeof(xcb_input_fp3232_t); 14306 xcb_tmp += xcb_block_len; 14307 xcb_align_to = ALIGNOF(xcb_input_fp3232_t); 14308 /* insert padding */ 14309 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 14310 xcb_buffer_len += xcb_block_len + xcb_pad; 14311 if (0 != xcb_pad) { 14312 xcb_tmp += xcb_pad; 14313 xcb_pad = 0; 14314 } 14315 xcb_block_len = 0; 14316 14317 return xcb_buffer_len; 14318 } 14319 14320 uint32_t * 14321 xcb_input_raw_touch_begin_valuator_mask (const xcb_input_raw_touch_begin_event_t *R) 14322 { 14323 return (uint32_t *) (R + 1); 14324 } 14325 14326 int 14327 xcb_input_raw_touch_begin_valuator_mask_length (const xcb_input_raw_touch_begin_event_t *R) 14328 { 14329 return R->valuators_len; 14330 } 14331 14332 xcb_generic_iterator_t 14333 xcb_input_raw_touch_begin_valuator_mask_end (const xcb_input_raw_touch_begin_event_t *R) 14334 { 14335 xcb_generic_iterator_t i; 14336 i.data = ((uint32_t *) (R + 1)) + (R->valuators_len); 14337 i.rem = 0; 14338 i.index = (char *) i.data - (char *) R; 14339 return i; 14340 } 14341 14342 xcb_input_fp3232_t * 14343 xcb_input_raw_touch_begin_axisvalues (const xcb_input_raw_touch_begin_event_t *R) 14344 { 14345 xcb_generic_iterator_t prev = xcb_input_raw_touch_begin_valuator_mask_end(R); 14346 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 14347 } 14348 14349 int 14350 xcb_input_raw_touch_begin_axisvalues_length (const xcb_input_raw_touch_begin_event_t *R) 14351 { 14352 int xcb_pre_tmp_9; /* sumof length */ 14353 int xcb_pre_tmp_10; /* sumof loop counter */ 14354 int64_t xcb_pre_tmp_11; /* sumof sum */ 14355 const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ 14356 /* sumof start */ 14357 xcb_pre_tmp_9 = R->valuators_len; 14358 xcb_pre_tmp_11 = 0; 14359 xcb_pre_tmp_12 = xcb_input_raw_touch_begin_valuator_mask(R); 14360 for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { 14361 const uint32_t *xcb_listelement = xcb_pre_tmp_12; 14362 xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); 14363 xcb_pre_tmp_12++; 14364 } 14365 /* sumof end. Result is in xcb_pre_tmp_11 */ 14366 return xcb_pre_tmp_11; 14367 } 14368 14369 xcb_input_fp3232_iterator_t 14370 xcb_input_raw_touch_begin_axisvalues_iterator (const xcb_input_raw_touch_begin_event_t *R) 14371 { 14372 xcb_input_fp3232_iterator_t i; 14373 xcb_generic_iterator_t prev = xcb_input_raw_touch_begin_valuator_mask_end(R); 14374 int xcb_pre_tmp_13; /* sumof length */ 14375 int xcb_pre_tmp_14; /* sumof loop counter */ 14376 int64_t xcb_pre_tmp_15; /* sumof sum */ 14377 const uint32_t* xcb_pre_tmp_16; /* sumof list ptr */ 14378 /* sumof start */ 14379 xcb_pre_tmp_13 = R->valuators_len; 14380 xcb_pre_tmp_15 = 0; 14381 xcb_pre_tmp_16 = xcb_input_raw_touch_begin_valuator_mask(R); 14382 for (xcb_pre_tmp_14 = 0; xcb_pre_tmp_14 < xcb_pre_tmp_13; xcb_pre_tmp_14++) { 14383 const uint32_t *xcb_listelement = xcb_pre_tmp_16; 14384 xcb_pre_tmp_15 += xcb_popcount((*xcb_listelement)); 14385 xcb_pre_tmp_16++; 14386 } 14387 /* sumof end. Result is in xcb_pre_tmp_15 */ 14388 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 14389 i.rem = xcb_pre_tmp_15; 14390 i.index = (char *) i.data - (char *) R; 14391 return i; 14392 } 14393 14394 xcb_input_fp3232_t * 14395 xcb_input_raw_touch_begin_axisvalues_raw (const xcb_input_raw_touch_begin_event_t *R) 14396 { 14397 xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_touch_begin_axisvalues_iterator(R)); 14398 return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); 14399 } 14400 14401 int 14402 xcb_input_raw_touch_begin_axisvalues_raw_length (const xcb_input_raw_touch_begin_event_t *R) 14403 { 14404 int xcb_pre_tmp_17; /* sumof length */ 14405 int xcb_pre_tmp_18; /* sumof loop counter */ 14406 int64_t xcb_pre_tmp_19; /* sumof sum */ 14407 const uint32_t* xcb_pre_tmp_20; /* sumof list ptr */ 14408 /* sumof start */ 14409 xcb_pre_tmp_17 = R->valuators_len; 14410 xcb_pre_tmp_19 = 0; 14411 xcb_pre_tmp_20 = xcb_input_raw_touch_begin_valuator_mask(R); 14412 for (xcb_pre_tmp_18 = 0; xcb_pre_tmp_18 < xcb_pre_tmp_17; xcb_pre_tmp_18++) { 14413 const uint32_t *xcb_listelement = xcb_pre_tmp_20; 14414 xcb_pre_tmp_19 += xcb_popcount((*xcb_listelement)); 14415 xcb_pre_tmp_20++; 14416 } 14417 /* sumof end. Result is in xcb_pre_tmp_19 */ 14418 return xcb_pre_tmp_19; 14419 } 14420 14421 xcb_input_fp3232_iterator_t 14422 xcb_input_raw_touch_begin_axisvalues_raw_iterator (const xcb_input_raw_touch_begin_event_t *R) 14423 { 14424 xcb_input_fp3232_iterator_t i; 14425 xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_touch_begin_axisvalues_iterator(R)); 14426 int xcb_pre_tmp_21; /* sumof length */ 14427 int xcb_pre_tmp_22; /* sumof loop counter */ 14428 int64_t xcb_pre_tmp_23; /* sumof sum */ 14429 const uint32_t* xcb_pre_tmp_24; /* sumof list ptr */ 14430 /* sumof start */ 14431 xcb_pre_tmp_21 = R->valuators_len; 14432 xcb_pre_tmp_23 = 0; 14433 xcb_pre_tmp_24 = xcb_input_raw_touch_begin_valuator_mask(R); 14434 for (xcb_pre_tmp_22 = 0; xcb_pre_tmp_22 < xcb_pre_tmp_21; xcb_pre_tmp_22++) { 14435 const uint32_t *xcb_listelement = xcb_pre_tmp_24; 14436 xcb_pre_tmp_23 += xcb_popcount((*xcb_listelement)); 14437 xcb_pre_tmp_24++; 14438 } 14439 /* sumof end. Result is in xcb_pre_tmp_23 */ 14440 i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); 14441 i.rem = xcb_pre_tmp_23; 14442 i.index = (char *) i.data - (char *) R; 14443 return i; 14444 } 14445 14446 int 14447 xcb_input_raw_touch_update_sizeof (const void *_buffer /**< */) 14448 { 14449 return xcb_input_raw_touch_begin_sizeof(_buffer); 14450 } 14451 14452 int 14453 xcb_input_raw_touch_end_sizeof (const void *_buffer /**< */) 14454 { 14455 return xcb_input_raw_touch_begin_sizeof(_buffer); 14456 } 14457 14458