SteadyMouse Cover

Release Notes

Updated March 9th, 2019
Picture of mouse studying a book

SteadyMouse v2.7.0.0

If the Tao is great, then the operating system is great.
If the operating system is great, then the compiler is great.
If the compiler is great, then the application is great.
The user is pleased, and there is harmony in the world.*
- The Tao of Programming (1987)

High level improvements

  • Critical and surgical changes to the mouse data pathway to better handle high complexity motion and clicking edge cases.
  • Added periodic reminder to the user to check for updates (Default: 6 months).
  • Fixed a bug where some UI images could fail to render after SteadyMouse had been running for a while.
  • Fine tuning of ignore (left) clicks debounce period logic that automatically adjusts OS double click speed.
  • On first launch, upon closing the settings window, a pop-over bubble will appear explaining how to get back to these settings.
  • Major performance improvements.
  • Language translation updates.
  • A copy of the latest release notes is now bundled with the installer.

Low level changes

Warning: Technical jargon ahead

  • Added fine detail debug logging for excessive mouse motion.
  • Fixed a bug that could result in (rare) garbage coordinates from the OS getting through and being used.
  • Added logging when an OS mouse speed change is detected.
  • Upgraded most library dependencies.
  • Added additional signaling to help periodically re-register the system-tray icon. Re-registration is necessary any time Windows restarts explorer.
  • Created a “test tracer” message where a dummy data sample can be sent through the system to map out problems in the mouse data stream.
  • Added functions to help detect anomalies in coordinate information coming from the OS.
  • The uninstaller now has a proper icon in OS Control Panel application list.
  • Increased log file size limit from 4 MB to 7 MB.
  • Fixed bug where automatic log rolling would fail with unicode characters in the folder path.
  • Updated installer art to the HiDPI winter theme.
  • Upgraded VC Runtime executable.
  • Fixed an issue where mouse motion stats were being logged at the wrong time upon toggling the system on or off.
  • Removed popup message when another instance of SteadyMouse is found running, yet no window handle located. It turns out this is usually just the desktop is locked and all window handle access is blocked.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.

SteadyMouse v2.6.5.2

The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.
- Douglas Adams

High level improvements

  • Adjusted the speed scaling formula to more accurately match the native OS scaling.
  • Fixed a screen coordinate conversion issue where coordinate types were using the wrong units without realizing it.
  • Fine tuned first launch bump of the OS mouse double click speed.
  • Speed scale settings now apply equally to all stream modes.
  • Increased the speed scale maximum range from +/-200 to +/-300 for users that benefit from ultra high mouse sensitivity.

Low level changes

Warning: Technical jargon ahead

  • Made the VC Runtime installer visible and cancelable during installation.
  • Updated to the latest VC Runtime.
  • Added more detailed logging when a device change is detected.
  • Added more verbose logging to aid investigating multi-monitor invalid coordinate issues.
  • Simplified coordinate transform self-tests.
  • Improved absolute coordinate conversion to handle extremely large values without overflow.
  • Separated out mouse data stream sample injection categorization.
  • Upgraded most library dependencies.
  • VC++ compiler upgrade.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.

SteadyMouse v2.6.3.0

Does a good farmer neglect a crop he has planted?
Does a good teacher overlook even the most humble student?
Does a good father allow a single child to starve?
Does a good programmer refuse to maintain his code?
- The Tao of Programming (1987)

High level improvements

  • Added detection and proper handling of swapped mouse buttons.
  • Fine tuned mouse speed auto-adjustment on the first run.
  • Modified the product key entry field to use a larger font size so it will be easier to see.
  • Changed emergency-quit hotkey to the left and right arrow keys (held for 5 seconds).
  • Changed the default “toggle key” from Scroll-Lock to Num-Lock.
  • On first-launch SteadyMouse now presents the Toggle Key selection settings.
  • Standardized the naming of “On/Off Toggle Key” throughout the UI.
  • Combed through English text strings and improved grammar and guidance.
  • Updated most language translations.
  • Significant changes to better support monitor DPI independence.
  • Placed a limit on the number of times mouse speed guidance notification bubbles can be displayed.
  • Major cleanup to the mouse motion pipeline.
  • Diagnosed and worked around an issue in Windows 10 build 17133 where at times invalid coordinates are received, resulting in chaotic cursor behavior.
  • Improved system tray robustness.
  • If the system toggle key is switched away from a locking key (eg: Scroll Lock), that key is now set to off before proceeding.
  • Created an “Ignore Accidental Clicks proficiency check” to make sure the user does not get stuck when turning on the feature for the left-mouse-button the first time.
  • Improved UI suppression at OS startup to prevent the settings window from popping up unrequested.
  • Added Raw Input button support option in the hidden settings.
  • Pic art images now support a shadow hover effect.
  • Expanded the speed-scale allowed range from 100 percent to 200 percent.
  • Ignore Clicks now adjusts the OS double-click-speed both up and down to keep the timing window reasonable.
  • Updated installer artwork with High DPI compatible images.

Low level changes

Warning: Technical jargon ahead

  • Installer now supports silent installation options such as /SILENT, /VERYSILENT.
  • Installer now supports /SKIP_VCRUNTIME=true to skip the VC++ Redistributable installation step.
  • Fixed a timing watchdog overflow bug being caused by a multithreaded race condition.
  • Upgraded VC Redistributable.
  • Added clock timing self test for all potential clock sources.
  • Added automatic selection of the highest resolution source that meets minimum timing criteria.
  • Fixed an issue where a task event for settings updates would not fire off if the regular timing events were backed up.
  • Added task period jitter compensation.
  • Added lag compensation to mouse processing based on the jitter calculation.
  • Added timing jitter compensation to targeting effects so rotation is constant.
  • Switched logging back to local time to make it easier for users to correlate logs with events they notice.
  • Added detection for Windows 10 build 16299 to enable a workaround for a “Click and Drag” bug.
  • Added function to compute font required UI area based on the text length being shown.
  • Tuned the icon-targeting system and its visual effects for DPI independence.
  • Targeting cursor snap speed should now be DPI independent.
  • The mouse unfiltered location dot effect now scales up for higher DPI screens.
  • Upgraded most library dependencies.
  • Added DPI independent pic-art placement for the UI.
  • All dialog boxes now exit with proper return codes.
  • Reduced the maximum log size to 4MB.
  • Refactored multimonitor display enumeration.
  • Upgraded code signing to an EV certificate.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.

SteadyMouse v2.4.7.0

Twas the night before Christmas, when all through the house
Not a creature was stirring, not even a mouse.

This update has been many months in the making, and contains thousands of tiny tweaks to make your mouse experience extra smooth, easier to tune, and more stable than ever. Progress is steadily continuing towards eventual Mac OS support, and the process of evaluating and making changes in this way continually leads to a cleaner more beautiful system underneath. It is with pride, joy, and much warmth that I send it your way in time for Christmas Eve.

Upgrade on your own schedule, when it is right for you amidst the bustle. It is here when you are ready, and instructions can be found below to walk you through.

For those of you installing SteadyMouse as a gift on Christmas day, I will keep an occasional eye on the support channel to make sure it all goes smoothly for you. Write to support if you need something.

High level improvements

  • Long pressing the System Toggle Key for two seconds and then letting go will bring up the settings window now.
  • Compatibility with the new “Windows 10 Fall Creators Update”, released by Microsoft on December 12th, 2017.
  • Fixed an issue where, for some users, the settings window would open every time Windows started up.
  • Contains new language support for Danish and additionally, a very high quality German translation update. Many thanks to those who contributed to the translation this round! Check CREDITS.txt for details.
  • In all, language support is now available for English, Danish, French, German, Italian, Portuguese, Russian, and Spanish. If you’d like to switch languages see changing language locale for details.
  • Visual-effects no longer can steal the focus and should no longer interfere with automatic form fillers such as RoboForm.
  • Fixed a major issue where any multilingual user account name would result in failure to save settings and record the log file.
  • Now detects when the mouse speed is set in a region that will make the cursor feel floaty, and displays a note to guide the user towards better tuning.
  • Fixed an issue preventing SteadyMouse from working on some Windows XP systems. It would previously fail to run with a missing DLL error.
  • Fixed an issue whereby the Icon Targeting System would occasionally fail to automatically click a target after being triggered.
  • Adjusted the control sizes so that all languages fit without being text being cut-off.
  • Improved Product Key entry to accept only valid characters. Pressing invalid characters now results in a system beep and an informational message. It was common especially for ’O’ and ‘0’ to get mixed up, and this should be a big help at key entry.
  • Added a new experimental Steadicam filter and mode available via the hidden settings. For details see: Experimental Steadicam Mode.
  • Fixed a bug where holding down the System Toggle Key would rapidly cycle back and forth when using “Scroll Lock” or “Num Lock”.
  • Fixed a bug where “Num Lock” or “Scroll Lock” keyboard LED state could get out of sync with the actual System Toggle state.
  • On the first time running, high mouse speeds are now auto-adjusted down for a better initial experience.
  • Many default settings have undergone tuning so that users will have a first time experience that should be closer to the ideal.
  • Owner info is now hidden when the secret Developer Mode settings are visible. This is for gamers who screencast, so that their product key does not end up in their published videos.

Low level changes

Warning: Technical jargon ahead

  • Upon installation, the application now runs a self-test. If failure is detected, automatic direction towards a workaround is now provided. This was especially needed for old Windows Vista systems that sometimes have trouble.
  • Updated all internal third-party libraries to the “latest and greatest” from the respective developers.
  • Upgraded to the latest Microsoft Visual C++ 2017 Compiler.
  • Upgraded to latest “Microsoft Visual C++ 2017 Redistributable (x86)” Version 14.12.25810.0
  • Improved keyboard input abstraction to support cross platform migration.
  • Refactored Icon Targeting System code to be much cleaner and added logic to fallback to the old targeting system if the new one fails to come online.
  • Abstracted several core libraries from Windows to allow eventual movement towards MacOS support in SteadyMouse 3.
  • Refactored XML file handling.
  • ISO language codes now are included in language files.
  • Improved application instance existence functions to better detect more than one copy of SteadyMouse running at the same time.
  • The debugging log now comes online as early as possible to catch anything going wrong during application startup.
  • The debugging log file now has a maximum size limit of 16MB and will reset when it hits this limit.
  • Mouse time to idle is now computed more dynamically.
  • Fixed a loss-of-precision rounding error that may have affected relative motion mode in games.
  • Command line parameters now are written to the log file for review.
  • Startup sequencing is much more clean and robust.
  • Added new command line parameters useful for distinguishing how the app was launched. This insures the settings GUI does not show when it is not specifically requested.
  • Command line parsing is now moved to its own library and much more extensible for the addition of future command line parameters.
  • Added support for a “basic execution test” whereby the installer can run the application exe in a minimal mode that immediately exits. This allows for verification that the application is indeed able to run.
  • Added detection of application launch by Windows 10 Restart Manager. This was needed to avoid double-launching at startup.
  • Made RawInput retrieval more fault tolerant of failed system calls.
  • Discovered and fixed an inadvertent lib-curl dependency upon normaliz.dll, a file which is not available on Windows XP.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.

Enjoy the update and have a blessed and Merry Christmas everyone!

Ben Gottemoller
Founder,
SteadyMouse, LLC.


SteadyMouse v2.3.2.0

The merit of all things lies in their difficulty.
- Alexandre Dumas, The Three Musketeers

The new version began a staged rollout on May 29th and, having done well, is today announced officially for all. I am pleased to say there are many subtle changes to this release that add a high level of polish to the design.

If you found this update a bit early, congrats! Otherwise, feel free to pick it up at your leisure. Instructions can be found towards the bottom.

High level changes

  • Compatibility with the new “Windows 10 Creators Update” released by Microsoft in April.
  • Language support is now in place for English, Portuguese, French, German, Italian, Russian, and Spanish. If you’d like to switch languages see changing language locale for details. Many thanks to all those who contributed to the translation this round!
  • The “Gaming Filter Set” has been renamed to “Feather Filter Set” to clarify that it’s not just for gaming, and to better imply its characteristic feel.
  • Depending on your mouse hardware, you may notice a small cursor speed difference this time around. A math error was discovered and fixed within the mouse filtering pipeline. In short, averaging was sometimes occuring rather than accumulation! The effect was that high sample rate mice would experience a slower speed when filtering was active! Fixing this now results in mouse speed remaining consistent whether filtering is toggled on or off. If you encounter a speed increase, adjust your mouse speed setting to about half of what it presently is to get back to normal.
  • Descriptive overlay-bubbles now provide a brief overview when any of the most recommended filter sets are selected.
  • Help bubbles now show one at a time, are less likely to overlap, and adjust position automatically if they happen to be partly off the screen.
  • All overlay text bubbles now contain a tiny lightbar effect to indicate how much time is left before the bubble fades.
  • Added various overlay message bubbles to provide occasional guiding comments as you interact with the UI.
  • Thanks to a bug report from an astute user, SteadyMouse now automatically disables the Windows “click lock” mouse setting if it happens to be enabled at the same time as ignore accidental clicks. Click lock is not compatible with click-ignore capability.
  • Adjusted sizing of many UI elements to better fit various supported language translations and their natural fluctuation in sentence length.
  • Fixed a bug where double clicking the desktop icon, with SteadyMouse already running, could fail to open the settings window when a language other than English was selected.

Low level changes

  • Discovered and fixed a mouse motion “feedback loop” present when using Raw Input stream mode. Most users do not have this hidden setting enabled and will not see a change, however it is a significant deal for anyone using SteadyMouse in games or as a steadicam.
  • The mouse filtering pipeline has been switched to using lockless motion queues. You can expect greater timing consistency and much less thread contention from the input engine going forward.
  • In the settings file experimental support for a “relative motion injection mode” has been added.
  • Added a workaround for a Microsoft Edge bug in Windows 10 Creators Update that occasionally prevented clicking. See here for details. The bug was additionally reported to Microsoft and their status now shows as “Fixed”.
  • There is now a hidden “Developer Mode” window with access to a heap of secret/experimental settings. If you can find it you have permission to experiment. A certain combination of these settings allows SteadyMouse to function with a decent number of games. Tip: Keep track of your changes so you can return them to normal afterwards!
  • Updated all internal third-party libraries to the latest and greatest from the respective developers.
  • Converted the majority of internal text string handling code from UTF-16 UTF-8 encoding. This is a necessary step in porting for eventual cross-platform support.
  • Abstracted away a huge number of Windows OS functions as the codebase moves towards eventual cross-platform support.
  • Reduced the SteadyMouse memory usage footprint through more dynamic optimization of text string storage.
  • Much more that is too granular to list.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.

Pax et bonum! Ben Gottemoller
Founder,
SteadyMouse, LLC.


SteadyMouse v2.1.1.0

Software is never released, but ‘escapes’ leaving a trail of designers and quality assurance people in its wake.
- The Klingon Programming Guide

About three months have passed since the last update (v2.0.6.0). Today I’m releasing SteadyMouse v2.1.1.0 with a boatload of fixes and improvements to things you wrote in about (Thank you)!

High level improvements

  • Ignore accidental click support is now available for the left mouse button without compromising on double-click and click+drag support. The behavior is unique: Left clicks do not timeout. You hold the button down and the down stroke of the click passes through immediately upon reaching the “hold period” threshold. The up stroke then occurs as soon as you let up. Two consecutive clicks this way (each held just a tad longer) makes a double click. NOTE: To get the most out of this, you’ll want to set your “Hold Period” as short as you can get away with. Usually around 0.16 to 0.24 seconds is ideal.
  • Previously SteadyMouse would not filter in some programs that ran with elevated privleges and the workaround required running the program with admin rights. This is no longer necessary and SteadyMouse should now work out of the box with all other applications while running with normal user privileges.
  • Support for Italian language locale is now available (Thanks to a kind volunteer from Italy).
  • Significant optimization and adjustment has been done to timing related algorithms within the mouse filtering pipeline. While improving consistency of cursor feel, this change is primarily to fix a rare bug where SteadyMouse would stop filtering and require a program restart to fix. Due to the statistical rarity of this bug, only time will tell if it is truly fixed for good, however it has about 100 hours into it at this point so I’m hopeful. If you lose filtering in 2.1.1.0 or later please let me know.
  • Improved integration with CameraMouse. With both programs working together, you can now use the CameraMouse head tracking to get the cursor close to an item, and then use the SteadyMouse Icon Targeting System to snap it the rest of the way and automatically click.
  • Fixed a bug where users running with the “High Contrast” Windows theme could not read certain text messages due to the font color being white on a white background.
  • Added ability to change product activation keys from one to another as long as the license type is the same. This is helpful when a user with multiple keys wants to consolidate down to just one.
  • Resized many GUI elements to leave more room for various language translations.
  • Changed the help bubbles to display for seven seconds upon being clicked. They were previously setup to display only for the duration of the click which many found cumbersome.
  • If a user embarks on manual activation by clicking “Get Confirmation Code” during product activation, simple-activation is now disabled. This prevents an occasional issue where a user wastes an activation by switching back to simple-activation after they’ve already generated a confirmation code.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.

Godspeed,

Ben Gottemoller
Founder,
SteadyMouse, LLC.


SteadyMouse v2.0.6.0

There are two ways of constructing a software design;
One way is to make it so simple that there are obviously no deficiencies.
And the other way is to make it so complicated that there are no obvious deficiencies.
The first method is far more difficult.
- Tony Hoare

Today I am releasing SteadyMouse 2 to the world, and especially to all of you who have inquired over the years and patiently waited. So much has gone into this, and I know it is going to get many of you back on track. A special thanks goes as well to my grandfather, Dr. James Gottemoller, who started it all. Cheers, blessings, and Godspeed.

High level improvements

  • Added multi-monitor support.
  • The On/Off System Toggle Key is now configurable with several options.
  • Moved to a modern windows visual style.
  • Completely redesigned settings loading and saving.
  • Fixed a progress bar sluggishness issue that would manifest during accidental click practice.
  • Developed and installed next generation tremor removal filters.
  • Mathematically proved classic filters match the original v1.3 behavior.
  • Fast user switching now works.
  • Multi-monitor support works and detects display changes on fly.
  • Ignore accidental clicks now works better for small hold-period values.
  • Developed additional methods of mouse data interception.
  • Artwork updates.
  • Multiple language support.
  • IconTargeting now locates significantly more clickable items in the UI.
  • Added a raw cursor motion indicator special effect to give the user a feel for how well filtering is working.
  • Emergency Quit feature added where the user can hold down all four arrow keys simultaneously to exit the application.
  • Added a pop-over notification at startup to show toggle keys.
  • Created pop -ver notification when system toggle occurs.
  • Added checking for updates support.
  • Resized most UI items so large font sizes fit better.
  • Improved mouse coordinate precision at all layers.

Low level changes

Warning: Technical jargon ahead

  • Added functions for toggling keyboard keys that LOCK such as ScrollLock, NumLock, etc.
  • Fixed an installer bug where two instances of steadymouse could get registered at startup.
  • Fixed an issue where the cursor could get stuck at startup.
  • Added detection for obsolete SteadyMouse versions.
  • Normalized compiler settings for all projects.
  • Separated much of the business logic from the UI.
  • Switched from Mutexes to Critical-Sections for faster coherency support without frequent transitions to kernal mode.
  • Added ability to turn off “Enhance Pointer Precision” since it interferes with filtering.
  • The settings file now stores and loads data in an xml format.
  • Added a local logging mechanism to assist in debugging and support. Users can email this in if a bug is found.
  • Huge improvements in mouse idle to non idle transitions without glitching.
  • The mouse cursor no longer jumps after exiting lock screen.
  • Modified UserSettings library to be thread safe.
  • Initialization and loading of UserSettings now happens as early as possible.
  • Adopted MVC architecture.
  • UserSettings library now loads data in layers. Hard coded settings come first, then defaults.xml, and finally AppData settings.xml from the user.
  • Settings save and load works now with UTF-8 unicode.
  • Unicode compatible string support everywhere.
  • Watchdog support added for most threads.
  • Improved restore from touch pad when cursor suppression by OS is active.
  • Several thousand tiny tweaks beyond my energy to list here.

How to update

  • If you are already running SteadyMouse 2, you can follow the quick instructions here to upgrade.
  • If you have never installed yet, you can use the download button in your purchase receipt email. For detailed instructions click here.
  • If you need a fresh copy of your purchase receipt, send me a quick note.