2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
12 #include "ecore_x_private.h"
16 int _ecore_x_xi2_opcode = -1;
20 ecore_x_input_multi_select(Ecore_X_Window win)
25 static XIDeviceInfo *devs = NULL;
26 static int checked = 0;
27 static int check_ret = 1;
32 int major = 2, minor = 0;
35 if (!XQueryExtension(_ecore_x_disp, "XInputExtension",
36 &_ecore_x_xi2_opcode, &event, &error))
38 _ecore_x_xi2_opcode = -1;
43 if (XIQueryVersion(_ecore_x_disp, &major, &minor) == BadRequest)
45 _ecore_x_xi2_opcode = -1;
49 devs = XIQueryDevice(_ecore_x_disp, XIAllDevices, &num);
50 // XIFreeDeviceInfo(devs);
54 if (!check_ret) return 0;
61 for (i = 0; i < num; i++)
63 XIDeviceInfo *dev = &(devs[i]);
65 if (dev->use == XIFloatingSlave)
67 XIEventMask eventmask;
68 unsigned char mask[1] = { 0 };
70 eventmask.deviceid = dev->deviceid;
71 eventmask.mask_len = sizeof(mask);
72 eventmask.mask = mask;
73 XISetMask(mask, XI_ButtonPress);
74 XISetMask(mask, XI_ButtonRelease);
75 XISetMask(mask, XI_Motion);
76 XISelectEvents(_ecore_x_disp, win, &eventmask, 1);