(notonline)--> -- -- demo\rosetta\Simulate_mouse_input.exw -- -- Note that CURSORPOS, SCREENPOSITION, and MOUSEBUTTON are known to be a little flaky and/or system-dependent, ymmv. -- without js -- you'd better hope this sort of thing ain't possible in a browser! requires("1.0.1") -- (IupGetGlobalIntInt) include pGUI.e include timedate.e integer delay = 16 -- (4s @ 250ms) Ihandle dlg, btn function action_cb(Ihandle /*btn*/) string t = format_timedate(date(),"hh:mm:sspm") IupSetStrAttribute(btn,"TITLE","Clicked at %s",{t}) return IUP_DEFAULT end function integer cx, cy function timer_cb(Ihandle timer) if delay then IupSetStrAttribute(btn,"TITLE","%3.2f",{delay/4}) delay -= 1 {cx,cy} = IupGetGlobalIntInt("CURSORPOS") else integer {xb,yb} = IupGetIntInt(btn,"SCREENPOSITION"), {wb,hb} = IupGetIntInt(btn,"RASTERSIZE"), {dx,dy} = {xb+floor(wb/2),yb+floor(hb/2)} if {dx,dy}!={cx,cy} then if IupGetInt(timer,"TIME")=250 then IupSetInt(timer,"TIME",40) IupSetInt(timer,"RUN",false) IupSetInt(timer,"RUN",true) end if for i=1 to 15 do if cx<dx then cx += 1 end if if cx>dx then cx -= 1 end if if cy<dy then cy += 1 end if if cy>dy then cy -= 1 end if end for string cxcy = sprintf("%dx%d ",{cx,cy}) IupSetGlobal("CURSORPOS",cxcy) else string s = sprintf("%dx%d 1 2",{dx,dy}) IupSetStrGlobal("MOUSEBUTTON", s) IupSetAttribute(timer,"RUN","NO") end if end if return IUP_CONTINUE end function IupOpen() btn = IupButton("button",Icallback("action_cb"),"SIZE=100x12") dlg = IupDialog(btn,`TITLE="Simulate mouse input", CHILDOFFSET=10x40, SIZE=200x80`) IupShow(dlg) Ihandle timer = IupTimer(Icallback("timer_cb"), 250) if platform()!=JS then -- (just for consistency) IupMainLoop() IupClose() end if