Ohne es selbst bisher ausprobiert zu haben, soll das ganz gut funktionieren:

Code:
############################################################################
# Script by: BEHEMOTH #                                                     #
#######################                                                     #
# Script: Mouse Module (Requires Window Module)                             #
# Current Version: 1.1                                                      #
#                                                                           #
# * Version 1.1                                                             #
#     - Fixed Mouse_Buttons from Array To Table                             #
#                                                                           #
# * Version 1.0                                                             #
#     - get/set the mouse position                                          #
#     - get mouse button input                                              #
#                                                                           #
#############################################################################

#############################################################################
#                          ***Script Commands***                            #
#                                                                           #
# Mouse.press?(key)                                                         #
# Mouse.trigger?(key)                                                       #
# Mouse.repeat?(key)                                                        #
# Mouse.release?(key)                                                       #
# Mouse.show                                                                #
# Mouse.hide                                                                #
# Mouse.screen_pos_x                                                        #
# Mouse.screen_pos_y                                                        #
# Mouse.set_pos(x, y)                                                       #
# Mouse.pos_x                                                               #
# Mouse.pos_y                                                               #
#                                                                           #
#           ***Script commands intended for parrel processes***             #
#                   ***and/or loops inside scripts***                       #
#                                                                           #
# Mouse.update                                                              #
#                                                                           #
#############################################################################
module Mouse
  Mouse_Buttons = Table.new(3)
  Left_Click   = Mouse_Buttons[0] = 1
  Right_Click  = Mouse_Buttons[1] = 2
  Middle_Click = Mouse_Buttons[2] = 4

  @press = []
  @trigger = []
  @repeat = []
  @release = []
  @repeat_time = Table.new(255)
  @release_num = Table.new(255)
  
  REPEAT_TIME = 15
  REPEAT_PAUSE = 3
  
  @@cursor_pos = Win32API.new('user32', 'GetCursorPos', 'p', 'i')
  @@set_cursor_pos = Win32API.new('user32', 'SetCursorPos', 'ii', 'i')
  @@show_cursor = Win32API.new('user32', 'ShowCursor', 'L', 'i')
  State = Win32API.new("user32", "GetKeyState", 'i', 'i')
  Key = Win32API.new("user32", "GetAsyncKeyState", 'i', 'i')
  #-------------------------------------------------------------------------
  # Shows Mouse Cursor
  #-------------------------------------------------------------------------
  def Mouse.show
    @@show_cursor.call(-1)
  end
  #-------------------------------------------------------------------------
  # Hides Mouse Cursor
  #-------------------------------------------------------------------------
  def Mouse.hide
    @@show_cursor.call(0)
  end
  #-------------------------------------------------------------------------
  # Checks if a key is being pressed and if it isn't anymore then is released
  #-------------------------------------------------------------------------
  def Mouse.check_press?(key)
    if not State.call(key).between?(0, 1)
      @release_num[key] = 1
      return true
    end
    if @release_num[key] == 1
      @release_num[key] = 0
      @release.push(key)
    end
    return false
  end
  #-------------------------------------------------------------------------
  def Mouse.check_trigger?(key)
    return Key.call(key) & 0x01 == 1
  end
  #-------------------------------------------------------------------------
  def Mouse.check_repeat?(key)
    if @trigger.include?(key)
      return true
    elsif (not @trigger.include?(key)) && @press.include?(key)
      if @repeat_time[key] >= REPEAT_TIME
        @repeat_time[key] -= REPEAT_PAUSE
        return true
      else
        @repeat_time[key]+=1
        return false
      end
    else
      @repeat_time[key] = 0
      return false
    end
  end
  #-------------------------------------------------------------------------
  def Mouse.press?(key)
    return @press.include?(key)
  end
  #-------------------------------------------------------------------------
  def Mouse.trigger?(key)
    return @trigger.include?(key)
  end
  #-------------------------------------------------------------------------
  def Mouse.repeat?(key)
    return @repeat.include?(key)
  end
  #-------------------------------------------------------------------------
  def Mouse.release?(key)
    return @release.include?(key)
  end
  #-------------------------------------------------------------------------
  # * Updates Mouse
  #-------------------------------------------------------------------------
  def Mouse.update
    Mouse.wheel
    @press = []
    @trigger = []
    @repeat = []
    @release = []
    for i in 0...Mouse_Buttons.xsize
      key_update(Mouse_Buttons[i])
    end
  end
  #-------------------------------------------------------------------------
  # * Updates Mouse's Key Input
  #-------------------------------------------------------------------------
  def Mouse.key_update(key)
    if check_press?(key)
      @press.push(key)
    end
    if check_trigger?(key)
      @trigger.push(key)
    end
    if check_repeat?(key)
      @repeat.push(key)
    end
  end
  #-------------------------------------------------------------------------
  # * Gets Mouse X Position, screen coordinate.
  #-------------------------------------------------------------------------
  def Mouse.screen_pos_x
    return screen_pos[0]
  end
  #-------------------------------------------------------------------------
  # * Gets Mouse X Position, screen coordinate.
  #-------------------------------------------------------------------------
  def Mouse.screen_pos_y
    return screen_pos[1]
  end
  #-------------------------------------------------------------------------
  # * Gets the mouse position relative to the screen
  #-------------------------------------------------------------------------
  def Mouse.screen_pos
    spos = [0, 0].pack('ll')
    @@cursor_pos.call(spos)
    return spos.unpack('ll')
  end
  #-------------------------------------------------------------------------
  # * Sets mouse position to the x, y
  #-------------------------------------------------------------------------
  def Mouse.set_pos(x, y)
    x = [[x, 0].max, 640].min
    y = [[y, 0].max, 480].min
    x, y = Win.client_to_screen(x, y)
    @@set_cursor_pos.call(x, y)
  end
  #-------------------------------------------------------------------------
  # * Gets the mouse position relative to the cilent
  #   If mouse is outside of client area then mouse position is -1, -1
  #-------------------------------------------------------------------------
  def Mouse.pos
    x, y = Win.screen_to_client(screen_pos_x, screen_pos_y)
    if x.nil?
      return -1, -1
    else
      width, height = Win.client_size
      if (x >= 0 and y >= 0 and x < width and y < height)
        return x, y
      else
        print("hello")
        return -1, -1
      end
    end
  end
  #-------------------------------------------------------------------------
  # Returns the Y coordinate relative to the client window
  #-------------------------------------------------------------------------
  def Mouse.pos_x
    return pos[0]
  end
  #-------------------------------------------------------------------------  
  # Returns the Y coordinate relative to the client window
  #-------------------------------------------------------------------------  
  def Mouse.pos_y
    return pos[1]
  end
  #-------------------------------------------------------------------------  
end