Class: ThinClient::Mouse

Inherits:
Object
  • Object
show all
Defined in:
lib/thinclient/mouse.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMouse

Returns a new instance of Mouse.



12
13
14
# File 'lib/thinclient/mouse.rb', line 12

def initialize()
	getMouseEvent()
end

Class Method Details

.click(x = nil, y = nil) ⇒ Object

单击(某个坐标)



155
156
157
158
159
# File 'lib/thinclient/mouse.rb', line 155

def self.click(x = nil, y = nil)
	moveTo(x, y)
	leftBtnDown()
	leftBtnUp()
end

.clickImage(img, similar = 0.8) ⇒ Object

单击图片



244
245
246
247
248
249
250
251
# File 'lib/thinclient/mouse.rb', line 244

def self.clickImage(img, similar = 0.8)
	position = Image.getPositionOnScreen(img, similar)
	if (position[:X] === 0 || position[:Y] === 0)
		return false
	end
	click(position[:X], position[:Y])
	return true
end

.doubleClick(x = nil, y = nil) ⇒ Object

双击(某个坐标)



161
162
163
164
165
166
167
# File 'lib/thinclient/mouse.rb', line 161

def self.doubleClick(x = nil, y = nil)
	moveTo(x, y)
	leftBtnDown()
	leftBtnUp()
	leftBtnDown()
	leftBtnUp()
end

.doubleClickImage(img, similar = 0.8) ⇒ Object

双击图片



254
255
256
257
258
259
260
261
# File 'lib/thinclient/mouse.rb', line 254

def self.doubleClickImage(img, similar = 0.8)
	position = Image.getPositionOnScreen(img, similar)
	if (position[:X] === 0 || position[:Y] === 0)
		return false
	end
	doubleClick(position[:X], position[:Y])
	return true
end

.down(n = 1) ⇒ Object

向下移动(n个像素)



86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/thinclient/mouse.rb', line 86

def self.down(n = 1)
	begin
	  n = n.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end	
	getMouseEvent()
	n = n / (1 + @diffY)
	system("adb shell sendevent #{@mouseEvent} 2 1 #{n}")
	system("#{@SYN_EVENT}")
end

.dragDrop(x1 = 0, y1 = 0, x2 = 0, y2 = 0) ⇒ Object

拖拽



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/thinclient/mouse.rb', line 176

def self.dragDrop(x1 = 0, y1 = 0, x2 = 0, y2 = 0)
	moveTo(x1, y1)
	leftBtnDown()
	#moveTo(x2, y2)
	begin
	  x1 = x1.to_i
	  y1 = y1.to_i
	  x2 = x2.to_i
	  y2 = y2.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end	
	right(x2 - x1)
	down(y2 - y1)
	leftBtnUp()
end

.dragDropImage(img, x = 0, y = 0, similar = 0.8) ⇒ Object

拖拽图片到指定位置



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# File 'lib/thinclient/mouse.rb', line 284

def self.dragDropImage(img, x = 0, y = 0, similar = 0.8)
	begin
	  if (x == nil || y == nil)
	  	Log.error("Usage: dragDropImage(img, x, y)")
	  	print("Usage: dragDropImage(img, x, y)")
	  	return
	  end
	  x = x.to_i
	  y = y.to_i
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end	
	position = Image.getPositionOnScreen(img, similar)
	if (position[:X] === 0 || position[:Y] === 0)
		return false
	end
	dragDrop(position[:X], position[:Y], x, y)
	return true
end

.dragDropImagetoImage(img1, img2, similar1 = 0.8, similar2 = 0.8) ⇒ Object

拖拽图片1到图片2上



306
307
308
309
310
311
312
313
314
# File 'lib/thinclient/mouse.rb', line 306

def self.dragDropImagetoImage(img1, img2, similar1 = 0.8, similar2 = 0.8)
	position1 = Image.getPositionOnScreen(img, similar1)
	position2 = Image.getPositionOnScreen(img2, similar2)
	if (position1[:X] === 0 || position1[:Y] === 0 || position2[:X] === 0 || position2[:Y] ===0)
		return false
	end
	dragDrop(position1[:X], position1[:Y], position2[:X], position2[:Y])
	return true
end

.getMouseEventObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/thinclient/mouse.rb', line 20

def self.getMouseEvent()
	if @mouseEvent != ""
		return true
	end
	str = `adb shell getevent -p`
    begin
      events = str.scan(/\/dev\/input\/event.\r\n.* Mouse.*/)
      Log.debug("Events:#{events}")
      if (events.size != 1)
      	  Log.error("Mouse Not Found. It Cannot Work Without a Mouse Connected to The ThinClient")
      	  return false
      end
      @mouseEvent = events[0].split(/\r/)[0]
      
      @SYN_EVENT = "adb shell sendevent #{@mouseEvent} 0 0 0"

      setResolution()
      #print @mouseEvent
      return true
    rescue => ex
      Log.error("#{ex}")
      print ex
      return false
    end
end

.left(n = 1) ⇒ Object

向左移动(n个像素)



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/thinclient/mouse.rb', line 47

def self.left(n = 1)
	begin
	  n = n.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end	
	getMouseEvent()
	n = n / (1 + @diffX)
	system("adb shell sendevent #{@mouseEvent} 2 0 -#{n}")
	system("#{@SYN_EVENT}")
end

.leftBtnDownObject

左键按下



124
125
126
127
# File 'lib/thinclient/mouse.rb', line 124

def self.leftBtnDown()
	system("adb shell sendevent #{@mouseEvent} 1 272 1")
	system("#{@SYN_EVENT}")
end

.leftBtnUpObject

左键抬起



129
130
131
132
# File 'lib/thinclient/mouse.rb', line 129

def self.leftBtnUp()
	system("adb shell sendevent #{@mouseEvent} 1 272 0")
	system("#{@SYN_EVENT}")
end

.middleBtnDownObject

滚轮按下



144
145
146
147
# File 'lib/thinclient/mouse.rb', line 144

def self.middleBtnDown()
	system("adb shell sendevent #{@mouseEvent} 1 274 1")
	system("#{@SYN_EVENT}")
end

.middleBtnUpObject

滚轮抬起



149
150
151
152
# File 'lib/thinclient/mouse.rb', line 149

def self.middleBtnUp()
	system("adb shell sendevent #{@mouseEvent} 1 274 0")
	system("#{@SYN_EVENT}")
end

.moveTo(x = nil, y = nil) ⇒ Object

移动到某个位置



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/thinclient/mouse.rb', line 100

def self.moveTo(x = nil, y = nil)
	if false === getMouseEvent()
		return false
	end
	if (x != nil && y != nil)
		left(5000)
		up(5000)
		right(x)
		down(y)
		return 
	end
	if (x != nil)
		left(5000)
		right(x)
	end
	if (y != nil)
		up(5000)
		down(y)
	end
end

.press(t = 2, x = nil, y = nil) ⇒ Object

按下(按下时间,某个坐标)



169
170
171
172
173
174
# File 'lib/thinclient/mouse.rb', line 169

def self.press(t = 2, x = nil, y = nil)
	moveTo(x, y)
	leftBtnDown()
	sleep(t)
	leftBtnUp()
end

.pressImage(img, t = 2, similar = 0.8) ⇒ Object

长按图片



274
275
276
277
278
279
280
281
# File 'lib/thinclient/mouse.rb', line 274

def self.pressImage(img, t = 2, similar = 0.8)
	position = Image.getPositionOnScreen(img, similar)
	if (position[:X] === 0 || position[:Y] === 0)
		return false
	end
	press(t, position[:X], position[:Y])
	return true
end

.right(n = 1) ⇒ Object

向右移动(n个像素)



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/thinclient/mouse.rb', line 60

def self.right(n = 1)
	begin
	  n = n.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end	
	getMouseEvent()
	n = n / (1 + @diffX)
	system("adb shell sendevent #{@mouseEvent} 2 0 #{n}")
	system("#{@SYN_EVENT}")
end

.rightBtnDownObject

右键按下



134
135
136
137
# File 'lib/thinclient/mouse.rb', line 134

def self.rightBtnDown()
	system("adb shell sendevent #{@mouseEvent} 1 273 1")
	system("#{@SYN_EVENT}")
end

.rightBtnUpObject

右键抬起



139
140
141
142
# File 'lib/thinclient/mouse.rb', line 139

def self.rightBtnUp()
	system("adb shell sendevent #{@mouseEvent} 1 273 0")
	system("#{@SYN_EVENT}")
end

.rightClick(x = nil, y = nil) ⇒ Object

右击



194
195
196
197
198
# File 'lib/thinclient/mouse.rb', line 194

def self.rightClick(x = nil, y = nil)
	moveTo(x, y)
	rightBtnDown()
	rightBtnUp()
end

.rightClickImage(img, similar = 0.8) ⇒ Object

右击图片



264
265
266
267
268
269
270
271
# File 'lib/thinclient/mouse.rb', line 264

def self.rightClickImage(img, similar = 0.8)
	position = Image.getPositionOnScreen(img, similar)
	if (position[:X] === 0 || position[:Y] === 0)
		return false
	end
	rightClick(position[:X], position[:Y])
	return true
end

.rollClickObject

单击滚轮



235
236
237
238
239
240
241
# File 'lib/thinclient/mouse.rb', line 235

def self.rollClick()
	if false === getMouseEvent()
		return 
	end
	middleBtnDown()
	middleBtnUp()
end

.rollDown(n = 1) ⇒ Object

滚轮向下滚动



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/thinclient/mouse.rb', line 201

def self.rollDown(n = 1)
	begin
	  n = n.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end
	if false === getMouseEvent()
		return 
	end
	while (n > 0)
		system("adb shell sendevent #{@mouseEvent} 2 8 -1")
		system("#{@SYN_EVENT}")
		n -= 1
	end
end

.rollUp(n = 1) ⇒ Object

滚轮向上滚动



218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/thinclient/mouse.rb', line 218

def self.rollUp(n = 1)
	begin
	  n = n.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end
	if false === getMouseEvent()
		return 
	end
	while (n > 0)
		system("adb shell sendevent #{@mouseEvent} 2 8 1")
		system("#{@SYN_EVENT}")
		n -= 1
	end
end

.setResolution(x = 1280, y = 720) ⇒ Object

先设定独享桌面的分辨率



16
17
18
19
# File 'lib/thinclient/mouse.rb', line 16

def self.setResolution(x = 1280, y = 720)
	@virtualX = x
	@virtualY = y
end

.up(n = 1) ⇒ Object

向上移动(n个像素)



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/thinclient/mouse.rb', line 73

def self.up(n = 1)
	begin
	  n = n.to_i		
	rescue => ex
	  Log.error("#{ex}")
	  print("#{ex}")
	end	
	getMouseEvent()
	n = n / (1 + @diffY)
	system("adb shell sendevent #{@mouseEvent} 2 1 -#{n}")
	system("#{@SYN_EVENT}")
end