Multiseat gaming?
Solution 1:
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:
This can be done in Linux, and has been possible for many years in both Linux and UNIX. What it is not, however, is well supported by configuration tools; setting it up will generally involve manually editing a bunch of files.
The search term you'll probably find most useful is multi-seat, which is a setup with multiple independent keyboard/mouse/monitor groups that multiple people can use at once (not to be confused with multi-head, which is where one user and keyboard/mouse pair uses multiple monitors). The Ubuntu documentation for setting up multiseat on recent (12.x/13.x) Ubuntu distros can be found here; the Arch Linux documentation for it (which is often helpful even if you don't use Arch, as they tend to go into great detail) is here. (If you already tried the Ubuntu instructions and they didn't work, detailing how and where they went wrong would be helpful.)
An alternative way to do things involves one central computer and a number of extremely minimal "thin clients" connected to it over a LAN; the central computer runs all the programs and the thin clients use X forwarding to act as additional displays for it. This can be even more aggravating to set up in some ways, though, as you need a very fast network to support multiple users, and stuff like sound support requires extra work if you want it to be streamed over the network to the clients rather than everything coming out of the central server's speakers.
Solution 3:
Multi-Seat single-desktop Linux
In Linux, there are many ways to achieve this kind of setup.
One way is to setup a multi-seat environment. In this kind of environment you can restrict multiple input devices to separate desktops. One 'seat' would have your controller, a second 'seat' would have your mouse. You can find instructions over at the Arch Wiki or at the multi-seat config section of Wikibooks.
Fedora added multi-seat support a while ago and has more user-friendly configuration than Arch (where you have to manually edit a large number of config files). If you just want to do a basic multi-seat setup, then you should go with that. However, a basic setup doesn't support using just a single video device.
Thus, having multiple video cards for your machine makes this kind of setup much easier to achieve. If you have an intel processor or AMD APU (the G-series Ryzen), these have an integrated gpu, which you can use for your second, non-gaming monitor. regular Ryzen and HEDT CPUs do not have an integrated GPU so I would recommend getting a cheap second video card and run the second monitor off that. Having a second keyboard also makes running this type of configuration much easier.
Since a game can/should only grab control of one of these desktops/seats, you should be able to mouse on one monitor and use the controller on another. However, if your game bypasses the windowing system and talks more directly to the hardware, this may not work with such a game.
On windows, you will need a paid program solution to do the same thing. They do exist, e.g. ASTER, or using the MultiPoint Server on the Server version of the windows operating system. (Which is probably not the version of windows you currently have). It's quite a bit more expensive than a simple desktop solution though, marketed to corporate environments.
Virtual machines
You could run multiple virtual machines using software like KVM or VMWare. The base machine can be any OS for this. You can then attach one device to one VM, and one to the other, then display each on a separate monitor. Or, if you want to do things like streaming, you would want to run one desktop on the host OS, and one on the virtual machine, giving the host OS access to the VM display.
This is a more rigorous and complex, but more isolated solution (likely to work with all games) than using multi-seat.
You will also need GPU passthrough to run anything graphically demanding at near-full framerate. Here's an example guide for KVM. The exact instructions will vary based on your hardware and VM software chosen. Setting this up is usually the most complicated part of a VM setup.