The problem
I hosted a LAN party a little while ago and ended up needing
to loan out multiple computers to guests in the interest of having no
one try to lug their desktop over. As it turns out, I don't keep multiple
of spare gaming-ready laptops around, so I needed to get more computers
somehow.
The solution
My desktop has three screens attached to it (two monitors plus a
projector), so given an extra keyboard and mouse (or two), it should be
possible to run multiple instances of the game on it at the same time to
let multiple people play using the same computer.
The script from this forum post makes it easy to
set up multi-pointer X so a second keyboard and mouse will get
its own mouse cursor. Then each keyboard and mouse pair can interact
with its own instance of the game.
As an additional aid, I wrote monitor-lock.py
which
allows you to assign a mouse to a monitor, so it cannot be moved off
that monitor to prevent accidentally interacting with the other player's
instance of the game.
The basic usage is that you first run it with no arguments to get the
available screens and pointers getting an output something like this:
$ ./monitor-lock.py
...
Available screens:
screen 0: {'x': 0, 'y': 0, 'width': 3840, 'height': 2160}
screen 1: {'x': 3840, 'y': 0, 'width': 1920, 'height': 1200}
screen 2: {'x': 3840, 'y': 1200, 'width': 1920, 'height': 1080}
Available pointers:
device 2: Virtual core pointer
device 17: second pointer
USAGE: ./monitor-lock.py [device] [screen]
and then in a screen
session (so you don't have to worry about
accidentally doing this on a monitor you've locked your pointer away
from), run
and
to lock the primary pointer to the first screen and the second pointer to
the second screen.
Just use Ctrl
+C
to kill the process when you want the pointer to be
able to move freely again.
The details