summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <dbn.lists@gmail.com>2010-02-10 15:36:46 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2010-02-11 19:25:18 +1000
commita378e361a5de89f0be8b68ebc3e854f56cefe666 (patch)
tree3965df5b4d3687ec482f71c68bf306391c01ad50
parent8b1a685f00ae76be864cc188943a0874f48b8d64 (diff)
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>
-rw-r--r--hw/xfree86/common/xf86Xinput.c26
-rw-r--r--hw/xfree86/doc/man/xorg.conf.man.pre13
2 files changed, 37 insertions, 2 deletions
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 6cbc23e36..b37dae62a 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -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;
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index baabdb59f..ee91b9afe 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -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