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.
Created attachment 30657 [details] [review] proposed fix 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>
Created attachment 30658 [details] [review] proposed fix 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>
Wasn't this supposed to be addressed by ConsoleKit or something?
commit 159b03e13760920274b573a2bccdbf6a79f059e7 Author: Lennart Poettering <lennart@poettering.net> Date: Mon Jul 18 21:19:23 2011 +0200 config: add udev/systemd multi-seat support
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.