Add bindings to keyboard shortcuts

The default binding for keyboardOne is the default combination
for muting on Discord. This was explicitly chosen as a use case, and it
    might make people not have to tangle with creating custom
    keybindings in the .ini file.
This commit is contained in:
Vasily
2019-05-25 18:49:42 +02:00
committed by username223
parent ef124ee225
commit 7d37ec9c0d
5 changed files with 88 additions and 1 deletions
+16
View File
@@ -131,6 +131,9 @@ SteamIVRInput::SteamIVRInput()
m_xAxisLockToggle( action_keys::xAxisLockToggle ), m_xAxisLockToggle( action_keys::xAxisLockToggle ),
m_yAxisLockToggle( action_keys::yAxisLockToggle ), m_yAxisLockToggle( action_keys::yAxisLockToggle ),
m_zAxisLockToggle( action_keys::zAxisLockToggle ), m_zAxisLockToggle( action_keys::zAxisLockToggle ),
m_keyboardOne( action_keys::keyboardOne ),
m_keyboardTwo( action_keys::keyboardTwo ),
m_keyboardThree( action_keys::keyboardThree ),
m_chaperoneToggle( action_keys::chaperoneToggle ), m_chaperoneToggle( action_keys::chaperoneToggle ),
m_pushToTalk( action_keys::pushToTalk ), m_pushToTalk( action_keys::pushToTalk ),
m_leftHaptic( action_keys::hapticsLeft ), m_leftHaptic( action_keys::hapticsLeft ),
@@ -302,6 +305,19 @@ bool SteamIVRInput::proxState()
return isDigitalActionActivatedConstant( m_pushToTalk ); return isDigitalActionActivatedConstant( m_pushToTalk );
} }
bool SteamIVRInput::keyboardOne()
{
return isDigitalActionActivatedOnce( m_keyboardOne );
}
bool SteamIVRInput::keyboardTwo()
{
return isDigitalActionActivatedOnce( m_keyboardTwo );
}
bool SteamIVRInput::keyboardThree()
{
return isDigitalActionActivatedOnce( m_keyboardThree );
}
/*! /*!
Returns the action handle of the Left Haptic Action Returns the action handle of the Left Haptic Action
*/ */
+13
View File
@@ -49,6 +49,10 @@ namespace action_keys
constexpr auto zAxisLockToggle = "/actions/misc/in/ZAxisLockToggle"; constexpr auto zAxisLockToggle = "/actions/misc/in/ZAxisLockToggle";
constexpr auto pushToTalk = "/actions/misc/in/PushToTalk"; constexpr auto pushToTalk = "/actions/misc/in/PushToTalk";
constexpr auto keyboardOne = "/actions/misc/in/KeyboardOne";
constexpr auto keyboardTwo = "/actions/misc/in/KeyboardTwo";
constexpr auto keyboardThree = "/actions/misc/in/KeyboardThree";
constexpr auto hapticsLeft = "/actions/haptic/out/HapticsLeft"; constexpr auto hapticsLeft = "/actions/haptic/out/HapticsLeft";
constexpr auto hapticsRight = "/actions/haptic/out/HapticsRight"; constexpr auto hapticsRight = "/actions/haptic/out/HapticsRight";
constexpr auto proxSensor = "/actions/misc/in/ProxSensor"; constexpr auto proxSensor = "/actions/misc/in/ProxSensor";
@@ -139,6 +143,10 @@ public:
bool pushToTalk(); bool pushToTalk();
bool keyboardOne();
bool keyboardTwo();
bool keyboardThree();
vr::VRActionHandle_t leftHapticActionHandle(); vr::VRActionHandle_t leftHapticActionHandle();
vr::VRActionHandle_t rightHapticActionHandle(); vr::VRActionHandle_t rightHapticActionHandle();
@@ -197,6 +205,11 @@ private:
DigitalAction m_yAxisLockToggle; DigitalAction m_yAxisLockToggle;
DigitalAction m_zAxisLockToggle; DigitalAction m_zAxisLockToggle;
// Keyboard Shortcuts
DigitalAction m_keyboardOne;
DigitalAction m_keyboardTwo;
DigitalAction m_keyboardThree;
// Misc Bindings // Misc Bindings
DigitalAction m_chaperoneToggle; DigitalAction m_chaperoneToggle;
+39
View File
@@ -21,6 +21,7 @@
#include <easylogging++.h> #include <easylogging++.h>
#include "utils/Matrix.h" #include "utils/Matrix.h"
#include "openvr/overlay_utils.h" #include "openvr/overlay_utils.h"
#include "keyboard_input/input_sender.h"
// application namespace // application namespace
namespace advsettings namespace advsettings
@@ -588,6 +589,42 @@ void OverlayController::processPushToTalkBindings()
} }
} }
void OverlayController::processKeyboardBindings()
{
constexpr auto settingsKeyboardName = "keyboardShortcuts";
if ( m_actions.keyboardOne() )
{
constexpr auto defaultDiscordMuteBinding = "^>m";
// run keyboard
appSettings()->beginGroup( settingsKeyboardName );
const auto commands
= appSettings()
->value( "keyboardOne", defaultDiscordMuteBinding )
.toString()
.toStdString();
appSettings()->endGroup();
sendStringAsInput( commands );
}
if ( m_actions.keyboardTwo() )
{
// run keyboard
appSettings()->beginGroup( settingsKeyboardName );
const auto commands
= appSettings()->value( "keyboardTwo" ).toString().toStdString();
appSettings()->endGroup();
sendStringAsInput( commands );
}
if ( m_actions.keyboardThree() )
{
// run keyboard
appSettings()->beginGroup( settingsKeyboardName );
const auto commands
= appSettings()->value( "keyboardThree" ).toString().toStdString();
appSettings()->endGroup();
sendStringAsInput( commands );
}
}
/*! /*!
Checks if an action has been activated and dispatches the related action if it Checks if an action has been activated and dispatches the related action if it
has been. has been.
@@ -601,6 +638,8 @@ void OverlayController::processInputBindings()
processPushToTalkBindings(); processPushToTalkBindings();
processChaperoneBindings(); processChaperoneBindings();
processKeyboardBindings();
} }
// vsync implementation: // vsync implementation:
+1
View File
@@ -135,6 +135,7 @@ private:
void processMotionBindings(); void processMotionBindings();
void processPushToTalkBindings(); void processPushToTalkBindings();
void processChaperoneBindings(); void processChaperoneBindings();
void processKeyboardBindings();
public: public:
OverlayController( bool desktopMode, bool noSound, QQmlEngine& qmlEngine ); OverlayController( bool desktopMode, bool noSound, QQmlEngine& qmlEngine );
+19 -1
View File
@@ -160,6 +160,21 @@
"name": "/actions/misc/in/ProxSensor", "name": "/actions/misc/in/ProxSensor",
"requirement": "optional", "requirement": "optional",
"type": "boolean" "type": "boolean"
},
{
"name": "/actions/misc/in/KeyboardOne",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/misc/in/KeyboardTwo",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/misc/in/KeyboardThree",
"requirement": "optional",
"type": "boolean"
} }
], ],
@@ -220,7 +235,10 @@
"/actions/misc/in/ZAxisLockToggle" : "Z-Axis Lock Toggle", "/actions/misc/in/ZAxisLockToggle" : "Z-Axis Lock Toggle",
"/actions/misc/in/PushToTalk" : "Push To Talk", "/actions/misc/in/PushToTalk" : "Push To Talk",
"/actions/misc/in/ChaperoneToggle" : "Chaperone Toggle", "/actions/misc/in/ChaperoneToggle" : "Chaperone Toggle",
"/actions/misc/in/ProxSensor" : "Proximity Sensor" "/actions/misc/in/ProxSensor" : "Proximity Sensor",
"/actions/misc/in/KeyboardOne" : "Keyboard Shortcut One",
"/actions/misc/in/KeyboardTwo" : "Keyboard Shortcut Two",
"/actions/misc/in/KeyboardThree" : "Keyboard Shortcut Three"
} }
] ]
} }