Merge remote branch 'whot/for-keith'

This commit is contained in:
Keith Packard 2010-12-06 19:45:11 -08:00
commit 01e9fa7da3
8 changed files with 49 additions and 33 deletions

View File

@ -870,8 +870,10 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
continue;
if (!sd->button)
continue;
if (button_is_down(sd, key, BUTTON_PROCESSED))
return DONT_PROCESS;
for (i = 1; i <= sd->button->numButtons; i++)
if (sd->button->map[i] == key &&
button_is_down(sd, i, BUTTON_PROCESSED))
return DONT_PROCESS;
}
}
set_button_up(device, key, BUTTON_PROCESSED);

View File

@ -326,14 +326,6 @@ countValuators(DeviceEvent *ev, int *first)
{
if (BitIsOn(ev->valuators.mask, i))
{
/* Assume mode of first_valuator matches XI1 device mode. Stop when the
* event mode changes since XI1 can't handle mixed mode devices.
*/
if (first_valuator > -1 &&
BitIsOn(ev->valuators.mode, i) !=
BitIsOn(ev->valuators.mode, first_valuator))
break;
if (first_valuator == -1)
first_valuator = i;
last_valuator = i;

View File

@ -1458,14 +1458,15 @@ configInputDevices(XF86ConfLayoutPtr layout, serverLayoutPtr servlayoutp)
irp = layout->lay_input_lst;
count = 0;
while (irp) {
indp[count] = xnfalloc(sizeof(InputInfoRec));
indp[count] = xf86AllocateInput();
if (!configInput(indp[count], irp->iref_inputdev, X_CONFIG)) {
while(count--)
free(indp[count]);
free(indp);
return FALSE;
}
indp[count]->options = irp->iref_option_lst;
indp[count]->options = xf86OptionListMerge(indp[count]->options,
irp->iref_option_lst);
count++;
irp = (XF86ConfInputrefPtr)irp->list.next;
}

View File

@ -280,7 +280,8 @@ void
xf86ProcessCommonOptions(InputInfoPtr pInfo,
pointer list)
{
if (!xf86SetBoolOption(list, "AlwaysCore", 1) ||
if (xf86SetBoolOption(list, "Floating", 0) ||
!xf86SetBoolOption(list, "AlwaysCore", 1) ||
!xf86SetBoolOption(list, "SendCoreEvents", 1) ||
!xf86SetBoolOption(list, "CorePointer", 1) ||
!xf86SetBoolOption(list, "CoreKeyboard", 1)) {
@ -652,7 +653,7 @@ IgnoreInputClass(const InputInfoPtr idev, const InputAttributes *attrs)
return ignore;
}
static InputInfoPtr
InputInfoPtr
xf86AllocateInput(void)
{
InputInfoPtr pInfo;

View File

@ -155,6 +155,7 @@ extern _X_EXPORT void xf86DisableDevice(DeviceIntPtr dev, Bool panic);
extern _X_EXPORT void xf86EnableDevice(DeviceIntPtr dev);
/* not exported */
int xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL is_auto);
InputInfoPtr xf86AllocateInput(void);
/* xf86Helper.c */
extern _X_EXPORT void xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags);

View File

@ -243,6 +243,7 @@ DemandLoad O I ??
Device S I Device file name
DeviceName S I Input device name
FlowControl S I Serial flow control ("xon", "none")
Floating B I Device initialised as floating
HistorySize I I ??
MaxX I I Maximum X coordinate
MaxY I I Maximum Y coordinate

View File

@ -904,30 +904,42 @@ the server. This affects implied layouts as well as explicit layouts
specified in the configuration and/or on the command line.
.TP 7
.BI "Option \*qCorePointer\*q"
Deprecated, use
.B SendCoreEvents
instead.
Deprecated, see
.B Floating
.TP 7
.BI "Option \*qCoreKeyboard\*q"
Deprecated, use
.B SendCoreEvents
instead.
Deprecated, see
.B Floating
.TP 7
.BI "Option \*qAlwaysCore\*q \*q" boolean \*q
.B
Deprecated, use
.B SendCoreEvents
instead.
Deprecated, see
.B Floating
.TP 7
.BI "Option \*qSendCoreEvents\*q \*q" boolean \*q
Both of these options are equivalent, and when enabled cause the
input device to report core events through the master device. They are
enabled by default. Any device configured to send core events will be
attached to the virtual core pointer or keyboard and control the cursor by
default. Devices with
.B SendCoreEvents
disabled will be \*qfloating\*q and only accessible by clients employing the
X Input extension. This option controls the startup behavior only, a device
Deprecated, see
.B Floating
.TP 7
.BI "Option \*qFloating\*q \*q" boolean \*q
When enabled, the input device is set up floating and does not
report events through any master device or control a cursor. The device is
only available to clients using the X Input Extension API. This option is
disabled by default.
The options
.B CorePointer,
.B CoreKeyboard,
.B AlwaysCore,
and
.B SendCoreEvents,
are the inverse of option
.B Floating
(i.e.
.B SendCoreEvents \*qon\*q
is equivalent to
.B Floating \*qoff\*q
).
This option controls the startup behavior only, a device
may be reattached or set floating at runtime.
.PP
For pointing devices, the following options control how the pointer

View File

@ -320,6 +320,7 @@ CopyGetMasterEvent(DeviceIntPtr sdev,
{
DeviceIntPtr mdev;
int len = original->any.length;
int type = original->any.type;
CHECKEVENT(original);
@ -327,7 +328,12 @@ CopyGetMasterEvent(DeviceIntPtr sdev,
if (!sdev || !sdev->u.master)
return NULL;
switch(original->any.type)
#if XFreeXDGA
if (type == ET_DGAEvent)
type = original->dga_event.subtype;
#endif
switch(type)
{
case ET_KeyPress:
case ET_KeyRelease: