From fc3602d780ff9e3b4e86fe532710dd31a9924939 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Tue, 10 Nov 2015 16:46:58 -0800 Subject: [PATCH 1/3] change context menu to RightPrimaryThumb, add filter to mouse click to not count slow clicks --- examples/libraries/omniTool.js | 2 +- interface/resources/controllers/standard.json | 2 +- .../src/input-plugins/KeyboardMouseDevice.cpp | 11 +++++++---- .../src/input-plugins/KeyboardMouseDevice.h | 1 + 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/libraries/omniTool.js b/examples/libraries/omniTool.js index 4c995d6528..e0e5da4496 100644 --- a/examples/libraries/omniTool.js +++ b/examples/libraries/omniTool.js @@ -64,7 +64,7 @@ OmniTool = function(left) { }); this.mapping = Controller.newMapping(); - this.mapping.from(left ? standard.LeftPrimaryThumb : standard.RightPrimaryThumb).to(function(value){ + this.mapping.from(left ? standard.LeftPrimaryThumb : standard.RightSecondaryThumb).to(function(value){ that.onUpdateTrigger(value); }) this.mapping.enable(); diff --git a/interface/resources/controllers/standard.json b/interface/resources/controllers/standard.json index d4988fc00d..4833388080 100644 --- a/interface/resources/controllers/standard.json +++ b/interface/resources/controllers/standard.json @@ -33,7 +33,7 @@ { "from": "Standard.Start", "to": "Standard.RightSecondaryThumb" }, { "from": "Standard.LeftSecondaryThumb", "to": "Actions.CycleCamera" }, - { "from": "Standard.RightSecondaryThumb", "to": "Actions.ContextMenu" }, + { "from": "Standard.RightPrimaryThumb", "to": "Actions.ContextMenu" }, { "from": "Standard.LT", "to": "Actions.LeftHandClick" }, { "from": "Standard.RT", "to": "Actions.RightHandClick" }, diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp index e91ea90aaf..6a08a50b13 100755 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp @@ -16,6 +16,7 @@ #include #include +#include const QString KeyboardMouseDevice::NAME = "Keyboard/Mouse"; @@ -64,6 +65,7 @@ void KeyboardMouseDevice::mousePressEvent(QMouseEvent* event, unsigned int devic } _lastCursor = event->pos(); _mousePressAt = event->pos(); + _mousePressTime = usecTimestampNow(); eraseMouseClicked(); } @@ -72,10 +74,11 @@ void KeyboardMouseDevice::mouseReleaseEvent(QMouseEvent* event, unsigned int dev auto input = _inputDevice->makeInput((Qt::MouseButton) event->button()); _inputDevice->_buttonPressedMap.erase(input.getChannel()); - // if we pressed and released at the same location, then create a "_CLICKED" input for this button - // we might want to add some small tolerance to this so if you do a small drag it still counts as - // a clicked. - if (_mousePressAt == event->pos()) { + // if we pressed and released at the same location within a small time window, then create a "_CLICKED" + // input for this button we might want to add some small tolerance to this so if you do a small drag it + // till counts as a clicked. + static const int CLICK_TIME = USECS_PER_MSEC * 500; // 500 ms to click + if (_mousePressAt == event->pos() && (usecTimestampNow() - _mousePressTime < CLICK_TIME)) { _inputDevice->_buttonPressedMap.insert(_inputDevice->makeInput((Qt::MouseButton) event->button(), true).getChannel()); } } diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h index 4abdc44478..7182424df0 100644 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h @@ -116,6 +116,7 @@ public: protected: QPoint _lastCursor; QPoint _mousePressAt; + quint64 _mousePressTime; glm::vec2 _lastTouch; std::shared_ptr _inputDevice { std::make_shared() }; From 4fddc86851d4ff595e1994632efe34a8f3bdc330 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Wed, 11 Nov 2015 15:26:16 -0800 Subject: [PATCH 2/3] tweaks to click --- .../input-plugins/src/input-plugins/KeyboardMouseDevice.cpp | 5 +++-- .../input-plugins/src/input-plugins/KeyboardMouseDevice.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp index 6a08a50b13..9a9514db1b 100755 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp @@ -64,8 +64,8 @@ void KeyboardMouseDevice::mousePressEvent(QMouseEvent* event, unsigned int devic // key pressed again ? without catching the release event ? } _lastCursor = event->pos(); - _mousePressAt = event->pos(); _mousePressTime = usecTimestampNow(); + _mouseMoved = false; eraseMouseClicked(); } @@ -78,7 +78,7 @@ void KeyboardMouseDevice::mouseReleaseEvent(QMouseEvent* event, unsigned int dev // input for this button we might want to add some small tolerance to this so if you do a small drag it // till counts as a clicked. static const int CLICK_TIME = USECS_PER_MSEC * 500; // 500 ms to click - if (_mousePressAt == event->pos() && (usecTimestampNow() - _mousePressTime < CLICK_TIME)) { + if (!_mouseMoved && (usecTimestampNow() - _mousePressTime < CLICK_TIME)) { _inputDevice->_buttonPressedMap.insert(_inputDevice->makeInput((Qt::MouseButton) event->button(), true).getChannel()); } } @@ -100,6 +100,7 @@ void KeyboardMouseDevice::mouseMoveEvent(QMouseEvent* event, unsigned int device _inputDevice->_axisStateMap[MOUSE_AXIS_Y_NEG] = (currentMove.y() > 0 ? currentMove.y() : 0.0f); _lastCursor = currentPos; + _mouseMoved = true; eraseMouseClicked(); } diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h index 7182424df0..b31c59d11a 100644 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h @@ -115,8 +115,8 @@ public: protected: QPoint _lastCursor; - QPoint _mousePressAt; quint64 _mousePressTime; + bool _mouseMoved; glm::vec2 _lastTouch; std::shared_ptr _inputDevice { std::make_shared() }; From d36cc1556ab869f0732a04b250547814aca595cf Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Wed, 11 Nov 2015 15:32:07 -0800 Subject: [PATCH 3/3] switch back context menu to secondary thumb --- examples/libraries/omniTool.js | 2 +- interface/resources/controllers/standard.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/libraries/omniTool.js b/examples/libraries/omniTool.js index e0e5da4496..4c995d6528 100644 --- a/examples/libraries/omniTool.js +++ b/examples/libraries/omniTool.js @@ -64,7 +64,7 @@ OmniTool = function(left) { }); this.mapping = Controller.newMapping(); - this.mapping.from(left ? standard.LeftPrimaryThumb : standard.RightSecondaryThumb).to(function(value){ + this.mapping.from(left ? standard.LeftPrimaryThumb : standard.RightPrimaryThumb).to(function(value){ that.onUpdateTrigger(value); }) this.mapping.enable(); diff --git a/interface/resources/controllers/standard.json b/interface/resources/controllers/standard.json index 4833388080..d4988fc00d 100644 --- a/interface/resources/controllers/standard.json +++ b/interface/resources/controllers/standard.json @@ -33,7 +33,7 @@ { "from": "Standard.Start", "to": "Standard.RightSecondaryThumb" }, { "from": "Standard.LeftSecondaryThumb", "to": "Actions.CycleCamera" }, - { "from": "Standard.RightPrimaryThumb", "to": "Actions.ContextMenu" }, + { "from": "Standard.RightSecondaryThumb", "to": "Actions.ContextMenu" }, { "from": "Standard.LT", "to": "Actions.LeftHandClick" }, { "from": "Standard.RT", "to": "Actions.RightHandClick" },