diff --git a/lib/roles/device/plugins/service.js b/lib/roles/device/plugins/service.js index 12a7af9f..cd8d8662 100644 --- a/lib/roles/device/plugins/service.js +++ b/lib/roles/device/plugins/service.js @@ -493,22 +493,40 @@ module.exports = syrup.serial() ]) }) .on(wire.KeyDownMessage, function(channel, message) { - keyEvent({ - event: apk.wire.KeyEvent.DOWN - , keyCode: keyutil.unwire(message.keyCode) - }) + var key = keyutil.namedKey(message.key) + if (key) { + keyEvent({ + event: apk.wire.KeyEvent.DOWN + , keyCode: key + }) + } + else { + log.warn('Ignoring unknown key "%s"', message.key) + } }) .on(wire.KeyUpMessage, function(channel, message) { - keyEvent({ - event: apk.wire.KeyEvent.UP - , keyCode: keyutil.unwire(message.keyCode) - }) + var key = keyutil.namedKey(message.key) + if (key) { + keyEvent({ + event: apk.wire.KeyEvent.UP + , keyCode: key + }) + } + else { + log.warn('Ignoring unknown key "%s"', message.key) + } }) .on(wire.KeyPressMessage, function(channel, message) { - keyEvent({ - event: apk.wire.KeyEvent.PRESS - , keyCode: keyutil.unwire(message.keyCode) - }) + var key = keyutil.namedKey(message.key) + if (key) { + keyEvent({ + event: apk.wire.KeyEvent.PRESS + , keyCode: key + }) + } + else { + log.warn('Ignoring unknown key "%s"', message.key) + } }) .on(wire.TypeMessage, function(channel, message) { plugin.type(message.text) diff --git a/lib/util/keyutil.js b/lib/util/keyutil.js index 943b1f4c..14d28bca 100644 --- a/lib/util/keyutil.js +++ b/lib/util/keyutil.js @@ -572,48 +572,3 @@ 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.TAB] = keyutil.namedKey('tab') - 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 - } -})() diff --git a/lib/wire/wire.proto b/lib/wire/wire.proto index eb5971e2..d6df28b5 100644 --- a/lib/wire/wire.proto +++ b/lib/wire/wire.proto @@ -268,50 +268,16 @@ message PasteMessage { message CopyMessage { } -enum KeyCode { - HOME = 3; - BACK = 4; - BACKSPACE = 8; - TAB = 9; - ENTER = 13; - CAPS_LOCK = 20; - ESC = 27; - PAGE_UP = 33; - PAGE_DOWN = 34; - MOVE_END = 35; - MOVE_HOME = 36; - LEFT_ARROW = 37; - UP_ARROW = 38; - RIGHT_ARROW = 39; - DOWN_ARROW = 40; - INSERT = 45; - DELETE = 46; - MENU = 93; - F1 = 112; - F2 = 113; - F3 = 114; - F4 = 115; - F5 = 116; - F6 = 117; - F7 = 118; - F8 = 119; - F9 = 120; - F10 = 121; - F11 = 122; - F12 = 123; - NUM_LOCK = 144; -} - message KeyDownMessage { - required KeyCode keyCode = 1; + required string key = 1; } message KeyUpMessage { - required KeyCode keyCode = 1; + required string key = 1; } message KeyPressMessage { - required KeyCode keyCode = 1; + required string key = 1; } // Output diff --git a/res/app/components/stf/control/control-service.js b/res/app/components/stf/control/control-service.js index ffa861ae..f3b74477 100644 --- a/res/app/components/stf/control/control-service.js +++ b/res/app/components/stf/control/control-service.js @@ -11,35 +11,35 @@ module.exports = function ControlServiceFactory( function ControlService(target, channel) { var keyCodes = { - 8: 8 // backspace - , 9: 9 // tab - , 13: 13 // enter - , 20: 20 // caps lock - , 27: 27 // esc - , 33: 33 // page up - , 34: 34 // page down - , 35: 35 // end - , 36: 36 // home - , 37: 37 // left arrow - , 38: 38 // up arrow - , 39: 39 // right arrow - , 40: 40 // down arrow - , 45: 45 // insert - , 46: 46 // delete - , 93: 93 // windows menu key - , 112: 112 // f1 - , 113: 113 // f2 - , 114: 114 // f3 - , 115: 115 // f4 - , 116: 116 // f5 - , 117: 117 // f6 - , 118: 118 // f7 - , 119: 119 // f8 - , 120: 120 // f9 - , 121: 121 // f10 - , 122: 122 // f11 - , 123: 123 // f12 - , 144: 144 // num lock + 8: 'del' // backspace + , 9: 'tab' // tab + , 13: 'enter' // enter + , 20: 'caps_lock' // caps lock + , 27: 'escape' // esc + , 33: 'page_up' // page up + , 34: 'page_down' // page down + , 35: 'move_end' // end + , 36: 'move_home' // home + , 37: 'dpad_left' // left arrow + , 38: 'dpad_up' // up arrow + , 39: 'dpad_right' // right arrow + , 40: 'dpad_down' // down arrow + , 45: 'insert' // insert + , 46: 'forward_del' // delete + , 93: 'menu' // windows menu key + , 112: 'f1' // f1 + , 113: 'f2' // f2 + , 114: 'f3' // f3 + , 115: 'f4' // f4 + , 116: 'f5' // f5 + , 117: 'f6' // f6 + , 118: 'f7' // f7 + , 119: 'f8' // f8 + , 120: 'f9' // f9 + , 121: 'f10' // f10 + , 122: 'f11' // f11 + , 123: 'f12' // f12 + , 144: 'num_lock' // num lock } function sendOneWay(action, data) { @@ -87,9 +87,9 @@ module.exports = function ControlServiceFactory( }) } - this.home = keySender('input.keyPress', 3) - this.menu = keySender('input.keyPress', 93) - this.back = keySender('input.keyPress', 4) + this.home = keySender('input.keyPress', 'home') + this.menu = keySender('input.keyPress', 'menu') + this.back = keySender('input.keyPress', 'back') this.type = function(text) { return sendOneWay('input.type', {