input: Provide Queue{Button|Keyboard|Proximity}Event helpers
Don't require every caller to use GPE + mieqEnqueue, provide matching Queue...Event functions instead. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
1b8593a6c1
commit
e7150db535
|
@ -47,6 +47,7 @@
|
||||||
#include "eventstr.h"
|
#include "eventstr.h"
|
||||||
#include "eventconvert.h"
|
#include "eventconvert.h"
|
||||||
#include "inpututils.h"
|
#include "inpututils.h"
|
||||||
|
#include "mi.h"
|
||||||
|
|
||||||
#include <X11/extensions/XKBproto.h>
|
#include <X11/extensions/XKBproto.h>
|
||||||
#include "xkbsrv.h"
|
#include "xkbsrv.h"
|
||||||
|
@ -924,6 +925,39 @@ updateHistory(DeviceIntPtr dev, ValuatorMask *mask, CARD32 ms)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
queueEventList(DeviceIntPtr device, EventList *events, int nevents)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < nevents; i++)
|
||||||
|
mieqEnqueue(device, (InternalEvent*)((events + i)->event));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate internal events representing this keyboard event and enqueue
|
||||||
|
* them on the event queue.
|
||||||
|
*
|
||||||
|
* FIXME: don't require the event list to be passed in.
|
||||||
|
* FIXME: flags for relative/abs motion?
|
||||||
|
*
|
||||||
|
* @param events Event list used as temporary storage
|
||||||
|
* @param device The device to generate the event for
|
||||||
|
* @param type Event type, one of KeyPress or KeyRelease
|
||||||
|
* @param keycode Key code of the pressed/released key
|
||||||
|
* @param mask Valuator mask for valuators present for this event.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
QueueKeyboardEvents(EventList *events, DeviceIntPtr device, int type,
|
||||||
|
int keycode, const ValuatorMask *mask)
|
||||||
|
{
|
||||||
|
int nevents;
|
||||||
|
|
||||||
|
nevents = GetKeyboardEvents(events, device, type, keycode, mask);
|
||||||
|
queueEventList(device, events, nevents);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a set of InternalEvents for KeyPress/KeyRelease, optionally
|
* Returns a set of InternalEvents for KeyPress/KeyRelease, optionally
|
||||||
* also with valuator events.
|
* also with valuator events.
|
||||||
|
@ -1061,6 +1095,30 @@ transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask, int *x, int *y)
|
||||||
*y = lround(p.v[1]);
|
*y = lround(p.v[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate internal events representing this pointer event and enqueue them
|
||||||
|
* on the event queue.
|
||||||
|
*
|
||||||
|
* FIXME: don't require the event list to be passed in.
|
||||||
|
*
|
||||||
|
* @param events Event list used as temporary storage
|
||||||
|
* @param device The device to generate the event for
|
||||||
|
* @param type Event type, one of ButtonPress, ButtonRelease, MotionNotify
|
||||||
|
* @param buttons Button number of the buttons modified. Must be 0 for
|
||||||
|
* MotionNotify
|
||||||
|
* @param flags Event modification flags
|
||||||
|
* @param mask Valuator mask for valuators present for this event.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
QueuePointerEvents(EventList *events, DeviceIntPtr device, int type,
|
||||||
|
int buttons, int flags, const ValuatorMask *mask)
|
||||||
|
{
|
||||||
|
int nevents;
|
||||||
|
|
||||||
|
nevents = GetPointerEvents(events, device, type, buttons, flags, mask);
|
||||||
|
queueEventList(device, events, nevents);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a series of InternalEvents (filled into the EventList)
|
* Generate a series of InternalEvents (filled into the EventList)
|
||||||
* representing pointer motion, or button presses.
|
* representing pointer motion, or button presses.
|
||||||
|
@ -1214,6 +1272,28 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
return num_events;
|
return num_events;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate internal events representing this proximity event and enqueue
|
||||||
|
* them on the event queue.
|
||||||
|
*
|
||||||
|
* FIXME: don't require the event list to be passed in.
|
||||||
|
*
|
||||||
|
* @param events Event list used as temporary storage
|
||||||
|
* @param device The device to generate the event for
|
||||||
|
* @param type Event type, one of ProximityIn or ProximityOut
|
||||||
|
* @param keycode Key code of the pressed/released key
|
||||||
|
* @param mask Valuator mask for valuators present for this event.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
QueueProximityEvents(EventList *events, DeviceIntPtr device, int type,
|
||||||
|
const ValuatorMask *mask)
|
||||||
|
{
|
||||||
|
int nevents;
|
||||||
|
|
||||||
|
nevents = GetProximityEvents(events, device, type, mask);
|
||||||
|
queueEventList(device, events, nevents);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate ProximityIn/ProximityOut InternalEvents, accompanied by
|
* Generate ProximityIn/ProximityOut InternalEvents, accompanied by
|
||||||
|
|
|
@ -176,7 +176,7 @@ static void enqueueMotion(DevicePtr pDev, int x, int y)
|
||||||
{
|
{
|
||||||
GETDMXLOCALFROMPDEV;
|
GETDMXLOCALFROMPDEV;
|
||||||
DeviceIntPtr p = dmxLocal->pDevice;
|
DeviceIntPtr p = dmxLocal->pDevice;
|
||||||
int i, nevents, valuators[3];
|
int valuators[3];
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
int detail = 0; /* XXX should this be mask of pressed buttons? */
|
int detail = 0; /* XXX should this be mask of pressed buttons? */
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
|
@ -185,10 +185,8 @@ static void enqueueMotion(DevicePtr pDev, int x, int y)
|
||||||
|
|
||||||
valuator_mask_set_range(&mask, 0, 2, valuators);
|
valuator_mask_set_range(&mask, 0, 2, valuators);
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetPointerEvents(events, p, MotionNotify, detail,
|
QueuePointerEvents(events, p, MotionNotify, detail,
|
||||||
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(p, (InternalEvent*)(events + i)->event);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,10 +289,8 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
|
||||||
deviceValuator *xv = (deviceValuator *)xev+1;
|
deviceValuator *xv = (deviceValuator *)xev+1;
|
||||||
int thisX = 0;
|
int thisX = 0;
|
||||||
int thisY = 0;
|
int thisY = 0;
|
||||||
int i;
|
|
||||||
int count;
|
int count;
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
int nevents;
|
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
|
|
||||||
memset(xE, 0, sizeof(xE));
|
memset(xE, 0, sizeof(xE));
|
||||||
|
@ -348,6 +344,7 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
|
||||||
}
|
}
|
||||||
count = 2;
|
count = 2;
|
||||||
} else {
|
} else {
|
||||||
|
int i;
|
||||||
for (i = 0, count = 0; i < axesCount; i += 6) {
|
for (i = 0, count = 0; i < axesCount; i += 6) {
|
||||||
xev->time = GetTimeInMillis();
|
xev->time = GetTimeInMillis();
|
||||||
xev->type = DeviceMotionNotify;
|
xev->type = DeviceMotionNotify;
|
||||||
|
@ -376,10 +373,8 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
|
||||||
dmxSigioBlock();
|
dmxSigioBlock();
|
||||||
valuator_mask_set_range(&mask, firstAxis, axesCount, v);
|
valuator_mask_set_range(&mask, firstAxis, axesCount, v);
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetPointerEvents(events, pDevice, MotionNotify, 0,
|
QueuePointerEvents(events, pDevice, MotionNotify, 0,
|
||||||
POINTER_ABSOLUTE, &mask);
|
POINTER_ABSOLUTE, &mask);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
|
|
||||||
|
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioUnblock();
|
dmxSigioUnblock();
|
||||||
|
@ -395,7 +390,6 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
|
||||||
DeviceIntPtr pDevice = dmxLocal->pDevice;
|
DeviceIntPtr pDevice = dmxLocal->pDevice;
|
||||||
int valuators[MAX_VALUATORS];
|
int valuators[MAX_VALUATORS];
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
int nevents, i;
|
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
|
|
||||||
if (!e)
|
if (!e)
|
||||||
|
@ -453,11 +447,7 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioBlock();
|
dmxSigioBlock();
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetKeyboardEvents(events, pDevice, event,
|
QueueKeyboardEvents(events, pDevice, event, ke->keycode, &mask);
|
||||||
ke->keycode, &mask);
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
|
|
||||||
|
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioUnblock();
|
dmxSigioUnblock();
|
||||||
break;
|
break;
|
||||||
|
@ -468,11 +458,8 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioBlock();
|
dmxSigioBlock();
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetPointerEvents(events, pDevice, event, ke->keycode,
|
QueuePointerEvents(events, pDevice, event, ke->keycode,
|
||||||
POINTER_ABSOLUTE, &mask);
|
POINTER_ABSOLUTE, &mask);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
|
|
||||||
|
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioUnblock();
|
dmxSigioUnblock();
|
||||||
break;
|
break;
|
||||||
|
@ -483,10 +470,7 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioBlock();
|
dmxSigioBlock();
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetProximityEvents(events, pDevice, event, &mask);
|
QueueProximityEvents(events, pDevice, event, &mask);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
|
|
||||||
|
|
||||||
if (block)
|
if (block)
|
||||||
dmxSigioUnblock();
|
dmxSigioUnblock();
|
||||||
break;
|
break;
|
||||||
|
@ -667,7 +651,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
|
||||||
GETDMXINPUTFROMPDEV;
|
GETDMXINPUTFROMPDEV;
|
||||||
xEvent xE;
|
xEvent xE;
|
||||||
DeviceIntPtr p = dmxLocal->pDevice;
|
DeviceIntPtr p = dmxLocal->pDevice;
|
||||||
int i, nevents, valuators[3];
|
int valuators[3];
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
|
|
||||||
|
@ -685,9 +669,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
|
||||||
|
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
/*ErrorF("KEY %d sym %d\n", detail, (int) keySym);*/
|
/*ErrorF("KEY %d sym %d\n", detail, (int) keySym);*/
|
||||||
nevents = GetKeyboardEvents(events, p, type, detail, NULL);
|
QueueKeyboardEvents(events, p, type, detail, NULL);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(p, (InternalEvent*)(events + i)->event);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case ButtonPress:
|
case ButtonPress:
|
||||||
|
@ -695,10 +677,8 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
|
||||||
detail = dmxGetButtonMapping(dmxLocal, detail);
|
detail = dmxGetButtonMapping(dmxLocal, detail);
|
||||||
valuator_mask_zero(&mask);
|
valuator_mask_zero(&mask);
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetPointerEvents(events, p, type, detail,
|
QueuePointerEvents(events, p, type, detail,
|
||||||
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(p, (InternalEvent*)(events + i)->event);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case MotionNotify:
|
case MotionNotify:
|
||||||
|
@ -707,10 +687,8 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
|
||||||
valuators[1] = e->xmotion.y;
|
valuators[1] = e->xmotion.y;
|
||||||
valuators[2] = e->xmotion.state; /* FIXME: WTF?? */
|
valuators[2] = e->xmotion.state; /* FIXME: WTF?? */
|
||||||
valuator_mask_set_range(&mask, 0, 3, valuators);
|
valuator_mask_set_range(&mask, 0, 3, valuators);
|
||||||
nevents = GetPointerEvents(events, p, type, detail,
|
QueuePointerEvents(events, p, type, detail,
|
||||||
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(p, (InternalEvent*)(events + i)->event);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case EnterNotify:
|
case EnterNotify:
|
||||||
|
|
|
@ -1793,7 +1793,7 @@ void
|
||||||
KdReleaseAllKeys (void)
|
KdReleaseAllKeys (void)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
int key, nEvents, i;
|
int key;
|
||||||
KdKeyboardInfo *ki;
|
KdKeyboardInfo *ki;
|
||||||
|
|
||||||
KdBlockSigio ();
|
KdBlockSigio ();
|
||||||
|
@ -1804,9 +1804,7 @@ KdReleaseAllKeys (void)
|
||||||
if (key_is_down(ki->dixdev, key, KEY_POSTED | KEY_PROCESSED)) {
|
if (key_is_down(ki->dixdev, key, KEY_POSTED | KEY_PROCESSED)) {
|
||||||
KdHandleKeyboardEvent(ki, KeyRelease, key);
|
KdHandleKeyboardEvent(ki, KeyRelease, key);
|
||||||
GetEventList(&kdEvents);
|
GetEventList(&kdEvents);
|
||||||
nEvents = GetKeyboardEvents(kdEvents, ki->dixdev, KeyRelease, key, NULL);
|
QueueGetKeyboardEvents(kdEvents, ki->dixdev, KeyRelease, key, NULL);
|
||||||
for (i = 0; i < nEvents; i++)
|
|
||||||
KdQueueEvent (ki->dixdev, (kdEvents + i)->event);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1842,7 +1840,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo *ki,
|
||||||
unsigned char key_code;
|
unsigned char key_code;
|
||||||
KeyClassPtr keyc = NULL;
|
KeyClassPtr keyc = NULL;
|
||||||
KeybdCtrl *ctrl = NULL;
|
KeybdCtrl *ctrl = NULL;
|
||||||
int type, nEvents, i;
|
int type;
|
||||||
|
|
||||||
if (!ki || !ki->dixdev || !ki->dixdev->kbdfeed || !ki->dixdev->key)
|
if (!ki || !ki->dixdev || !ki->dixdev->kbdfeed || !ki->dixdev->key)
|
||||||
return;
|
return;
|
||||||
|
@ -1863,10 +1861,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo *ki,
|
||||||
type = KeyPress;
|
type = KeyPress;
|
||||||
|
|
||||||
GetEventList(&kdEvents);
|
GetEventList(&kdEvents);
|
||||||
|
QueueKeyboardEvents(kdEvents, ki->dixdev, type, key_code, NULL);
|
||||||
nEvents = GetKeyboardEvents(kdEvents, ki->dixdev, type, key_code, NULL);
|
|
||||||
for (i = 0; i < nEvents; i++)
|
|
||||||
KdQueueEvent(ki->dixdev, (InternalEvent *)((kdEvents + i)->event));
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ErrorF("driver %s wanted to post scancode %d outside of [%d, %d]!\n",
|
ErrorF("driver %s wanted to post scancode %d outside of [%d, %d]!\n",
|
||||||
|
@ -1965,7 +1960,6 @@ void
|
||||||
_KdEnqueuePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z,
|
_KdEnqueuePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z,
|
||||||
int b, int absrel, Bool force)
|
int b, int absrel, Bool force)
|
||||||
{
|
{
|
||||||
int nEvents = 0, i = 0;
|
|
||||||
int valuators[3] = { x, y, z };
|
int valuators[3] = { x, y, z };
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
|
|
||||||
|
@ -1976,9 +1970,7 @@ _KdEnqueuePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z,
|
||||||
valuator_mask_set_range(&mask, 0, 3, valuators);
|
valuator_mask_set_range(&mask, 0, 3, valuators);
|
||||||
|
|
||||||
GetEventList(&kdEvents);
|
GetEventList(&kdEvents);
|
||||||
nEvents = GetPointerEvents(kdEvents, pi->dixdev, type, b, absrel, &mask);
|
QueuePointerEvents(kdEvents, pi->dixdev, type, b, absrel, &mask);
|
||||||
for (i = 0; i < nEvents; i++)
|
|
||||||
KdQueueEvent(pi->dixdev, (InternalEvent *)((kdEvents + i)->event));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -376,7 +376,7 @@ static void
|
||||||
xf86ReleaseKeys(DeviceIntPtr pDev)
|
xf86ReleaseKeys(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
KeyClassPtr keyc;
|
KeyClassPtr keyc;
|
||||||
int i, j, nevents, sigstate;
|
int i, sigstate;
|
||||||
|
|
||||||
if (!pDev || !pDev->key)
|
if (!pDev || !pDev->key)
|
||||||
return;
|
return;
|
||||||
|
@ -399,9 +399,7 @@ xf86ReleaseKeys(DeviceIntPtr pDev)
|
||||||
i++) {
|
i++) {
|
||||||
if (key_is_down(pDev, i, KEY_POSTED)) {
|
if (key_is_down(pDev, i, KEY_POSTED)) {
|
||||||
sigstate = xf86BlockSIGIO ();
|
sigstate = xf86BlockSIGIO ();
|
||||||
nevents = GetKeyboardEvents(xf86Events, pDev, KeyRelease, i, NULL);
|
QueueKeyboardEvents(xf86Events, pDev, KeyRelease, i, NULL);
|
||||||
for (j = 0; j < nevents; j++)
|
|
||||||
mieqEnqueue(pDev, (InternalEvent*)(xf86Events + j)->event);
|
|
||||||
xf86UnblockSIGIO(sigstate);
|
xf86UnblockSIGIO(sigstate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1012,7 +1012,6 @@ xf86PostMotionEventM(DeviceIntPtr device,
|
||||||
int is_absolute,
|
int is_absolute,
|
||||||
const ValuatorMask *mask)
|
const ValuatorMask *mask)
|
||||||
{
|
{
|
||||||
int i = 0, nevents = 0;
|
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|
||||||
if (valuator_mask_num_valuators(mask) > 0)
|
if (valuator_mask_num_valuators(mask) > 0)
|
||||||
|
@ -1050,11 +1049,7 @@ xf86PostMotionEventM(DeviceIntPtr device,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nevents = GetPointerEvents(xf86Events, device, MotionNotify, 0, flags, mask);
|
QueuePointerEvents(xf86Events, device, MotionNotify, 0, flags, mask);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++) {
|
|
||||||
mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1099,13 +1094,8 @@ xf86PostProximityEventM(DeviceIntPtr device,
|
||||||
int is_in,
|
int is_in,
|
||||||
const ValuatorMask *mask)
|
const ValuatorMask *mask)
|
||||||
{
|
{
|
||||||
int i, nevents;
|
QueueProximityEvents(xf86Events, device,
|
||||||
|
is_in ? ProximityIn : ProximityOut, mask);
|
||||||
nevents = GetProximityEvents(xf86Events, device,
|
|
||||||
is_in ? ProximityIn : ProximityOut, mask);
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1157,7 +1147,6 @@ xf86PostButtonEventM(DeviceIntPtr device,
|
||||||
int is_down,
|
int is_down,
|
||||||
const ValuatorMask *mask)
|
const ValuatorMask *mask)
|
||||||
{
|
{
|
||||||
int i = 0, nevents = 0;
|
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|
||||||
if (valuator_mask_num_valuators(mask) > 0)
|
if (valuator_mask_num_valuators(mask) > 0)
|
||||||
|
@ -1177,13 +1166,9 @@ xf86PostButtonEventM(DeviceIntPtr device,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nevents = GetPointerEvents(xf86Events, device,
|
QueuePointerEvents(xf86Events, device,
|
||||||
is_down ? ButtonPress : ButtonRelease, button,
|
is_down ? ButtonPress : ButtonRelease, button,
|
||||||
flags, mask);
|
flags, mask);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1235,8 +1220,6 @@ xf86PostKeyEventM(DeviceIntPtr device,
|
||||||
int is_absolute,
|
int is_absolute,
|
||||||
const ValuatorMask *mask)
|
const ValuatorMask *mask)
|
||||||
{
|
{
|
||||||
int i = 0, nevents = 0;
|
|
||||||
|
|
||||||
#if XFreeXDGA
|
#if XFreeXDGA
|
||||||
DeviceIntPtr pointer;
|
DeviceIntPtr pointer;
|
||||||
|
|
||||||
|
@ -1250,12 +1233,9 @@ xf86PostKeyEventM(DeviceIntPtr device,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nevents = GetKeyboardEvents(xf86Events, device,
|
QueueKeyboardEvents(xf86Events, device,
|
||||||
is_down ? KeyPress : KeyRelease,
|
is_down ? KeyPress : KeyRelease,
|
||||||
key_code, mask);
|
key_code, mask);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -104,20 +104,16 @@ xnestCollectExposures(void)
|
||||||
void
|
void
|
||||||
xnestQueueKeyEvent(int type, unsigned int keycode)
|
xnestQueueKeyEvent(int type, unsigned int keycode)
|
||||||
{
|
{
|
||||||
int i, n;
|
|
||||||
|
|
||||||
GetEventList(&xnestEvents);
|
GetEventList(&xnestEvents);
|
||||||
lastEventTime = GetTimeInMillis();
|
lastEventTime = GetTimeInMillis();
|
||||||
n = GetKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode, NULL);
|
QueueKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode, NULL);
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
mieqEnqueue(xnestKeyboardDevice, (InternalEvent*)(xnestEvents + i)->event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xnestCollectEvents(void)
|
xnestCollectEvents(void)
|
||||||
{
|
{
|
||||||
XEvent X;
|
XEvent X;
|
||||||
int i, n, valuators[2];
|
int valuators[2];
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
GetEventList(&xnestEvents);
|
GetEventList(&xnestEvents);
|
||||||
|
@ -138,20 +134,16 @@ xnestCollectEvents(void)
|
||||||
valuator_mask_set_range(&mask, 0, 0, NULL);
|
valuator_mask_set_range(&mask, 0, 0, NULL);
|
||||||
xnestUpdateModifierState(X.xkey.state);
|
xnestUpdateModifierState(X.xkey.state);
|
||||||
lastEventTime = GetTimeInMillis();
|
lastEventTime = GetTimeInMillis();
|
||||||
n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
|
QueuePointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
|
||||||
X.xbutton.button, POINTER_RELATIVE, &mask);
|
X.xbutton.button, POINTER_RELATIVE, &mask);
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
valuator_mask_set_range(&mask, 0, 0, NULL);
|
valuator_mask_set_range(&mask, 0, 0, NULL);
|
||||||
xnestUpdateModifierState(X.xkey.state);
|
xnestUpdateModifierState(X.xkey.state);
|
||||||
lastEventTime = GetTimeInMillis();
|
lastEventTime = GetTimeInMillis();
|
||||||
n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
|
QueuePointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
|
||||||
X.xbutton.button, POINTER_RELATIVE, &mask);
|
X.xbutton.button, POINTER_RELATIVE, &mask);
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MotionNotify:
|
case MotionNotify:
|
||||||
|
@ -159,10 +151,8 @@ xnestCollectEvents(void)
|
||||||
valuators[1] = X.xmotion.y;
|
valuators[1] = X.xmotion.y;
|
||||||
valuator_mask_set_range(&mask, 0, 2, valuators);
|
valuator_mask_set_range(&mask, 0, 2, valuators);
|
||||||
lastEventTime = GetTimeInMillis();
|
lastEventTime = GetTimeInMillis();
|
||||||
n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
|
QueuePointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
|
||||||
0, POINTER_ABSOLUTE, &mask);
|
0, POINTER_ABSOLUTE, &mask);
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FocusIn:
|
case FocusIn:
|
||||||
|
@ -193,10 +183,8 @@ xnestCollectEvents(void)
|
||||||
valuators[1] = X.xcrossing.y;
|
valuators[1] = X.xcrossing.y;
|
||||||
valuator_mask_set_range(&mask, 0, 2, valuators);
|
valuator_mask_set_range(&mask, 0, 2, valuators);
|
||||||
lastEventTime = GetTimeInMillis();
|
lastEventTime = GetTimeInMillis();
|
||||||
n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
|
QueuePointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
|
||||||
0, POINTER_ABSOLUTE, &mask);
|
0, POINTER_ABSOLUTE, &mask);
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
|
|
||||||
xnestDirectInstallColormaps(pScreen);
|
xnestDirectInstallColormaps(pScreen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -433,7 +433,6 @@ static void DarwinPrepareValuators(DeviceIntPtr pDev, int *valuators, ScreenPtr
|
||||||
void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, float pointer_x, float pointer_y,
|
void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, float pointer_x, float pointer_y,
|
||||||
float pressure, float tilt_x, float tilt_y) {
|
float pressure, float tilt_x, float tilt_y) {
|
||||||
static int darwinFakeMouseButtonDown = 0;
|
static int darwinFakeMouseButtonDown = 0;
|
||||||
int i, num_events;
|
|
||||||
ScreenPtr screen;
|
ScreenPtr screen;
|
||||||
int valuators[5];
|
int valuators[5];
|
||||||
|
|
||||||
|
@ -486,15 +485,13 @@ void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, floa
|
||||||
darwinEvents_lock(); {
|
darwinEvents_lock(); {
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
valuator_mask_set_range(&mask, 0, (pDev == darwinPointer) ? 2 : 5, valuators);
|
valuator_mask_set_range(&mask, 0, (pDev == darwinPointer) ? 2 : 5, valuators);
|
||||||
num_events = GetPointerEvents(darwinEvents, pDev, ev_type, ev_button,
|
QueuePointerEvents(darwinEvents, pDev, ev_type, ev_button,
|
||||||
POINTER_ABSOLUTE, &mask);
|
POINTER_ABSOLUTE, &mask);
|
||||||
for(i=0; i<num_events; i++) mieqEnqueue (pDev, (InternalEvent*)darwinEvents[i].event);
|
DarwinPokeEQ();
|
||||||
if(num_events > 0) DarwinPokeEQ();
|
|
||||||
} darwinEvents_unlock();
|
} darwinEvents_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DarwinSendKeyboardEvents(int ev_type, int keycode) {
|
void DarwinSendKeyboardEvents(int ev_type, int keycode) {
|
||||||
int i, num_events;
|
|
||||||
|
|
||||||
if(!darwinEvents) {
|
if(!darwinEvents) {
|
||||||
DEBUG_LOG("DarwinSendKeyboardEvents called before darwinEvents was initialized\n");
|
DEBUG_LOG("DarwinSendKeyboardEvents called before darwinEvents was initialized\n");
|
||||||
|
@ -502,15 +499,13 @@ void DarwinSendKeyboardEvents(int ev_type, int keycode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
darwinEvents_lock(); {
|
darwinEvents_lock(); {
|
||||||
num_events = GetKeyboardEvents(darwinEvents, darwinKeyboard, ev_type, keycode + MIN_KEYCODE, NULL);
|
QueueKeyboardEvents(darwinEvents, darwinKeyboard, ev_type, keycode + MIN_KEYCODE, NULL);
|
||||||
for(i=0; i<num_events; i++) mieqEnqueue(darwinKeyboard, (InternalEvent*)darwinEvents[i].event);
|
DarwinPokeEQ();
|
||||||
if(num_events > 0) DarwinPokeEQ();
|
|
||||||
} darwinEvents_unlock();
|
} darwinEvents_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, float pointer_x, float pointer_y,
|
void DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, float pointer_x, float pointer_y,
|
||||||
float pressure, float tilt_x, float tilt_y) {
|
float pressure, float tilt_x, float tilt_y) {
|
||||||
int i, num_events;
|
|
||||||
ScreenPtr screen;
|
ScreenPtr screen;
|
||||||
int valuators[5];
|
int valuators[5];
|
||||||
|
|
||||||
|
@ -531,9 +526,8 @@ void DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, float pointer_x,
|
||||||
darwinEvents_lock(); {
|
darwinEvents_lock(); {
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
valuator_mask_set_range(&mask, 0, 5, valuators);
|
valuator_mask_set_range(&mask, 0, 5, valuators);
|
||||||
num_events = GetProximityEvents(darwinEvents, pDev, ev_type, &mask);
|
QueueProximityEvents(darwinEvents, pDev, ev_type, &mask);
|
||||||
for(i=0; i<num_events; i++) mieqEnqueue (pDev, (InternalEvent*)darwinEvents[i].event);
|
DarwinPokeEQ();
|
||||||
if(num_events > 0) DarwinPokeEQ();
|
|
||||||
} darwinEvents_unlock();
|
} darwinEvents_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -473,7 +473,6 @@ void
|
||||||
winSendKeyEvent (DWORD dwKey, Bool fDown)
|
winSendKeyEvent (DWORD dwKey, Bool fDown)
|
||||||
{
|
{
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
int i, nevents;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When alt-tabing between screens we can get phantom key up messages
|
* When alt-tabing between screens we can get phantom key up messages
|
||||||
|
@ -485,10 +484,7 @@ winSendKeyEvent (DWORD dwKey, Bool fDown)
|
||||||
g_winKeyState[dwKey] = fDown;
|
g_winKeyState[dwKey] = fDown;
|
||||||
|
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetKeyboardEvents(events, g_pwinKeyboard, fDown ? KeyPress : KeyRelease, dwKey + MIN_KEYCODE, NULL);
|
QueueKeyboardEvents(events, g_pwinKeyboard, fDown ? KeyPress : KeyRelease, dwKey + MIN_KEYCODE, NULL);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(g_pwinKeyboard, (InternalEvent*)events[i].event);
|
|
||||||
|
|
||||||
winDebug("winSendKeyEvent: dwKey: %d, fDown: %d, nEvents %d\n",
|
winDebug("winSendKeyEvent: dwKey: %d, fDown: %d, nEvents %d\n",
|
||||||
dwKey, fDown, nevents);
|
dwKey, fDown, nevents);
|
||||||
|
|
|
@ -235,7 +235,6 @@ void
|
||||||
winMouseButtonsSendEvent (int iEventType, int iButton)
|
winMouseButtonsSendEvent (int iEventType, int iButton)
|
||||||
{
|
{
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
int i, nevents;
|
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
|
|
||||||
if (g_winMouseButtonMap)
|
if (g_winMouseButtonMap)
|
||||||
|
@ -243,11 +242,8 @@ winMouseButtonsSendEvent (int iEventType, int iButton)
|
||||||
|
|
||||||
valuator_mask_zero(&mask);
|
valuator_mask_zero(&mask);
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetPointerEvents(events, g_pwinPointer, iEventType, iButton,
|
QueuePointerEvents(events, g_pwinPointer, iEventType, iButton,
|
||||||
POINTER_RELATIVE, &mask);
|
POINTER_RELATIVE, &mask);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(g_pwinPointer, (InternalEvent*)events[i].event);
|
|
||||||
|
|
||||||
#if CYGDEBUG
|
#if CYGDEBUG
|
||||||
ErrorF("winMouseButtonsSendEvent: iEventType: %d, iButton: %d, nEvents %d\n",
|
ErrorF("winMouseButtonsSendEvent: iEventType: %d, iButton: %d, nEvents %d\n",
|
||||||
|
@ -367,7 +363,6 @@ winMouseButtonsHandle (ScreenPtr pScreen,
|
||||||
*/
|
*/
|
||||||
void winEnqueueMotion(int x, int y)
|
void winEnqueueMotion(int x, int y)
|
||||||
{
|
{
|
||||||
int i, nevents;
|
|
||||||
int valuators[2];
|
int valuators[2];
|
||||||
ValuatorMask mask;
|
ValuatorMask mask;
|
||||||
EventListPtr events;
|
EventListPtr events;
|
||||||
|
@ -378,9 +373,7 @@ void winEnqueueMotion(int x, int y)
|
||||||
|
|
||||||
valuator_mask_set_range(&mask, 0, 2, valuators);
|
valuator_mask_set_range(&mask, 0, 2, valuators);
|
||||||
GetEventList(&events);
|
GetEventList(&events);
|
||||||
nevents = GetPointerEvents(events, g_pwinPointer, MotionNotify, 0,
|
QueuePointerEvents(events, g_pwinPointer, MotionNotify, 0,
|
||||||
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
|
||||||
mieqEnqueue(g_pwinPointer, (InternalEvent*)events[i].event);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -461,6 +461,14 @@ extern _X_EXPORT int GetPointerEvents(
|
||||||
int flags,
|
int flags,
|
||||||
const ValuatorMask *mask);
|
const ValuatorMask *mask);
|
||||||
|
|
||||||
|
extern _X_EXPORT void QueuePointerEvents(
|
||||||
|
EventListPtr events,
|
||||||
|
DeviceIntPtr pDev,
|
||||||
|
int type,
|
||||||
|
int buttons,
|
||||||
|
int flags,
|
||||||
|
const ValuatorMask *mask);
|
||||||
|
|
||||||
extern _X_EXPORT int GetKeyboardEvents(
|
extern _X_EXPORT int GetKeyboardEvents(
|
||||||
EventListPtr events,
|
EventListPtr events,
|
||||||
DeviceIntPtr pDev,
|
DeviceIntPtr pDev,
|
||||||
|
@ -468,12 +476,25 @@ extern _X_EXPORT int GetKeyboardEvents(
|
||||||
int key_code,
|
int key_code,
|
||||||
const ValuatorMask *mask);
|
const ValuatorMask *mask);
|
||||||
|
|
||||||
|
extern _X_EXPORT void QueueKeyboardEvents(
|
||||||
|
EventListPtr events,
|
||||||
|
DeviceIntPtr pDev,
|
||||||
|
int type,
|
||||||
|
int key_code,
|
||||||
|
const ValuatorMask *mask);
|
||||||
|
|
||||||
extern int GetProximityEvents(
|
extern int GetProximityEvents(
|
||||||
EventListPtr events,
|
EventListPtr events,
|
||||||
DeviceIntPtr pDev,
|
DeviceIntPtr pDev,
|
||||||
int type,
|
int type,
|
||||||
const ValuatorMask *mask);
|
const ValuatorMask *mask);
|
||||||
|
|
||||||
|
extern void QueueProximityEvents(
|
||||||
|
EventListPtr events,
|
||||||
|
DeviceIntPtr pDev,
|
||||||
|
int type,
|
||||||
|
const ValuatorMask *mask);
|
||||||
|
|
||||||
extern void PostSyntheticMotion(
|
extern void PostSyntheticMotion(
|
||||||
DeviceIntPtr pDev,
|
DeviceIntPtr pDev,
|
||||||
int x,
|
int x,
|
||||||
|
|
Loading…
Reference in New Issue