win32-input_device 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in win32-device.gemspec
4
+ gemspec
5
+
6
+ gem "windows-api"
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ win32-input_device
2
+ win32 mouse and keyboard api
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,391 @@
1
+ require "win32/input_device/version"
2
+ require 'windows/api'
3
+ module Windows
4
+ module InputDevice
5
+ API.auto_namespace = 'Windows::InputDevice'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = false
9
+
10
+ private
11
+ API.new('keybd_event','IILL','V','user32')
12
+ API.new('mouse_event','LLLLL','V','user32')
13
+
14
+ HWND_DESKTOP = 0
15
+
16
+ #keybd_event
17
+ KEYEVENTF_EXTENDEDKEY = 1
18
+ KEYEVENTF_KEYUP = 2
19
+ #mouse_event
20
+ MOUSEEVENTF_MOVE = 1
21
+ MOUSEEVENTF_LEFTDOWN = 2
22
+ MOUSEEVENTF_LEFTUP = 4
23
+ MOUSEEVENTF_RIGHTDOWN = 8
24
+ MOUSEEVENTF_RIGHTUP = 16
25
+ MOUSEEVENTF_MIDDLEDOWN = 32
26
+ MOUSEEVENTF_MIDDLEUP = 64
27
+ MOUSEEVENTF_ABSOLUTE = 32768
28
+
29
+ WM_KEYDOWN = 256
30
+ WM_KEYUP = 257
31
+
32
+ GW_HWNDFIRST = 0
33
+ GW_HWNDLAST = 1
34
+ GW_HWNDNEXT = 2
35
+ GW_HWNDPREV = 3
36
+ GW_OWNER = 4
37
+ GW_CHILD = 5
38
+
39
+
40
+ GWL_EXSTYLE = -20
41
+ GWL_STYLE = -16
42
+ GWL_WNDPROC = -4
43
+ GWL_HINSTANCE = -6
44
+ GWL_HWNDPARENT = -8
45
+ GWL_ID = -12
46
+ GWL_USERDATA = -21
47
+
48
+
49
+ VK_CANCEL = 0x03
50
+ VK_BACK = 0x08
51
+ VK_TAB = 0x09
52
+ VK_CLEAR = 0x0c
53
+ VK_RETURN = 0x0d
54
+ VK_PAUSE = 0x13
55
+ VK_ESCAPE = 0x1b
56
+ VK_SPACE = 0x20
57
+ VK_PRIOR = 0x21
58
+ VK_NEXT = 0x22
59
+ VK_END = 0x23
60
+ VK_HOME = 0x24
61
+ VK_LEFT = 0x25
62
+ VK_UP = 0x26
63
+ VK_RIGHT = 0x27
64
+ VK_DOWN = 0x28
65
+ VK_SELECT = 0x29
66
+ VK_EXECUTE = 0x2b
67
+ VK_SNAPSHOT = 0x2c
68
+ VK_INSERT = 0x2d
69
+ VK_DELETE = 0x2e
70
+ VK_HELP = 0x2f
71
+ VK_0 = 0x30
72
+ VK_1 = 0x31
73
+ VK_2 = 0x32
74
+ VK_3 = 0x33
75
+ VK_4 = 0x34
76
+ VK_5 = 0x35
77
+ VK_6 = 0x36
78
+ VK_7 = 0x37
79
+ VK_8 = 0x38
80
+ VK_9 = 0x39
81
+ VK_A = 0x41
82
+ VK_B = 0x42
83
+ VK_C = 0x43
84
+ VK_D = 0x44
85
+ VK_E = 0x45
86
+ VK_F = 0x46
87
+ VK_G = 0x47
88
+ VK_H = 0x48
89
+ VK_I = 0x49
90
+ VK_J = 0x4a
91
+ VK_K = 0x4b
92
+ VK_L = 0x4c
93
+ VK_M = 0x4d
94
+ VK_N = 0x4e
95
+ VK_O = 0x4f
96
+ VK_P = 0x50
97
+ VK_Q = 0x51
98
+ VK_R = 0x52
99
+ VK_S = 0x53
100
+ VK_T = 0x54
101
+ VK_U = 0x55
102
+ VK_V = 0x56
103
+ VK_W = 0x57
104
+ VK_X = 0x58
105
+ VK_Y = 0x59
106
+ VK_Z = 0x5a
107
+ VK_LWIN = 0x5b
108
+ VK_RWIN = 0x5c
109
+ VK_APPS = 0x5d
110
+ VK_NUMPAD0 = 0x60
111
+ VK_NUMPAD1 = 0x61
112
+ VK_NUMPAD2 = 0x62
113
+ VK_NUMPAD3 = 0x63
114
+ VK_NUMPAD4 = 0x64
115
+ VK_NUMPAD5 = 0x65
116
+ VK_NUMPAD6 = 0x66
117
+ VK_NUMPAD7 = 0x67
118
+ VK_NUMPAD8 = 0x68
119
+ VK_NUMPAD9 = 0x69
120
+ VK_MULTIPLY = 0x6a
121
+ VK_ADD = 0x6b
122
+ VK_SEPARATOR = 0x6c
123
+ VK_SUBTRACT = 0x6d
124
+ VK_DECIMAL = 0x6e
125
+ VK_DIVIDE = 0x6f
126
+ VK_F1 = 0x70
127
+ VK_F2 = 0x71
128
+ VK_F3 = 0x72
129
+ VK_F4 = 0x73
130
+ VK_F5 = 0x74
131
+ VK_F6 = 0x75
132
+ VK_F7 = 0x76
133
+ VK_F8 = 0x77
134
+ VK_F9 = 0x78
135
+ VK_F10 = 0x79
136
+ VK_F11 = 0x7a
137
+ VK_F12 = 0x7b
138
+ VK_F13 = 0x7c
139
+ VK_F14 = 0x7d
140
+ VK_F15 = 0x7e
141
+ VK_F16 = 0x7f
142
+ VK_F17 = 0x80
143
+ VK_F18 = 0x81
144
+ VK_F19 = 0x82
145
+ VK_F20 = 0x83
146
+ VK_F21 = 0x84
147
+ VK_F22 = 0x85
148
+ VK_F23 = 0x86
149
+ VK_F24 = 0x87
150
+ VK_NUMLOCK = 0x90
151
+ VK_SCROLL = 0x91
152
+ VK_OEM_EQU = 0x92
153
+ VK_LSHIFT = 0xa0
154
+ VK_RSHIFT = 0xa1
155
+ VK_LCONTROL = 0xa2
156
+ VK_RCONTROL = 0xa3
157
+ VK_LMENU = 0xa4
158
+ VK_RMENU = 0xa5
159
+ VK_OEM_1 = 0xba
160
+ VK_OEM_PLUS = 0xbb
161
+ VK_OEM_COMMA = 0xbc
162
+ VK_OEM_MINUS = 0xbd
163
+ VK_OEM_PERIOD = 0xbe
164
+ VK_OEM_2 = 0xbf
165
+ VK_OEM_3 = 0xc0
166
+ VK_OEM_4 = 0xdb
167
+ VK_OEM_5 = 0xdc
168
+ VK_OEM_6 = 0xdd
169
+ VK_OEM_7 = 0xde
170
+ VK_OEM_8 = 0xdf
171
+ VK_ATTN = 0xf6
172
+ VK_CRSEL = 0xf7
173
+ VK_EXSEL = 0xf8
174
+ VK_EREOF = 0xf9
175
+ VK_PLAY = 0xfa
176
+ VK_ZOOM = 0xfb
177
+ VK_NONAME = 0xfc
178
+ VK_PA1 = 0xfd
179
+ VK_EM_CLEAR = 0xfe
180
+
181
+
182
+ VKOPT_NIL = 0
183
+ VKOPT_SHIFT = 1 # +
184
+ VKOPT_CTRL = 2 # ^
185
+ VKOPT_ALT = 4 # %
186
+ VKey = {
187
+ ' ' => [VK_SPACE, VKOPT_NIL],
188
+ 'A' => [VK_A, VKOPT_SHIFT],
189
+ 'B' => [VK_B, VKOPT_SHIFT],
190
+ 'C' => [VK_C, VKOPT_SHIFT],
191
+ 'D' => [VK_D, VKOPT_SHIFT],
192
+ 'E' => [VK_E, VKOPT_SHIFT],
193
+ 'F' => [VK_F, VKOPT_SHIFT],
194
+ 'G' => [VK_G, VKOPT_SHIFT],
195
+ 'H' => [VK_H, VKOPT_SHIFT],
196
+ 'I' => [VK_I, VKOPT_SHIFT],
197
+ 'J' => [VK_J, VKOPT_SHIFT],
198
+ 'K' => [VK_K, VKOPT_SHIFT],
199
+ 'L' => [VK_L, VKOPT_SHIFT],
200
+ 'M' => [VK_M, VKOPT_SHIFT],
201
+ 'N' => [VK_N, VKOPT_SHIFT],
202
+ 'O' => [VK_O, VKOPT_SHIFT],
203
+ 'P' => [VK_P, VKOPT_SHIFT],
204
+ 'Q' => [VK_Q, VKOPT_SHIFT],
205
+ 'R' => [VK_R, VKOPT_SHIFT],
206
+ 'S' => [VK_S, VKOPT_SHIFT],
207
+ 'T' => [VK_T, VKOPT_SHIFT],
208
+ 'U' => [VK_U, VKOPT_SHIFT],
209
+ 'V' => [VK_V, VKOPT_SHIFT],
210
+ 'W' => [VK_W, VKOPT_SHIFT],
211
+ 'X' => [VK_X, VKOPT_SHIFT],
212
+ 'Y' => [VK_Y, VKOPT_SHIFT],
213
+ 'Z' => [VK_Z, VKOPT_SHIFT],
214
+ '!' => [VK_1, VKOPT_SHIFT],
215
+ '"' => [VK_2, VKOPT_SHIFT],
216
+ '#' => [VK_3, VKOPT_SHIFT],
217
+ '$' => [VK_4, VKOPT_SHIFT],
218
+ '&' => [VK_6, VKOPT_SHIFT],
219
+ '\'' => [VK_7, VKOPT_SHIFT],
220
+ '-' => [VK_OEM_MINUS, VKOPT_NIL],
221
+ '=' => [VK_OEM_MINUS, VKOPT_SHIFT],
222
+ '~' => [VK_OEM_7, VKOPT_SHIFT],
223
+ ?\ => [VK_OEM_5, VKOPT_NIL],
224
+ '|' => [VK_OEM_5, VKOPT_SHIFT],
225
+ '@' => [VK_OEM_3, VKOPT_NIL],
226
+ '`' => [VK_OEM_3, VKOPT_SHIFT],
227
+ '[' => [VK_OEM_4, VKOPT_NIL],
228
+ ';' => [VK_OEM_PLUS, VKOPT_NIL],
229
+ ':' => [VK_OEM_1, VKOPT_NIL],
230
+ '*' => [VK_OEM_1, VKOPT_SHIFT],
231
+ ']' => [VK_OEM_6, VKOPT_NIL],
232
+ }
233
+ VKeyName = {
234
+ 'CANCEL' => [VK_CANCEL, VKOPT_NIL],
235
+ 'BACK' => [VK_BACK, VKOPT_NIL],
236
+ 'TAB' => [VK_TAB, VKOPT_NIL],
237
+ 'CLEAR' => [VK_CLEAR, VKOPT_NIL],
238
+ 'RETURN' => [VK_RETURN, VKOPT_NIL],
239
+ 'PAUSE' => [VK_PAUSE, VKOPT_NIL],
240
+ 'ESCAPE' => [VK_ESCAPE, VKOPT_NIL],
241
+ 'SPACE' => [VK_SPACE, VKOPT_NIL],
242
+ 'PRIOR' => [VK_PRIOR, VKOPT_NIL],
243
+ 'NEXT' => [VK_NEXT, VKOPT_NIL],
244
+ 'END' => [VK_END, VKOPT_NIL],
245
+ 'HOME' => [VK_HOME, VKOPT_NIL],
246
+ 'LEFT' => [VK_LEFT, VKOPT_NIL],
247
+ 'UP' => [VK_UP, VKOPT_NIL],
248
+ 'RIGHT' => [VK_RIGHT, VKOPT_NIL],
249
+ 'DOWN' => [VK_DOWN, VKOPT_NIL],
250
+ 'SELECT' => [VK_SELECT, VKOPT_NIL],
251
+ 'EXECUTE' => [VK_EXECUTE, VKOPT_NIL],
252
+ 'SNAPSHOT' => [VK_SNAPSHOT, VKOPT_NIL],
253
+ 'INSERT' => [VK_INSERT, VKOPT_NIL],
254
+ 'DELETE' => [VK_DELETE, VKOPT_NIL],
255
+ 'HELP' => [VK_HELP, VKOPT_NIL],
256
+ '0' => [VK_0, VKOPT_NIL],
257
+ '1' => [VK_1, VKOPT_NIL],
258
+ '2' => [VK_2, VKOPT_NIL],
259
+ '3' => [VK_3, VKOPT_NIL],
260
+ '4' => [VK_4, VKOPT_NIL],
261
+ '5' => [VK_5, VKOPT_NIL],
262
+ '6' => [VK_6, VKOPT_NIL],
263
+ '7' => [VK_7, VKOPT_NIL],
264
+ '8' => [VK_8, VKOPT_NIL],
265
+ '9' => [VK_9, VKOPT_NIL],
266
+ 'a' => [VK_A, VKOPT_NIL],
267
+ 'b' => [VK_B, VKOPT_NIL],
268
+ 'c' => [VK_C, VKOPT_NIL],
269
+ 'd' => [VK_D, VKOPT_NIL],
270
+ 'e' => [VK_E, VKOPT_NIL],
271
+ 'f' => [VK_F, VKOPT_NIL],
272
+ 'g' => [VK_G, VKOPT_NIL],
273
+ 'h' => [VK_H, VKOPT_NIL],
274
+ 'i' => [VK_I, VKOPT_NIL],
275
+ 'j' => [VK_J, VKOPT_NIL],
276
+ 'k' => [VK_K, VKOPT_NIL],
277
+ 'l' => [VK_L, VKOPT_NIL],
278
+ 'm' => [VK_M, VKOPT_NIL],
279
+ 'n' => [VK_N, VKOPT_NIL],
280
+ 'o' => [VK_O, VKOPT_NIL],
281
+ 'p' => [VK_P, VKOPT_NIL],
282
+ 'q' => [VK_Q, VKOPT_NIL],
283
+ 'r' => [VK_R, VKOPT_NIL],
284
+ 's' => [VK_S, VKOPT_NIL],
285
+ 't' => [VK_T, VKOPT_NIL],
286
+ 'u' => [VK_U, VKOPT_NIL],
287
+ 'v' => [VK_V, VKOPT_NIL],
288
+ 'w' => [VK_W, VKOPT_NIL],
289
+ 'x' => [VK_X, VKOPT_NIL],
290
+ 'y' => [VK_Y, VKOPT_NIL],
291
+ 'z' => [VK_Z, VKOPT_NIL],
292
+ 'LWIN' => [VK_LWIN, VKOPT_NIL],
293
+ 'RWIN' => [VK_RWIN, VKOPT_NIL],
294
+ 'APPS' => [VK_APPS, VKOPT_NIL],
295
+ 'NUMPAD0' => [VK_NUMPAD0, VKOPT_NIL],
296
+ 'NUMPAD1' => [VK_NUMPAD1, VKOPT_NIL],
297
+ 'NUMPAD2' => [VK_NUMPAD2, VKOPT_NIL],
298
+ 'NUMPAD3' => [VK_NUMPAD3, VKOPT_NIL],
299
+ 'NUMPAD4' => [VK_NUMPAD4, VKOPT_NIL],
300
+ 'NUMPAD5' => [VK_NUMPAD5, VKOPT_NIL],
301
+ 'NUMPAD6' => [VK_NUMPAD6, VKOPT_NIL],
302
+ 'NUMPAD7' => [VK_NUMPAD7, VKOPT_NIL],
303
+ 'NUMPAD8' => [VK_NUMPAD8, VKOPT_NIL],
304
+ 'NUMPAD9' => [VK_NUMPAD9, VKOPT_NIL],
305
+ 'MULTIPLY' => [VK_MULTIPLY, VKOPT_NIL],
306
+ 'ADD' => [VK_ADD, VKOPT_NIL],
307
+ 'SEPARATOR' => [VK_SEPARATOR, VKOPT_NIL],
308
+ 'SUBTRACT' => [VK_SUBTRACT, VKOPT_NIL],
309
+ 'DECIMAL' => [VK_DECIMAL, VKOPT_NIL],
310
+ 'DIVIDE' => [VK_DIVIDE, VKOPT_NIL],
311
+ 'F1' => [VK_F1, VKOPT_NIL],
312
+ 'F2' => [VK_F2, VKOPT_NIL],
313
+ 'F3' => [VK_F3, VKOPT_NIL],
314
+ 'F4' => [VK_F4, VKOPT_NIL],
315
+ 'F5' => [VK_F5, VKOPT_NIL],
316
+ 'F6' => [VK_F6, VKOPT_NIL],
317
+ 'F7' => [VK_F7, VKOPT_NIL],
318
+ 'F8' => [VK_F8, VKOPT_NIL],
319
+ 'F9' => [VK_F9, VKOPT_NIL],
320
+ 'F10' => [VK_F10, VKOPT_NIL],
321
+ 'F11' => [VK_F11, VKOPT_NIL],
322
+ 'F12' => [VK_F12, VKOPT_NIL],
323
+ 'F13' => [VK_F13, VKOPT_NIL],
324
+ 'F14' => [VK_F14, VKOPT_NIL],
325
+ 'F15' => [VK_F15, VKOPT_NIL],
326
+ 'F16' => [VK_F16, VKOPT_NIL],
327
+ 'F17' => [VK_F17, VKOPT_NIL],
328
+ 'F18' => [VK_F18, VKOPT_NIL],
329
+ 'F19' => [VK_F19, VKOPT_NIL],
330
+ 'F20' => [VK_F20, VKOPT_NIL],
331
+ 'F21' => [VK_F21, VKOPT_NIL],
332
+ 'F22' => [VK_F22, VKOPT_NIL],
333
+ 'F23' => [VK_F23, VKOPT_NIL],
334
+ 'F24' => [VK_F24, VKOPT_NIL],
335
+ 'NUMLOCK' => [VK_NUMLOCK, VKOPT_NIL],
336
+ 'SCROLL' => [VK_SCROLL, VKOPT_NIL],
337
+ 'OEM_EQU' => [VK_OEM_EQU, VKOPT_NIL],
338
+ 'LSHIFT' => [VK_LSHIFT, VKOPT_NIL],
339
+ 'RSHIFT' => [VK_RSHIFT, VKOPT_NIL],
340
+ 'LCONTROL' => [VK_LCONTROL, VKOPT_NIL],
341
+ 'RCONTROL' => [VK_RCONTROL, VKOPT_NIL],
342
+ 'LMENU' => [VK_LMENU, VKOPT_NIL],
343
+ 'RMENU' => [VK_RMENU, VKOPT_NIL],
344
+ 'OEM_1' => [VK_OEM_1, VKOPT_NIL],
345
+ 'OEM_PLUS' => [VK_OEM_PLUS, VKOPT_NIL],
346
+ 'OEM_COMMA' => [VK_OEM_COMMA, VKOPT_NIL],
347
+ 'OEM_MINUS' => [VK_OEM_MINUS, VKOPT_NIL],
348
+ 'OEM_PERIOD' => [VK_OEM_PERIOD, VKOPT_NIL],
349
+ 'OEM_2' => [VK_OEM_2, VKOPT_NIL],
350
+ 'OEM_3' => [VK_OEM_3, VKOPT_NIL],
351
+ 'OEM_4' => [VK_OEM_4, VKOPT_NIL],
352
+ 'OEM_5' => [VK_OEM_5, VKOPT_NIL],
353
+ 'OEM_6' => [VK_OEM_6, VKOPT_NIL],
354
+ 'OEM_7' => [VK_OEM_7, VKOPT_NIL],
355
+ 'OEM_8' => [VK_OEM_8, VKOPT_NIL],
356
+ 'ATTN' => [VK_ATTN, VKOPT_NIL],
357
+ 'CRSEL' => [VK_CRSEL, VKOPT_NIL],
358
+ 'EXSEL' => [VK_EXSEL, VKOPT_NIL],
359
+ 'EREOF' => [VK_EREOF, VKOPT_NIL],
360
+ 'PLAY' => [VK_PLAY, VKOPT_NIL],
361
+ 'ZOOM' => [VK_ZOOM, VKOPT_NIL],
362
+ 'NONAME' => [VK_NONAME, VKOPT_NIL],
363
+ 'PA1' => [VK_PA1, VKOPT_NIL],
364
+ 'EM_CLEAR' => [VK_EM_CLEAR, VKOPT_NIL],
365
+ #aliases
366
+ 'BREAK' => [VK_CANCEL, VKOPT_NIL],
367
+ 'BKSP' => [VK_BACK, VKOPT_NIL],
368
+ 'BACKSPACE' => [VK_BACK, VKOPT_NIL],
369
+ 'BS' => [VK_BACK, VKOPT_NIL],
370
+ 'ESC' => [VK_ESCAPE, VKOPT_NIL],
371
+ 'ENTER' => [VK_RETURN, VKOPT_NIL],
372
+ 'PRTSCR' => [VK_SNAPSHOT, VKOPT_NIL],
373
+ 'PGDN' => [VK_NEXT, VKOPT_NIL],
374
+ 'PGUP' => [VK_PRIOR, VKOPT_NIL],
375
+ }
376
+ end
377
+ end
378
+
379
+
380
+ module Win32
381
+ class InputDevice
382
+ extend Windows::InputDevice
383
+ def self.keybd( key_code, scan_code=0, flag=0, extra_info=0 )
384
+ keybd_event(key_code,scan_code,flag,extra_info)
385
+ end
386
+
387
+ def self.mouse(flags, x=0, y=0, data = 0, extrainfo = 0)
388
+ mouse_event(flags, x, y, data, extrainfo)
389
+ end
390
+ end
391
+ end
@@ -0,0 +1,5 @@
1
+ module Win32
2
+ class InputDevice
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Win32::InputDevice do
4
+ it 'keybd_event should no exception' do
5
+ sleep 5
6
+ Win32::InputDevice.keybd(0x31, 0, 0, 0 )
7
+ sleep 0.2
8
+ Win32::InputDevice.keybd(0x31, 0, 2, 0 )
9
+ end
10
+
11
+ it 'mouse_event should move' do
12
+ sleep 2
13
+ Win32::InputDevice.mouse(Windows::InputDevice::MOUSEEVENTF_MOVE, 0,0)
14
+ end
15
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift File.join(__FILE__,'..','..','lib')
2
+
3
+ require 'rubygems'
4
+ require 'win32/input_device'
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "win32/input_device/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "win32-input_device"
7
+ s.version = Win32::InputDevice::VERSION
8
+ s.authors = ["yafei LI"]
9
+ s.email = ["lyfi2003@gmail.com"]
10
+ s.homepage = "https://github.com/windy/win32-input_device"
11
+ s.summary = %q{ win32 mouse and keyboard api}
12
+ s.description = %q{win32 mouse and keyboard api}
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
17
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: win32-input_device
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - yafei LI
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-01-30 00:00:00 +08:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: win32 mouse and keyboard api
22
+ email:
23
+ - lyfi2003@gmail.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - .gitignore
32
+ - Gemfile
33
+ - README.md
34
+ - Rakefile
35
+ - lib/win32/input_device.rb
36
+ - lib/win32/input_device/version.rb
37
+ - spec/keyboard_spec.rb
38
+ - spec/spec_helper.rb
39
+ - win32-input_device.gemspec
40
+ has_rdoc: true
41
+ homepage: https://github.com/windy/win32-input_device
42
+ licenses: []
43
+
44
+ post_install_message:
45
+ rdoc_options: []
46
+
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ requirements: []
66
+
67
+ rubyforge_project:
68
+ rubygems_version: 1.3.7
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: win32 mouse and keyboard api
72
+ test_files:
73
+ - spec/keyboard_spec.rb
74
+ - spec/spec_helper.rb