Module: TwitchPlays::OS::Win

Defined in:
lib/twitch_plays/os/win.rb

Defined Under Namespace

Modules: User32

Constant Summary collapse

TRANSLATE_KEYS =
{
  'BackSpace' => User32::VK_BACK,
  'Tab' => User32::VK_TAB,
  'Return' => User32::VK_RETURN,
  'Shift_L' => User32::VK_SHIFT,
  'Shift_R' => User32::VK_SHIFT,
  'Control_L' => User32::VK_CONTROL,
  'Control_R' => User32::VK_CONTROL,
  'space' => User32::VK_SPACE,
  'Left' => User32::VK_LEFT,
  'Up' => User32::VK_UP,
  'Right' => User32::VK_RIGHT,
  'Down' => User32::VK_DOWN,
  'F1' => User32::VK_F1,
  'F2' => User32::VK_F2,
  'F3' => User32::VK_F3,
  'F4' => User32::VK_F4,
  'F5' => User32::VK_F5,
  'F6' => User32::VK_F6,
  'F7' => User32::VK_F7,
  'F8' => User32::VK_F8,
  'F9' => User32::VK_F9,
  'F10' => User32::VK_F10,
  'F11' => User32::VK_F11,
  'F12' => User32::VK_F12
}

Class Method Summary collapse

Class Method Details

.press(key) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
# File 'lib/twitch_plays/os/win.rb', line 99

def self.press(key)
  input = User32::Input.new
  input[:type] = User32::INPUT_KEYBOARD
  evt = input[:evt][:ki]
  evt[:vk] = TRANSLATE_KEYS[key] || key.upcase.ord
  evt[:scan] = 0
  evt[:flags] = 0
  evt[:time] = 0
  evt[:extra_info] = 0
  User32.SendInput(1, [input], User32::Input.size)
end

.touch_move(dx, dy) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/twitch_plays/os/win.rb', line 111

def self.touch_move(dx, dy)
  input = User32::Input.new
  input[:type] = User32::INPUT_MOUSE
  evt = input[:evt][:mi]
  evt[:dx] = dx
  evt[:dy] = dy
  evt[:mouse_data] = 0
  evt[:flags] = User32::MOUSEEVENTF_MOVE
  evt[:time] = 0
  evt[:extra_info] = 0
  User32.SendInput(1, [input], User32::Input.size)
end

.touch_pressObject



124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/twitch_plays/os/win.rb', line 124

def self.touch_press
  input = User32::Input.new
  input[:type] = User32::INPUT_MOUSE
  evt = input[:evt][:mi]
  evt[:dx] = 0
  evt[:dy] = 0
  evt[:mouse_data] = 0
  evt[:flags] = User32::MOUSEEVENTF_LEFTDOWN
  evt[:time] = 0
  evt[:extra_info] = 0
  User32.SendInput(1, [input], User32::Input.size)
end

.touch_releaseObject



137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/twitch_plays/os/win.rb', line 137

def self.touch_release
  input = User32::Input.new
  input[:type] = User32::INPUT_MOUSE
  evt = input[:evt][:mi]
  evt[:dx] = 0
  evt[:dy] = 0
  evt[:mouse_data] = 0
  evt[:flags] = User32::MOUSEEVENTF_LEFTUP
  evt[:time] = 0
  evt[:extra_info] = 0
  User32.SendInput(1, [input], User32::Input.size)
end