Most viable option is using [winim](https://github.com/khchen/winim/) and just 
searching on internet how to work with Win32 API.

Another way is using available example in rosetta code [simulating 
keyboard](https://rosettacode.org/wiki/Simulate_input/Keyboard#Nim) and 
add/change some codes to
    
    
    type
      MouseEvent = enum
        meMove = 0x0001
        meLeftDown = 0x0002
        meLeftUp = 0x0004
        meAbsolute = 0x8000
    
    proc initMouse: Input =
      result.`type` = clong itMouse
      var mouse = MouseInput(mouseData: 0, dx: 0, dy: 0,
        dwFlags: meAbsolute.culong or meMove.culong)
      result.hwin = InputUnion(mi: mouse)
    
    proc main =
      var mouse = initMouse()
      # set mouse xy pixel position
      mouse.hwin.mi.dx = clong 35_000
      mouse.hwin.mi.dy = clong 35_000
      
      # move it to intended position
      sendInput(1, addr mouse, sizeof(mouse).cint)
      sleep 1000
      
      # flag to press the left mouse button
      mouse.hwin.mi.dwFlags = meAbsolute.culong or meLeftDown.culong or
        meLeftUp.culong
      
      # actually pressing the left mouse button
      sendInput(1, addr mouse, sizeof(mouse).cint)
    
    main()
    
    Run

Reply via email to