Class: ThinClient::Keyboard
- Inherits:
-
Object
- Object
- ThinClient::Keyboard
- Defined in:
- lib/thinclient/keyboard.rb
Class Method Summary collapse
-
.dealArg(keys) ⇒ Object
处理输入的参数.
-
.getKeyboardEvent ⇒ Object
获取键盘设备.
-
.keyDown(keycode) ⇒ Object
按下键盘按键.
-
.keyUp(keycode) ⇒ Object
抬起键盘按键.
-
.sendKeys(keys) ⇒ Object
发送键盘按键,多个按键用“+”隔开(按键名称见KeyCode.Key).
Instance Method Summary collapse
-
#initialize ⇒ Keyboard
constructor
A new instance of Keyboard.
Constructor Details
#initialize ⇒ Keyboard
Returns a new instance of Keyboard.
9 10 11 |
# File 'lib/thinclient/keyboard.rb', line 9 def initialize() getKeyboardEvent() end |
Class Method Details
.dealArg(keys) ⇒ Object
处理输入的参数
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/thinclient/keyboard.rb', line 75 def self.dealArg(keys) begin keys = keys.to_s rescue => ex Log.error("#{ex}") print("#{ex}") end args = [] tmp = keys.split(/\+/) Log.debug("Keys:#{tmp}") tmp.each { |key| key = "KEY_" + key.upcase index = KeyCode.key2code(key) if (index == 0xffff) return args end args.push(index) } return args end |
.getKeyboardEvent ⇒ Object
获取键盘设备
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/thinclient/keyboard.rb', line 14 def self.getKeyboardEvent() # getevent获取到的键盘的名字不是统一的,观察到的名字中都包含" USB"字样 str = `adb shell getevent -p` begin events = str.scan(/\/dev\/input\/event.\r\n.* USB.*/) Log.debug("Events:#{events}") if (events.size != 2) Log.error("Keyboard Not Found. It Cannot Work Without a Keyboard Connected to The ThinClient") return false end @keyboardEvent = events[1].split(/\r/)[0] @SYN_EVENT = "adb shell sendevent #{@keyboardEvent} 0 0 0" #print @keyboardEvent return true rescue => ex Log.error("#{ex}") print ex return false end end |
.keyDown(keycode) ⇒ Object
按下键盘按键
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/thinclient/keyboard.rb', line 37 def self.keyDown(keycode) begin keycode = keycode.to_s rescue => ex Log.error("#{ex}") print("#{ex}") end system("adb shell sendevent #{@keyboardEvent} 1 #{keycode} 1") system("#{@SYN_EVENT}") end |
.keyUp(keycode) ⇒ Object
抬起键盘按键
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/thinclient/keyboard.rb', line 49 def self.keyUp(keycode) begin keycode = keycode.to_s rescue => ex Log.error("#{ex}") print("#{ex}") end system("adb shell sendevent #{@keyboardEvent} 1 #{keycode} 0") system("#{@SYN_EVENT}") end |
.sendKeys(keys) ⇒ Object
发送键盘按键,多个按键用“+”隔开(按键名称见KeyCode.Key)
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/thinclient/keyboard.rb', line 61 def self.sendKeys(keys) if false === getKeyboardEvent() return end args = dealArg(keys) args.each { |key| keyDown(key) } args.each { |key| keyUp(key) } end |