xf86Xinput: Add the xf86Post(Proximity|Button|Key)EventP helper functions.
xf86PostKeyboardEvent also makes use of xf86PostKeyEventP to avoid code duplication, and the valuator verification has been split into the XI_VERIFY_VALUATORS macro. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
a148d40742
commit
8da0ff2d51
|
@ -713,11 +713,7 @@ xf86PostMotionEvent(DeviceIntPtr device,
|
||||||
int i = 0;
|
int i = 0;
|
||||||
static int valuators[MAX_VALUATORS];
|
static int valuators[MAX_VALUATORS];
|
||||||
|
|
||||||
if (num_valuators > MAX_VALUATORS) {
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
|
|
||||||
" MAX_VALUATORS\n", __FUNCTION__, num_valuators);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
va_start(var, num_valuators);
|
va_start(var, num_valuators);
|
||||||
for (i = 0; i < num_valuators; i++)
|
for (i = 0; i < num_valuators; i++)
|
||||||
|
@ -741,11 +737,7 @@ xf86PostMotionEventP(DeviceIntPtr device,
|
||||||
int index;
|
int index;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|
||||||
if (num_valuators > MAX_VALUATORS) {
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
|
|
||||||
" MAX_VALUATORS\n", __FUNCTION__, num_valuators);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_absolute)
|
if (is_absolute)
|
||||||
flags = POINTER_ABSOLUTE;
|
flags = POINTER_ABSOLUTE;
|
||||||
|
@ -801,21 +793,32 @@ xf86PostProximityEvent(DeviceIntPtr device,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
va_list var;
|
va_list var;
|
||||||
int i, nevents;
|
int i;
|
||||||
int valuators[MAX_VALUATORS];
|
int valuators[MAX_VALUATORS];
|
||||||
|
|
||||||
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
if (num_valuators > MAX_VALUATORS) {
|
|
||||||
xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
|
|
||||||
" MAX_VALUATORS\n", __FUNCTION__, num_valuators);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
va_start(var, num_valuators);
|
va_start(var, num_valuators);
|
||||||
for (i = 0; i < num_valuators; i++)
|
for (i = 0; i < num_valuators; i++)
|
||||||
valuators[i] = va_arg(var, int);
|
valuators[i] = va_arg(var, int);
|
||||||
va_end(var);
|
va_end(var);
|
||||||
|
|
||||||
|
xf86PostProximityEventP(device, is_in, first_valuator, num_valuators,
|
||||||
|
valuators);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xf86PostProximityEventP(DeviceIntPtr device,
|
||||||
|
int is_in,
|
||||||
|
int first_valuator,
|
||||||
|
int num_valuators,
|
||||||
|
int *valuators)
|
||||||
|
{
|
||||||
|
int i, nevents;
|
||||||
|
|
||||||
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
|
|
||||||
GetEventList(&xf86Events);
|
GetEventList(&xf86Events);
|
||||||
nevents = GetProximityEvents(xf86Events, device,
|
nevents = GetProximityEvents(xf86Events, device,
|
||||||
is_in ? ProximityIn : ProximityOut,
|
is_in ? ProximityIn : ProximityOut,
|
||||||
|
@ -836,6 +839,29 @@ xf86PostButtonEvent(DeviceIntPtr device,
|
||||||
{
|
{
|
||||||
va_list var;
|
va_list var;
|
||||||
int valuators[MAX_VALUATORS];
|
int valuators[MAX_VALUATORS];
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
|
|
||||||
|
va_start(var, num_valuators);
|
||||||
|
for (i = 0; i < num_valuators; i++)
|
||||||
|
valuators[i] = va_arg(var, int);
|
||||||
|
va_end(var);
|
||||||
|
|
||||||
|
xf86PostButtonEventP(device, is_absolute, button, is_down, first_valuator,
|
||||||
|
num_valuators, valuators);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xf86PostButtonEventP(DeviceIntPtr device,
|
||||||
|
int is_absolute,
|
||||||
|
int button,
|
||||||
|
int is_down,
|
||||||
|
int first_valuator,
|
||||||
|
int num_valuators,
|
||||||
|
int *valuators)
|
||||||
|
{
|
||||||
int i = 0, nevents = 0;
|
int i = 0, nevents = 0;
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
|
@ -846,16 +872,8 @@ xf86PostButtonEvent(DeviceIntPtr device,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (num_valuators > MAX_VALUATORS) {
|
|
||||||
xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
|
|
||||||
" MAX_VALUATORS\n", __FUNCTION__, num_valuators);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
va_start(var, num_valuators);
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
for (i = 0; i < num_valuators; i++)
|
|
||||||
valuators[i] = va_arg(var, int);
|
|
||||||
va_end(var);
|
|
||||||
|
|
||||||
GetEventList(&xf86Events);
|
GetEventList(&xf86Events);
|
||||||
nevents = GetPointerEvents(xf86Events, device,
|
nevents = GetPointerEvents(xf86Events, device,
|
||||||
|
@ -878,7 +896,7 @@ xf86PostKeyEvent(DeviceIntPtr device,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
va_list var;
|
va_list var;
|
||||||
int i = 0, nevents = 0;
|
int i = 0;
|
||||||
static int valuators[MAX_VALUATORS];
|
static int valuators[MAX_VALUATORS];
|
||||||
|
|
||||||
/* instil confidence in the user */
|
/* instil confidence in the user */
|
||||||
|
@ -886,18 +904,37 @@ xf86PostKeyEvent(DeviceIntPtr device,
|
||||||
"badly south after this message, then xf86PostKeyEvent is "
|
"badly south after this message, then xf86PostKeyEvent is "
|
||||||
"broken.\n");
|
"broken.\n");
|
||||||
|
|
||||||
if (num_valuators > MAX_VALUATORS) {
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
|
|
||||||
" MAX_VALUATORS\n", __FUNCTION__, num_valuators);
|
va_start(var, num_valuators);
|
||||||
return;
|
for (i = 0; i < num_valuators; i++)
|
||||||
}
|
valuators[i] = va_arg(var, int);
|
||||||
|
va_end(var);
|
||||||
|
|
||||||
|
xf86PostKeyEventP(device, key_code, is_down, is_absolute, first_valuator,
|
||||||
|
num_valuators, valuators);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xf86PostKeyEventP(DeviceIntPtr device,
|
||||||
|
unsigned int key_code,
|
||||||
|
int is_down,
|
||||||
|
int is_absolute,
|
||||||
|
int first_valuator,
|
||||||
|
int num_valuators,
|
||||||
|
int *valuators)
|
||||||
|
{
|
||||||
|
int i = 0, nevents = 0;
|
||||||
|
|
||||||
|
/* instil confidence in the user */
|
||||||
|
DebugF("this function has never been tested properly. if things go quite "
|
||||||
|
"badly south after this message, then xf86PostKeyEvent is "
|
||||||
|
"broken.\n");
|
||||||
|
|
||||||
|
XI_VERIFY_VALUATORS(num_valuators);
|
||||||
|
|
||||||
if (is_absolute) {
|
if (is_absolute) {
|
||||||
va_start(var, num_valuators);
|
|
||||||
for (i = 0; i < num_valuators; i++)
|
|
||||||
valuators[i] = va_arg(var, int);
|
|
||||||
va_end(var);
|
|
||||||
|
|
||||||
GetEventList(&xf86Events);
|
GetEventList(&xf86Events);
|
||||||
nevents = GetKeyboardValuatorEvents(xf86Events, device,
|
nevents = GetKeyboardValuatorEvents(xf86Events, device,
|
||||||
is_down ? KeyPress : KeyRelease,
|
is_down ? KeyPress : KeyRelease,
|
||||||
|
@ -919,28 +956,7 @@ xf86PostKeyboardEvent(DeviceIntPtr device,
|
||||||
unsigned int key_code,
|
unsigned int key_code,
|
||||||
int is_down)
|
int is_down)
|
||||||
{
|
{
|
||||||
int nevents = 0, i = 0;
|
xf86PostKeyEventP(device, key_code, is_down, 0, 0, 0, NULL);
|
||||||
int index;
|
|
||||||
|
|
||||||
#if XFreeXDGA
|
|
||||||
DeviceIntPtr pointer;
|
|
||||||
|
|
||||||
/* Some pointers send key events, paired device is wrong then. */
|
|
||||||
pointer = IsPointerDevice(device) ? device : GetPairedDevice(device);
|
|
||||||
|
|
||||||
if (miPointerGetScreen(pointer)) {
|
|
||||||
index = miPointerGetScreen(pointer)->myNum;
|
|
||||||
if (DGAStealKeyEvent(device, index, key_code, is_down))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GetEventList(&xf86Events);
|
|
||||||
nevents = GetKeyboardEvents(xf86Events, device,
|
|
||||||
is_down ? KeyPress : KeyRelease, key_code);
|
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDevicePtr
|
LocalDevicePtr
|
||||||
|
|
|
@ -80,6 +80,14 @@
|
||||||
#define XI_PRIVATE(dev) \
|
#define XI_PRIVATE(dev) \
|
||||||
(((LocalDevicePtr)((dev)->public.devicePrivate))->private)
|
(((LocalDevicePtr)((dev)->public.devicePrivate))->private)
|
||||||
|
|
||||||
|
/* Valuator verification macro */
|
||||||
|
#define XI_VERIFY_VALUATORS(num_valuators) \
|
||||||
|
if (num_valuators > MAX_VALUATORS) { \
|
||||||
|
xf86Msg(X_ERROR, "%s: num_valuator %d is greater than" \
|
||||||
|
" MAX_VALUATORS\n", __FUNCTION__, num_valuators); \
|
||||||
|
return; \
|
||||||
|
}
|
||||||
|
|
||||||
/* Stupid API backwards-compatibility. */
|
/* Stupid API backwards-compatibility. */
|
||||||
#define TS_Raw 60
|
#define TS_Raw 60
|
||||||
#define TS_Scaled 61
|
#define TS_Scaled 61
|
||||||
|
@ -158,12 +166,20 @@ extern _X_EXPORT void xf86PostMotionEventP(DeviceIntPtr device, int is_absolute,
|
||||||
int first_valuator, int num_valuators, int *valuators);
|
int first_valuator, int num_valuators, int *valuators);
|
||||||
extern _X_EXPORT void xf86PostProximityEvent(DeviceIntPtr device, int is_in,
|
extern _X_EXPORT void xf86PostProximityEvent(DeviceIntPtr device, int is_in,
|
||||||
int first_valuator, int num_valuators, ...);
|
int first_valuator, int num_valuators, ...);
|
||||||
|
extern _X_EXPORT void xf86PostProximityEventP(DeviceIntPtr device, int is_in, int first_valuator,
|
||||||
|
int num_valuators, int *valuators);
|
||||||
extern _X_EXPORT void xf86PostButtonEvent(DeviceIntPtr device, int is_absolute, int button,
|
extern _X_EXPORT void xf86PostButtonEvent(DeviceIntPtr device, int is_absolute, int button,
|
||||||
int is_down, int first_valuator, int num_valuators,
|
int is_down, int first_valuator, int num_valuators,
|
||||||
...);
|
...);
|
||||||
|
extern _X_EXPORT void xf86PostButtonEventP(DeviceIntPtr device, int is_absolute, int button,
|
||||||
|
int is_down, int first_valuator, int num_valuators,
|
||||||
|
int *valuators);
|
||||||
extern _X_EXPORT void xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down,
|
extern _X_EXPORT void xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down,
|
||||||
int is_absolute, int first_valuator, int num_valuators,
|
int is_absolute, int first_valuator, int num_valuators,
|
||||||
...);
|
...);
|
||||||
|
extern _X_EXPORT void xf86PostKeyEventP(DeviceIntPtr device, unsigned int key_code, int is_down,
|
||||||
|
int is_absolute, int first_valuator, int num_valuators,
|
||||||
|
int *valuators);
|
||||||
extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code,
|
extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code,
|
||||||
int is_down);
|
int is_down);
|
||||||
extern _X_EXPORT int xf86ActivateDevice(LocalDevicePtr local);
|
extern _X_EXPORT int xf86ActivateDevice(LocalDevicePtr local);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user