kamiquasi Posted December 26, 2018 Share Posted December 26, 2018 (edited) Hi folks, Preamble: I just came from a 2015 (edit: not 2016) topic about simulating multitouch (tl;dr: desktop, trying to get consistent UI zooms for recording; multitouch is smooth and arbitrary level, mouse scrollwheel goes in steps - smooth is better, actual manual touch input with my butterfingers is all over the place). I can confirm all the other code is working - i.e. I can do a tap, tap and hold, tap-and-drag. But pinch-to-zoom actually requires more than the single touch. I know that in InitializeTouchInjection I'll have to set the size to 2 and all that - but sending touch inputs consecutively doesn't seem to work (regardless of size) Which means I'm pretty sure I have to send the two touches simultaneously. The MS TechNet sample code has this bit: POINTER_TOUCH_INFO contact[2]; InitializeTouchInjection(2, TOUCH_FEEDBACK_DEFAULT); memset(&contact[0], 0, sizeof(POINTER_TOUCH_INFO)); memset(&contact[1], 0, sizeof(POINTER_TOUCH_INFO)); Followed by passing it to the function: InjectTouchInput(2, contact); What should I be doing in AutoIt to achieve that same 'contact' variable? Is it just a new struct with size,entire-touch1-struct-here,size,entire-touch2-struct-here ? If so, is there a way to take two existing structs, with data set, and combine them in the necessary way, or should I set up a new struct as above, and then set its data from there (similar to what's done in I'm sure this has been answered before, but 'combine structs', 'concatenate structs', 'array of structs' hasn't proven fruitful Thread I came from: TechNet article: https://social.technet.microsoft.com/wiki/contents/articles/6460.simulating-touch-input-in-windows-8-using-touch-injection-api.aspx?PageIndex=2#Simulating_Tap Edited December 26, 2018 by kamiquasi Link to comment Share on other sites More sharing options...
Danyfirex Posted December 28, 2018 Share Posted December 28, 2018 Quote Is it just a new struct with size,entire-touch1-struct-here,size,entire-touch2-struct-here ? Yes. Quote If so, is there a way to take two existing structs, with data set, and combine them in the necessary way, or should I set up a new struct as above, and then set its data from there (similar to what's done in You could do something like this: #include <Memory.au3> Local $tStruct1=DllStructCreate("int;int;") DllStructSetData($tStruct1,1,10) DllStructSetData($tStruct1,2,20) Local $tStruct2=DllStructCreate("int;int;") DllStructSetData($tStruct2,1,30) DllStructSetData($tStruct2,2,40) Local $tStructArray=DllStructCreate("int;int;int;int;");with size $tStruct1+$tStruct2 _MemMoveMemory($tStruct1,$tStructArray,DllStructGetSize($tStruct1)) ;copy $tStruct1 to new structure _MemMoveMemory($tStruct2,DllStructGetPtr($tStructArray)+DllStructGetSize($tStruct1),DllStructGetSize($tStruct2)) ;append $tStruct2 ConsoleWrite(DllStructGetData($tStructArray,1) & @CRLF) ConsoleWrite(DllStructGetData($tStructArray,2) & @CRLF) ConsoleWrite(DllStructGetData($tStructArray,3) & @CRLF) ConsoleWrite(DllStructGetData($tStructArray,4) & @CRLF) ;or Local $tStructArray=DllStructCreate("int;int;int;int;");with size $tStruct1+$tStruct2 Local $tStruct1=DllStructCreate("int;int;",DllStructGetPtr($tStructArray)) DllStructSetData($tStruct1,1,100) DllStructSetData($tStruct1,2,200) Local $tStruct2=DllStructCreate("int;int;",DllStructGetPtr($tStructArray)+DllStructGetSize($tStruct1)) DllStructSetData($tStruct2,1,300) DllStructSetData($tStruct2,2,400) ConsoleWrite(DllStructGetData($tStructArray,1) & @CRLF) ConsoleWrite(DllStructGetData($tStructArray,2) & @CRLF) ConsoleWrite(DllStructGetData($tStructArray,3) & @CRLF) ConsoleWrite(DllStructGetData($tStructArray,4) & @CRLF) Saludos kamiquasi and Skysnake 1 1 Danysys.com AutoIt... UDFs: VirusTotal API 2.0 UDF - libZPlay UDF - Apps: Guitar Tab Tester - VirusTotal Hash Checker Examples: Text-to-Speech ISpVoice Interface - Get installed applications - Enable/Disable Network connection PrintHookProc - WINTRUST - Mute Microphone Level - Get Connected NetWorks - Create NetWork Connection ShortCut Link to comment Share on other sites More sharing options...
kamiquasi Posted December 30, 2018 Author Share Posted December 30, 2018 @Danyfirex Thank you! I ended up using the first method in a quick test. It's holidays and I don't have access to the software, but I can confirm that both touch points are registered on my home device, and pinch-to-zoom is working on e.g. Google Maps through a browser, Photoshop, and Maya - which makes it exceedingly likely to work in general Thanks again - I'll be sure to add to that other topic. Danyfirex 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now