[App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

Post your working scripts, libraries and tools for AHK v1.1 and older
User avatar
evilC
Posts: 4823
Joined: 27 Feb 2014, 12:30

[App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

24 Jun 2015, 07:44

Image

Like low mouse sensitivity for accuracy, but hate having to "Ratchet" the mouse (ie keep lifting, repositioning, moving etc)?

RollMouse is able to detect you lifting the mouse while in motion, and will keep moving the mouse cursor at a proportionate direction and speed until you put the mouse back on the mat.
  • Works with optical mice and laptop trackpads (Makes laptop trackpads MUCH nicer to use).
  • Works on the windows desktop and in games.
  • Stand alone application that does not require AHK and remembers settings.
The GitHub page is here (More info and downloads)
User avatar
evilC
Posts: 4823
Joined: 27 Feb 2014, 12:30

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

24 Jun 2015, 09:58

Out of interest, the major hurdle in getting this to work was this:

I was unable to differentiate between "actual" input (ie the user moved the mouse) and "faked" input (the code moved the mouse).
If the code is moving the mouse ("Rolling"), then I need to disable mouse messages, then send the mouse motion, then re-enable them.
I also need to do a sleep 0 after sending the mouse movement, as the mouse_move dll call happens asynchronously.

One technique I tried was storing the amount of movement just sent in a variable, then when the input is seen coming in, ignoring all movement of that amount.
It seemed to work, but I had a bug where the roll would get locked on, so I just changed to the disable / re-enable messages technique.

If anyone knows a better way of going about this, pls let me know.
User avatar
evilC
Posts: 4823
Joined: 27 Feb 2014, 12:30

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

12 Jul 2015, 11:08

Version 1.0.4 released.

+ No functionality changes, just added homepage link and update notifications.

This new version will hit a web URL, which gives me usage stats (ie how many times it is run). It does NOT collect any identifiable information at all.
I also added a link to the UI which will take you to this thread.
User avatar
evilC
Posts: 4823
Joined: 27 Feb 2014, 12:30

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

08 Aug 2016, 15:08

New version released:

Code: Select all

1.0.6 - 8th Aug 2016
+ Uses better technique for filtering output from input.
RollMouse watches mouse input, and can also send mouse output. Previously, when sending output (ie during a Roll), I had to turn off watching for input while I sent the output.
But I needed to be watching for input while mid-roll, because as soon as I see input coming from the actual mouse, the roll should stop.

I just learned a new trick by examining the source code for EitherMouse - you can use the following code in the OnMessage callback that handles your WM_INPUT messages, and extract the Device ID of the mouse that sent the movement

Code: Select all

OnMessage(0xFF, "WM_INPUT")
[...]
WM_INPUT(wParam, lParam){
	VarSetCapacity(raw, 40, 0)
	If (!DllCall("GetRawInputData",uint,lParam,uint,0x10000003,uint,&raw,"uint*",40,uint, 16) or ErrorLevel)
		Return 0
	ThisMouse := NumGet(raw, 8)
	if (ThisMouse == 0)
		return ; Filter mouse movement that was sent using mouse_event
	[...]
	; If the code gets here, the movement was generated by a real mouse
}
So RollMouse now uses this technique, instead of turning on and off Message handling many times a second. This appears to have lowered CPU usage quite significantly.
CapGuy

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

22 Nov 2017, 08:43

Hello,

Thank you very much for this useful "RollMouse" software,
but alas I have a very annoying problem (under Windows 10) : while the momentum is running, the "5,4,3,2,1,0" speed (as said in the readme) seems not work as well as it should, and my cursor continues on its momentum without stopping unless I push my finger on the pad within the opposite direction (yes, even if I "clic" while the momentum occurs the cursor does not stop).

So please do you have a solution ?
(the perfect behavior seems to be the same as with the Synaptics notebook trackpads : same movement as a trackball if possible).

Thanks again,
waiting crossing my fingers,
Best Regards,
Guy
User avatar
evilC
Posts: 4823
Joined: 27 Feb 2014, 12:30

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

22 Nov 2017, 08:54

"5,4,3,2,1,0" speed (as said in the readme)
Eh? RollMouse is designed to keep on going forever until you put the mouse back on the mat. It is not designed to send ever decreasing amounts of movement. It would be possible to make it do that, however.
User avatar
boiler
Posts: 16925
Joined: 21 Dec 2014, 02:44

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

22 Nov 2017, 13:29

Any idea why it wouldn't be working with my Surface Laptop's trackpad? The mouse pointer just stops no matter how fast or long I was dragging my finger when I lift it off the pad, just like normal. I didn't create a "functionality toggle" binding, but the default without one should be on, right?
User avatar
evilC
Posts: 4823
Joined: 27 Feb 2014, 12:30

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

22 Nov 2017, 13:35

At a guess, is the surface not inherently geared around touch screens?
Touch screens are absolute input devices, so I could imagine that the trackpad on a surface maybe reports to rawinput as an absolute input device?
Try the monitor app from MouseDelta - do you see any relative data coming from the trackpad?

[Edit]I found this https://docs.microsoft.com/en-us/window ... ollections
Not sure if the surface observes that protocol, but if so, it may mean that the surface reports multiple times? Maybe my code does see the relative movement, but maybe it also sees the absolute movement as well and it sends it crazy or something.
User avatar
boiler
Posts: 16925
Joined: 21 Dec 2014, 02:44

Re: [App] RollMouse - Keep moving the mouse cursor while you lift and reposition the mouse (Like a trackball)

22 Nov 2017, 14:49

It does work if I plug in a normal mouse.

I tried your monitor app using MouseDelta, and it does show relative data from the trackpad. It's not an absolute location like the touch screen. You can run out of room when you reach the edge and have to lift your finger and keep going just like a regular mouse (i.e., the edge of the trackpad doesn't not coincide with the edge of the screen).

That's okay. Thanks for looking for a solution. I thought it might be nice if easy to implement as it seems like it would be an even more useful tool for a trackpad.

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: No registered users and 223 guests