How to lock one mouse/keyboard pair to each screen?
Solution 1
One interesting possibility I forgot is what Tyler Szabo's answer to my question Multiseat gaming? @gaming.SE suggests:
I would use VMWare. This might be possible with just VMWare player (you will need to be able to allocate a mouse to a single VM), or you might need to try VMWare workstation (for which I'm quite sure it works). The hardware/software you will need is as follows:
- Multiple sets of USB input (mice/keyboard/etc.)
A license for VMWare Workstation (or another VM system)
- Set up a VM as you normally would and power it down.
- Configure the USB Controller (found in "Edit virtual machine settings") to "Show all USB input devices"
- Start up the VM.
- In the menu Navigate to VM -> Removable Devices, and select the inputs to direct to the VM exclusively. (Now one of your keyboard/mouse combinations will only be directed to that VM.)
At this point you have a window that is fully isolated with a set of inputs that will go only to it. You can do this for as many VMs as you can handle (and for as many sets of input as you can handle - I only tested with 2). The only irritating thing that can happen is is you have only 2 sets of inputs (in my case my laptop keyboard, my USB keyboard and 2 USB mice). I set up a VM with my USB Keyboard/Mouse combo, and maximized that to one monitor (you need VMWare tools to do this). For the other I had a problem that my mouse could escape from one VM onto the other (a feature of tools); to get around that I put my second VM in "exculsive mode" thus caputuring my "host" input; I could also have had a second keyboard/mouse combo.
Best of this is, you don't even need multiple monitors, you could do it split-screen style with a bunch of VMs+keyboards+mice.
Solution 2
If I understood your needs you have to bind one screen, keyboard and one mouse to one ServerLayout and the others to the second one.
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerLayout"
Identifier "Layout1"
Screen 0 "Screen1"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
This is, as far as I know, the only way to proceed.
Also Arch as one good tutorial:
https://wiki.archlinux.org/index.php/Xorg_multiseat
And Linux Toys show you even how to put in place a 6 seated setup
http://www.linuxtoys.org/multiseat/multiseat.html
Solution 3
Have you tried something like MDM? It looks like it can handle the keyboard/video/mouse mappings in its config file.
Solution 4
Look for multiseat and you will find the info you need. The linked Wikipedia article even describes where MDM fits in.
Im a Debian fan so check out Debian Wiki or the Ubuntu Community Docs. XORG has a good collection of multiseat info, including this detailed how-to.
Good Luck!
Solution 5
The other answers were certainly on the right path, but the MDM/multiseat documentation is quite lacking and disperse. Some of the links provided here were outdated, referencing XFree86, Xorg's predecessor. Some digging shows that most MDM configurations use Xephyr.
Here is a HOWTO on building Multiseat Xephyr configuration:
Related videos on Youtube
Comments
-
Tobias Kienzler over 1 year
Using the ATI Catalyst Control Center (fglrx), I setup two desktops (the multidesktop option) via dual-head. Now I have two mice and keyboards (USB) attached which, using
xinput
can be put in two separate groups. Can I lock each group to one screen? And how can this be done permanently? Alternatively, instructions for turning this "lite multiseat" configuration into multiseat are appreciated as well.This is the xorg.conf as setup by the Catalyst Center:
Section "ServerLayout" Identifier "amdcccle Layout" Screen 0 "amdcccle-Screen[1]-0" 0 0 Screen "amdcccle-Screen[1]-1" 1400 0 EndSection Section "Module" Load "glx" EndSection Section "Monitor" Identifier "0-CRT1" Option "VendorName" "ATI Proprietary Driver" Option "ModelName" "Generic Autodetecting Monitor" Option "DPMS" "true" Option "PreferredMode" "1400x1050" Option "TargetRefresh" "60" Option "Position" "0 0" Option "Rotate" "normal" Option "Disable" "false" EndSection Section "Monitor" Identifier "0-DFP1" Option "VendorName" "ATI Proprietary Driver" Option "ModelName" "Generic Autodetecting Monitor" Option "DPMS" "true" Option "PreferredMode" "1400x1050" Option "TargetRefresh" "60" Option "Position" "0 0" Option "Rotate" "normal" Option "Disable" "false" EndSection Section "Device" Identifier "Default Device" Driver "fglrx" EndSection Section "Device" Identifier "amdcccle-Device[1]-0" Driver "fglrx" Option "Monitor-DFP1" "0-DFP1" BusID "PCI:1:5:0" EndSection Section "Device" Identifier "amdcccle-Device[1]-1" Driver "fglrx" Option "Monitor-CRT1" "0-CRT1" BusID "PCI:1:5:0" Screen 1 EndSection Section "Screen" Identifier "Default Screen" DefaultDepth 24 SubSection "Display" EndSubSection EndSection Section "Screen" Identifier "amdcccle-Screen[1]-0" Device "amdcccle-Device[1]-0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "Screen" Identifier "amdcccle-Screen[1]-1" Device "amdcccle-Device[1]-1" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "DRI" Group "vglusers" Mode 0660 EndSection
(the latter entry is from VirtualGL, see this question, it should be irrelevant here)
-
Tobias Kienzler over 13 yearsThank you all for your answers. I won't be able to test this for a while so I can't accept an answer yet, but I'll award tmow's answer for quoting a bit more
-
-
Tobias Kienzler over 13 yearsthanks. however the first link is XFree86 related, does it still work with X11? Also, you miss-pasted the Arch link...
-
tmow over 13 yearsYes, sure, it applies also to X.org. Sorry for the mistake, I've fixed it and actually that link should explain you much better a multi-seat configuration
-
Tobias Kienzler over 13 yearsthis is the only solution I got working so far...