Time out issue, don't know if it is a bug or a Windows 7 issue or what it is

Dec 14, 2009 at 3:59 PM

Hi there,

I'm using your excellent multitouch driver, and everything is working fine except for a time out issue. As I don't have any other multitouch device yet, I don't know if it is to do with your driver or Windows 7.

==What happens from user's point of view==

The project is to add multitouch capabilities to microtonal on-screen music keyboards. The OS is Windows 7.

I've got it working fine, playing two notes at once (polyphony) with your drivers and tested it using two mice one for each note, everything is fine except that if I click on a note and then hold the mouse down, the note switches itself off after 4 seconds. If I move the mouse slightly before the time out, then I can keep the note on for as long as I like but have to move the mouse slightly on the key every four seconds.

This means that musicians using the keyboard will be unable to play any notes longer than 4 seconds with multitouch unless they move the relevant finger slightly during the note.

I'd like to know if it is a driver issue or a multitouch issue for Windows 7. If just a driver issue not significant for my project but would like to report it as a bug in the alpha.

== techy details ==

The program is processing WM_TOUCH.

All guestures are disabled with SetGestureConfig(..)

When I look at the messages sent, then the program receives a WM_TOUCH event with TOUCHINPUT structure with the TOUCHEVENTF_DOWN flag set. Then four seconds later it recieves the same, but this time with TOUCHEVENTF_UP set - with the mouse still held down at the time of theTOUCHEVENTF_UP event. So the TOUCHEVENTF_UP is somehow getting auto generated -, my own code isn't generating it.

If I move the mouse between the two events, then a TOUCHEVENTF_MOVE event is received and so long as one of those is received more often than once every 4 seconds, then the auto generated TOUCHEVENTF_UP never happens.

The exact time between the DOWN and the UP on my Windows 7 desktop is 3.869 and 3.87 seconds

Does anyone know why this happens, whether it is an issue with Windows 7 or the drivers or what it is I might be doing wrong, and what if anything I can do to fix it?

BTW I'm using the final Windows 7 Release Candidate rather than the release proper, in case that's relevant.

Thanks,

Robert

Dec 14, 2009 at 4:01 PM

typo, sorry: "Exact time between the DOWN and the UP is between 3.869 and 3.87 seconds"

Coordinator
Dec 19, 2009 at 10:37 PM

W7 has builtin system that cancels a touch if it does not get any new input from device for about 3 seconds.

Dec 20, 2009 at 12:48 AM

Oh right - that's it then!

Do you know where I can find any more about this by any chance - any links? I wondered if it might be something like that but couldn't find anything about it in a web search.

,I wonder if it can be configured at all by the user to a larger value? Anyone who wants to design an on-screen musical keyboard for Windows 7, will want it to be unrestricted, and three seconds is far too short for a maximum length for a musical note, and I imagine there might be other situations where one would want to configure it so wonder if Microsoft have made it possible to do that in some way (even registry key or whatever).

Anyway, thanks for clearing up the mystery.,

Robert

 

Dec 20, 2009 at 12:51 AM

If not I'll just have to tell users of my software that if they want to hold down a note for more than three seconds, to be sure to move the finger holding the note down slightly at least once every three seconds, can do that.

Coordinator
Dec 20, 2009 at 3:35 PM

This can't be changed. The device should send data during all time it "see" the contact, not only when the coordinates change.

Dec 20, 2009 at 5:51 PM

Oh I see, sorry, misunderstood before.

So in a way this is a (minor) bug in the MultiTouch Vista driver, that for 100% emulation of a multi-touch device it should send date for every mouse all the time even when the mouse doesn't move?

If so not a big deal as it won't affect users of my software with touch screens, touch panels and other purpose built multi-touch devices as these will continue to send data even when the finger is stationary.

Have I understood it correctly now?

 

Coordinator
Dec 21, 2009 at 6:40 PM

There is no bug in driver. It send all data it becomes from input provider. The problem is the mouse. As you said, it sends the data only when it is moved.
If your input provider sends constantly data you will not have a problem. Multitouch devices that are compatible with Win7 send constantly data.

Dec 21, 2009 at 7:17 PM

Okay, I understand.

That's fine, and thanks again for explaining.