Overclock.net banner

MouseTester Software Reloaded

206153 Views 129 Replies 47 Participants Last post by  vf-
MouseTester Software Reloaded

Microe made a small software for testing mice under MIT License, but stopped developing it at v1.2. I added many useful features, here it is.

Requires .NET 4.0 Full. Note that on Windows XP you will need to install this patch, too.

Key features

You can use this to detect / measure the following sensor defects:
  • data path limit
  • perfect control speed
  • pixel skipping
  • jitter
  • low speed inaccuracy
  • unstable polling rate
  • input lag
  • acceleration
Most important changes from v1.2:
  • Dual device mode with built-in supprort for measuring input lag
  • PNG export features: non-transparent, not only 800×600
  • Automatic saving of several settings
  • Hotkey for collecting
  • Sum vs. Time plot type, just like in MouseComparator
  • Frequency vs. Time plot type
Feature requests are always welcome.

Full changelog and instructions soon in posts below.

GitHub repository

MouseTester_v1.5.3.zip 153k .zip file


See less See more
  • Rep+
Reactions: 5
1 - 9 of 130 Posts
Originally Posted by thuNDa View Post

nice, but it doesn't work here.

It always gives me an error when i click on "plot".
Same here. Look like problem when .NET 4.6 on system.
p.s. v1.4 and v1.5 have problem, v1.3 - no.
Originally Posted by dobragab View Post

Thanks for feedback.

Did you install THIS update?
What operating system are you using?
Win 7 x64. All .NET 4.x: Full 4.0 standalone, and then 4.5x, 4.6x - from Windows Update. Nothing else.

Win7 x32 - without 4.6 work fine.
Originally Posted by dobragab View Post

Then you should try installing .NET 4.0 Full.
After 4.5 and 4.6 installed??? It's bad advice.
Originally Posted by thuNDa View Post

no, unfortunately still the same.
It always be the same!

public MousePlot(MouseLog Mlog, MouseLog Mlog2, Settings settings)
InitializeComponent(); //implicit call of MousePlot_Resize

this.settings = settings;

private void MousePlot_Resize(object sender, EventArgs e)
if (this.WindowState == FormWindowState.Normal)
settings.maximized = false; // !!! use of uninitialized object
else if (this.WindowState == FormWindowState.Maximized)
settings.maximized = true;

dobragab, simply swap InitializeComponent(); and this.settings = settings; lines
See less See more
MouseTester.exe 57344 11.02.16 00:18
But i send my post at 0:30. Are You have time machine?

P.S. all is much better now

>I tried changing to .NET 4.6.1 on Win10 and Win8.1 x64 too, didn't reproduce the bug. I have no idea why did the ctor call MousePlot_Resize implicitly on ur PC, and not on mine.

No, it's not version sensitive - i reproduce bug on pure v4.0. More like this is any kind of multithreading initialization in action.
P.P.P.S. No, it's not the multithreading. More subtle problem! You design form at 96 dpi. But i (and probably thuNDa) use HiDPI displays (i use 144 dpi)
See less See more
Yea just trying to understand if it's related to foreground boosting inside the operating system, sounds like it's losing context which would mean the data capture task could be running with less Quantums (less priority/time) that would affect the results which sounds like that's what's happening.
>if it's related to foreground boosting inside the operating system
Yes, it's related exactly to this.
So 2 things:
1. Make high or realtime priority to mousetester process.
2. Make first [short fake] measurement, make it window result fullscreen, and make REAL measurement over this window.
It is a measure of how well this software collects data from your usb mouse through the windows raw input api. There's definitely other factors involved that could impact the readings, a friend and I looked at the code and there's actually a few ways to improve the accuracy of the readings. Nice for the toolbox but don't make it your only source of truth. Depending on available time, might be able to do a code pull request to the author to make the changes.
>It is a measure of how well this software collects data from your usb mouse through the windows raw input api.
In reality result is combination of two processes - hardware and software processing of real messages from mouse and measurement of messages arrival time [on the same system].
And yes, it's discussed in USB polling precision thread.

>there's actually a few ways to improve the accuracy of the readings
There's actually one good way to improve the accuracy of the measurement part - get rid of managed code when collect information and use it for drawings only ;) Nothing hard to do as mousetester can read info from file of very simple structure.
But moving the mouse over the desktop, brings windows explorer up to 4% cpu usage, moving mouse over Task manager only uses 1%.
Just don't move mouse on anything else except Mousetester itself when you measure MOUSE. For what purpose you move it over other applications windows? There is way to have more precise measurement but you move into opposite direction.

Synthetic timer, are you running in a virtual machine?
It is not hipervisor timer, it's just recalculated TSC.
the new 10Mhz query performance timer frequency I have been able to find
This "new" 10MHz is just the third model of TSC using inside QPC/QPF since Windows NT.

I wrote a quick and dirty mouse hook (Mouse32) to try and see what was going on.
You are in one step to the best possible solution ;) And i will probably try to do it but right now i have no time.
I was wondering how to test whether my mouse is properly and accurately tracking on my mousepad. Can anyone help me by pointing me in the right direction? Should I do a single fast swipe or continuous fast / slow circles? What graphs am I analyzing afterwards?
Is Mousetester the appropriate tool for that or is there something else you'd recommend?
google: qsxcv mousepad mousetester site: overclock.net
1 - 9 of 130 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.