about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFrank Benkstein <frank@benkstein.net>2024-01-08 00:05:15 +0100
committerGitHub <noreply@github.com>2024-01-08 00:05:15 +0100
commit411a52e16fe29b2af581f0e485c2042dd07ea07c (patch)
tree1a565424a0a2caf0dff129043a0ea1584c42bece
parent41bfd757ad55623bd5c83ae2946390e50a48de3b (diff)
downloadbox64-411a52e16fe29b2af581f0e485c2042dd07ea07c.tar.gz
box64-411a52e16fe29b2af581f0e485c2042dd07ea07c.zip
expose minimal libxcb-xinput wrapper (#1192)
Expose minimal libxcb-xinput interface, enough to run the Enpass
password manager. Also expose XkbGetIndicatorState since that is also
required.
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/library_list.h1
-rw-r--r--src/wrapped/generated/functions_list.txt2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxinputdefs.h8
-rw-r--r--src/wrapped/generated/wrappedlibxcbxinputtypes.h17
-rw-r--r--src/wrapped/generated/wrappedlibxcbxinputundefs.h8
-rw-r--r--src/wrapped/generated/wrapper.c4
-rw-r--r--src/wrapped/generated/wrapper.h1
-rw-r--r--src/wrapped/wrappedlibx11_private.h2
-rw-r--r--src/wrapped/wrappedlibxcbxinput.c27
-rw-r--r--src/wrapped/wrappedlibxcbxinput_private.h472
11 files changed, 542 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cc88019f..a21f08ce 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -519,6 +519,7 @@ set(WRAPPEDS
     "${BOX64_ROOT}/src/wrapped/wrappedlibxcbsync.c"
     "${BOX64_ROOT}/src/wrapped/wrappedlibxcbutil.c"
     "${BOX64_ROOT}/src/wrapped/wrappedlibxcbxinerama.c"
+    "${BOX64_ROOT}/src/wrapped/wrappedlibxcbxinput.c"
     "${BOX64_ROOT}/src/wrapped/wrappedlibxcbxfixes.c"
     "${BOX64_ROOT}/src/wrapped/wrappedlibxcbxkb.c"
     "${BOX64_ROOT}/src/wrapped/wrappedlibxcbxtest.c"
diff --git a/src/library_list.h b/src/library_list.h
index a247435a..21f3a377 100644
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -73,6 +73,7 @@ GO("libxcb-render-util.so.0", libxcbrenderutil)
 GO("libxcb-render.so.0", libxcbrender)
 GO("libxcb-sync.so.1", libxcbsync)
 GO("libxcb-xinerama.so.0", libxcbxinerama)
+GO("libxcb-xinput.so.0", libxcbxinput)
 GO("libxcb-xkb.so.1", libxcbxkb)
 //GO("libxcb-present.so.0", libxcbpresent)
 GO("libXtst.so.6", libxtst)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 4061b045..72f82584 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -581,6 +581,7 @@
 #() uFpip
 #() uFpCi
 #() uFpWi
+#() uFpWW
 #() uFpWu
 #() uFpWf
 #() uFpWp
@@ -4840,6 +4841,7 @@ wrappedlibxcbsync:
 wrappedlibxcbutil:
 wrappedlibxcbxfixes:
 wrappedlibxcbxinerama:
+wrappedlibxcbxinput:
 wrappedlibxcbxkb:
 wrappedlibxcbxtest:
 wrappedlibxcomposite:
diff --git a/src/wrapped/generated/wrappedlibxcbxinputdefs.h b/src/wrapped/generated/wrappedlibxcbxinputdefs.h
new file mode 100644
index 00000000..2540a07b
--- /dev/null
+++ b/src/wrapped/generated/wrappedlibxcbxinputdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.20) *
+ *******************************************************************/
+#ifndef __wrappedlibxcbxinputDEFS_H_
+#define __wrappedlibxcbxinputDEFS_H_
+
+
+#endif // __wrappedlibxcbxinputDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxinputtypes.h b/src/wrapped/generated/wrappedlibxcbxinputtypes.h
new file mode 100644
index 00000000..8b8d1869
--- /dev/null
+++ b/src/wrapped/generated/wrappedlibxcbxinputtypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.20) *
+ *******************************************************************/
+#ifndef __wrappedlibxcbxinputTYPES_H_
+#define __wrappedlibxcbxinputTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedlibxcbxinputTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxinputundefs.h b/src/wrapped/generated/wrappedlibxcbxinputundefs.h
new file mode 100644
index 00000000..98df873e
--- /dev/null
+++ b/src/wrapped/generated/wrappedlibxcbxinputundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.20) *
+ *******************************************************************/
+#ifndef __wrappedlibxcbxinputUNDEFS_H_
+#define __wrappedlibxcbxinputUNDEFS_H_
+
+
+#endif // __wrappedlibxcbxinputUNDEFS_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 934d22fa..46654a70 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -619,6 +619,7 @@ typedef uint32_t (*uFpiu_t)(void*, int32_t, uint32_t);
 typedef uint32_t (*uFpip_t)(void*, int32_t, void*);
 typedef uint32_t (*uFpCi_t)(void*, uint8_t, int32_t);
 typedef uint32_t (*uFpWi_t)(void*, uint16_t, int32_t);
+typedef uint32_t (*uFpWW_t)(void*, uint16_t, uint16_t);
 typedef uint32_t (*uFpWu_t)(void*, uint16_t, uint32_t);
 typedef uint32_t (*uFpWf_t)(void*, uint16_t, float);
 typedef uint32_t (*uFpWp_t)(void*, uint16_t, void*);
@@ -3653,6 +3654,7 @@ void uFpiu(x64emu_t *emu, uintptr_t fcn) { uFpiu_t fn = (uFpiu_t)fcn; R_RAX=(uin
 void uFpip(x64emu_t *emu, uintptr_t fcn) { uFpip_t fn = (uFpip_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
 void uFpCi(x64emu_t *emu, uintptr_t fcn) { uFpCi_t fn = (uFpCi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint8_t)R_RSI, (int32_t)R_RDX); }
 void uFpWi(x64emu_t *emu, uintptr_t fcn) { uFpWi_t fn = (uFpWi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint16_t)R_RSI, (int32_t)R_RDX); }
+void uFpWW(x64emu_t *emu, uintptr_t fcn) { uFpWW_t fn = (uFpWW_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint16_t)R_RSI, (uint16_t)R_RDX); }
 void uFpWu(x64emu_t *emu, uintptr_t fcn) { uFpWu_t fn = (uFpWu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint16_t)R_RSI, (uint32_t)R_RDX); }
 void uFpWf(x64emu_t *emu, uintptr_t fcn) { uFpWf_t fn = (uFpWf_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint16_t)R_RSI, emu->xmm[0].f[0]); }
 void uFpWp(x64emu_t *emu, uintptr_t fcn) { uFpWp_t fn = (uFpWp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint16_t)R_RSI, (void*)R_RDX); }
@@ -6590,6 +6592,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &uFpip) return 1;
 	if (fun == &uFpCi) return 1;
 	if (fun == &uFpWi) return 1;
+	if (fun == &uFpWW) return 1;
 	if (fun == &uFpWu) return 1;
 	if (fun == &uFpWf) return 2;
 	if (fun == &uFpWp) return 1;
@@ -8150,6 +8153,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &uFufp) return 3;
 	if (fun == &uFupu) return 1;
 	if (fun == &uFupp) return 1;
+	if (fun == &uFpWW) return 1;
 	if (fun == &uFpWu) return 1;
 	if (fun == &uFpWf) return 3;
 	if (fun == &uFpWp) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 45dad010..68f3d562 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -619,6 +619,7 @@ void uFpiu(x64emu_t *emu, uintptr_t fnc);
 void uFpip(x64emu_t *emu, uintptr_t fnc);
 void uFpCi(x64emu_t *emu, uintptr_t fnc);
 void uFpWi(x64emu_t *emu, uintptr_t fnc);
+void uFpWW(x64emu_t *emu, uintptr_t fnc);
 void uFpWu(x64emu_t *emu, uintptr_t fnc);
 void uFpWf(x64emu_t *emu, uintptr_t fnc);
 void uFpWp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibx11_private.h b/src/wrapped/wrappedlibx11_private.h
index 9a98ef99..271c1ffb 100644
--- a/src/wrapped/wrappedlibx11_private.h
+++ b/src/wrapped/wrappedlibx11_private.h
@@ -592,7 +592,7 @@ GO(XkbGetDeviceInfo, pFpuuuu)
 //GO(XkbGetDeviceLedInfo
 //GO(XkbGetGeometry
 //GO(XkbGetIndicatorMap
-//GO(XkbGetIndicatorState
+GO(XkbGetIndicatorState, iFpup)
 //GO(XkbGetKeyActions
 //GO(XkbGetKeyBehaviors
 GO(XkbGetKeyboard, pFpuu)
diff --git a/src/wrapped/wrappedlibxcbxinput.c b/src/wrapped/wrappedlibxcbxinput.c
new file mode 100644
index 00000000..b5b55685
--- /dev/null
+++ b/src/wrapped/wrappedlibxcbxinput.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+
+#ifdef ANDROID
+	const char* libxcbxinputName = "libxcb-xinput.so";
+#else
+	const char* libxcbxinputName = "libxcb-xinput.so.0";
+#endif
+#define LIBNAME libxcbxinput
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedlibxcbxinput_private.h b/src/wrapped/wrappedlibxcbxinput_private.h
new file mode 100644
index 00000000..f41ed107
--- /dev/null
+++ b/src/wrapped/wrappedlibxcbxinput_private.h
@@ -0,0 +1,472 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+DATA(xcb_input_id, 2*sizeof(void*))
+// GO(xcb_input_input_info_info
+// GO(xcb_input_send_extension_event_sizeof
+// GO(xcb_input_device_class_data_sizeof
+// GO(xcb_input_close_device
+// GO(xcb_input_feedback_state_data
+// GO(xcb_input_feedback_ctl_data
+// GO(xcb_input_input_state_data
+// GO(xcb_input_device_state_data
+// GO(xcb_input_device_ctl_data
+// GO(xcb_input_hierarchy_change_data
+// GO(xcb_input_device_class_data
+// GO(xcb_input_event_class_next
+// GO(xcb_input_event_class_end
+// GO(xcb_input_key_code_next
+// GO(xcb_input_key_code_end
+// GO(xcb_input_device_id_next
+// GO(xcb_input_device_id_end
+// GO(xcb_input_fp1616_next
+// GO(xcb_input_fp1616_end
+// GO(xcb_input_fp3232_next
+// GO(xcb_input_fp3232_end
+// GO(xcb_input_get_extension_version_unchecked
+// GO(xcb_input_get_extension_version_reply
+// GO(xcb_input_device_info_next
+// GO(xcb_input_device_info_end
+// GO(xcb_input_key_info_next
+// GO(xcb_input_key_info_end
+// GO(xcb_input_button_info_next
+// GO(xcb_input_button_info_end
+// GO(xcb_input_axis_info_next
+// GO(xcb_input_axis_info_end
+// GO(xcb_input_valuator_info_axes
+// GO(xcb_input_valuator_info_axes_length
+// GO(xcb_input_valuator_info_axes_iterator
+// GO(xcb_input_valuator_info_next
+// GO(xcb_input_valuator_info_end
+// GO(xcb_input_input_info_info_valuator_axes
+// GO(xcb_input_input_info_info_valuator_axes_length
+// GO(xcb_input_input_info_info_valuator_axes_iterator
+// GO(xcb_input_input_info_info_serialize
+// GO(xcb_input_input_info_info_unpack
+// GO(xcb_input_input_state_data_sizeof
+// GO(xcb_input_input_info_next
+// GO(xcb_input_input_info_end
+// GO(xcb_input_device_name_string
+// GO(xcb_input_device_name_string_length
+// GO(xcb_input_device_name_string_end
+// GO(xcb_input_device_name_next
+// GO(xcb_input_device_name_end
+// GO(xcb_input_list_input_devices_unchecked
+// GO(xcb_input_list_input_devices_devices
+// GO(xcb_input_list_input_devices_names_length
+// GO(xcb_input_list_input_devices_devices_iterator
+// GO(xcb_input_list_input_devices_infos_iterator
+// GO(xcb_input_list_input_devices_names_iterator
+// GO(xcb_input_list_input_devices_reply
+// GO(xcb_input_event_type_base_next
+// GO(xcb_input_event_type_base_end
+// GO(xcb_input_input_class_info_next
+// GO(xcb_input_input_class_info_end
+// GO(xcb_input_open_device_unchecked
+// GO(xcb_input_open_device_class_info
+// GO(xcb_input_open_device_class_info_length
+// GO(xcb_input_open_device_class_info_iterator
+// GO(xcb_input_open_device_reply
+// GO(xcb_input_set_device_mode_unchecked
+// GO(xcb_input_set_device_mode_reply
+// GO(xcb_input_select_extension_event
+// GO(xcb_input_select_extension_event_classes
+// GO(xcb_input_select_extension_event_classes_length
+// GO(xcb_input_select_extension_event_classes_end
+// GO(xcb_input_get_selected_extension_events_unchecked
+// GO(xcb_input_get_selected_extension_events_all_classes
+// GO(xcb_input_get_selected_extension_events_all_classes_length
+// GO(xcb_input_get_selected_extension_events_all_classes_end
+// GO(xcb_input_get_selected_extension_events_reply
+// GO(xcb_input_change_device_dont_propagate_list
+// GO(xcb_input_change_device_dont_propagate_list_classes
+// GO(xcb_input_change_device_dont_propagate_list_classes_length
+// GO(xcb_input_change_device_dont_propagate_list_classes_end
+// GO(xcb_input_get_device_dont_propagate_list_unchecked
+// GO(xcb_input_get_device_dont_propagate_list_classes
+// GO(xcb_input_get_device_dont_propagate_list_classes_length
+// GO(xcb_input_get_device_dont_propagate_list_classes_end
+// GO(xcb_input_get_device_dont_propagate_list_reply
+// GO(xcb_input_device_time_coord_axisvalues
+// GO(xcb_input_device_time_coord_axisvalues_length
+// GO(xcb_input_device_time_coord_axisvalues_end
+// GO(xcb_input_device_time_coord_next
+// GO(xcb_input_device_time_coord_end
+// GO(xcb_input_get_device_motion_events_unchecked
+// GO(xcb_input_get_device_motion_events_events_length
+// GO(xcb_input_get_device_motion_events_events_iterator
+// GO(xcb_input_get_device_motion_events_reply
+// GO(xcb_input_change_keyboard_device_unchecked
+// GO(xcb_input_change_keyboard_device_reply
+// GO(xcb_input_change_pointer_device_unchecked
+// GO(xcb_input_change_pointer_device_reply
+// GO(xcb_input_grab_device_unchecked
+// GO(xcb_input_grab_device_reply
+// GO(xcb_input_ungrab_device
+// GO(xcb_input_grab_device_key
+// GO(xcb_input_grab_device_key_classes
+// GO(xcb_input_grab_device_key_classes_length
+// GO(xcb_input_grab_device_key_classes_end
+// GO(xcb_input_ungrab_device_button
+// GO(xcb_input_grab_device_button
+// GO(xcb_input_grab_device_button_classes
+// GO(xcb_input_grab_device_button_classes_length
+// GO(xcb_input_grab_device_button_classes_end
+// GO(xcb_input_allow_device_events
+// GO(xcb_input_get_device_focus_unchecked
+// GO(xcb_input_get_device_focus_reply
+// GO(xcb_input_set_device_focus
+// GO(xcb_input_kbd_feedback_state_next
+// GO(xcb_input_kbd_feedback_state_end
+// GO(xcb_input_ptr_feedback_state_next
+// GO(xcb_input_ptr_feedback_state_end
+// GO(xcb_input_integer_feedback_state_next
+// GO(xcb_input_integer_feedback_state_end
+// GO(xcb_input_string_feedback_state_keysyms
+// GO(xcb_input_string_feedback_state_keysyms_length
+// GO(xcb_input_string_feedback_state_keysyms_end
+// GO(xcb_input_string_feedback_state_next
+// GO(xcb_input_string_feedback_state_end
+// GO(xcb_input_bell_feedback_state_next
+// GO(xcb_input_bell_feedback_state_end
+// GO(xcb_input_led_feedback_state_next
+// GO(xcb_input_led_feedback_state_end
+// GO(xcb_input_feedback_state_data_string_keysyms
+// GO(xcb_input_feedback_state_data_string_keysyms_length
+// GO(xcb_input_feedback_state_data_string_keysyms_end
+// GO(xcb_input_feedback_state_data_serialize
+// GO(xcb_input_feedback_state_data_unpack
+// GO(xcb_input_feedback_state_next
+// GO(xcb_input_feedback_state_end
+// GO(xcb_input_get_feedback_control_unchecked
+// GO(xcb_input_get_feedback_control_feedbacks_length
+// GO(xcb_input_get_feedback_control_feedbacks_iterator
+// GO(xcb_input_get_feedback_control_reply
+// GO(xcb_input_kbd_feedback_ctl_next
+// GO(xcb_input_kbd_feedback_ctl_end
+// GO(xcb_input_ptr_feedback_ctl_next
+// GO(xcb_input_ptr_feedback_ctl_end
+// GO(xcb_input_integer_feedback_ctl_next
+// GO(xcb_input_integer_feedback_ctl_end
+// GO(xcb_input_string_feedback_ctl_keysyms
+// GO(xcb_input_string_feedback_ctl_keysyms_length
+// GO(xcb_input_string_feedback_ctl_keysyms_end
+// GO(xcb_input_string_feedback_ctl_next
+// GO(xcb_input_string_feedback_ctl_end
+// GO(xcb_input_bell_feedback_ctl_next
+// GO(xcb_input_bell_feedback_ctl_end
+// GO(xcb_input_led_feedback_ctl_next
+// GO(xcb_input_led_feedback_ctl_end
+// GO(xcb_input_feedback_ctl_data_string_keysyms
+// GO(xcb_input_feedback_ctl_data_string_keysyms_length
+// GO(xcb_input_feedback_ctl_data_string_keysyms_end
+// GO(xcb_input_feedback_ctl_data_serialize
+// GO(xcb_input_feedback_ctl_data_unpack
+// GO(xcb_input_feedback_ctl_next
+// GO(xcb_input_feedback_ctl_end
+// GO(xcb_input_change_feedback_control
+// GO(xcb_input_change_feedback_control_feedback
+// GO(xcb_input_get_device_key_mapping_unchecked
+// GO(xcb_input_get_device_key_mapping_keysyms
+// GO(xcb_input_get_device_key_mapping_keysyms_length
+// GO(xcb_input_get_device_key_mapping_keysyms_end
+// GO(xcb_input_get_device_key_mapping_reply
+// GO(xcb_input_change_device_key_mapping
+// GO(xcb_input_change_device_key_mapping_keysyms
+// GO(xcb_input_change_device_key_mapping_keysyms_length
+// GO(xcb_input_change_device_key_mapping_keysyms_end
+// GO(xcb_input_get_device_modifier_mapping_unchecked
+// GO(xcb_input_get_device_modifier_mapping_keymaps
+// GO(xcb_input_get_device_modifier_mapping_keymaps_length
+// GO(xcb_input_get_device_modifier_mapping_keymaps_end
+// GO(xcb_input_get_device_modifier_mapping_reply
+// GO(xcb_input_set_device_modifier_mapping_unchecked
+// GO(xcb_input_set_device_modifier_mapping_reply
+// GO(xcb_input_get_device_button_mapping_unchecked
+// GO(xcb_input_get_device_button_mapping_map
+// GO(xcb_input_get_device_button_mapping_map_length
+// GO(xcb_input_get_device_button_mapping_map_end
+// GO(xcb_input_get_device_button_mapping_reply
+// GO(xcb_input_set_device_button_mapping_unchecked
+// GO(xcb_input_set_device_button_mapping_reply
+// GO(xcb_input_key_state_next
+// GO(xcb_input_key_state_end
+// GO(xcb_input_button_state_next
+// GO(xcb_input_button_state_end
+// GO(xcb_input_valuator_state_valuators
+// GO(xcb_input_valuator_state_valuators_length
+// GO(xcb_input_valuator_state_valuators_end
+// GO(xcb_input_valuator_state_next
+// GO(xcb_input_valuator_state_end
+// GO(xcb_input_input_state_data_valuator_valuators
+// GO(xcb_input_input_state_data_valuator_valuators_length
+// GO(xcb_input_input_state_data_valuator_valuators_end
+// GO(xcb_input_input_state_data_serialize
+// GO(xcb_input_input_state_data_unpack
+// GO(xcb_input_input_state_next
+// GO(xcb_input_input_state_end
+// GO(xcb_input_query_device_state_unchecked
+// GO(xcb_input_query_device_state_classes_length
+// GO(xcb_input_query_device_state_classes_iterator
+// GO(xcb_input_query_device_state_reply
+// GO(xcb_input_device_bell
+// GO(xcb_input_set_device_valuators_unchecked
+// GO(xcb_input_set_device_valuators_reply
+// GO(xcb_input_device_resolution_state_resolution_max
+// GO(xcb_input_device_resolution_state_resolution_max_length
+// GO(xcb_input_device_resolution_state_resolution_max_end
+// GO(xcb_input_device_resolution_state_next
+// GO(xcb_input_device_resolution_state_end
+// GO(xcb_input_device_abs_calib_state_next
+// GO(xcb_input_device_abs_calib_state_end
+// GO(xcb_input_device_abs_area_state_next
+// GO(xcb_input_device_abs_area_state_end
+// GO(xcb_input_device_core_state_next
+// GO(xcb_input_device_core_state_end
+// GO(xcb_input_device_enable_state_next
+// GO(xcb_input_device_enable_state_end
+// GO(xcb_input_device_state_data_resolution_resolution_max
+// GO(xcb_input_device_state_data_resolution_resolution_max_length
+// GO(xcb_input_device_state_data_resolution_resolution_max_end
+// GO(xcb_input_device_state_data_serialize
+// GO(xcb_input_device_state_data_unpack
+// GO(xcb_input_device_state_next
+// GO(xcb_input_device_state_end
+// GO(xcb_input_get_device_control_unchecked
+// GO(xcb_input_get_device_control_control
+// GO(xcb_input_get_device_control_reply
+// GO(xcb_input_device_resolution_ctl_resolution_values
+// GO(xcb_input_device_resolution_ctl_resolution_values_length
+// GO(xcb_input_device_resolution_ctl_resolution_values_end
+// GO(xcb_input_device_resolution_ctl_next
+// GO(xcb_input_device_resolution_ctl_end
+// GO(xcb_input_device_abs_calib_ctl_next
+// GO(xcb_input_device_abs_calib_ctl_end
+// GO(xcb_input_device_abs_area_ctrl_next
+// GO(xcb_input_device_abs_area_ctrl_end
+// GO(xcb_input_device_core_ctrl_next
+// GO(xcb_input_device_core_ctrl_end
+// GO(xcb_input_device_enable_ctrl_next
+// GO(xcb_input_device_enable_ctrl_end
+// GO(xcb_input_device_ctl_data_resolution_resolution_values
+// GO(xcb_input_device_ctl_data_resolution_resolution_values_length
+// GO(xcb_input_device_ctl_data_resolution_resolution_values_end
+// GO(xcb_input_device_ctl_data_serialize
+// GO(xcb_input_device_ctl_data_unpack
+// GO(xcb_input_device_ctl_next
+// GO(xcb_input_device_ctl_end
+// GO(xcb_input_change_device_control_unchecked
+// GO(xcb_input_change_device_control_reply
+// GO(xcb_input_list_device_properties_unchecked
+// GO(xcb_input_list_device_properties_atoms
+// GO(xcb_input_list_device_properties_atoms_length
+// GO(xcb_input_list_device_properties_atoms_end
+// GO(xcb_input_list_device_properties_reply
+// GO(xcb_input_change_device_property_items_data_8
+// GO(xcb_input_change_device_property_items_data_32_length
+// GO(xcb_input_change_device_property_items_data_32_end
+// GO(xcb_input_change_device_property_items_data_16
+// GO(xcb_input_change_device_property_items_data_32
+// GO(xcb_input_change_device_property_items_serialize
+// GO(xcb_input_change_device_property_items_unpack
+// GO(xcb_input_xi_get_property_items_sizeof
+// GO(xcb_input_change_device_property
+// GO(xcb_input_change_device_property_aux
+// GO(xcb_input_change_device_property_items
+// GO(xcb_input_delete_device_property
+// GO(xcb_input_get_device_property_items_data_8
+// GO(xcb_input_get_device_property_items_data_32_length
+// GO(xcb_input_get_device_property_items_data_32_end
+// GO(xcb_input_get_device_property_items_data_16
+// GO(xcb_input_get_device_property_items_data_32
+// GO(xcb_input_get_device_property_items_serialize
+// GO(xcb_input_get_device_property_items_unpack
+// GO(xcb_input_get_device_property_unchecked
+// GO(xcb_input_get_device_property_items
+// GO(xcb_input_get_device_property_reply
+// GO(xcb_input_group_info_next
+// GO(xcb_input_group_info_end
+// GO(xcb_input_modifier_info_next
+// GO(xcb_input_modifier_info_end
+// GO(xcb_input_xi_query_pointer_unchecked
+// GO(xcb_input_xi_query_pointer_buttons
+// GO(xcb_input_xi_query_pointer_buttons_length
+// GO(xcb_input_xi_query_pointer_buttons_end
+// GO(xcb_input_xi_query_pointer_reply
+// GO(xcb_input_xi_warp_pointer
+// GO(xcb_input_xi_change_cursor
+// GO(xcb_input_add_master_name
+// GO(xcb_input_add_master_name_length
+// GO(xcb_input_add_master_name_end
+// GO(xcb_input_add_master_next
+// GO(xcb_input_add_master_end
+// GO(xcb_input_remove_master_next
+// GO(xcb_input_remove_master_end
+// GO(xcb_input_attach_slave_next
+// GO(xcb_input_attach_slave_end
+// GO(xcb_input_detach_slave_next
+// GO(xcb_input_detach_slave_end
+// GO(xcb_input_hierarchy_change_data_add_master_name
+// GO(xcb_input_hierarchy_change_data_add_master_name_length
+// GO(xcb_input_hierarchy_change_data_add_master_name_end
+// GO(xcb_input_hierarchy_change_data_serialize
+// GO(xcb_input_hierarchy_change_data_unpack
+// GO(xcb_input_hierarchy_change_next
+// GO(xcb_input_hierarchy_change_end
+// GO(xcb_input_xi_change_hierarchy
+// GO(xcb_input_xi_change_hierarchy_changes_length
+// GO(xcb_input_xi_change_hierarchy_changes_iterator
+// GO(xcb_input_xi_set_client_pointer
+// GO(xcb_input_xi_get_client_pointer_unchecked
+// GO(xcb_input_xi_get_client_pointer_reply
+// GO(xcb_input_event_mask_mask
+// GO(xcb_input_event_mask_mask_length
+// GO(xcb_input_event_mask_mask_end
+// GO(xcb_input_event_mask_next
+// GO(xcb_input_event_mask_end
+// GO(xcb_input_xi_select_events
+// GO(xcb_input_xi_select_events_masks_length
+// GO(xcb_input_xi_select_events_masks_iterator
+GO(xcb_input_xi_query_version_unchecked, uFpWW)
+GO(xcb_input_xi_query_version, uFpWW)
+// GO(xcb_input_xi_query_version_reply
+// GO(xcb_input_button_class_state
+// GO(xcb_input_button_class_labels_length
+// GO(xcb_input_button_class_labels_end
+// GO(xcb_input_button_class_labels
+// GO(xcb_input_button_class_next
+// GO(xcb_input_button_class_end
+// GO(xcb_input_key_class_keys
+// GO(xcb_input_key_class_keys_length
+// GO(xcb_input_key_class_keys_end
+// GO(xcb_input_key_class_next
+// GO(xcb_input_key_class_end
+// GO(xcb_input_scroll_class_next
+// GO(xcb_input_scroll_class_end
+// GO(xcb_input_touch_class_next
+// GO(xcb_input_touch_class_end
+// GO(xcb_input_gesture_class_next
+// GO(xcb_input_gesture_class_end
+// GO(xcb_input_valuator_class_next
+// GO(xcb_input_valuator_class_end
+// GO(xcb_input_device_class_data_button_state
+// GO(xcb_input_device_class_data_button_labels_length
+// GO(xcb_input_device_class_data_button_labels_end
+// GO(xcb_input_device_class_data_button_labels
+// GO(xcb_input_device_class_data_serialize
+// GO(xcb_input_device_class_data_unpack
+// GO(xcb_input_device_class_next
+// GO(xcb_input_device_class_end
+// GO(xcb_input_xi_device_info_name
+// GO(xcb_input_xi_device_info_classes_length
+// GO(xcb_input_xi_device_info_name_end
+// GO(xcb_input_xi_device_info_classes_iterator
+// GO(xcb_input_xi_device_info_next
+// GO(xcb_input_xi_device_info_end
+// GO(xcb_input_xi_query_device_unchecked
+// GO(xcb_input_xi_query_device_infos_length
+// GO(xcb_input_xi_query_device_infos_iterator
+// GO(xcb_input_xi_query_device_reply
+// GO(xcb_input_xi_set_focus
+// GO(xcb_input_xi_get_focus_unchecked
+// GO(xcb_input_xi_get_focus_reply
+// GO(xcb_input_xi_grab_device_unchecked
+// GO(xcb_input_xi_grab_device_reply
+// GO(xcb_input_xi_ungrab_device
+// GO(xcb_input_xi_allow_events
+// GO(xcb_input_grab_modifier_info_next
+// GO(xcb_input_grab_modifier_info_end
+// GO(xcb_input_xi_passive_grab_device_unchecked
+// GO(xcb_input_xi_passive_grab_device_modifiers
+// GO(xcb_input_xi_passive_grab_device_modifiers_length
+// GO(xcb_input_xi_passive_grab_device_modifiers_iterator
+// GO(xcb_input_xi_passive_grab_device_reply
+// GO(xcb_input_xi_passive_ungrab_device
+// GO(xcb_input_xi_passive_ungrab_device_modifiers
+// GO(xcb_input_xi_passive_ungrab_device_modifiers_length
+// GO(xcb_input_xi_passive_ungrab_device_modifiers_end
+// GO(xcb_input_xi_list_properties_unchecked
+// GO(xcb_input_xi_list_properties_properties
+// GO(xcb_input_xi_list_properties_properties_length
+// GO(xcb_input_xi_list_properties_properties_end
+// GO(xcb_input_xi_list_properties_reply
+// GO(xcb_input_xi_change_property_items_data_8
+// GO(xcb_input_xi_change_property_items_data_32_length
+// GO(xcb_input_xi_change_property_items_data_32_end
+// GO(xcb_input_xi_change_property_items_data_16
+// GO(xcb_input_xi_change_property_items_data_32
+// GO(xcb_input_xi_change_property_items_serialize
+// GO(xcb_input_xi_change_property_items_unpack
+// GO(xcb_input_xi_change_property
+// GO(xcb_input_xi_change_property_aux
+// GO(xcb_input_xi_change_property_items
+// GO(xcb_input_xi_delete_property
+// GO(xcb_input_xi_get_property_items_data_8
+// GO(xcb_input_xi_get_property_items_data_32_length
+// GO(xcb_input_xi_get_property_items_data_32_end
+// GO(xcb_input_xi_get_property_items_data_16
+// GO(xcb_input_xi_get_property_items_data_32
+// GO(xcb_input_xi_get_property_items_serialize
+// GO(xcb_input_xi_get_property_items_unpack
+// GO(xcb_input_xi_get_property_unchecked
+// GO(xcb_input_xi_get_property_items
+// GO(xcb_input_xi_get_property_reply
+// GO(xcb_input_xi_get_selected_events_unchecked
+// GO(xcb_input_xi_get_selected_events_masks_length
+// GO(xcb_input_xi_get_selected_events_masks_iterator
+// GO(xcb_input_xi_get_selected_events_reply
+// GO(xcb_input_barrier_release_pointer_info_next
+// GO(xcb_input_barrier_release_pointer_info_end
+// GO(xcb_input_xi_barrier_release_pointer
+// GO(xcb_input_xi_barrier_release_pointer_barriers
+// GO(xcb_input_xi_barrier_release_pointer_barriers_length
+// GO(xcb_input_xi_barrier_release_pointer_barriers_iterator
+// GO(xcb_input_device_changed_classes_length
+// GO(xcb_input_device_changed_classes_iterator
+// GO(xcb_input_key_press_valuator_mask
+// GO(xcb_input_key_press_axisvalues_length
+// GO(xcb_input_key_press_valuator_mask_end
+// GO(xcb_input_key_press_axisvalues
+// GO(xcb_input_key_press_axisvalues_iterator
+// GO(xcb_input_button_press_valuator_mask
+// GO(xcb_input_button_press_axisvalues_length
+// GO(xcb_input_button_press_valuator_mask_end
+// GO(xcb_input_button_press_axisvalues
+// GO(xcb_input_button_press_axisvalues_iterator
+// GO(xcb_input_enter_buttons
+// GO(xcb_input_enter_buttons_length
+// GO(xcb_input_enter_buttons_end
+// GO(xcb_input_hierarchy_info_next
+// GO(xcb_input_hierarchy_info_end
+// GO(xcb_input_hierarchy_infos
+// GO(xcb_input_hierarchy_infos_length
+// GO(xcb_input_hierarchy_infos_iterator
+// GO(xcb_input_raw_key_press_valuator_mask
+// GO(xcb_input_raw_key_press_axisvalues_raw_length
+// GO(xcb_input_raw_key_press_valuator_mask_end
+// GO(xcb_input_raw_key_press_axisvalues_raw
+// GO(xcb_input_raw_key_press_axisvalues_raw_iterator
+// GO(xcb_input_raw_button_press_valuator_mask
+// GO(xcb_input_raw_button_press_axisvalues_raw_length
+// GO(xcb_input_raw_button_press_valuator_mask_end
+// GO(xcb_input_raw_button_press_axisvalues_raw
+// GO(xcb_input_raw_button_press_axisvalues_raw_iterator
+// GO(xcb_input_touch_begin_valuator_mask
+// GO(xcb_input_touch_begin_axisvalues_length
+// GO(xcb_input_touch_begin_valuator_mask_end
+// GO(xcb_input_touch_begin_axisvalues
+// GO(xcb_input_touch_begin_axisvalues_iterator
+// GO(xcb_input_raw_touch_begin_valuator_mask
+// GO(xcb_input_raw_touch_begin_axisvalues_raw_length
+// GO(xcb_input_raw_touch_begin_valuator_mask_end
+// GO(xcb_input_raw_touch_begin_axisvalues_raw
+// GO(xcb_input_raw_touch_begin_axisvalues_raw_iterator
+// GO(xcb_input_event_for_send_next
+// GO(xcb_input_event_for_send_end
+// GO(xcb_input_send_extension_event
+// GO(xcb_input_send_extension_event_events
+// GO(xcb_input_send_extension_event_classes_length
+// GO(xcb_input_send_extension_event_events_iterator
+// GO(xcb_input_send_extension_event_classes
+// GO(xcb_input_send_extension_event_classes_end