MouseMux Manual

Share

Introduction

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:

General 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




Starting MouseMux


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
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)



Settings


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.