Use this application to disable or bypass the sticky corners in Windows 10 & 11 for dual displays or multiple monitors. What it does is hop the mouse over the sticking corners, as well as the screen edges when moving windows. Thus it allows the dragging of windows through screens without your mouse getting hijacked by the Snap Assist.
The Hot Corners and Snap Assist still work, but now only when you want them to.
Note: A user has reported this app got falsely flagged as a game cheating app – which may cause issues for any Blizzard or Activision games, such as CoD.
Latest Version released on 15th of June, 2020.
Here is the actual application itself if you wish to save it directly and run it whenever you wish: –
Click to download Non-stick mouse
VirusTotal (0 out of 89)
CRC32: FCF41546
CRC64: 672CF71CCA25A80E
MD5: 941787243c32bf7a9fe5a2da23a5835e
SHA256: D16B4BBE30192E7D5D0D2D9BE94B845A92ECCE2E973E63975F5DA55FA5DDC092
SHA1: 8705456FF39F4E0044A8FBA68645AE76A0A33C00
BLAKE2sp: 7FCCE3B5C8956150B356782321D1059A94F9EEECABC0119700A38BB93835713A
I’ve been asked for an installer so it can run automatically on boot – so here it is, an installer: –
Click to download NSM setup
VirusTotal (0 out of 89)
CRC32: 23505E1E
CRC64: 01889D7B3DE77A74
MD5: e917df8abe39293711bb1802067b0acf
SHA256: 4E40F24D7ED551572678BE2F77B0F02F04D2E09FE9F3AED442CBB295E3123874
SHA1: 4E40F24D7ED551572678BE2F77B0F02F04D2E09FE9F3AED442CBB295E3123874
BLAKE2sp: D79D5DA65BD2157CA19851866839F968CB20CE6176FB3EF323615FFAA7CC30B6
And for your peace of mind the full source code written in Delphi, 3 files on GitHub.
This application does not read or write to any drive, it does not access the registry or connect to the Internet.
I am only sharing this as I took the time to write it and I notice many people are annoyed by these Microsoft “features”.
It hides its window – so terminate it use the Task Manager. It is not designed to be overly clever, it does not have a notification tray icon.
If you want it to run on start up make a shortcut to where you have saved it in the start up folder, or use the installer!
If it is does not work at all please let me know and I will try to fix it when I have time.
It won’t fire when the active/topmost window belongs to a process which is running with privileges elevated higher than what NonStickMouse itself is running with.
In an effort to minimise misfires this take parameters of when to fire: –
“corners” – only fires when in a corner (thus dragging a window across screens will stick).
“lag” – a delay between firing the hop. The default is 500 milliseconds but that can be overwritten by putting a value after the word lag.
These parameters can be affected by being embedded in the filename itself, thus renaming “NonStickMouse.exe” to “NSM_Corners_Lag_200.exe” will activate both, with a delay of 200ms. Use as required.
Subsequently I have also developed a debug version: –
(Consequently, due to the mindless stupidity of virus-scanners, of which I’m not even going to bother to try to counter, I took it off my site. If you need this app to help diagnose your issue please let me know and I can make it available for you.)
This has a User Interface showing the screen dimensions and offsets of each monitor, the mouse tracking, and the values it was at when the last hop was fired. This application will also hop the mouse so for complete accuracy please terminate NonStickMouse.exe when using it.
You may choose to compile this yourself for your own sense of security – in which case follow the instructions here: –
https://www.jawfin.net/lazarus
Developed by Jonathan Barton
Just put whatever you like in the Price per item box 🙂
or
Bitcoin BTC: 1B28E1adNTUMsmgpg2ijG1rSb9xScSXgcy
Ethereum ETH: 0x6d9b0bee0ac389444839f2e5c682ca09dc74c7a0
(For any other coins just make a request for a wallet address.)
This site also supports Brave Rewards from the Brave browser, so you can use that button on that browser.
Disclaimer: Jonathan Barton is not responsible for any damage or presumption of damage caused by this application. All information here is to be considered advice of which you may chose to act or not act on; this includes compiling the application yourself. As one guy said, you received free, give free – this application cannot be repackaged and resold for commercial gain. You may contact me if you see an opportunity for this. Consider this paragraph as the End User License Agreement – which can be changed at any time without notice.
In response to the question: How to make it start automatically: –
Edit: Save the actual .exe in the start-up folder, or,
Edit: Use the installer, or…
I didn’t want my app writing to the hard-drive as I don’t want it to be considered a security threat in any way! So to have it start automatically you need to manually add a short-cut in your start up folder. Instead of trying to explain it all here I will just provide a link to show it: –
http://www.howtogeek.com/208224
Not surprisingly the link for this information from Microsoft themselves is broken: –
http://windows.microsoft.com/en-au/windows/run-program-automatically-windows-starts
Although that is the published reply from a Google search of: –
http://www.google.com/search?q=how+to+make+a+program+run+automatically+at+startup+windows+10
Typical, hey?
Cheers
Jonathan
Edit: Just reading through that HowToGeek article they have a *very* long-winded way of creating a shortcut on the desktop. All you need to do is right-click the application, on that menu click “Send To” so it opens the sub-menu, and choose “Desktop (create shortcut)”. If you don’t have explorer open in the folder where the application is, use their way!
Great App!
One bug, it doesn’t detect the cursor at the top / bottom of the screen for multiple monitors above / below each other.
Thanks!
I admit I use side-to-side screens so am less familiar with its behavior vertically. I did test it though by stacking the screens vertically – so are you seeing this as you are dragging a window from one display to another (Snap Assist) or is it getting stuck in the corners (Hot Corner) ?
Aha, fixed it! It was in the bottom-left and bottom-right corners of the top screen and moving the mouse down. My code had a greater-than sign instead of a less-than sign, a simple mistake which could be made by any deranged programmer!! If you download the latest version it should be good now. Please let me know if it isn’t!
This is still happening to me when monitor 2 is above monitor 1, but not when monitor 2 is below monitor 1. In other words, still getting stuck in this configuration:
[—–]
[–2–]
[_____]
[—–]
[–1–]
[_____]
When I’m trying to move the mouse to monitor two, the mouse gets stuck at the top of monitor one, which is positioned one monitor.
Hey Tommy, it could be an alignment issue. Even though the monitors look aligned on the display settings screen it may be out by 1 pixel, which is enough for NSM not to trigger. To check this please run the debug version documented here: –
http://www.jawfin.net/?page_id=143#comment-14930
And reply with the numbers it is showing per monitor, or a screenshot of it.
Minor update to the code, optimized it, and better handling when against corners and edges which have no connecting monitor.
Latest update, optimised the code more by nesting conditions enforcing short-circuit logic. Took out some unnecessary conditions and put in earlier escapes from the main loop, cutting down the workload. Any more optimising would have to be done in raw machine code! Like how is done here https://www.grc.com/smgassembly.htm
This is great thanks. Would love to know how it works?
Yea, no worries James. What I do is poll the mouse’s position about 100 times a second – that may seem a lot but if it was any less you’d really notice the lag between the switch. I then look to see where the mouse is positioned relative to the screen it is on, like, if its a corner or on an edge. I then look at the position it was in last (I just store that from the previous poll) and thus determine which direction it was moving in. If it just moved into the corner I then check to see if there is another screen on the other side of that corner/edge, and if so I pop it over. I also freeze the UI thread for 10ms, just so Windows doesn’t snatch it back into the corner (it really does, even though I use code to place the mouse, Win10 then places the mouse back into the corner). That’s pretty much it 🙂
It doesn’t work very well with a setup where the monitors are diagonally connected. Overall, it’s a nice little hack, but it’s not really a good sollution. There must be a way to really shut down the sticky corners, but for now I guess this helps many, just not me.
I know what to do to make this work for that situation – I agree, it’s less kind on diagonals – but I know how to fix that and will do so now. Judging by your bogus email you won’t know I’ve done this, but the next person will 🙂
Latest update. Now smoothly handles moving between monitors which are placed diagonally. Note this application does not automatically upgrade itself – you have to download the latest version, terminate the instance already running, replace that executable and re-run it. Or, use the installer!
Thanks for the fast reply and fix, but my Avast is going crazy over your file now, and claiming that it’s infected with “Drep”. I’m sure it isn’t, and as an old assembly hacker, I know exactly why this crap happends. But I just wanted to inform you. Sadly AV programs usually seems to hate well coded software. 🙁
PS. I changed my email to a less fake one. I’m just very restrictive where I write it. 🙂
Understood completely – I do the same myself. I just didn’t want you to miss out.
I am surprised it flagged, there really is nothing bad here. But I am happy to prove that too – so here it is – the full source code: –
http://www.jawfin.net/download/NonStickMouse.dpr
This is a Delphi project – and it is so basic it would probably compile on every version of Delphi there is 🙂
Cool, not often one meets an old Delphi coder. It was ages since I did anything in it, but it was being both an old assembly and a pascal guy, Delphi seemed like a nice choice at the time.
About the project, the current version of the exe is not being reported as bad anymore by Avast, just fyi. And the fixes for the diagonal monitor seems to work fine. I’ll test it some more, but overall it seems to work good now.
Good job!
Great to hear 🙂
And I’m an old Assembly hack myself. In fact my final year project for my degree was writing a big number math unit for cryptography – specifically for public/private key generation for RSA security. That was back in ’94 though!
Funny how it’s not flagging in the AV, I didn’t change anything – I mean, imported libraries etc.
I am relying on Windows actually jamming the mouse in the corner before I fire my hop – so it will always lag for that. If it’s too noticeable I was actually thinking of tracking its movement by storing the last couple of positions, work out it’s acceleration, and postulate where it will be next, and check if that position is on a new screen, and if so, hop it there. But I won’t bother until it’s an issue!
Found a weird “bug” today. The program stops working when the Task Manager window is active. Not a big deal, and noticed it by accident, but it’s 100% repeatable for me anyway, and whenever the Task Manager is the active window, the mouse sticks in the corners again. Just wanted to report to you. 🙂
That would be due to the reason I gave “it won’t fire when the active/topmost window belongs to a process which is running with privileges elevated higher than what NonStickMouse itself is running with.”
The Task Manager is absolutely running at admin level – even though there’s no UAC dialog to launch it.
The reason MS prevents reading and controlling the mouse when an elevated program is running is to prevent apps from elevating themselves. Otherwise an app could re-launch itself as administrator, while it immediately clicks on the UAC message from the limited instance, which would then terminate itself allowing the admin leveled app to do whatever it pleases!
This works when I move my mouse slowly across the corner, but still gets stuck when I move my mouse quickly, which I normally do when going between monitors.
Does it stop completely, or seem to hang for a bit before hopping over?
The problem is I poll the mouse, that is, constantly ask where it is (a passive, non-invasive solution). The true solution would be to hook into the mouse itself, and when it moves it fires an event in my code. That programming is extremely invasive, would set off every security red alert, and has the potential of killing the mouse or crashing the hooked application – so I’ll leave that to Microsoft!
The best I can do is have a passed parameter of how frequently to check the mouse’s position – it’s currently set to 100 times a second, but it could easily be 1000 times – but that would up the CPU usage. Hmm, ironically as I was writing this I did a quick test at 1000 a second to see the extra CPU overhead – and it’s the same as at 100/sec! So I can try that if it helps – let me know what you think, cheers 🙂
Edit: Another solution would be to create a form (thus with a window’s handle) in the corner of every screen. These “forms” would be 1×1 pixels big, be transparent, and locked to “stay on top”. I’d hook the mouse-move event on the form. The draw-backs are it physically affects the screen, could affect full-screen applications, override/disable applications which use the corners (perhaps including Microsoft’s Hot Corner), not behave properly when resolutions are changed (it may flicker as I’d have to move the window) and when the monitor alignments are moved. It would also be a bigger demand on resources, it would list with the visible applications (when its not) instead of with the processes – BUT, it would fix the situation you are referring to. (Still, I would try the 1ms poll before I do this, hehe.)
I think that would help! I would love to test the version which checks position 1000times/sec.
Done!
New update!
The poll is now 1000 times a second – due to all my testing this seems to make no more overhead on the CPU then 100 times a second. Hopefully it will now respond near immediately. For it to be any more responsive I will have to adopt an event driven solution. Also, I updated the source code to this version.
Hi Jonathan, I’ve been suffering with the very same problem (Hot Corners) since upgrading to W10.
Nice to see Microsoft leaping into action (not!) as usual while the t’internet has so many threads complaining about such a stupid un-switchable option. Yet again Microsoft fails to… blah, blah, blah…
Anyway, my point is, I’d just like to say a very big thank you to you for taking the time to create and then share your solution. It’s people like you that keep some of us sane! :o)
After getting rid of the snapping, them darn sticky corners were driving me insane!
Finally back to the Win7 behaviors.
Thank you!!!
This is great. One bug I’ve found, maybe its just my computer, is that it does not work when the services.msc mmc window is open and is the active window. Not sure why this window would behave differently than an explorer window, but on my computer, when this is open and active, can no longer smoothly go across monitors. Otherwise, thank you so much!
That would be due to the reason I gave “it won’t fire when the active/topmost window belongs to a process which is running with privileges elevated higher than what NonStickMouse itself is running with.”
Services is absolutely running at admin level.
The reason MS prevents reading and controlling the mouse when an elevated program is running is to prevent apps from elevating themselves. Otherwise an app could re-launch itself as administrator, while it immediately clicks on the UAC message from the limited instance, which would then terminate itself allowing the admin leveled app to do whatever it pleases!
Thanks for writing the application!
I’ve noticed that it still catches every so often. Depends on how fast you move and how frequently you move. I see your fix is basically a band-aid(I noticed the fix just moves the mouse as you’re moving. lol. Nicely done!) until MS gets off their ass’ about the issue.
Either way, thanks for helping the situation out! 😀
Yea, this is true. I commented before (^^ up there somewhere!) that: –
I am relying on Windows actually jamming the mouse in the corner before I fire my hop – so it will always lag for that. If it’s too noticeable I was actually thinking of tracking its movement by storing the last couple of positions, work out it’s acceleration, and postulate where it will be next, and check if that position is on a new screen, and if so, hop it there. But I won’t bother until it’s an issue!
This is beautiful THANK YOU!
I did run into a little bug, someones when I hit the corners, the monitors black out and lose signal and then it comes back.
Running a Surface Book Pro w/ windows 10, using a startech hdmi adapter to dock to 3 monitors.
Odd, and I can’t duplicate that one! My other monitor is on VGA, and HDMI has a world of different capabilities.
But, if the mouse jams in the bottom right corner of the primary display that’s where the Windows Desktop Preview button is.
There’s a switch in the Taskbar settings called “Use Peek to preview the desktop when you move your mouse to the Show desktop button at the end of the taskbar” – which hides all windows just when the mouse is in the bottom-right corner, no clicking required. You’ll have to terminate NonStickMouse to see this work – but if the mouse jams there for long enough to fire that feature your screen will flicker, it may be that is what you are seeing?
No I don’t believe so, I am going to guess it is something funny with the dock adapter AND windows 10. I have a similar issue when I look at Amazon Video, and just HOVER over the watch trailer or play button the first time on a new tab, monitors 2 and 3 go completely black for a few a seconds like the video signal is lost and then it comes back and works fine until I try it in a new browser or tab.
It could be the issue described here: –
http://www.jawfin.net/?page_id=143#comment-14876
Being the comment immediately below this one. Otherwise, it may well be just as you say: Surface + Win10 + HDMI.
Xervir mentions here on a Microsoft Answers thread: –
Those using this application, please note that you should have “Disable display scaling on high DPI settings” selected in the executable’s compatibility properties. The will ensure that the program will function between monitors with differing GUI scaling values.
___
So I’ll look into this when I can, see if I can remove this requirement if possible. I only use 2 monitors of the same resolution, I just shared my app for the sake of others, which means I am limited when it comes to testing for many situations – so I hope this information helps.
It’s ridiculous that there was ever a need for this little program but I am so thankful that you wrote this. I just installed Win 10 yesterday evening and so far today I’ve closed Firefox at least 3 times accidentally…lol.
Again, thanks for the time you took to make this program.
Please help!!!
I was using your wonderful app just last week and everything was going fine! I believe I had shut down and restarted several times since the initial download and I don’t recall having to reopen the app. The only thing I did that changed was switch a single monitor (of my two monitors) with a different one so that they’re the same size. During the switch, I had shut down the computer and when I turned it back on, I had to fix some of my display options (move the screens around). I then tried to start up your app when I saw the mouse was sticking at the top corner of my left monitor when moving to the right. I then uninstalled and reinstalled both the application and the installer and still nothing :(. I believe before I had done the installer since I had both a start menu icon and desktop icon.
You app has been a lifesaver, so any advice you have would be wonderful!!!
Alrighty Sarah – let’s see. Does this mean the app is thinking a screen on the left side is actually on the right? If that’s the case please just try rebooting the machine itself – well, try that anyway just to discount any configuration issues!
It could also be that the screens are not perfectly aligned, like, they are 1 pixel out. I covered this on this thread http://answers.microsoft.com with my post at the bottom (can’t link directly to answers in answers.microsoft.com – go figure).
To sum up, go into Control Panel / Display / Screen Resolution (do not use the Display Settings on a desktop right-click, that screen is crippled!). On this screen just move a monitor a bit so you can see its offset co-ordinates and ensure that it is aligned by it having a 0 as the second number (assuming you have them side by side). Mine looks like this: –
But please let me know if none of this helps – we’ll get this working one way or another for you 🙂
Cheers
Jonathan
So I rebooted my computer and there’s still the issue. (The app opened on its own with the restart and then I closed it and opened it again just to make sure)
I checked that the screens are aligned. I’m using two different Dell model monitors. My left is Dell P2213 (Digital DVI) and the right is Dell E228WFP. The left is set as my main screen and is the one I recently replaced so that both of my monitors could be the same size.
It’s still sticking 🙁 I mainly was using your feature to close windows that were open on my right screen. All I had to do was throw my mouse all the way up and to the right and click and it would close. Now it’s just closing the open window on my left screen since that’s where the mouse is sticking.
Any other thoughts? And just FYI you’re absolutely awesome for taking the time to not only create this software, but share it (for free) AND respond to people’s questions and comments! Not many people would take the time, so sincerely, thank you!
Oops, my next posts were not flagged as a reply to this one, so I type this stub to let you know I replied!
Heya. I will help to the extent that you let me! Even if you wanted me to check it running on your computer via remote control – but let’s not get carried away. The best I can do is to rewrite the application to produce a debug version. What I will do is create a version which has a little visible window which shows you exactly what the mouse is doing and where it thinks the boundaries are. With this diagnostic information we should be able to understand why it’s not behaving. This may take a couple of days to write though 🙁
In the meantime, if you are comfortable to do so, you could try running the application as administrator. The reason I state this is from my last sentence on this post: “it won’t fire when the active/topmost window belongs to a process which is running with privileges elevated higher than what NonStickMouse itself is running with.” At least that would discount that as a possibility.
Ok, so I lied. I wanted to get this sorted as soon as I could 🙂
So here is the feedback app: –
http://www.jawfin.net/download/NSMDebug.exe
This won’t solve the issue, but it should let you know what it think it’s doing.
Here’s a screenshot of it: –
What we’re particularly interested in is the grid – where NSM thinks the other screens are relative to the current one. Note this isn’t exactly how it works as NSM can detect if you have 2 screens to the right and it’ll pick the correct one depending on the height that the mouse goes across – this is just sampled from the corners – which will be relevant for 99% of people.
Once we see how the grid thinks the mouse should hop we can watch the labels at the top update as to where it polls the mouse to be and the effect of the last jump. If the current values are not constantly updating then we know we have an issue with the app getting the mouse’s coordinates. Also if the UNKNOWN line lights up that means the app was not able to discern which monitor the mouse is on, thus a hop will never execute.
As this app also fires the hops please terminate NonStickMouse.exe when this is running, so the console app doesn’t get the jump on this one (I made a funny).
Whoops… I didn’t reply either. It’s below!
So I tried that app and I’m not 100% sure I did what you wanted, but I tried my best!
First, as I was doing the test, I realized that the mouse always has more difficulty when moving from the left screen to the right screen than right to left. I’m not sure if that’s important.
Second, the coordinates were always moving when I moved the mouse and the UNKNOWN line never lit up.
Third, I took screenshots of the tests, but I don’t know how to put them in here, so I will describe them! I’ll try to put them below the description…
When I did the test at the top of the screen (the main problem area), these were the values:
Current: -, Last Hop: –
Screen: 0, From: 1 To: 0
X: 1688, X: 1679 1688
Y: 9, Y: 0 9
Line 0: 1680, 0, 3360, 1050, 1, blank, blank, blank
Line 1: 0, 0, 1680, 1050, blank, 0, blank, blank
When I did the test at the bottom of the screen, these were the values:
Current: -, Last Hop: –
Screen: 0, From: 1 To: 0
X: 1688, X: 1679 1688
Y: 1040, Y: 1049 1040
Line 0: 1680, 0, 3360, 1050, 1, blank, blank, blank
Line 1: 0, 0, 1680, 1050, blank, 0, blank, blank
I have absolutely no idea if this is helpful… 🙁
Top:
Bottom:
Thanks for all that 🙂
I hope you don’t mind I edited your posts so the pictures were embedded. This uses html tags, not bbcodes, so it’s: –
<img src=”http://path_to_image_here” />
Also if it’s easier for you we can communicate via email – I just want to be careful not to flood this board and confuse others. Of course, they will see if there are having similar issues and use this app and email me too! jawfin@gmail.com – please do not feel compelled to if that is uncomfortable.
To the issue then: firstly just moving the mouse side to side will not fire NSM unless you are going really slow or are dragging a window – as Microsoft’s Snap To only fires when a window is being moved. But, NSM will always fire in the corners because the mouse gets stuck there every time.
What I notice is your principle monitor is your second screen – absolutely nothing wrong with that but that may be something NSM just isn’t handling.
I suppose what we are looking for is this: with the debug app running have the mouse stuck in the corner where it should jump, then take a whole screenshot of both screens at that time. Obviously redact anything you don’t want seen in public, and show where the mouse is stuck. Simply hit the screenshot key, paste into any paint program and fix! To fake this I ran a program as administrator (process hacker), set focus to it, then got the mouse stuck (recall NSM can’t see the mouse when the top-most app has higher privileges), thusly: –
And the mouse is top-middle where the big arrow is pointing. That middle being the designation between my 2 screens.
As I said, you can of course email if that is easier for this 🙂
The little shift the cursor does slightly past the edge and down away from the top of the screen is a little wonky when it happens. It’s messed me up once or twice.
http://puu.sh/n0YrM/58aa52e6ac.png
Yup yup, that is caused by me pushing it 8 pixels away from the edge, thus 8 pixels in both directions if its a corner. The reason is any less and Microsoft still thinks you put it there and it will actually snatch it back and jam it back in the corner, seriously! And it’s even worse than that, if say the monitors are side-by-side and you run the mouse through a top corner, and I move it even to the middle of the next screen (but don’t take it away from the top edge) MS will still snatch it back. I mean, it can be 1000px away and it’ll grab it back.
So I had 2 options, I can move it to the center of the next screen, wait a frame, then move it again back to 1 pixel over the edge, or just pop it over the 8 pixel boundary (that is, a minimum of 8px from any edge of the new screen). The move to middle then back just never ran smoothly, I was taking too much control away from the user, and if dragging a window it glitched and confused, and the process is longer than the single hop.
There is just no way around this. Windows cannot tell that an application moved the mouse, and it thinks the user did, so it then thinks “oh hey, you moved your mouse through a corner, you obviously want me to stick it in there forever”. I know it glitches, but sadly its the best I can do in the worst situation.
If you experiment and find a way of tricking windows into not regrabbing it, I’m happy to test implement other methods so it’s more polite. But what I have now is the best I could find with all my testing.
OH MY GOD it worked thank you so much 😀
Just wanted to say, thank you so much. This was a *really* annoying issue for me!!!!
I love this so much, but it’s made mouse-clicking inconsistent. About 50-75% of the time it ignores the first click after a short delay of not clicking and I often have to double click to get it to register that I clicked at all. As soon as I kill the NSM process the mouse-clicking becomes immediately responsive again.
Hmm, that’s a new one. I have several different ways of approaching this, I can reduce to poll check to see if that is the issue – what I would do is make it a passed parameter to the application, like you’d run it as: –
nsm.exe 100
to say check 100 times a second instead of its default of 1000. (That doesn’t mean it really is doing 1000 per second, it just means it fires every time the CPU says its idle – I would throttle that firing, i.e. leave the idle longer).
Another means, in fact one I would suggest first, is running the debug version used for testing from here: –
http://www.jawfin.net/download/NSMDebug.exe
It’s not so much that we need to debug it, but that the debug version uses a different mechanism to fire the mouse check event (it uses a timer object as opposed to the signal/wait loop which you can see in the source code).
This way we can hope to make it work without eating mouse clicks. But first, let me know how you go with the debug version, and if you’re happy to experiment I can rewrite nsm several different ways until it behaves for you 🙂
Sorry I didn’t get back to you sooner, but after several days of switching between debug, regular, and not running at all it turns out NSM wasn’t the problem. Nothing was changing no matter what I did, which got me frustrated enough to go through every single program that’s installed, and it turns out the stock touchpad software has a setting to delay mouse clicks after certain conditions when using the touchpad. For whatever reason that delay setting got turned on, so I turned it back off and the problem was fixed.
Thanks for the help and quick reply, and I’m glad it was as simple as that.
Wow, that’s the most random thing yet! Congrats on solving it too, I’m impressed!
Thank you so much! <3
You are my HERO! I’ve spent over $200 on hardware and countless hours trying to fix this issue. TYVM! 🙂
My pleasure 🙂
Hmmm unfortunately, doesn’t appear to be working at all for me…
2 1920×1080 monitors side-by-side, primary on left.
Process is running and visible in task manager
Moving the mouse along the top of the screen from left to right always results in getting stuck in the top-right corner of display 1, doesn’t matter what speed I move it.
same applies right-to-left and at the bottom of the screen.
In short, I can’t see any difference.
What can I do to debug this?
Hmmmm! Interesting….
Found the debug app above and thought the numbers looked a little odd…
It’s reading:
#1: 0,0,1536,864
#2: 1920,0,3840,1080
N/E/S/W are all blank.
Now, I suspect that’s due to the fact that I’m using 125% scaling which is causing apps.
Disabling the scaling (and restarting the process) resulted in correct numbers, however, I want to preserve scaling.
Long story short… Kill the process, find the executable (I used the installer so under Program Files (x86), right-click, Properties -> Compatability -> Tick “Disable display scaling on high DPI settings”.
After that, re-launched and it’s working as expected
Aha, thanks for your research on this – I would have not guessed that was the solution!
It was mentioned elsewhere here that the compatibility resolved another issue – but now I have the numbers you’ve given me I can experiment with the scaling and find a means which the compatibility switch won’t be required.
Thanks again 🙂
I like this, but is it supposed to move my mouse about 10 pixels away from the edge of the screen when I cross monitors? Because that’s what’s happening. lol.
Unfortunately yes 🙁
I’ll just copy/paste my bit from my post here: http://www.jawfin.net/?page_id=143#comment-15025
Yup yup, that is caused by me pushing it 8 pixels away from the edge, thus 8 pixels in both directions if its a corner. The reason is any less and Microsoft still thinks you put it there and it will actually snatch it back and jam it back in the corner, seriously! And it’s even worse than that, if say the monitors are side-by-side and you run the mouse through a top corner, and I move it even to the middle of the next screen (but don’t take it away from the top edge) MS will still snatch it back. I mean, it can be 1000px away and it’ll grab it back.
So I had 2 options, I can move it to the center of the next screen, wait a frame, then move it again back to 1 pixel over the edge, or just pop it over the 8 pixel boundary (that is, a minimum of 8px from any edge of the new screen). The move to middle then back just never ran smoothly, I was taking too much control away from the user, and if dragging a window it glitched and confused, and the process is longer than the single hop.
There is just no way around this. Windows cannot tell that an application moved the mouse, and it thinks the user did, so it then thinks “oh hey, you moved your mouse through a corner, you obviously want me to stick it in there forever”. I know it glitches, but sadly its the best I can do in the worst situation.
If you experiment and find a way of tricking windows into not regrabbing it, I’m happy to test implement other methods so it’s more polite. But what I have now is the best I could find with all my testing.
I just wanted to say thank you for this app. And for being such a responsive developer.
Thank you, thank you, thank you. Also, thank you.
Thank you so much for putting this out there. Your patience is unbelievable (almost as unbelievable as the fact Microsoft is content to ignore the core issue).
Is there a way that grateful users can show their appreciation? It looks like all of your Android apps are free, so maybe a donate button? Of course you have my gratitude, but the least I could do is buy you a beer!
Thanks so much for your generous thought but I will not profit from Microsoft’s mistakes. This isn’t me being over-righteous, I treat my business customers the same – I’ll even go on site and not charge to fix Microsoft issues with their network. Microsoft provides the platform for my business to run, so I feel that obligation towards them.
But, if you are really determined, you can buy my Pro version of Solitaire 3D for Android from here: –
https://play.google.com/store/apps/details?id=com.jawfin.sol3dtabpro
That way you can give it 5 stars too, hehe.
And I do love my beer!! Here’s a post of mine on a forum with which I am affiliated with about such 😀
http://www.knights-reborn.org/forum/viewtopic.php?t=5864
p.s. Sorry for the delay in replying, I was out of the country and incommunicado until now.
Oh my God, thank you for this program! What a relief! Now the Windows desktop works intuitively again when I am moving the mouse and dragging stuff around between my monitors! It has been such a nuisance with those corners since I got a new computer and had to “upgrade” from Windows 7 to Windows 10. Now life is good again. 😉
Thank you, thank you, thank you.
Worked perfectly and fast. Thank you! How can a Billion dollar Windows development team not fix this? It’s clear where their heads are.
I am running this and it seems moving mouse pointer from left screen to right screen corner is no issue but going from right monitor to left monitor corner my mouse gets stuck?!? Any fix or tip to correct that? thanks
It sounds like the monitors aren’t perfectly aligned. Please check my comment here http://www.jawfin.net/?page_id=143#comment-14914 and see if that helps 🙂
Ahh ok. I think that helped some .Thanks
Also seems to not give me problems moving from one screen to the other if im moving slowly but if I speed up any it gets stuck. Any fix for that? thanks
That doesn’t make sense. The way the app works is it waits for Windows to jam it in the corner then hop it over when it detects such – so by that approach it should never stick. It may take a small pause before the hop (as the process is polled) but it should always go across.
The only thing I can suggest is running the debug version, as mentioned here: –
http://www.jawfin.net/?page_id=143#comment-14930
When this is running don’t have the normal NSM.exe running as we want the debug version to handle all the mouse control. I guess what we’re looking for is the numbers it shows when it gets stuck. In such an instance you can use the Print Screen key to copy the desktop image into the clipboard, which can be pasted into Paint and saved on an image gallery site such as http://imgur.com and link that image here, or, just write the numbers out as you see them when it fails to fire.
Sorry I can’t think of any other reasons why it won’t work.
man THANK you for fixing this buu…fffeature.
Thank you so much!!! Really appreciate it!
Dude, I need to have your babies 😛 Thanks so much for the app!
THANK YOU!!!!!!!!!!!
Thank you from SLOVAKIA
Thank you so much for this, I have my monitors set corner to corner to help with games that don’t lock mouse to window in borderless windowed mode but alt tabbing to access my second monitor would always take longer than it should, this fixed everything.
Oooh, that’s clever. I also run Mouse Without Borders so I can easily control other computers on my network, I may do the same for them, cornerize (that a word?) them so I don’t accidently bump them!
Hi, I have 2 monitors. The app seems to fix going across the top and bottom (right>>Left) but not from Left>>Right. Thanks for any help!
Sounds like they are slightly askew. Please try what is suggested here: –
http://www.jawfin.net/?page_id=143#comment-14914
and see how you go.
Cheers
Jonathan
Thx! As of today its still not fixed natively by Windows 10.
Hi Jonathan,
First of all thank you for this application. I moved onto Windows 10 earlier this week from Windows 7 and the corners have been annoying me. This is a fresh install onto a brand new SSD.
I think I found a bug, I’m not sure if this is caused in conjunction with my graphics drivers or not, but full screen Youtube videos have this annoying little offset when I run your application. Please see the images below. My default setup is with the taskbar on the right edge of the left monitor.
Full screen Youtube with taskbar on the right edge of the left monitor.
Full screen Youtube with taskbar on the left edge of the center monitor.
Just now I discovered this as well.
Minimized Chrome browser and try to peek preview.You can see that the window bleeds into the next screen
To fix the bug, I need to go to task manager, kill your app, then move the taskbar to a different location and back.
I will look into it as soon as I can – just ducking out of my office right now!!
I’m trying to think why it would cause this behavior – maybe the window follows the mouse somehow and follows it through the screen hop – I’ll have a play and see what I can find 🙂
I think maybe the taskbar on the left monitor is “pushing” full screen windows away from the edge of the screen of the center monitor because the offset looks roughly the same as the amount of dip you gave the mouse hop.
Sorry, seems like I messed up the images. They’re in the post so can you edit them back in for me?
The source URL references for the images were not retained in the post, so I don’t know where they are! If you post the text of the URL (like http://www.jawfin.net/wp-content/uploads/2015/12/jb2-32×32.jpg ) I can put the images back in.
I tried messing around with youtube videos in full screen, and moving the taskbar around too – auto-hide on and off, but I couldn’t get it to misbehave.
I’m wondering if the side taskbar is changing the effective width and height of the monitor (a monitor has 2 sets of dimensions, its actual size, and the client size which is how big a window gets when maximised when the taskbar is always on top).
Is it possible you could post a screenshot of your “Taskbar and Start Menu Properties” so I can exactly match yours for testing?
Also, please try the Debug version here: –
http://www.jawfin.net/?page_id=143#comment-14930
to see if its getting the correct resolutions and the hop fires correctly.
Otherwise I’m stumped, sorry to say!!
Full screen Youtube with taskbar on the right edge of the left monitor.
Full screen Youtube with taskbar on the left edge of the center monitor.
Minimized Chrome browser and try to peek preview.You can see that the window bleeds into the next screen.
Yes, all the resolutions look alright.
Aha, I see it.
A couple of thoughts, are you doing full screen by dragging a window with the mouse through the monitors then using the snap-to at the top of the screen so Windows will maximise it? If so, I wonder if somehow the hop is firing after the dock, which ties the window to the mouse and thus may move the window when the 8px top and left borders are applied.
A quick check to see if this is the case, use the restore window button (the box in the top right corner of the title bar) and maximise it again and see if its still offset. Usually a restore/maximise will correct the issue of offsets being wrong.
Another thing which the debug screen shows me is it considered the screen on the left (1) to not only be on the left (east) but also on top (north). This is due to the different resolutions of all the screens. As the middle screen (0) is shorter then the left one, it misidentifies that – I wonder if that also makes an impact on this.
I’ll see if I can set my screen layout the same as yours, then I should be able to work out a way to make it behave.
Awesome layout though 🙂
Actually, now that you mention it, your debug thinks monitor 1 is to the east and north of 0 at the same time, while monitor 2 is to the west of 0. You can see from my earlier screenshots that:
Main display in the center, monitor 0, 1680×1050
display to the west of 0, monitor 1, 1920×1080
display to the east of 0, monitor 2, 1024×1280
I normally drag the window to the top to maximize the window. I tried your suggestion but it still did the same thing. Note that this doesn’t happen when I am using my computer for most of the time. It only happens when I make Youtube full screen and when I use Aero Peek.
I tried replicating the phenomenon on other windows like Task Manager and Internet Explorer to try out Youtube and I couldn’t replicate it. It only happens with Chrome.
Other things I tried: moving the task bar all over the place. Youtube full screen only bugs out when task bar is not on monitor 0. Aero Peek will bug out no matter which monitor the task bar is on.
Thanks for that extra info. I’ll see how I go with that too.
I was researching this, and we’re pretty sure this behaviour is tied to NonStick Mouse, but one suggestion was to try a Youtube video in Chrome in incognito mode (which is a quick way of not using plugins and extensions) – I only mention this as I was reading about it, I doubt it would make a difference, just throwing it out there!
Yup still doing it in incognito.
Ok, sorry for the big delay – stuff eats up my time.
** Read Edit at bottom first!!
I’ve really had a play with this, and I’ve found the issue. As far as I can tell it’s not Non-Stick-Mouse. But this is what it is.
You dock the Start Menu on a monitor which is not considered the primary display, so for me I have this: –
The red line marks the boundary between the screens.
Note I have the Start Menu docked between the displays, not on the main display (which is monitor 2) then on the primary monitor (as I only have 2 screens I can’t test on anything else!) the Peek offsets the view. I suspect the docked menu (not set to auto-hide) is pushing into the client area of the next screen. The “client” area is the area free for applications not reserved by docked windows (which is to say the area a window will take up when maximised). So the client area behaves correctly for window sizing, but not preview. It could also be the border around the window (which is hidden when maximised) is taken into consideration by the peek when it really shouldn’t. So, without non-stick-mouse running, this window in preview looks like: –
I’m not sure what the solution is then – maybe make the left monitor the main display (which will move the icons), or watch youtube on another screen. This seems to be a bug in Windows – for a giggle you could try telling Microsoft about it.
Edit: Ooohk – it would seem it doesn’t matter where it is, what monitor, and what monitor has the Start Menu – peek always gets the preview wrong for a Chrome window which was maximised before being minimised. So I suspect its a bug in Chrome – it’s probably not reporting it’s true window size back to windows for the peek to show it. In which case it may be a Google issue.
Thank you so much for this.
Not all heroes wear capes.
Sorry if this is a double post.
This app looks to be great. It does seem to solve my horizontal movement issues. I have 4 1080p landscape monitors in a rectangle, with a single portrait 1080p monitor on each side, with the bottom level with the bottom of the rectangle. My issue is moving vertically. I have to really get the mouse moving to move between vertical monitors. My main monitor is the upper left in the rectangle. The screenshot shows it stuck trying to move down from my main monitor. I noticed this really happening when I updated to the Anniversary edition. I can “go around” the vertical change by moving horizontally to one of the portrait and then moving down a bit, and moving horizontally back to the lower landscape, but that’s a pain.
That you have to move at speed means it’s relying on Windows default behavior to get the mouse down there, and not using NSM to hop the mouse. As I can’t hope to duplicate your setup you’ll have to bear with me.
You could run my debug version mentioned here: –
http://www.jawfin.net/?page_id=143#comment-14930
And see from the grid it populates whether it’s handling the vertical alignment of your monitors correctly. Note the original NSM has to be terminated so it doesn’t interfere with the debug version. Hopefully it’ll provide feedback which makes sense as to what it is doing!
I should have had a picture in there of the debug version running. I don’t know where that went (also, should I have gotten a notification about your response? I didn’t see it if it happened).
here’s the screenshot: http://i.imgur.com/qvMsmOc.jpg
Thanks,
Danny
Oh my!
I have no chance of duplicating that display set-up haha!
The debug version shows me I have bugs though, just at quick glance – for instance I notice that although some monitors are identified as being North of others, there are no corresponding South ones. I don’t know if this is in any way impacting the offset issue NSM is causing – but doesn’t hurt to fix the little things too. I’ll check the actual numbers to make sure they are adding up.
End of month is a busy time for me, so I am sorry if I don’t get back to you with something quickly, but be assured it’s on my to-do 🙂
Edit: The debug version uses slightly different code to move and identify the mouse – can I ask is the debug version also messing up those full-screen offsets? (And make sure NonStickMouse.exe itself isn’t running, just NSMDebug.exe)
Alrighty, I’ve taken the time to look at this. The first thing which did jump out at me was the odd (as in not even) numbers in the debug screen. All resolutions are even numbers, so right away that tells me the screens aren’t perfectly aligned (and as we are talking about pixels this is required for the silly mouse to behave).
And as the master hack artist I am, I knocked this up in excel
The first grid is the current settings, and the second is what screens we need to move just so we have a solid starting point.
To get pixel-perfect screen locations please look at my comment here: –
http://www.jawfin.net/?page_id=143#comment-14914
That’s the one showing how to use the Control Panel Display Settings to show the real screen origin on the preview.
This should fix the sticking behaviour.
I love you man.
hi,
I had same problem as you describe above but it looks there is a way how to disable this windows functionality – try settings/system/multitasking/snap and disable the first option.
Karo
That will work, but it also disables the snapping features which work with the Windows Key and the Arrow keys. I personally use those a lot, like Windows + Right + Right + Up to move a window to my right screen and maximise it.
Ahh, you are right