MouseMux is a program that allows multiple users to operate on the same windows desktop simultaneously.
Each user gets their own mouse pointer and can pair a keyboard with that pointer thereby creating a new virtual user.
It does something that Windows was never designed to do; allow multiple users to work on the same desktop at
the same time - this creates new interaction challenges: what happens if two users click in the same window?
What if user A wants to drag a window to the left and user B to the right? What happens in user A tries to close
the window user B is working in? There are many new scenarios and possible conflicts - the program applies a new
simple ruleset to try to make it a smooth ride. This manual will guide you through the details in running the program
and explains some of these new interaction rules and guidelines.
A one-minute introduction video:
Some of its features:
Support for Windows 10, 8, 7 and XP in both 32 and 64bit versions
Multi monitor Support
Per monitor DPI support
Three modes of operation:
Standard (emulating normal windows behavior)
Switched (switched interaction)
Multiplex (full concurrency)
Mouse pointers are tagged with a color for each user
Activity indicators for each mouse and keyboard
Support for hot plugging and removing mice and keyboards
Support for USB, PS2 and Bluetooth hardware
Automatically start with windows
Automatically load/save settings
Automatic updates while the program keeps running
Automatic mouse curve acceleration calibration
Hide to tray or taskbar
Per user features
Mouse information, manufacturer, features and more
Custom mouse acceleration via multiplier per axis
Custom mouse acceleration by loading/saving acceleration tables
Custom mouse acceleration through emulated ballistics from past Windows versions
Mouse buttons can be swapped and double click speed adjusted
Mouse wheel speed adjustment and inversion
Emulate horizontal wheel scrolling through key or button combo's
Select a cursor theme and cursor size
Lock the cursor to a specific display/monitor
Draw or annotate on the desktop
Keyboard information, manufacturer, features and more
Keyboard un-mapping and re-mapping
Record and play back macro's - even simultaneous playback is supported
Once you start MouseMux via its shortcut on the desktop or the start menu you will see a simple UI, this is main program.
If you started it for the first time it will do an initial calibration of your mouse - this will take a couple of seconds
and during that time all input to the system is disabled.
The main UI looks as follows:
On the top row:
User signifies the user number and a designated color
R stands for Registered
M stands for Mouse
K stands for Keyboard
Name is the username (which you can change)
When the program starts all mice are scanned and are added to the list. Note that some may be disabled by windows and some may be virtual (so not all will reference actual hardware).
When a user is not registered all the icons remain grey.
When you move a mouse for the first time it will be registered; you will see a black user icon appear under R. The mouse icon under M will also turn black. The mouse icon turns to orange whenever there is mouse movement detected.
When you type on a keyboard the keyboard icon will turn black. The keyboard icon turns orange whenever keyboard activity is detected.
The icon in the R column will light up orange if that user is the active user in Switched mode.
During runtime use CRTL-ALT-F12 for an emergency exit if needed.
Configuring a specific user
If a user moves (hovers) their mouse pointer over the main window the user config button (see image to the right)
will show the user number. Pressing it opens the configuration panel for that user. Settings are solely affecting that specific user
- that means that each user can specify (for example) a custom mouse acceleration and it will
only affect the specific device. There are multiple tabs, detailed below. Note that other users can also change the
settings of a user - so make sure that the correct user is active in the correct settings dialog. Opening the user
configuration for a specific user can also be done by double left clicking the user number/color in the main window.
Per user configuration options
The various options to configure are in separate tabs, here is a list of those:
Mouse info tab
This shows you information about the mouse device and the button, wheel, and position states.
The ‘winfo’ button will show additional Window information whenever the mouse moves over a new window.
Keyboard info tab
This shows basic information on the keyboard that is paired with the mouse.
Note that if the fields are empty either no keyboard is mapped (hit a key to see the information arrive) or
that the keyboard is already paired with another user. To un-map the keyboard (so another user can use it) press
the unmap button. Keyboards are mapped to the user that moves last with his/her mouse by pressing a key on that keyboard.
User stats tab
The user info tab shows various metrics on movement, button wheel and key usage of that user.
It also allows for you to change the name of the user by pressing the ‘change’ button and the apply.
Mouse speed multiplier tab
When MouseMux starts it will measure your current mouse acceleration and apply that for each user.
In this tab you can customize the acceleration for that specific mouse for each movement axis. This is only supported
for switched or multiplex mode – otherwise the controls are disabled. Acceleration is computed via two steps; the
base acceleration is taken and then multiplied by the pointer speed multiplier. Moving the slider to the right increases
the multiplication while moving it to the left decreases it.
Mouse speed emulation tab
The base speed acceleration can be modified in two ways: (1) Load a custom profile and (2) Load a specific mouse curve from a
windows version. Each windows version has had some small differences in mouse ballistics. You can select a windows
version, the speed and if you want to emulate Enhanced pointer precision. Then press the apply button to activate the
profile. This feature will give you the exact mouse acceleration as if it were that windows version. This is only supported
in switched or multiplex mode.
Mouse buttons tab
The options here allow you to change button behavior. The ‘Right button is primary’ option allows you to switch from
right to left hand button action. The double click speed can be customized with the slider.
Mouse wheel tab
The wheel speed can be modified with the slider. Inverting the wheel can be done by checking the checkbox.
Emulating a horizontal wheel is possible by choosing one of the options in the listbox.
The vertical wheel will then send horizontal wheel events when that condition is true.
Mouse theme tab
One can change the cursor pointer theme by selecting one from the listbox.
Most themes have a default maximum size that is supported, that information is displayed at the bottom of the tab.
Going to a larger size than suggested may give pixelated results. The ‘color tag’ checkbox allows to disable or
enable the small colored block associated with the cursor.
Mouse lock tab
The cursor can be locked to a specific monitor/display by selecting it from the list.
Pressing the ‘show’ button will highlight that specific screen. To limit the cursor movement to the work area,
also select the appropriate checkbox.
Mouse annotation tab
To annotate press the ‘draw’ button – then you can draw by pressing the left button.
The ‘clear’ button will clear the drawing. To save a screenshot press the ‘save’ button.
Changing the color, the brush size or the transparency is done by the appropriate controls.
Macro recording tab
Start a recording by pressing the ‘record’ button - all mouse movement, clicks and keyboard keys are recorded.
Interaction with MouseMux itself is filtered out – so clicking on any of MouseMux’s windows will generate dummy clicks.
Recording and playback is supported in native, switched, and multiplex mode - that means one can record in native mode
and playback (multiple) users in switched or multiplex mode. The recordings can be saved or loaded and reset.
To keep the window on top select check the checkbox.
User actions tab
The user actions tab allows you to inject MouseMux into a specific program thereby allowing that user to overtake
the input layer of the program. This is only allowed in multiplex mode. In multiplex mode, go to the activate ownership
button and press it, then go the program you want to 'own' and click on it. Make sure the program is a top-level window,
you cannot own windows itself (clicking on the Desktop is not allowed). Once you became owner you will see the information
in the tab change. You can now independently interact with that program. If you want to revert to normal usage press
the button again to 'un-own'.
Choosing the interaction mode
The interaction mode you select will regulate how multiple mice, users and keyboards interact with the underlying
programs and OS. There are three modes to choose from; native, switched or multiplex. The table below shows an
overview of what the features are as far as interaction in each mode.
Native mode emulates how windows normally behaves. All output from mouse devices is still routed through the
program yet the data is combined and sent to the normal windows cursor. The same for keyboards, all keyboard input
is combined and sent to the window that has keyboard focus. In other words; each mouse moves the same cursor and
each keyboard types to only one window.
Switched input mode
In this mode each user gets their own colored mouse pointer. A keyboard can be paired to any user and
once the pairing is done that keyboard will only send keystrokes to the window that is active for that user.
Users can independently drag and resize windows and can simultaneously type in different windows. Window activation
and working inside a window/program is limited – active interaction is switched that means that whenever a person
is holding down a mouse button all others are blocked from clicking inside a window (they can still drag windows
and type, but not actively interact in that window/program). Whenever somebody holds down a mouse button and anybody
else clicks that person’s pointer will change to show it is blocked. After a user clicks inside a window, they become
the active user. The active user is shown as an orange user icon in the list.
Keyboard pairing in switched input mode
Keyboard pairing means linking a keyboard to a mouse – together they represent a (virtual) user. Pairing is simple:
move a mouse and hit a key on the keyboard that you want to pair. You will see both the mouse and keyboard light up
orange in the row of your user number. Working with paired keyboards may feel unintuitive at first; here’s a use case
to explain why. User A and B sit behind the same computer, there are two mice attached and one single keyboard.
Both users are interacting with the desktop with their own mouse. User A pairs his mouse to the keyboard. User A clicks
on notepad and starts typing. User B takes over and types on the same keyboard. Now user B clicks on some other window
and expects to start typing in that window – but since the keyboard is paired with user A, and user A did not click on
any other window user B will keep typing in notepad! Practically speaking; user B does not have a keyboard – he/she just
follows what the focus window is of user A. This may feel unintuitive because generally you expect to be able to type in
a window once you click on it. For this scenario we added an option to synchronize all keyboards (even if it’s just one)
to all users – that means mice can operate independently but the keyboard is shared for all users. You can uncheck the
multi keyboard option in the main UI to disable per-user keyboard pairing – when this option is switched off the keyboard(s)
will work just like in normal windows – follow the window with focus to send key data to. Of course, if you have two
keyboards and two mice and user A and B are both working on the desktop we suggest to keep the multi Keyboard option
checked and pair each keyboards to an individual mouse so that both A and B can work independently with each a mouse
and keyboard. To unmap and re-map a keyboard go to the keyboard tab and
press the unmap button.
Multiplex input mode
Multiplex mode provides advanced interaction but works a bit different than the other modes.
In this mode all the functionality of Switched mode is inherited, and full concurrency is added.
This means each user can separately work in a window/program at the same time; one user can type in
Microsoft Word while the other can paint in photoshop and a third can work in their coding editor.
This will work for most programs but not all – we’re in the process of adding programs to our database
and please let us know if you want support for a specific program.
In multiplex mode, once a user clicks on a program, they become the owner of that program, that means all
interaction from both mouse and keyboard from that user are directed to that program. MouseMux creates a thin and
instant virtual machine layer for that application - the program thinks it’s getting normal mouse and keyboard input
while in fact MouseMux is fully controlling it.
The normal flow for using Multiplex mode is to first start the programs you want to multiplex in in either
native or switched mode. Once both programs are running on your desktop, switch to multiplex mode and for each
cursor click on the specific application you want to work in.
The underlying technology for this mode is quite complex and we must advice to use this mode with caution,
this is novel functionality – do not use this mode if you are doing important work on your computer.
Worst case scenario is that a program you click on hangs or crashes. You can always exit MouseMux
via the emergency exit hotkey (CTRL-ALT-F12)
By pressing the ‘settings’ button you open the configuration for MouseMux which allows you to register the program by
filling in the registration number. Once registered other options become available.