CPI AND MOUSE SENSITIVITY
Before talking about how to setup your mouse the best way, we have to define two important terms: Counts Per Inch (CPI) and sensitivity.
CPI stands for the number of raw counts that your mouse sends to Windows or StarCraft 2 when moved one inch (2.54 cm). The more raw counts your mouse transmits, the more pixels your mouse cursor moves on your monitor.
If you see a mouse which has a DPI value instead of a CPI one, you can read DPI for CPI. Technically CPI is the correct term, but some mouse manufacturers are afraid their customers wouldn’t understand CPI as they are accustomed to DPI.
In a 2D environment, like your Windows desktop or StarCraft 2, every raw count your mouse transmits moves your cursor one pixel (assuming Windows and StarCraft 2 don’t manipulate your mouse data and your mouse functions properly). Things are different when playing First Person Shooters (FPS) like Quake, but don’t let that bother you.
Resolution and CPI: If you play StarCraft: Broodwar the resolution of your monitor would automatically be set to 640×480. If your mouse had 640 CPI you would have to move it for exactly one inch or 2.54 cm in order to move from the far left to the far right of your monitor.
If your mouse had 1800 CPI, you would only have to move your mouse roughly about 1 cm to achieve the same thing.
If you’re playing StarCraft 2 with a 640 CPI mouse and a common Full HD monitor (1920×1080) with 1920 pixels in the horizontal, you would have to move your mouse roughly about 8 cm for a full horizontal cross.
With 1800 CPI you would only have to move your mouse for about 2.5 cm.
As a general rule you need more CPI, the higher the resolution of your monitor.
And now to the million dollar question: is a mouse with an ultrahigh CPI value more precise? No. Your mouse just moves more pixels with every movement. Of course you need a certain minimum amount of CPI — but once that’s reached more CPI are useless.
By the way: there are other factors which influence the precision of your mouse, such as the quality of the firmware of your mouse or how good certain hardware parts in your mouse are. These factors are far more important than how high the CPI of a mouse is.
So how much CPI do you need when you’re playing on a Full HD monitor? It depends on different factors like the size of your hand or the shape of your mouse. With 2000 CPI you’re on the safe side. Most players need significantly less.
If you’re interested in this subject, watch out for my next article.
On to “sensitivity”.
Sensitivity in this article means: how much does your mouse cursor move, when you move your mouse? If you have a high sensitivity, small physical movements with your mouse translate to lots of mouse cursor movement on your monitor. And vice versa.
Sensitivity is dependent on the resolution of your monitor, the CPI of your mouse and how Windows and StarCraft 2 treat the mouse data they receive.
After having cleared that, let’s talk about how to perfectly configure your mouse for StarCraft 2.
CONFIGURATION VIA HARDWARE OR SOFTWARE
Sensitivity can be changed in two different ways. Via hardware (directly in your mouse) or via software (through Windows or StarCraft 2).
A sensitivity change via hardware is always superior.
Some mice have the ability to run with lots of different CPI values. Depending on your mouse you can change your CPI with a special button or with a special mouse software from your mouse manufacturer. This special mouse software changes the CPI of your mouse on a hardware level, thus this special kind of software counts as a change via hardware.
If your mouse allows for setting up lots of different CPI values, you should always change your sensitivity by changing the CPI of your mouse (unless certain CPI steps are inferior in tracking quality). You should not use Windows or StarCraft 2 to change your sensitivity.
Why is that, you may ask?
If you’re adjusting your sensitivity with your mouse only you should have a very small advantage in time because every calculation by software costs extra time. We’re talking microseconds or even nanoseconds here, but hey, why not take it?
The biggest advantage however is the famous 1:1 ratio, you can only achieve when neither Windows nor StarCraft 2 do any calculations at all.
1:1 ratio means that for every raw count your mouse sends to Windows or StarCraft 2, your mouse cursor moves one pixel on your monitor. That way you’re free of any inconsistencies or pixel skipping, which can occur when using software to change sensitivity.
To make sure you indeed have a 1:1 ratio you have to check your Windows “Mouse Properties”: press the “Windows key” and “R” and enter “control mouse”. The slider below “Select a pointer speed:” should be exactly in the middle, on the sixth position. As there are 11 slider positions in total, this setting is referred to as 6/11.
You now have 1:1 ratio under Windows. But what about StarCraft 2? In the StarCraft 2 Options under the “Control” tab you have a checkbox which says “Enable Mouse Sensitivity”.
Now: should you check that box or not? In my opinion you should. Let me explain. There are two different kind of ways for a game to use mouse input, WM_MOUSEMOVE and WM_INPUT/DirectInput:
- WM_MOUSEMOVE: Mouse input takes a detour through Windows before being used by StarCraft 2.
- WM_INPUT or DirectInput: Also known as Raw Input. When using Raw Input, StarCraft 2 gets raw data from your mouse at “the lowest level possible”.
StarCraft 2 uses WM_MOUSEMOVE, if you leave the “Enable Mouse Sensitivity” box unchecked. If you do check it, it uses DirectInput.
As DirectInput doesn’t take the detour through Windows it is marginally faster. As we’re talking microseconds and nanoseconds again, this advantage really is small.
WM_MOUSEMOVE could also lead to negative acceleration if your PC is very busy.
Furthermore it is much more convenient if you’re playing on a different PC: you don’t have to bother with the sensitivity in Windows. Just log into your StarCraft 2 account and you’re good to go (assuming the monitor resolution didn’t change, of course), as all your preferencese are stored in your battle.net profile.
Now that you have checked “Enable Mouse Sensitivity” you’re confronted with another slider. If you’re only interested in getting a 1:1 ratio you don’t need to understand how the slider works. Just set the slider to either 51 %, 52 %, 53 % or 54 %. Those four values are all exactly the same and function as 6/11 in Windows and thus give you a 1:1 ratio.
Congratulations! You now have a perfectly configured mouse. And that’s not some theoretical achievement; it can be shown with the program Mouse Movement Recorder. Every raw count of your mouse (see the left column “MOUSE MOVEMENT” under “Mouse Movement Recorder” in the graphic below) equals exactly one pixel of cursor movement (see “POINTER MOVEMENT”). This can be shown with high fidelity spirals in Paint:
What’s so high fidelity about that spiral? Move a little bit closer. And a little bit more. Those little squares on your monitor are pixels. Notice, how the spiral sometimes only moves for one pixel? With values above 6/11 this kind of fine movement simply is impossible.
The next chapter “SOFTWARE” you only have to read, if none of the CPI values of your mouse gives you the right sensitivity (or: you can’t use certain CPI values on your mouse because they are of inferior quality) and you therefore have to use software.
All others can jump directly ahead to the chapter “ADDITIONAL SETTINGS” in which I cover additional settings to optimize your mousing experience.
Most mice don’t have lots of different CPI settings to choose from. Often times you only have two or three settings.
Say you have a mouse which only has two settings: 4000 CPI and 2000 CPI. You try both of these settings, but they feel too fast. You estimate that 1000 CPI should feel about right. Your only chance to get your mouse to behaving like it had 1000 CPI is to lower your sensitivity via software: in Windows and in StarCraft 2.
Note that by changing your sensitivity via software, the CPI of your mouse stay the same. Windows or StarCraft 2 just treat the mouse data in a different way, resulting in a different sensitivity.
Some mouse manufacturers offer special software or drivers which let you change your sensitivity. Don’t confuse this kind of software with software that changes the CPI of your mouse on a hardware level.
I don’t recommend using special driver software delivered with your mouse. Why? At best this special software does exactly the same thing as Windows or StarCraft 2. At worst this special software is badly written and messes around with your mouse data. Plus, if you’re at an offline event and have to use a PC which is not your own, installing driver software can take up lots of time or may even be forbidden.
If you know the software is free of errors, you always play from home and the software would help you to achieve your dream sensitivity, I would use it, though.
Back to changing your sensitivity via Windows and StarCraft 2: Both times you have twenty different settings to choose from. I recommend using the same sensitivity in Windows and StarCraft 2, as it is easier to master one sensitivity instead of two.
The Windows pointer speed slider only has 11 values. But internally Windows has 20. The more different sensitivities you can choose from, the higher the chance you find your perfect sensitivity. As 20 is bigger than 11, I suggest using a little tool written by Glymbol (you have to install Python Windows binary in order to use it), which let’s you use all 20 steps in Windows. With this tool you don’t have to fiddle around in the registry and changes are instantaneously active (if you’d like to change your sensitivity without the tool, here is the registry key: HKEY_CURRENT_USER, Control Panel, Mouse, MouseSensitivity).
StarCraft 2 does have a slider with 100 different values. As many of these values are the same (for example 21 % = 22 % = 23 % = 24 %), there really are only 20 different values.
Values which are a multiple of 5 have to be avoided. Why? Those values can result in different sensitivities. Without testing, you can’t tell. 55 % could be 54.7 % or 55.3 %. 54.7 % would act like 51 %. 55.3 % would act like 56 %. This is sloppy programming by Blizzard. Avoid multiples of 5 and dodge that bullet.
Here is an overview over the 20 different values and their according multiplication factors (right column) you can choose from in Windows (left column) and StarCraft 2 (middle column):
1/20 = 1 % = 0.03125
2/20 = 11 % = 0.0625
3/20 = 16 % = 0.125
4/20 = 21 % = 0.25
5/20 = 26 % = 0.375
6/20 = 31 % = 0.5
7/20 = 36 % = 0.625
8/20 = 41 % = 0.75
9/20 = 46 % = 0.875
10/20 = 51 % = 1.0
11/20 = 56 % = 1.25
12/20 = 61 % = 1.5
13/20 = 66 % = 1.75
14/20 = 71 % = 2.0
15/20 = 76 % = 2.25
16/20 = 81 % = 2.5
17/20 = 86 % = 2.75
18/20 = 91 % = 3
19/20 = 96 % = 3.25
20/20 = 100 % = 3.5
An example: Your mouse is set to 1800 CPI. You use a Windows sensitivity of 4/20 and a StarCraft 2 sensitivity of 21 %. Your multiplication factor therefore is 0.25. 1800 times 0.25 is 450. Your mouse effectively acts like it had 450 CPI.
A few rules regarding different sensitivity values: Values above 10/20 are generally bad. They do cause pixel skipping which means you no longer can achieve pixel perfect aiming.
The quality of your mouse cursor movements degrades as you approach the maximum setting of 20/20. At 18/20 for example, for every raw count your mouse sends, your mouse cursor moves 3 pixels. Have fun aiming at that lonely pixel in the middle …
At 20/20 the raw counts of your mouse are mutiplied by factor 3.5. As your mouse cursor can only move whole pixels, your mouse cursor moves 3 pixels and Windows stores the remaining 0.5. When the next raw count of your mouse arrives, Windows again mutiplies it by factor 3.5. But this time the remaining 0.5 are added. As a result your mouse cursor moves 4 pixels as 0.5 + 3.5 = 4. This behaviour repeats itself over and over again: your cursor moves 3 pixels, then 4, then 3 … you get the point. This inconsistency further decreases precision.
All in all values above 10/20 make for very shaky cursor movements; low fidelity, so to say. You can test it out by trying to draw a spiral in Paint, but I have to warn you — it won’t be fun:
This shaky cursor movement generally only occurs, when you use software instead of your mouse to increase your sensitivity. There are certain mouse manufacturers however which do have mice in their lineup that skip pixels on certain CPI settings. Do your research before buying a mouse.
In conclusion, values above 10/20 should only be used if you have a mouse with very low CPI (400 CPI is a typical value for an old mice) and play at a high resolution and therefore need a higher sensitivity. 14/20 and 18/20 are superior to other values above 10/20, as they only skip pixels but aren’t additionally inconsistent.
An alternative to values above 10/20 is lowering the resolution of your monitor until your mouse is fast enough. However: If you use a resolution which is not native to your monitor the image quality suffers and your monitor is slightly slower.
Most of the time you decrease your sensitivity with software, rather than increase it. For this you have nine different values to choose from. These values can be divided into two different groups: one group decreases your sensitivity in a harmonic way. The other group does so in an inconsistent way. Let’s take a look:
- Harmonic values: Harmonic values lower your sensitivity with a harmonic rythm. This rythm always stays the same.
Say you want to move your mouse for 4 pixels. When using 4/20 Windows multiplies raw counts by a factor of 0.25. As Windows only moves your cursor if it has reached 1.0, your cursor moves only every four raw counts. In order for your mouse to move 4 pixels, it has to report 16 raw counts. The rythm that repeats itself over and over again: 0001 0001 0001 0001.
Which is what shows up in Mouse Movement Recorder under “POINTER MOVEMENT”:
The reason for 4/20 being harmonic is quite simple: 0.25 always reaches 1.0 in four steps. All other values which fit perfectly into 1.0 are also harmonic. With 6/20 and a factor of 0.5 you get 01 01 01 01, for example.
- Inconsistent values: Inconsistent values lower your sensitivity with an inconsistent rythm.
Say you again want to move your mouse for 4 pixels. This time you’re using 5/20 instead of 4/20, resulting in Windows multiplying your raw counts by a factor of 0.375. Your mouse now has to report 11 raw counts before your cursor moves 4 pixels. The resulting rythm is inconsistent: 001 001 01 001.
Mouse Movement Recorder shows this behaviour:
The reason for this pattern is that 0.375 doesn’t fit into 1.0 very well. Try summing it up.
Every multiplication factor that doesn’t perfectly fit into 1.0 is inconsistent.
As a summary these are the values below 10/20 and their according properties:
1/20 = 1 % = 0.03125 (harmonic)
2/20 = 11 % = 0.0625 (harmonic)
3/20 = 16 % = 0.125 (harmonic)
4/20 = 21 % = 0.25 (harmonic)
5/20 = 26 % = 0.375 (inconsistent)
6/20 = 31 % = 0.5 (harmonic)
7/20 = 36 % = 0.625 (inconsistent)
8/20 = 41 % = 0.75 (inconsistent)
9/20 = 46 % = 0.875 (inconsistent)
So many inconsistencies … time to freak out? I don’t think so. The inconsistencies aren’t as bad as some believe them to be.
If you can, you should always pick a harmonic value over an inconsistent value, though. But the right sensitivity should always be prioritized.
Say your mouse only has two CPI steps which both track with the same quality: 3000 CPI and 1200 CPI. You want a sensitivity which equals 750 CPI. In this case you should use the 3000 CPI step with a value of 4/20 instead of 1200 CPI with 7/20.
There is an exception from this rule. The tracking quality of different CPI steps in a mouse can vary. If your mouse has bad CPI steps, you should avoid them at all cost.
The tracking quality of CPI in mice can differ a lot. Do a little research to avoid bad CPI steps.
REDUCE MOUSE LAG
You may have noticed your StarCraft 2 options offer the check box “Reduce Mouse Lag” under “Controls”. What does it do? In the options it says “Will make the mouse more responsive, but may drastically reduce frame rate”.
What “Reduce Mouse Lag” does is that it turns off pre-rendering which means that StarCraft 2 waits for your mouse input before displaying the next frame (which in turn leads to a reduced frame rate).
A more responsive mouse sounds like something you’d always like to have. However, you should only activate this option if you experience very clearly, that your mouse cursor lags behind. If you feel everything is perfect — leave it unchecked.
In the Windows “Mouse Properties”, directly under the pointer speed slider, you can see a check box called “Enhance pointer precision” (EPP). A curious name choice by Microsoft. EPP is not some mystical algorithm with the sole aim to enhance your precision. Rather EPP activates acceleration, which, many argue, decreases precision.
When EPP is enabled, your mouse cursor movements are not only dependent on how far you move your mouse, but also on the velocity of your mouse movements. As there are now two variables which determine how much your mouse cursor moves, acceleration can be a tricky thing for your brain to adjust to.
There are high level Quake players who use acceleration. In the realm of StarCraft 2 however it is generally considered best to be avoided. Leave EPP unchecked.
For anyone who would like to experiment with acceleration I recommend reading the respective parts in wo1fwoods fundamental article “An Overview of Mouse Technology”.
MARKC MOUSE ACCELERATION FIX
There are games which always activate EPP when running, no matter whether you deactivated it or not. You may call that hidden acceleration.
For those games you would need the famous “MarkC Mouse Acceleration Fix” made by MarktheC.
StarCraft 2 however does not enable EPP. Therefore, if you only play StarCraft 2, you don’t need to install the MarkC Mouse Acceleration Fix.
USB POLLING RATE
The USB polling rate determines how often Windows grabs new data from your mouse. By default Windows polls your mouse at a rate of 125 Hz — or every 8 milliseconds. Modern mice run at 500 Hz (2 milliseconds) or 1000 Hz (1 millisecond). Some mice offer the option to choose between different Hz values.
Some older mice don’t: they only run at 125 Hz. If you own such a mouse and want to change it to 1000 Hz you have to modify Windows; see here for more information.
I recommend to always run your mice with 1000 Hz. Why? The smaller your input lag, the better. And with milliseconds we finally are in the realm of noticeable. Remember the talk about microseconds above? Those delays kind of get put into perspective when considering that 1000 microseconds are 1 millisecond …
Besides lowering your input lag, 1000 Hz can also increase the maximum amount of movement speed your mouse is able to handle.
There are downsides, though:
- If your PC is very weak, 1000 Hz could be too stressful for it. In that case 500 Hz can be a good compromise, as it offers a reasonable low input lag and is significantly less stressful on your CPU.
- If you’re using your mouse on a very high CPI step, 1000 Hz simply could be too much for your mouse to handle. The result: jitter. You can test your mouse for jitter by drawing lines and circles in Paint. Just set your mouse to 500 Hz and start drawing. Then do the same for 1000 Hz. Now compare. If your mouse suffers from jitter when running with 1000 Hz you should be able to identify it pretty easily: just look out for lines and circles which appear shaky.
If your mouse cannot handle 1000 Hz you have two options: lower the CPI of your mouse or downgrade to 500 Hz (or even down to 125 Hz).
As a rule of thumb Skylit estimated that good gaming grade mice with an Avago 3XXX sensor (which includes the DeathAdder, for example) can handle 1000 Hz up to a CPI of 800.
- Also note that you could be limited by the USB controller of your PC. Some USB controllers just aren’t able to reach 1000 Hz. You can test this out by using Mouse Movement Recorder (see the column “FREQUENCY”) and quickly moving your mouse:
The PC this screenshot was taken on is able to handle 1000 Hz.
If you’re confronted with a PC which doesn’t reach 1000 Hz, but fluctuates wildly between 500-1000 Hz it could be a viable option to lower your Hz to 500. It depends on what you value more: consistency or lower input lag.
By the way: Fluctuating Hz values don’t have to mean that your PC or mouse isn’t able to handle 1000 Hz. Take a look at the following picture:
The fluctuating Hz values in this picture are the result of varying slow movement speeds. The slower you move your mouse, the lower the Hz value. According to wo1fwood, as soon as your mouse movement speed reaches 0.08 cm/s (and your equipment is able to handle 1000 Hz) Mouse Movement Recorder shows 1000 Hz.