Module: Mouse

Extended by:
FFI::Library
Defined in:
lib/mouse.rb

Defined Under Namespace

Classes: Input, InputEvent, MouseInput

Constant Summary collapse

MouseInfo =
java.awt.MouseInfo
MOUSEEVENTF_MOVE =
1
INPUT_MOUSE =
0
MOUSEEVENTF_ABSOLUTE =
0x8000

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.total_movementsObject

Returns the value of attribute total_movements.



79
80
81
# File 'lib/mouse.rb', line 79

def total_movements
  @total_movements
end

Class Method Details

.get_mouseObject



75
76
77
# File 'lib/mouse.rb', line 75

def get_mouse
  MouseInfo.getPointerInfo.getLocation
end

.jitter_forever_in_own_threadObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/mouse.rb', line 35

def jitter_forever_in_own_thread
  
  myinput = Mouse::Input.new
  myinput[:type] = Mouse::INPUT_MOUSE
  
  in_evt = myinput[:evt][:mi]
  
  in_evt[:mouse_data] = 0
  in_evt[:flags] = Mouse::MOUSEEVENTF_MOVE # | Mouse::MOUSEEVENTF_ABSOLUTE
  in_evt[:time] = 0
  in_evt[:extra] = 0
  in_evt[:dx] = 0
  in_evt[:dy] = 8 # just enough for VLC full screen...
  
  old_x = get_mouse.x
  old_y = get_mouse.y
  Thread.new {
    loop {
      cur_x = get_mouse.x
      cur_y = get_mouse.y
      if(cur_x == old_x && cur_y == old_y)
        @total_movements += 1
        in_evt[:dy] *= -1
        Mouse.SendInput(1, myinput, Mouse::Input.size)
        in_evt[:dy] *= -1
        sleep 0.05
        Mouse.SendInput(1, myinput, Mouse::Input.size)
        old_x = get_mouse.x
        old_y = get_mouse.y            
        sleep 0.75
      else
        old_x = get_mouse.x
        old_y = get_mouse.y
        sleep 3
      end
    }
  }
  
end