Class: ThinClient::Mouse
- Inherits:
-
Object
- Object
- ThinClient::Mouse
- Defined in:
- lib/thinclient/mouse.rb
Class Method Summary collapse
-
.click(x = nil, y = nil) ⇒ Object
单击(某个坐标).
-
.clickImage(img, similar = 0.8) ⇒ Object
单击图片.
-
.doubleClick(x = nil, y = nil) ⇒ Object
双击(某个坐标).
-
.doubleClickImage(img, similar = 0.8) ⇒ Object
双击图片.
-
.down(n = 1) ⇒ Object
向下移动(n个像素).
-
.dragDrop(x1 = 0, y1 = 0, x2 = 0, y2 = 0) ⇒ Object
拖拽.
-
.dragDropImage(img, x = 0, y = 0, similar = 0.8) ⇒ Object
拖拽图片到指定位置.
-
.dragDropImagetoImage(img1, img2, similar1 = 0.8, similar2 = 0.8) ⇒ Object
拖拽图片1到图片2上.
- .getMouseEvent ⇒ Object
-
.left(n = 1) ⇒ Object
向左移动(n个像素).
-
.leftBtnDown ⇒ Object
左键按下.
-
.leftBtnUp ⇒ Object
左键抬起.
-
.middleBtnDown ⇒ Object
滚轮按下.
-
.middleBtnUp ⇒ Object
滚轮抬起.
-
.moveTo(x = nil, y = nil) ⇒ Object
移动到某个位置.
-
.press(t = 2, x = nil, y = nil) ⇒ Object
按下(按下时间,某个坐标).
-
.pressImage(img, t = 2, similar = 0.8) ⇒ Object
长按图片.
-
.right(n = 1) ⇒ Object
向右移动(n个像素).
-
.rightBtnDown ⇒ Object
右键按下.
-
.rightBtnUp ⇒ Object
右键抬起.
-
.rightClick(x = nil, y = nil) ⇒ Object
右击.
-
.rightClickImage(img, similar = 0.8) ⇒ Object
右击图片.
-
.rollClick ⇒ Object
单击滚轮.
-
.rollDown(n = 1) ⇒ Object
滚轮向下滚动.
-
.rollUp(n = 1) ⇒ Object
滚轮向上滚动.
-
.setResolution(x = 1280, y = 720) ⇒ Object
先设定独享桌面的分辨率.
-
.up(n = 1) ⇒ Object
向上移动(n个像素).
Instance Method Summary collapse
-
#initialize ⇒ Mouse
constructor
A new instance of Mouse.
Constructor Details
#initialize ⇒ Mouse
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 |
.getMouseEvent ⇒ Object
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 |
.leftBtnDown ⇒ Object
左键按下
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 |
.leftBtnUp ⇒ Object
左键抬起
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 |
.middleBtnDown ⇒ Object
滚轮按下
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 |
.middleBtnUp ⇒ Object
滚轮抬起
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 |
.rightBtnDown ⇒ Object
右键按下
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 |
.rightBtnUp ⇒ Object
右键抬起
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 |
.rollClick ⇒ Object
单击滚轮
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 |