ykon / w10wheel.net

Mouse Wheel Simulator
MIT License
104 stars 8 forks source link

Feature Request: Application-specific settings #6

Open vertigo220 opened 3 years ago

vertigo220 commented 3 years ago

I've found that some applications, e.g. LibreOffice and FreeFileSync, scroll far faster than others, to the point you have to barely touch the pointing stick to keep it under control. I found that enabling "Real Wheel Mode" improves things, making them scroll more normally, but then other apps, like browsers, don't scroll smoothly anymore, which I don't like. Would it be possible to set rules for how it interacts with different apps, at least for the Real Wheel Mode, so I could set it to only use that on specific apps?

ykon commented 3 years ago

specific apps

I just put in an implementation that only Avast UI is not processed. The next step is to generalize it. By applying this mechanism, it may be possible to support mode switching. However, I'm concerned that this will be slightly slower since it gets the file path and matches it with each click. Also, the code becomes more complex.

vertigo220 commented 3 years ago

If you would have it determine the active program every time the user clicks in order to choose which mode to use, another problem would be scrolling a background window. So if I'm using my browser and try to scroll a LibreOffice window without clicking it first, it would still scroll fast instead of changing to Real Wheel Mode (RWM). I'm not sure if it's even possible, and it might be even slower, but a better way might be to have it determine which window it's actually scrolling. Another option, though not as nice but probably easier and more reliable, would be to allow a double-click on the middle button to temporarily toggle RWM, so for example it could normally be off and when a program scrolls too fast, the user could just double-click the middle button and hold it on the second click and scroll, and that would make it use RWM, but just for that use* and it would scroll normally, without using RWM, when single-clicked like normal.

*Alternately, it could keep RWM active until either it's double-clicked again or until the user changes windows (which method is used could be left to an option so the user can choose which they prefer).

ykon commented 3 years ago

The current Avast exclusion detects the foreground window, but it is also possible to detect the window at the clicked position.

In fact, the code is already included. https://github.com/ykon/w10wheel.net/blob/master/W10Wheel/src/Windows.fs

getFullPathFromWindow() getFullPathFromForegroundWindow() getFullPathFromPoint() getFullPathFromCursorPos()