[PATCH] Support filtering of hotplugged input devices
Ilia K.
mail4ilia at gmail.com
Sat Oct 24 09:29:46 PDT 2009
Hi all.
I've just filled X.Org Bug 24712
<http://bugs.freedesktop.org/show_bug.cgi?id=24712> and attached a
patch to fix the issue.
Follows a copy of bug/fix description I added to bug report.
The usual deployment of multiseat environment involves running several
instances of X server simultaneously. If hotplugging is enabled, all
keyboards/mice are detected and used by all X servers, which makes multiseat
environment practically unusable. A traditional workaround for this issue was
disabling hotplugging with
Option "AutoAddDevices" "false"
However, this workaround misses all the advantages of hotplugging.
Particularly, changing a physical keyboard/mouse requires X server restart.
This is especially annoying when some low-end keyboards/mice/usb hubs "blink"
(go off, then immediately on) due to EMI or something like that.
A possible solution is to allow hotplugging but "filter out" new input device
notifications for unnecessary devices.
Attached patch implements the fix.
A user is able to attach x11_layout option to the device which is matched
against current server layout id. If x11_layout option is missing, is "*"
or equals to server layout id, the device is added. Otherwise it's ignored.
Assume that in xorg.conf AutoAddDevices option is set to true (which is a
default) and two ServerLayout sections are present:
Section "ServerLayout"
Identifier "Seat0"
Screen 0 "Screen0" 0 0
EndSection
Section "ServerLayout"
Identifier "Seat1"
Screen 0 "Screen1" 0 0
EndSection
Than the following file can be added as
/etc/hal/fdi/policy/30-multiseat_input.fdi :
<?xml version="1.0" encoding="UTF-8"?>
<!-- define which keyboard/mouse should be used by which instance of X server
-->
<deviceinfo version="0.2">
<device>
<!-- Seat 0 uses usb hub 1-7 only -->
<match key="info.category" string="input">
<match key="linux.sysfs_path"
contains="/sys/devices/pci0000:00/0000:00:02.1/usb1/1-7/">
<merge key="input.x11_options.x11_layout" type="string">Seat0</merge>
</match>
</match>
<!-- Seat 1 uses usb hub 1-8 only -->
<match key="info.category" string="input">
<match key="linux.sysfs_path"
contains="/sys/devices/pci0000:00/0000:00:02.1/usb1/1-8/">
<merge key="input.x11_options.x11_layout" type="string">Seat1</merge>
</match>
</match>
<!-- input devices which don't match above rules will be added to all X
instances -->
</device>
</deviceinfo>
I've tested the patch (and actually I'm using it right now) on
xorg-server-1.6.0 under Ubuntu 9.04.
P.S. due to some problem with bugs.freedesktop.org (it has shown me
Internal Server Error several times) the patch attachment appears 3
times and the first comment 2 times on a bug page. If you know how to
delete superfluous entries, please do it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Support-filtering-of-hotplugged-input-devices.patch
Type: text/x-diff
Size: 1854 bytes
Desc: not available
Url : http://lists.x.org/archives/xorg-devel/attachments/20091024/87eb4d10/attachment.patch
More information about the xorg-devel
mailing list