What is Mouse Sensitivity Exporter ?

Mouse Sensitivity Exporter is a tool made to help you quantize your mouse sensitivity inside any game and on any plateform (for the moment only Windows and Linux/*nix) in a reliable way, whatever is your OS, hardware mouse, mouse settings of your OS, mouse frequency or game you play. With this method, you will always be able to do a backup of / export your sensitivity to any other game (or software, hooking the mouse or not).

Why should I use it ?

Use:

  • When you want to have the same sensitivity in several games.
  • When you want to have the same sensitivity on different OS.
  • When you change your mouse.
  • When you want to be sure to keep a backup of your sensitivity.
  • When you change your whole computer.
  • In a lan game, to be sure to have the same sensitivity in a lan / tourney game than at home.
  • For fun (yes it's fun to see your mouse moving on its own, studies reported it's even more relaxing than yoga).
Anyway Mouse Sensitivity Exporter is licensed under GPL (Gnu Public License), so you can do whatever you want with the sourcecode :-)

How does it work ?

Simple: it moves the mouse for you horizontally and vertically, with two different speed (one slow to test normal mouse sensitivity, and fast to test mouse acceleration - if you don't have any mouse acceleration, these tests will give the same result).

All you have to do is report in the window the results of the tests, which is the number of degrees or turns your view moves after each test. Then you can enter a comment and finally save your configuration.

Later, you can load your sensitivity configuration and do again the tests, but this time you will modify the configuration of your game/software from the info you saved before until it corresponds exactly.

The best thing about it is that it doesn't depend of anything other than the configuration of your game/software, any external variable like hardware mouse sensitivity, OS and mouse frequency can't modify the results at all.

Tutorial

To make easy the process of testing and calibrating your sensitivity, the interface was divided into 3 clear steps:



This interface will let you save and load your sensitivity configuration. In this tutorial, I'll sometimes use the game Quake 3 Arena as an example, but it should work for any other environment.
Let's begin with the saving process:

Saving current sensitivity

1- Test our sensitivity

First we have to test our sensitivity. If you don't know what to do, you can just take a paper to write down your future results and click on the button "Launch test" without modifying any parameter (you can stop the test by pressing the corresponding button). Then, go back to your game before 20 seconds, and it will run the test.
The test consist of moving your mouse in a quantitative way (the software will always move the mouse the same way). All you have to do is write down the number of degrees or turn your character does on itself, for each test (slow horizontal, fast horizontal, slow vertical, fast vertical - from left to the right for horizontal tests, and from up to down for vertical ones).

Try to focus on a precise point, and refocus on it at the end of each test (by default you'll have a pause of 10 seconds). Before each vertical test, you should look at the uppest point you can to get the most amplitude for the tests. DON'T MOVE YOUR MOUSE while a test is running ! Wait that the current test finishes, write down the values, and refocus before the next test.

If you want to configure the parameters, here are some guidelines:

  • If the test moves the mouse erratically, try to select the Mouse Hook type 2 (this behaviour can happen when changing versions of a game, ie: OpenArena <= 0.7.1 is type 1, OpenArena >= 0.7.6 is type 2).
  • If the environment test is not a game (ie: a normal software or OS desktop), uncheck Mouse Hook.
  • Warning: If you test in a game (or software hooking the mouse), you have to run the test in fullscreen mode, not windowed mode because it just won't work for technical reasons !
  • To better fit your needs, you might want to reduce the number of seconds the test is running, or the mouse frequency, alias Movement Interval / Cycle (125 is the default frequency for an usb mouse).

2- Write the results

Now we tested our current sensitivity, you just have to write in the GUI the values you got. You can choose if they are degrees or number of turns, and you can put a comment (ie: the focus point you used, map used, FPS of the game, etc...)

3- Save the results

Finally we can save the results. Simply click on the Save button and choose where you want to save your configuration.
That's it for the saving process !

Loading our sensitivity

Now that you saved your sensitivity, we can load it on the new environment (be it a different OS, mouse, game, etc...). This time, we will use the GUI in the reverse order, from down to up:

1- Load our configuration

First, we load our sensitivity configuration. Click on the Load button at the bottom, and choose the config file.

2- Verify everything is loaded

It's not really needed but you should verify the software imported the good configuration, and that every values are valid.

3- Calibrate your new sensitivity

Now we come back to the first part of the GUI: the test battery. But this time, instead of using it to test and save, we'll be using it to calibrate our new sensitivity to the old one.

The process is pretty simple: normally the software should have loaded every parameters you used to save your old sensitivity. Now we will simply launch the tests, and see if the view turns to the same angle. If not, we change the sensitivity in-game, and redo the test until it's right. So if the view now turns more than before, we will reduce our sensitivity. Inversely if it doesn't turn enough, we will raise it. And since the test is very precise, you can fine tune to have the exact same angle of turn, giving you the same sensitivity.

To make the process easier, you should click on LoopMode to let the program repeat the tests until you tell it to stop, and check one test by one and uncheck all the others. Like this, you will first test your slow horizontal speed until it corresponds with your old settings, then your fast horizontal speed, then slow vertical and so on...

Notes: In games like Quake 3, you should change your horizontal sensitivity independently from vertical, so don't use "sensitivity", but rather "m_yaw" for horizontal, and "m_pitch" for vertical. And to switch windows, instead of pressing Alt + Tab, you can bring down the console and you will get back the hand.

Final word

You see that's not very complicated :-) It takes a little learning curve to know how to handle it, but after it's really a piece of cake to use it ;-)

You can think there is a much more automated way to do the same thing, like directly recording the user mouse movement, and repeat it in the new environment.

The problem is that there isn't any way to do that with programs hooking the mouse (such as games), because the mouse cursor isn't moving, the game hooks directly the mouse input and so the cursor's coordinates don't change at all.

This method is maybe only semi-automated, but it works and should theoretically always give the same results with the same variables. Now if you think you can do better, this is opensource software, go on ;-)

Advices

Here are some advices to get a better result:

  • Warning: for games or software hooking the mouse, you have to run the test when they are in fullscreen mode, windowed mode just won't work for technical reasons !
  • Do not do the tests in a menu, but rather inside a game, preferably solo or multiplayer and kick all the bots.
  • Be always careful with the limits of your view (ie: in a strategic game, the tests must finish before touching any border of the screen, or the mouse can continue to move outside the borders without you knowing it nor being able to quantize it).
  • When doing horizontal tests, try to center vertically your view and focus at a particular point you can easily recognize.
  • When doing vertical tests, aim the uppermost possible to get the biggest possible angle while not colliding with the limit of your view.
  • If it's an First-Person Shooter type game, you can decrease your field of view to produce a more precise test (but don't forget to write as a comments !).
  • As said before nor OS settings/plateform nor hardware mouse sensitivity/frequency modify the results of the tests, but some other variables in-game can, like:
    - FPS (Frames per second) - Screen Resolution - Field Of View (degrees your view covers, usually set to 90°) - Mouse sensitivity in-game (of course !) - Mouse acceleration (in-game and maybe OS, but hardware acceleration should not count) - Mouse smoothing
  • In some games, the cursor may be way too fast even with slow tests. Try to find an option to change who manage the mouse, and switch it to let the OS takes the lead, it will result in a smoother mouse test.
    Ie: In Quake3/OpenArena, set variable "in_mouse" to -1
  • If you want a very precise result, in Movement Interval / Cycle you should type your mouse frequency.
  • To calibrate your sensitivity in your new environment, you should use settings changing horizontal sensitivity independently from vertical sensitivity.
    Ie: in Quake 3/OpenArena, you can change "m_yaw" for horizontal, and "m_pitch" for vertical.
  • Write anything you can in comment textbox, it can be really useful (like your mouse frequency and DPI, number of FPS in-game, resolution, etc.)
  • You can too change the sensitivity of your OS if you can't change the one in your game. For example on Linux, use the command "xset m'" like "xset m 1 10"

Special thank's

I (GrosBedo) would not be able to create this software without the help of many people:

  • Skip Montanaro and its watch.py where I found the way to detect mouse position on any plateform using Tkinter (nice work btw dude, your program rocks WorkRave !)
  • The guys from Gentoo where I discovered Xtest.
  • ZenGarden and particularly Timo Virtanen for his CSS design 'Icicle Outback', which I used for this page. Take a look on his webpage.
  • Nuvola icons project that I used to make the icon and logo of Mouse Sensitivity Exporter.
  • Sourceforge.net who is hosting this project and many great others. Without them the opensource world wouldn't have spread like it is now.
  • Particularly the guys making such great documentation about everything that runs on *nix, and people who spend their time to answer other people's problem, I would like to say THANK YOU !