mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-27 16:25:15 +02:00
Use InputAgent for the keyboard.
This commit is contained in:
@@ -3,6 +3,8 @@ var util = require('util')
|
||||
var adb = require('adbkit')
|
||||
var Promise = require('bluebird')
|
||||
|
||||
var wire = require('../wire')
|
||||
|
||||
var keyutil = module.exports = Object.create(null)
|
||||
|
||||
keyutil.parseKeyCharacterMap = function(stream) {
|
||||
@@ -460,7 +462,7 @@ keyutil.parseKeyCharacterMap = function(stream) {
|
||||
}
|
||||
|
||||
keyutil.namedKey = function(name) {
|
||||
var key = adb.Keycode['KEYCODE_' + name]
|
||||
var key = adb.Keycode['KEYCODE_' + name.toUpperCase()]
|
||||
if (key === void 0) {
|
||||
throw new Error(util.format('Unknown key "%s"', name))
|
||||
}
|
||||
@@ -570,3 +572,47 @@ keyutil.buildCharMap = function(keymap) {
|
||||
|
||||
return charmap
|
||||
}
|
||||
|
||||
|
||||
keyutil.unwire = (function() {
|
||||
var map = Object.create(null)
|
||||
|
||||
map[wire.KeyCode.HOME] = keyutil.namedKey('home')
|
||||
map[wire.KeyCode.BACK] = keyutil.namedKey('back')
|
||||
map[wire.KeyCode.BACKSPACE] = keyutil.namedKey('del')
|
||||
map[wire.KeyCode.ENTER] = keyutil.namedKey('enter')
|
||||
map[wire.KeyCode.CAPS_LOCK] = keyutil.namedKey('caps_lock')
|
||||
map[wire.KeyCode.ESC] = keyutil.namedKey('escape')
|
||||
map[wire.KeyCode.PAGE_UP] = keyutil.namedKey('page_up')
|
||||
map[wire.KeyCode.PAGE_DOWN] = keyutil.namedKey('page_down')
|
||||
map[wire.KeyCode.MOVE_END] = keyutil.namedKey('move_end')
|
||||
map[wire.KeyCode.MOVE_HOME] = keyutil.namedKey('move_home')
|
||||
map[wire.KeyCode.LEFT_ARROW] = keyutil.namedKey('dpad_left')
|
||||
map[wire.KeyCode.UP_ARROW] = keyutil.namedKey('dpad_up')
|
||||
map[wire.KeyCode.RIGHT_ARROW] = keyutil.namedKey('dpad_right')
|
||||
map[wire.KeyCode.DOWN_ARROW] = keyutil.namedKey('dpad_down')
|
||||
map[wire.KeyCode.INSERT] = keyutil.namedKey('insert')
|
||||
map[wire.KeyCode.DELETE] = keyutil.namedKey('forward_del')
|
||||
map[wire.KeyCode.MENU] = keyutil.namedKey('menu')
|
||||
map[wire.KeyCode.F1] = keyutil.namedKey('f1')
|
||||
map[wire.KeyCode.F2] = keyutil.namedKey('f2')
|
||||
map[wire.KeyCode.F3] = keyutil.namedKey('f3')
|
||||
map[wire.KeyCode.F4] = keyutil.namedKey('f4')
|
||||
map[wire.KeyCode.F5] = keyutil.namedKey('f5')
|
||||
map[wire.KeyCode.F6] = keyutil.namedKey('f6')
|
||||
map[wire.KeyCode.F7] = keyutil.namedKey('f7')
|
||||
map[wire.KeyCode.F8] = keyutil.namedKey('f8')
|
||||
map[wire.KeyCode.F9] = keyutil.namedKey('f9')
|
||||
map[wire.KeyCode.F10] = keyutil.namedKey('f10')
|
||||
map[wire.KeyCode.F11] = keyutil.namedKey('f11')
|
||||
map[wire.KeyCode.F12] = keyutil.namedKey('f12')
|
||||
map[wire.KeyCode.NUM_LOCK] = keyutil.namedKey('num_lock')
|
||||
|
||||
return function(keyCode) {
|
||||
var key = map[keyCode]
|
||||
if (!key) {
|
||||
throw new Error(util.format('Unknown keycode "%s"', keyCode))
|
||||
}
|
||||
return key
|
||||
}
|
||||
})()
|
||||
|
||||
63
lib/util/streamutil.js
Normal file
63
lib/util/streamutil.js
Normal file
@@ -0,0 +1,63 @@
|
||||
var Promise = require('bluebird')
|
||||
var split = require('split')
|
||||
|
||||
module.exports.readAll = function(stream) {
|
||||
var resolver = Promise.defer()
|
||||
, collected = new Buffer(0)
|
||||
|
||||
function errorListener(err) {
|
||||
resolver.reject(err)
|
||||
}
|
||||
|
||||
function endListener() {
|
||||
resolver.resolve(collected)
|
||||
}
|
||||
|
||||
function readableListener() {
|
||||
var chunk;
|
||||
while (chunk = stream.read()) {
|
||||
collected = Buffer.concat([collected, chunk])
|
||||
}
|
||||
}
|
||||
|
||||
stream.on('error', errorListener)
|
||||
stream.on('readable', readableListener)
|
||||
stream.on('end', endListener)
|
||||
|
||||
return resolver.promise.finally(function() {
|
||||
stream.removeListener('error', errorListener)
|
||||
stream.removeListener('readable', readableListener)
|
||||
stream.removeListener('end', endListener)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
module.exports.findLine = function(stream, re) {
|
||||
var resolver = Promise.defer()
|
||||
, piped = stream.pipe(split())
|
||||
|
||||
function errorListener(err) {
|
||||
resolver.reject(err)
|
||||
}
|
||||
|
||||
function endListener() {
|
||||
resolver.reject(new Error('No matching line found'))
|
||||
}
|
||||
|
||||
function lineListener(line) {
|
||||
if (re.test(line)) {
|
||||
resolver.resolve(line)
|
||||
}
|
||||
}
|
||||
|
||||
piped.on('error', errorListener)
|
||||
piped.on('data', lineListener)
|
||||
piped.on('end', endListener)
|
||||
|
||||
return resolver.promise.finally(function() {
|
||||
piped.removeListener('error', errorListener)
|
||||
piped.removeListener('data', lineListener)
|
||||
piped.removeListener('end', endListener)
|
||||
stream.unpipe(piped)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user