Non Stick Mouse in corners of Windows 10

Use this application to disable or bypass the sticky corners in Windows 10 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.

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 (2 out of 79)
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 (2 false positives – Same stupid AVs that hit the app itself)
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 emedded 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: –

Developed by Jonathan Barton

As has been requested on numerous occasions, here is a donate button!

Just put whatever you like in the Price per item box ๐Ÿ™‚
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.


Non Stick Mouse in corners of Windows 10 — 488 Comments

  1. Hi Jonathan! Thanks for this amazing app!

    Unfortunately i cannot download the installer. When I try opening the link, it says “The connection was reset”.

    Tried same in Firefox and Internet explorer, but no luck.

    Any was to download it?



  2. Maybe I am using it wrong but I installed the software and verified it was running but my mouse still hangs when moving between the bottom and top monitor. I have 4 monitors that are stacked, 2 on the bottom, 2 on top. Moving left to right or right to left between monitors works fine. When I move up to the top monitors or down from the top to the bottom I have to move the mouse very fast in order for the mouse to move down. If not it gets stuck at the bottom edge or top edge.

    • The first guess is that the monitors aren’t aligned. They may look like they are in the Display Options, but that screen hides unaligned monitors by design (which is a flaw by Microsoft). So to test that’s not it first please download the debug version: –

      And post a screenshot of what it shows. It has the actual screen coordinates and offsets which help identify these kinds of issues.

  3. Thank you for the app, Jonathan. It’s a great help. Also thanks for your reply on I’m reposting my comment here, as you suggested.

    However, it appears to me that it only fixes the problem for screens that are side-by-side. If one screen is above the other, the problem seems to persist.

    • Hey Jim ๐Ÿ™‚

      Ok, so, first thing I suggest is getting the debug version: –

      Run that and post a screenshot of it. Also terminate nsm.exe itself and see if the debug version will execute the hop, I would suspect it won’t, but at least if it does it shows the values on the screen which triggered it. In which case, it would be good to get a screenshot of that too.

      If you’re not sure on how to get screenshots just write back here and I’ll explain the process.


  4. Hey there!
    First off I would like to thank you for developing this.
    At the moment I’m having a hard time using the “Show desktop button” in the bottom right corner. I can press it but I have to really slow down and aim for it, maybe you could implement a config file so one could change the sensitivity of each corner hop.

    • Howdy!

      I don’t suppose you want to hear that there is a keyboard shortcut for that, Windows Key + D. Closely related is Windows Key + M for minimise all, but it won’t restore when pressed again.

      To harp on the subject, you can create your own shortcut for this command. In whatever folder you want it, do right-click -> New -> Short Cut and enter “%windir%\explorer.exe shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}” and call it “Show Desktop” or whatever. You can then go to the Properties of that file, change it’s icon if desired (like C:\Windows\explorer.exe, 4th icon down) – and if it’s on the Desktop or anywhere in the Start Menu you can put a hot-key on it which will also work.

      But, to answer your question, NSM is rather brainless – the approach is: –
      where was the mouse 30ms ago, where is it now, and based on that trajectory where will it be in 30ms?
      if that is going to be another screen, then hop the mouse to that position

      So it is unaware even if its near a corner, it doesn’t know the screen sizes, or which is the Primary display, or more importantly which display has the Start button & task bar on it (not necessarily the primary), and, is the task bar horizontal or vertical.

      I can hard-code it though, so if you say if mouse’s X & Y coordinates are in this range, don’t hop. I am happy to code that if for you, if you give me what those numbers are (you can use the debug version to show mouse positioning) I’ll build a special exe just for you ๐Ÿ™‚

      The amount of work to make this an option in the default app isn’t worth the overhead it would require. And, I’m really trying to show Microsoft just how simple a fix it would be to remove this bug – the smaller the code the greater the slap!

      Let me know if you want your very own NSM and I’ll get right on it!!


      • Hey!

        Thanks for the quick response. Cheers for the Win + D tip I really appreciate it. I think its just my muscle memory from always doing on windows 7.

        It would be amazing if you were able to make that for me, unless its too bothersome. I recorded the debug window with the corner of my two monitors. Do you need any additional information? (

        Many thanks,

        P.S. Microsoft sucks for implementing this “Feature” in the first place!!!

        • lol, I looked at your webpage, awesome! I clicked the screen so many times one of my cores spazzed out!! I hadn’t seen particles.js before, good fun ๐Ÿ™‚

          Anyway, back on topic, get your toy here: –
 (note this is case sensitive)

          Now I can’t test it as my paltry monitors can’t hit the resolutions you use!! But, it should work. Here is the change employed, as modded from the source provided on github. In unit uNSM.pas, in function CheckForMove:boolean; straight after the begin //Begin CheckForMove are these lines of code: –

          //The Cameron Special - don't jump the mouse past the Show Desktop bar
          if (pt.X>1914) and (pt.X<1920) and (pt.Y>1038) and (pt.Y<1080) then

          And let me know if it doesn't behave, or I have misunderstood the intent for this change.

          • Wow thank you so much it works perfectly as intended!

            I appreciate your compliments, the particles are great fun. It’s a simple template but I cant remember where I got it from!

            I must thank you again, you really have gone above and beyond, your next coffee is on me!


        • Replying here as my site won’t let me nest comments 5 deep – I suppose I should change that!

          Thanks for the coffee!! Much appreciated ๐Ÿ™‚

          I’m just glad I got it running for you – have a great day!

  5. Thanks for this. I have my laptop to the right of and much lower than my second monitor, with a narrow area in the top left of the laptop and bottom right of the second monitor for cursor transit. The horrible Windows feature was driving me insane, because my monitor arrangement was working well for me besides that.

    Regarding the false positives on the installer, people could download the program executable and then create a shortcut in the Startup folder in the Start Menu if they want it to start automatically but don’t want to use the installer. I personally would figure out what’s causing the false positives and wouldn’t host the installer unless I had made sure there weren’t any.

    “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp” <- this is the folder to copy the shortcut into.

    I miss the old Start Menu from before Windows 8… right-clicking on a folder actually opened a normal Explorer context menu.

    • I hear that!

      I use ClassicShell and it supports those older features, navigatable start menu with context menu (right click) for Open here on the sub menus.

      Personally though, I have NSM running in the Task Scheduler on the Start Up trigger, as this allows me to run it as administrator with the credentials preloaded – that way NSM still works if I’m running higher level admin applications.

      Cheers & thanks for writing ๐Ÿ™‚

  6. It works wonders and snap still works it’s amazing how Microsoft can’t fix this major bug after years. It’s a bug not a feature, just like how being able to bend a ipad is not a feature.

    • Ah, but by all accounts, can’t you recharge the iPad battery in the microwave? And yes, I predict this bug will be fixed the same time unlimited resolution hologram displays are common – that would be appropriate to their development life cycle ๐Ÿ™‚
      (Oh good, now my eyes can drift from one hologram display to the next without getting frozen in the corner.)

    • If you’re running 2 different resolutions between the monitors it’s possible that its not getting stuck, there’s just no vertical “real-estate” to move into. In that, if your left monitor is say 1280 x 1024 and the right is 1600 x 900 then the mouse will be at position 1280,1024 in the bottom right corner, move it right and it’s looking for position 1281 x 1024 – but, the right monitor only goes to 900, not 1024, so it cannot go there.

      If this is not the situation in your case please download the debug version and post a screenshot of it running so we can see the numbers.


  7. Hello Jonathan,
    Thanks for developing NSM. My monitors are driving me nuts. The cursor snags between upper and lower monitors although sideways isn’t a problem. I tried the debugged version and the standard NSM program and neither worked on my set up. Maybe I am not using them correctly. Are there any workarounds or something else to try?
    Best regards,

    • Hi Tom,

      For me to [hopefully] correctly diagnose the problem I would need to see the screen the debug version shows. With that I can see the hops its making (or not making) as well as the resolution and placement of all the monitors.

      The easiest way to do this is run the debug version, and when it is top-most hold down the ALT key and press the Print Screen [Prt Scr] button in top right corner of your keyboard, 3rd from the right. This has now put the image of the running app into the clipboard. Go to the imgur site, at and on the home page of the website you hold CTRL and tap V for paste. It’ll create a post of the screenshot, and moving the mouse over to the top right corner of the image created a Copy Link button appears. Click that, and paste the contents to a post here – like mine I just did is

      If you prefer to email me directly that’s find too, at

      We’ll get this fixed for you ๐Ÿ™‚


  8. OMG THANK YOU!!! This was driving me nuts, not being able to drag windows over my two monitors like I’m used to from WIN7 and getting stuck in the corner every time was completely unacceptable. In what way is that a feature?? I tried soooo many things that didn’t work at all, but this, this worked straight away so easy haha.

    Anyways you’re a legend.

    Thanks a mil.

  9. Oh wait never mind I spoke too soon. This works for a few minutes after my computer starts, then it stops working and its back to endless fustration town. Feck.

  10. You sir are a genius! <3
    Your comment " If you like I can code it so when you slide along the top of monitor 1," Genius. Haha
    When I saw it, it looked to me like the guy before you said what MS had said about positioning..hahahah

  11. Hi,

    I’m using NSMDebug.exe because the others get trigger by the anti-virus software at work, the debug work fine, is there’s a way to auto-hide the form at launch like a command line arguments ? I would like to put it in my startup folder, but would like to automaticly hide.


  12. Hi,

    I tried it but it’s not hidden like when I click the “hide” button, i still see the window in the taskbar and I see the control button : minimize, maximize, close and then red JB icon in the left bottom corner, like a minimize child form that the parent is not visible.
    I have to click on any the control button or the in the taksbar to make it disapear completly.


    • Did that separate app work any better? I know it’s a pain to then have 2 apps in start-up, but was just wondering if it worked (as it uses a different means to hide the app). I’ll play with that NSMDebug hide, see if I can make it hide better – but its 12:30am, so that’s for tomorrow (or at least later today!) and I’ll post back if I come up with anything.

    • Ok, me again ๐Ÿ™‚

      So I’ve really gone to town over this one. I got the latest version of Delphi, which is now free:

      And I now use 3 different techniques (tricks) to hide the app compiled with Delphi Tokyo. The download path is the same:

      There’s also a little feature you can use, if you just rename the .exe to include the word “hide” itself, that’ll still trigger the action – so it doesn’t need to be a command-line parameter, just call it NSMDebugHide.exe or even just hide.exe! Note you’ll have to use the task manager to kill it as can’t be made visible after it’s hidden.

      Checksum information
      Name: NSMDebug.exe
      Size: 2501632 bytes (2 MB)

      CRC32: D95FC623

      CRC64: CCB7A7130DDDC2E0

      SHA256: 9F7939FBE774E0CA14733E0963781795DCAE54323BB3FDF5B9496AA9A4E8A2E2

      SHA1: 3B877331FE012510F68B601B709121B6A9CCF74C

      BLAKE2sp: 000BD3CB27308851A4AD1CA5FC10D0A5D004B7C4A013FB290A4635FDD0605A75



  13. Work great now, everything is hidden! I got a little warning from Windows 10 the first time, but no virus detected from the antivirus software!


  14. Hi, I was very excited to see this, however it doesn’t work for me. I am running win 10 LTSC 2019. I tried running it as an administrator, still doesn’t work.

    • Glad it helped ๐Ÿ™‚
      The new DPI approach MS took stuffed this app up for a while too, until I rewrote it with a newer compiler.
      You’d think that while MS was rewriting their resolution approach, they could have spared the 5 minutes it would take to fix this bug too…

  15. This is exactly what I was looking for. Using two 27″ monitors but one 4k and one 1440p and the mouse catching on the edge was driving me nuts.


      • I’m actually noticing an issue for my usage case. The monitors are physically the same size but due to the different resolutions they show up as different sizes to windows 10. So when the mouse crosses from one monitor to the other it physically moves up or down.
        Your app fixed this for awhile, but now it feels like it’s going out of sync. It does odd jumps to the next monitor.
        Is there any way to fix this?


  16. Wow, such a world of difference. At first I didn’t think it worked and figured those goons at MS broke it, but after reading the comments it got me thinking, turns out I was one of the people with misaligned monitors. By about 4px!

    Now my screen is well oiled and that nasty mouse locking nonsense is gone. Thank you for being awesome ๐Ÿ™‚

    • ๐Ÿ™‚
      It’s not your fault though, the user interface for the screen alignment in the display property settings actually shows the monitors aligned – I mean you can zoom in x10 and they are still pixel perfect. But they are not. A look in the registry or at an app like my debug one shows the misalignment. You’re being told it’s all good, but it isn’t. I’m glad you found this for yourself – it makes me wonder if I should slip an alignment check in my NSM as a kindness to check for a Microsoft induced misalignment!


      P.s. Even perfectly aligned monitors can still suffer from the sticky corners – I only mention this misalignment as it’s the first port of call.

    • That is peculiar. Still, as the debug version works you can use it just the same. There is the Hide button on it, but also you can make it so it runs automatically hidden. You can either put the word “hide” as a command-line parameter when you run it, or even more easily, just put the word “hide” in its filename – so just rename it to “NSMDebugHide.exe” and when it runs it will hide itself.

      I hope that helps.


      • Interesting, no one else have the same issue? could it be because my monitors are not aligned? They are “in touch” on one of the sides, but with “offset” because physically they are so.

        • It’s been a while since the Debug version worked when NSM itself didn’t – but then I had different code [supposedly] doing the same thing. But now I think it’s exactly the same routine in both – so I don’t know why one would work but the other not. To be sure though about the screen alignment, could you please post a screenshot of the debug version here? You can use Alt + PrntSc keys to get the image into the clipboard, that paste that into then copy/paste the link it creates here.

  17. I love you, the corner thing was driving me nuts.
    Just wanted to point out since i haven’t seen it mentioned above (might have missed it), that all Avira, Comodo and Windows itself was trying to block this app as a unidentified malware or something. I trust it isn’t, but if there was a way to make it friendly with all of that software it would be great.

    • It has been an unrelenting battle against AV software – there are many, many posts on the subject here, perhaps in the Older Comments link below. Its strange though, as this app does not use libraries which are required for even the dumbest virus (like, writing to the hard-drive or registry, accessing the Internet). Sometimes I’ll go on a campaign and contact the AVs and ask them to whitelist me again. I have done that with MS Defender a near dozen times… of course, if they were competent I would not have needed to write this app!!

      If its any comfort for yourself or anyone, you can just grab the source code itself and check it line by line. I wrote the code as best as I could so it’s easy enough to follow, then you can compile it yourself with the new free version of Delphi: –

      Thanks for your comment ๐Ÿ™‚

  18. This worked perfectly. Been dealing with this issue forever and finally decided today to see if there was a fix. Found this link posted on Microsoft’s forum and it works! Thank you for making this ๐Ÿ™‚

    • Windows works off the exact resolution of the monitor, regardless of the size or density of the screen. So say your left monitor is 1024 x 800, and the monitor to the right is 1600 x 1200. Note these 2 screens could be the same physical size, or at least the same height, and the resolutions are due to the monitor or graphics card limitation.

      Now the mouse is in the bottom-right corner of the left monitor (1024,800) and you move it one pixel to the right, it’ll now be at (1025,800) which means by the right monitor’s resolution it is now two thirds way down the screen (800 out of 1200), so it looked to have shot up a third of the screen.

      This is how Microsoft treats the behaviour between monitors, and NSM isn’t about changing the default behaviour of Windows, its just about it not jamming the mouse in that corner!

      If I have misunderstood the issue here please let me know. Also, for me to better visualise what is happening could you please download and run the debug version and post a screenshot of it so I can see the actual numbers. (You can use Alt + PrntSc keys to get the image into the clipboard, that paste that into then copy/paste the link it creates here.)

      Having said that though, there is no problem with me writing you a specialised app which applies a formula to the hop, so it’ll scale it’s location. In which case let me know, and again I’ll need the debug version screenshot so I can fudge these numbers for you ๐Ÿ™‚

      Debug version:


  19. OMG, I love this little program! Thanks Jonathan! After first time running it, my snap wasn’t working very well. I did a computer restart and then that snap feature worked perfect. I made a donation. Thanks again!! Danny

  20. Pingback: Desactiva las "Hot Corners" o "Esquinas Activas" en Windows 10 para trabajar mejor con dos monitores - SoftZone

  21. An interesting bug i found: I like to keep my monitors diagonal from each other and I changed my setup recently. I noticed that the normal version of nsm works correctly on the upper left to bottom right corners of my monitors but if I switch the configuration to top right to bottom left then it no longer works. I downloaded the debug version and it says that the monitors are ligned up correctly and it is also able to correctly function on the top right to bottom left configuration. The debug version seems to work correctly on all configurations but there seems to be a bug of some sort in the normal version. Just thought I’d let you know. Thanks for your hard work!

    • Bah. I had fixed that one, I’ll check my code. I’ll post again if I manage to solve it.
      In the meantime you can use the debug version to be your NSM; it looks for the word “hide” in the command line, so you can either run it with “hide” in the parameters, or just simply rename it so “hide” is part of it’s filename.

    • Nup, I can’t fault it. I uploaded my latest source to Github, just in case it was out of date.
      The diagonal checks start at this line:

      Here is my testing with the Debug version, you can see the offsets are the size of my first monitor, and the app works without the debug working – so no idea why it isn’t behaving.

      I’ve updated the download just in case, so re-grab it from the links at the top, they may just work!

    • I strongly suspect, and please appreciate this is only a hypothesis based on reading thousands of posts on Microsoft’s “Answers” forums, that the company is full of extremely intelligent engineers and programmers, but completely mind-meltingly stupid managers that make their decisions; and I just don’t think that would suit me!

  22. I took the c# code from GitHub and tried to build it and it has 31 errors

    Error 1 Unexpected character ‘$’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 54 35 NonStickMouse
    Error 2 Unexpected character ‘$’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 75 47 NonStickMouse
    Error 3 Unexpected character ‘$’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 86 45 NonStickMouse
    Error 4 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 37 NonStickMouse
    Error 5 Method must have a return type C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 44 NonStickMouse
    Error 6 Type expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 57 NonStickMouse
    Error 7 Invalid token ‘(‘ in class, struct, or interface member declaration C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 89 NonStickMouse
    Error 8 Invalid expression term ” C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 54 35 NonStickMouse
    Error 9 ) expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 54 36 NonStickMouse
    Error 10 Invalid expression term ‘)’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 54 91 NonStickMouse
    Error 11 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 54 91 NonStickMouse
    Error 12 Invalid expression term ” C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 75 47 NonStickMouse
    Error 13 ) expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 75 48 NonStickMouse
    Error 14 Invalid expression term ‘)’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 75 91 NonStickMouse
    Error 15 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 75 91 NonStickMouse
    Error 16 Invalid expression term ” C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 86 45 NonStickMouse
    Error 17 ) expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 86 46 NonStickMouse
    Error 18 Invalid expression term ‘)’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 86 59 NonStickMouse
    Error 19 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 86 59 NonStickMouse
    Error 20 Invalid expression term ‘.’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\NSM.cs 70 51 NonStickMouse
    Error 21 Syntax error, ‘:’ expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\NSM.cs 70 52 NonStickMouse
    Error 22 Invalid expression term ‘)’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\NSM.cs 70 62 NonStickMouse
    Error 23 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\NSM.cs 70 62 NonStickMouse
    Error 24 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\NSM.cs 70 63 NonStickMouse
    Error 25 ; expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 37 NonStickMouse
    Error 26 Method must have a return type C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 44 NonStickMouse
    Error 27 Type expected C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 57 NonStickMouse
    Error 28 Invalid token ‘(‘ in class, struct, or interface member declaration C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 32 89 NonStickMouse
    Error 29 Unexpected character ‘$’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 54 35 NonStickMouse
    Error 30 Unexpected character ‘$’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 75 47 NonStickMouse
    Error 31 Unexpected character ‘$’ C:\Users\test\Desktop\nsm-master\WPF\NonStickMouse\NonStickMouse\MainWindow.xaml.cs 86 45 NonStickMouse

  23. What a shame, i can’t use Delphi on this air gapped network. I was hoping to simply just copy the code, build it and use this tool. It was worth a shot. thanks

    • Mate, that’s sorry news – and it hurts to know someone is suffering from this, especially as you’re taking precautions like air-gapping, which is a credit to you.

      I also think, somewhere in all this post history someone did a C# version last year …. I just did a search and found it:

      Please understand I had nothing to do with that development, so I must state use at your own risk. I will say I went through the code and it looks clean, and I did run it myself here and it worked and behaved for me. His approach is completely different to mine, he’s hooking the mouse call itself – that kind of thing is smarter and less CPU intense (like 0.001% CPU instead of 0.01% CPU!!!) in that its interrupt driven, not poll driven, BUT it’ll drive Anti-virus crazy!!

      If you’d still prefer to use a C# version of this app I’ll do a C# rewrite, just, can’t say when!


  24. My good Sir I thank you! Such a delightful relief, sliding the pointer along the edge and straight into the next screen.
    I wish you a fine day!

  25. Hi I just switched to win 10 and gladly found this website. Sadly it doesnt work for me right now. Corners are still sticky. When the program is running the Wheel on my Mouse keeps spinning from time to time. Hope you can help me.

    • This app is not tied to Window version releases, it works regardless of those.

      It’s far more likely that your monitors are slightly out of alignment. Now you won’t see this as not only have Microsoft not fixed this bug, they also provide a horrible layout for the monitor alignment where spaces are hidden and no coordinates are shown.

      Could you please download the debug version from here and when running hold down the Alt key at tap the Prt Sc (Print Screen) key, then go to this site and paste via Ctrl + V. That will create an image of the Debug version running, so please paste the link of that (from browser’s the address bar) so I can see what the resolutions and offsets of your monitors are?


      I think I’ll put a feature in the Debug version for it to send it’s own screenshot to me to save you the hassle – so if you get stuck doing this I’ll make that happen!!


        • Your monitors are aligned correctly, so it’s not that.

          Does the debug version work for you? If you stop running NonStickMouse.exe and just have the debug version running, does it behave?

          I just can’t see how this app could affect the scroll wheel – all it does is ask for the mouse’s location and re-positions it when it deduces it is stuck – i Just can’t figure that one out, unless there’s another app which is the culprit somehow.

          Note also that NSM won’t fire if the top-most app is running at a privilege level greater than itself; so it won’t affect the mouse if the topmost app is Running As Admin – rather unlikely that this is always the case, just throwing it out there!

          As an act of desperation you could try swapping the display leads in the back of the computer, then swapping the virtual monitor placements in the Display Options, and switch the primary monitor. That would put screen 0 on the left. I really don’t think how it could help, but as the problem doesn’t make sense why should the solution?!

          I can’t but think there are other factors at work here, affecting the scroll wheel just shouldn’t be at issue.

          Hopefully something here can help!


    • Granted, it does seem more likely I spent 5 years writing fake comments – especially those ones where I produced source code in a language I don’t know and don’t take responsibility for – which would have required creating a fake Github account, etc.

      It’s more probable, on the scale of it, that you are a bot, Mr and I’ve just failed a Turing test!

      Hope this reply helps resolve this issue for you ๐Ÿ˜€


  26. Just spent the day replacing my Win7 machine with a Win10 unit, got all my softwares installed, and just realized the issue with the sticky edges. I have 4 LCDs in a 2×2 pattern:

    1 | 2
    3 | 4

    FYI: I have super-thin bezels on 3 sides of my LCDs – the bottom is much thicker, so to get the 4-corners to meld well, i have the top 2 LCDs flipped upside down, and in the display properties, I have these set to Landscape (flipped).

    After the fresh Win10Pro 1909 install, I found the mouse worked and moved well between all edges other than 2 4 – only that edge sticks. I have set #3 as my “main” screen.

    This setup (same LCDs, identical method and setup) worked perfectly in Win7 for 5 years without issue.

    Unfortunately, your little application doesn’t fix my problem in Win10 – still sticky only between 2 4. I’ll try the Debug version – if I find anything useful there, i’ll post it.


    • Yes, please do – can’t say how it would behave with inverted monitors – I never tried!! It may not recognise the corner it is in, nor the monitor it’s supposed to go to. If you get the chance to run the debug please post a screenshot.

      It may be I need to write a special version for you to handle those monitors – and probably the only way to identify that is if you run the mouse around and look at the coordinates it shows and see if they are going the wrong way on those monitors – in which case I’ll need you to document what the positions are when you need it to hop, and to what position it should be hopping to!!

  27. Like many, I’ve recently began working from home and have encountered what I believe is a similar cursor phenomenon. I experience no cursor issues with either my home computer or my office computer when I’m using them locally. However, when I RDP into the office computer, the cursor is sticky at the transition zone between the two screens. I’ve included both a screenshot of the debug version of your program and a Youtube video link to show this “feature” I very much dislike.
    Both machines are using Win10.

    Cursor video:

    • That is a very annoying feature. I can’t duplicate it which makes it hard to diagnose. If I may are you able to answer these:-
      Are any of those programs running as administrator?
      Is NSM installed in the TS itself? (It doesn’t need to be)
      Do the monitors have different DPI?

      Try ticking the “Disable Actual Hop” switch on the debug so both NSM & the debug aren’t trying to jump the mouse.
      If its no better then terminate NonStickMouse (via the task manager) and see if changing those switches and settings in the debug can make it behave (if so I can write you a special compile).

      Failing that, and if you’re comfortable to do so, try running NSM as admin.

      If we just can’t find a working solution after all that the only solutions I can think of are: –
      1. Changing NSM so it only hops the corners (currently it hops on every monitor cross just in case you are moving a window)
      2. Putting a lag in NSM so it won’t fire again for say 500ms or a second after the last fire

      If you have any other solutions of how you think it will behave let me know!

      • They’re not running as administrator (unfortunately I don’t have admin rights on the remote machine).
        NSM is not installed, just running the *.exe
        The monitors at home have different DPIs, the monitors at the office have the same DPI.
        After tweaking the settings with NSMDebug, I haven’t had any luck reducing cursor sticky-ness.
        I’ll keep trying new things and report back if I stumble across anything that improves the situation. Greatly appreciate the feedback and willingness to assist!

        • So I’ve fallen back on my solutions, and have implemented both.

          Get the latest download: NonStickMouse.exe

          How it works is to activate “corners only” is you just put the word “corners” in the command line.

          Ditto for the lag just put “lag” in the command line. This can also take a parameter (numbers after the word lag) of how many milliseconds to wait before firing again. The default is 500.

          Also, you don’t actually need to define command line parameters to active this – the code also considers the filename in looking.

          Therefore you could rename “NonStickMouse.exe” to say “NSM_Corners_Lag_200.exe” and it’ll work just the same.

          Just make sure you don’t end up having more than one instance of NonStickMouse running or you really will get the double hop effect no matter what!

          If this is still no good you could disable Window’s snap assist (which also stops the Windows Key + Cursor Key commands) – or post here and I can dig up other solutions made by others which could behave better. I recall there’s an AutoIt version somewhere, and a C# hook version someone posted on my site here (not sure it if has an executable, but Windows.NET has a built-in C# compiler).

          Mind how you go ๐Ÿ™‚

          • Prior to testing out the new version, Iโ€™ve unhooked all but one monitor on the computer at the office in an attempt to mitigate any differences in monitor size/resolution/etc. Iโ€™ve also got the Windows snap assist features disabled.
            Had a chance to test out the newest version. Iโ€™ve used it both as is and by renaming to add in โ€˜Corners_Lag_timeโ€™ with several variations in the time value.
            Unfortunately, I havenโ€™t noticed any change to the cursor performance in these attempts. Iโ€™m beginning to wonder if the VPN client weโ€™re using isnโ€™t the culprit. With any luck weโ€™ll get to go back to the office in the near future and I wonโ€™t have the pleasure of this sticky cursor. I greatly appreciate your efforts!

  28. Prior to testing out the new version, I’ve unhooked all but one monitor on the computer at the office in an attempt to mitigate any differences in monitor size/resolution/etc. I’ve also got the Windows snap assist features disabled.
    Had a chance to test out the newest version. I’ve used it both as is and by renaming to add in ‘Corners_Lag_time’ with several variations in the time value.
    Unfortunately, I haven’t noticed any change to the cursor performance in these attempts. I’m beginning to wonder if the VPN client we’re using isn’t the culprit. With any luck we’ll get to go back to the office in the near future and I won’t have the pleasure of this sticky cursor. I greatly appreciate your efforts!

    • Bah, too bad.

      There are other solutions though, that AutoIt one and a C# one – I should be able to track them down if you wanted to try those too. I am beginning to suspect what you’re dealing with is not the bug by Microsoft (if disabling snap assist made no difference its not from Microsoft), but as you say from the VPN / remoting client – which can’t be negated. Perhaps other remoting option could be available, but I think you’re going to be stuck with this.

      • Prior to using the current VPN client + Microsoft’s RDP, I was using an AWS Workspace + MS RDP client and the sticky cursor phenomenon did not exist. I’ve recently spoken to a few co-workers running multiple monitors at home and all (using the same VPN client+MS RDP) have similar sticky mouse issues. Oh well.
        Thanks again for your efforts in trying to resolve this!

    • The older version stop working for me unless I ran it as administrator. perhaps that can help your issue too.

      • This is a requirement when the top-most application runs at a higher level of privilege that NSM itself.

        It’s for security, because if any app could interfere with an app that has a higher privilege then all it need do is re-execute itself as admin, and then automate clicking the Accept button – thus self-escalating!

        If you do need to have NSM running as admin you can change it’s startup method from a link in the Start Up to a scheduled task which runs at login, of which you can set the permissions of the user account (admin) that you wish it to run as. There are posts online on how to do this, but if you try and get stuck then post back here and I’ll write up a walk-through.

        Disclaimer: do not run any application you do not trust as admin – in fact, don’t run any app you don’t trust ever!

  29. You, my friend, are a sanity saver. thank you very much! i do hope that those capable of it have been sending donations your way

  30. Pingback: Cรณmo deshabilitar las esquinas adhesivas en la configuraciรณn de Windows 10 Dual Monitor -

  31. Hi, does the latest version have a different checksums, or has my PC been infected?
    SHA1 3b87f0284f02ecb3e4449ff6624b62569a5b831c
    md5sum 6424db50091e2fea34549d00630ca185
    SHA256 5bd3fe57ad52b5b4eefc401dd6b6d32bf13da772f2dc9e92132b2796f8d239da

    • I don’t know what I’ve done, the numbers on the page reflect the file I have on my PC, but not the one on the webpage, which have the numbers you’ve got.
      So you have downloaded correctly, there’s no issue with your computer – I just wonder if I have compiled and uploaded my latest version.
      I’ll tidy up and update you when I know what I’m doing.
      But for now you’re fine ๐Ÿ™‚

    • Latest update: to be on the safe side I recompiled and uploaded the app and installers – updated the checksums, and run the latest uploads by TotalVirus (which the typical expected results!). Latest version post:

      I need to make an amendment to this last comment.
      I am using Brave browser, and something peculiar was going on with it. When I downloaded NonStickMouse.exe it was changing it. I did a byte by byte comparison and there were hundreds of changes, so it wasn’t like just one byte changed. I ran the original and the modified download against a disassembler (and I know assembly code and the PE structure of exe’s) but found nothing untoward. It seemed it was modifying some of the resources, and the creepiest thing, it re-ordered the import libraries, but didn’t change them, just the order of them….

      So I removed all my Brave extensions, but, same thing.

      I stopped my AntiVirus, same thing, modified .exe.

      So I downloaded in incognito / private mode, and it was not modified, the original file downloaded. So I also tried Chrome, Chrome for Developers, and MS Edge, and all kept to the original file. This means Brave in normal mode behaved different to Brave Private….

      So, I fired up a new virtual machine of Windows 10, installed Brave, and downloaded, and it was unmodified.

      So, finally, I uninstalled Brave, reinstalled, and it’s now good.

      Something creepy snuck its way into my Brave browser (which didn’t affect Private mode) and was not an extension. (Note I didn’t uninstall the extensions – I stopped Brave and removed the physical extension folder within the AppData!)

      I have incrementally reintroduced my extensions, well, LastPass, and signed into Google, and the download is still clean. I don’t know what it was, but I’ll be doing test downloads on occasion to see if it worms it way back.

      Maybe if you’re using Brave you could have had a similar gremlin get into your browser – because, after all this, I think my original checksums were actually correct.

  32. This latest version has no actual changes, it’s just to harmonize the application and installer with the checksums. I also updated the VirusTotal results.

    Actually, I’m going to have a whinge about AVs again – specifically my own. Now I use MalwareBytes Pro and thoroughly recommend it to anyone who requires a safe computer. But, even that didn’t stop them from jumping on the stupid train. I had hosted my debug version here, and it hadn’t changed in years, then all of a sudden it lights up VirusTotal.

    If your curious, a may point out that I am the proud owner of 2 vapourware viruses that do not exist – yup, check it out: and

    Anyway, MWBPro jumps on the stupid train – I post of which I made about here: and that is the second time they have done that.

    I did write an apologetic PM to the person who replied for my abruptness, which I feel it’s correct to share: –


    Sorry that I came across as arrogant, I really appreciate the work you guys do. It just bugged me that I developed that app while MWBPro was running the whole time, my app doesn’t read or write the HDD or registry or access the Internet, and doesn’t load the DLLs either directly or implicitly which can do so. MWBPro sees Internet traffic so I would suspect it even knew I uploaded that app – but when, let’s call them less efficient scanners jumped on it, you were lead along. As an unreasonable amount of my time is wasted on stupid AVs (which, by the by, as a security professional myself I recommend MWB to everyone) that it was sad to see it happen here too!!!!

    Thanks for your quick work – you needn’t reply, I know you’re busy.
    (I don’t suppose though, there is a way I can get a head’s up when I am blacklisted? I will react immediately.)



    My point though, the AV cleared my apps at every stage, until deranged monkey AVs get involved. It’s just annoying, a small spark and all the tinder goes up, and webpages are shutdown – and for what? Trying to help the community.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.