diff --git a/lib/roles/device/plugins/touch.js b/lib/roles/device/plugins/touch.js index f5b642c4..6ba74b1c 100644 --- a/lib/roles/device/plugins/touch.js +++ b/lib/roles/device/plugins/touch.js @@ -13,7 +13,8 @@ module.exports = syrup.serial() .dependency(require('../support/adb')) .dependency(require('../support/router')) .dependency(require('../resources/remote')) - .define(function(options, adb, router, remote) { + .dependency(require('./display')) + .define(function(options, adb, router, remote, display) { var log = logger.createLogger('device:plugins:touch') var service = { @@ -48,12 +49,18 @@ module.exports = syrup.serial() }) } + function modifyCoords(message) { + message.x = Math.floor(message.x * display.width) + message.y = Math.floor(message.y * display.height) + } + return openService() .then(function(monkey) { var queue = new SeqQueue() router .on(wire.TouchDownMessage, function(channel, message) { + modifyCoords(message) queue.push(message.seq, function() { monkey.touchDownAsync(message.x, message.y) .catch(function(err) { @@ -62,6 +69,7 @@ module.exports = syrup.serial() }) }) .on(wire.TouchMoveMessage, function(channel, message) { + modifyCoords(message) queue.push(message.seq, function() { monkey.touchMoveAsync(message.x, message.y) .catch(function(err) { @@ -70,6 +78,7 @@ module.exports = syrup.serial() }) }) .on(wire.TouchUpMessage, function(channel, message) { + modifyCoords(message) queue.push(message.seq, function() { monkey.touchUpAsync(message.x, message.y) .catch(function(err) { @@ -81,6 +90,7 @@ module.exports = syrup.serial() queue = new SeqQueue() }) .on(wire.TapMessage, function(channel, message) { + modifyCoords(message) monkey.tapAsync(message.x, message.y) .catch(function(err) { log.error('tap failed', err.stack) diff --git a/lib/wire/wire.proto b/lib/wire/wire.proto index 8583e5ac..7f082eb2 100644 --- a/lib/wire/wire.proto +++ b/lib/wire/wire.proto @@ -235,25 +235,25 @@ message PhysicalIdentifyMessage { message TouchDownMessage { required uint32 seq = 1; - required uint32 x = 2; - required uint32 y = 3; + required float x = 2; + required float y = 3; } message TouchMoveMessage { required uint32 seq = 1; - required uint32 x = 2; - required uint32 y = 3; + required float x = 2; + required float y = 3; } message TouchUpMessage { required uint32 seq = 1; - required uint32 x = 2; - required uint32 y = 3; + required float x = 2; + required float y = 3; } message TapMessage { - required uint32 x = 1; - required uint32 y = 2; + required float x = 1; + required float y = 2; } message TypeMessage { diff --git a/res/app/components/stf/screen/screen-directive.js b/res/app/components/stf/screen/screen-directive.js index be26bf36..2efc14cf 100644 --- a/res/app/components/stf/screen/screen-directive.js +++ b/res/app/components/stf/screen/screen-directive.js @@ -39,8 +39,8 @@ module.exports = function DeviceScreenDirective( scope.control[type]( seq++ - , scaled.xP * scope.device.display.width - , scaled.yP * scope.device.display.height + , scaled.xP + , scaled.yP ) }