REM Program to demonstrate detecting multiple touch points on a touchscreen. REM Version 1.2 by Richard Russell, http://www.rtrussell.co.uk/, 08-Sep-2025 ON ERROR OSCLI "refresh on" : IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE PRINT 'REPORT$:END INSTALL @lib$ + "eventlib" PROC_eventinit OSCLI "FONT """ + @lib$ + "DejaVuSans"", 24" DIM Finger{(7) x%, y%, z%} PROC_eventregister(&700, PROCtouch()) PROC_eventregister(&701, PROCtouch()) PROC_eventregister(&702, PROCtouch()) ON MOVE IF @msg% = 5 VDU 26 : RETURN ELSE RETURN VDU 26,5 IF POS REM SDL thread sync OFF Radius% = (@vdu%!208 + @vdu%!212) / 10 title$ = "Touch the screen in multiple places" title% = @vdu%!208 - WIDTH(title$) / 2 *SYS 6 *REFRESH OFF REPEAT PROC_eventpoll CLS GCOL 0 : VDU 30 : PLOT 0, title%, 0 : PRINT title$; FOR I% = 0 TO DIM(Finger{()},1) IF Finger{(I%)}.z% THEN GCOL I% CIRCLE FILL 2*Finger{(I%)}.x%, 2*Finger{(I%)}.y%, Radius% ENDIF NEXT *REFRESH UNTIL FALSE END DEF PROCtouch(M%,W%,L%) LOCAL I%,X%,Y% W% += 1 X% = (L% <<< 48) >> 48 Y% = @vdu%!212 - (L% >> 16) FOR I% = 0 TO DIM(Finger{()},1) CASE M% OF WHEN &700: IF Finger{(I%)}.z% = 0 Finger{(I%)}.x% = X% : Finger{(I%)}.y% = Y% : Finger{(I%)}.z% = W% : EXIT FOR WHEN &701: IF Finger{(I%)}.z% = W% Finger{(I%)}.x% = X% : Finger{(I%)}.y% = Y% : Finger{(I%)}.z% = 0 : EXIT FOR WHEN &702: IF Finger{(I%)}.z% = W% Finger{(I%)}.x% = X% : Finger{(I%)}.y% = Y% : EXIT FOR ENDCASE NEXT ENDPROC