1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-05 10:39:25 +02:00
OpenSTF/lib/units/device/plugins/vnc/util/pointertranslator.js
Gunther Brunner 711ab4a8e5 Updated npm dependencies.
ProtobufJS and Bluebird require further work.
2016-08-03 20:08:30 +09:00

66 lines
1.6 KiB
JavaScript

var util = require('util')
var EventEmitter = require('eventemitter3')
function PointerTranslator() {
this.previousEvent = null
}
util.inherits(PointerTranslator, EventEmitter)
PointerTranslator.prototype.push = function(event) {
if (event.buttonMask & 0xFE) {
// Non-primary buttons included, ignore.
return
}
if (this.previousEvent) {
var buttonChanges = event.buttonMask ^ this.previousEvent.buttonMask
// If the primary button changed, we have an up/down event.
if (buttonChanges & 1) {
// If it's pressed now, that's a down event.
if (event.buttonMask & 1) {
this.emit('touchdown', {
contact: 1
, x: event.xPosition
, y: event.yPosition
})
this.emit('touchcommit')
}
// It's not pressed, so we have an up event.
else {
this.emit('touchup', {
contact: 1
})
this.emit('touchcommit')
}
}
// Otherwise, if we're still holding the primary button down,
// that's a move event.
else if (event.buttonMask & 1) {
this.emit('touchmove', {
contact: 1
, x: event.xPosition
, y: event.yPosition
})
this.emit('touchcommit')
}
}
else {
// If it's the first event we get and the primary button's pressed,
// it's a down event.
if (event.buttonMask & 1) {
this.emit('touchdown', {
contact: 1
, x: event.xPosition
, y: event.yPosition
})
this.emit('touchcommit')
}
}
this.previousEvent = event
}
module.exports = PointerTranslator