Crazy Cursor Bug
In certain rare conditions SteadyMouse can lose control of the cursor.
When this happens it flies to the edge of the screen and gets "stuck" in a corner.
The user then has to toggle SteadyMouse off (via "Scroll Lock", etc), or just plain kill the
process to get control back. In almost all cases the issue is related to the configuration of
Windows "desktop scaling and dpi" settings.
Starting with SteadyMouse v126.96.36.199, nearly all cases are handled automatically and you will likely never even see this issue in the first place. If you do encounter loss of cursor control, please upgrade to the latest version as a first measure. Then, this page can take you further if it's still even necessary.
Every version of Windows since XP has made unique changes to the ability to scale the size of the desktop user interface. This is known as "DPI scaling" and sometimes "desktop scaling" and is at the heart of the problem with loss of cursor control in SteadyMouse. Since every new Windows version is a little different from the last, it has led to multiple solutions to this problem. I'll show you each of them in order from simplest to most advanced and you're welcome to try the ones you like. They each have tradeoffs, however if you must know, "Solution #3" is my preferred choice.
Solution #1 - Set DPI scaling to 100 percent (ie: Disabled)
One solution that pretty much always works is turning off desktop scaling all together (On newer versions of Windows, this must be done for each monitor). The downside is items on your screen may appear too small for your liking. If this is so, then the other solutions further down may suit you better. If you don't mind the smaller GUI however, then these are the steps:
- Turn off DPI scaling for each monitor (Here's how on Windows 10)
- Turn off DPI scaling for each monitor (Here's how on Windows 7)
- Click "Apply"
- Reboot your computer for the changes to fully take effect.
- NOTE: The above solution may even work for old versions of SteadyMouse such as v1.3
Solution #2 - Use DPI compatibility mode (Per-app)
If SteadyMouse loses control of the cursor only when certain programs are running, and NOT on certain monitors
altogether, then you are probably running Windows 7 or Windows Vista with a DPI scaling of 150% or greater.
What you are seeing is a bug that Microsoft has since fixed in newer versions of Windows. Next time you
upgrade Windows the bug will be gone for good, and in the mean time, thankfully, we have a workaround.
The issue shows up when you run any application that is "DPI unaware" under the hood. This means it doesn't know about Windows DPI scaling and Microsoft's solution is to have the OS "lie" to it to make things sort-of work. When one of these "DPI unaware" programs has focus, it unfortunately interferes with SteadyMouse control of the cursor by feeding in wildly incorrect mouse coordinates.
- One solution is to track down every program that interferes with SteadyMouse, right click its icon, and select "properties"
- Then click the "Compatibility" tab and check the box that says "Disable display scaling on high DPI settings"
- Then click "OK"
- Now that particular program will no longer interfere with SteadyMouse. The hard part however is finding all these troublesome programs and repeating the above steps for each one.
- FYI: You can also solve this by changing the system wide DPI to something other than 150% (100% or 125% works for instance).
Solution #3 - Use experimental settings
SteadyMouse v188.8.131.52 and later has a hidden alternate mechanism of controlling the cursor that is significantly more immune to interference from DPI scaling issues. This method will work in almost all cases, however it is experimental and has much less testing than the default original mechanism. Enabling it also requires a bit of technical ability, since it requires manually editing the SteadyMouse settings file itself. The upside is that, to my knowledge as of October 2016, this method works on all versions of Windows in all DPI setting scenarios, with any monitor configuration. If you try it and find anything amiss whatsoever, please send me an email so I can investigate.
- Before proceeding study the instructions here to become familiar with how to edit the advanced settings within SteadyMouse.
- Once you have the settings.xml file open in an editor exit the SteadyMouse application.
- Back in the editor, we'll be changing two settings: "use_direct_cursor_injection" and "stream_interception_mode"
- First find "use_direct_cursor_injection" and change it from '0' to '1'
- Next find "stream_interception_mode" and change it from '0' to '1'
- Save the changes and close the file.
- Run SteadyMouse and now all should be well on any DPI scalings you wish to use.
Doesn't Filter in Some Applications
You may notice that once in a while, when a certain application is open and has the focus, SteadyMouse
stops filtering the cursor, and Icon Targeting won't find things inside that application's window.
Windows "Task Manager" is one such example. This behavior is expected and has to do with security access
permissions. SteadyMouse runs with basic user privileges, and "Task Manager" for instance, runs with elevated
privileges. Consequently, Windows is just doing its job correctly when it prevents these programs from
sharing information. You will actually see this behavior any time SteadyMouse interacts with a program that
is "Run as Administrator", or has requested UAC elevation and received it.
So what should be done about it? There are four options:
- Option #1 is to leave it as is, and understand that programs running with elevated privileges will interact in this way. For security it's best to have as few programs run with administrative rights as possible.
- Option #2 is to run SteadyMouse with administrative rights. You can do so by right clicking the SteadyMouse icon,
selecting "Properties", and then selecting the "Compatibility" tab. Then at the bottom check the box that
says "Run this program as an administrator" and click "Apply". You can also click "Change settings for all users"
if you desire the change to be system wide.
You will have to quit and restart SteadyMouse for this to take effect.
SteadyMouse will filter the cursor for everything after this, as long as you launch it with the icon you modified.
Note: If you have SteadyMouse set to start automatically with Windows, it may be necessary to perform the above change to the SteadyMouse icon found in the Start Menu's "Startup" folder (in addition to the desktop icon).
- Option #3 is to try running the "uncooperative" application as a normal user rather than administrator. Unfortunately, "Task Manager" and many other programs do not work without admin rights, so this path is probably the least feasible. If a program is running as an administrator and doesn't need to be, then you could of course just disable that.
- Option #4 requires upgrading to SteadyMouse v184.108.40.206 or later. Software updates have been made to deal with the issue automatically and unobtrusively. Simply install the newer verion and you're good to go.
In any event, regardless of the route you take, the behavior is expected and nothing to be alarmed about.
RoboForm App Toolbar Annoyance
A user reported a situation where an application called RoboForm hounds the cursor with a toolbar whenever SteadyMouse is enabled! "RoboForm" is a tool for autofilling forms.
After some experimentation it seems that this program is incorrectly thinking that the "Show Normal Mouse Position" crosshair in SteadyMouse is a form that needs to be filled in. It then places its RoboForm toolbar next to the cursor trying to be helpful. This end up being highly annoying to the user. Thankfully there's an easy workaround until RoboForm fixes this: Turn off "Show Normal Mouse Position" in SteadyMouse.
Open the SteadyMouse settings window and simply uncheck the box called "Show Normal Mouse Position". The RoboForm toolbar will disappear and you should be all set after that.