xfree86: Use "Ignore" option in InputClass to skip devices

Sometimes it is desirable to skip adding specific input devices to the
server. The "Ignore" option is used similarly to Monitor sections so
that matched devices will not be added. BadIDChoice is returned to the
config backend so that it will clean up all resources.

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Dan Nicholson 2010-02-10 15:36:46 +10:00 committed by Peter Hutterer
parent 8b1a685f00
commit a378e361a5
2 changed files with 37 additions and 2 deletions

View File

@ -574,6 +574,27 @@ MergeInputClasses(IDevPtr idev, InputAttributes *attrs)
return Success;
}
static Bool
IgnoreInputClass(IDevPtr idev, InputAttributes *attrs)
{
XF86ConfInputClassPtr cl;
Bool ignore;
for (cl = xf86configptr->conf_inputclass_lst; cl; cl = cl->list.next) {
if (!InputClassMatches(cl, attrs))
continue;
if (xf86findOption(cl->option_lst, "Ignore")) {
ignore = xf86CheckBoolOption(cl->option_lst, "Ignore", FALSE);
if (ignore)
xf86Msg(X_CONFIG,
"%s: Ignoring device from InputClass \"%s\"\n",
idev->identifier, cl->identifier);
return ignore;
}
}
return FALSE;
}
/**
* Create a new input device, activate and enable it.
*
@ -736,6 +757,11 @@ NewInputDeviceRequest (InputOption *options, InputAttributes *attrs,
/* Apply InputClass settings */
if (attrs) {
if (IgnoreInputClass(idev, attrs)) {
rval = BadIDChoice;
goto unwind;
}
rval = MergeInputClasses(idev, attrs);
if (rval != Success)
goto unwind;

View File

@ -1070,11 +1070,20 @@ When an input device has been matched to the
.B InputClass
section, any
.B Option
entries are applied to the device. See the
entries are applied to the device. One
.B InputClass
specific
.B Option
is recognized. See the
.B InputDevice
section above for a description of the various
section above for a description of the remaining
.B Option
entries.
.TP 7
.BI "Option \*qIgnore\*q \*q" boolean \*q
This optional entry specifies that the device should be ignored entirely,
and not added to the server. This can be useful when the device is handled
by another program and no X events should be generated.
.SH "DEVICE SECTION"
The config file may have multiple
.B Device