From 0a49c7a717bda730e4c03e9591c9c7f327049151 Mon Sep 17 00:00:00 2001 From: Vasily Date: Wed, 23 Jan 2019 18:40:12 +0100 Subject: [PATCH] Add Alt+Enter button to Utilities page, update Win Alt+Tab func Requested in this reddit post: https://www.reddit.com/r/Vive/comments/agnvux/advanced_settings_280_motion_smoothing_audio_and/ee7muqo/ Use case is toggling full screen mode on applications. The Alt+Tab function has been updated with a constexpr var that reduces duplication in the function calls and makes the keys even more explicit. --- src/res/qml/UtilitiesPage.qml | 19 +++++++--- src/tabcontrollers/KeyboardInput.h | 1 + src/tabcontrollers/UtilitiesTabController.cpp | 5 +++ src/tabcontrollers/UtilitiesTabController.h | 1 + .../keyboardinput/KeyboardInputDummy.cpp | 5 +++ .../keyboardinput/KeyboardInputDummy.h | 1 + .../keyboardinput/KeyboardInputWindows.cpp | 36 ++++++++++++++++--- .../keyboardinput/KeyboardInputWindows.h | 1 + 8 files changed, 59 insertions(+), 10 deletions(-) diff --git a/src/res/qml/UtilitiesPage.qml b/src/res/qml/UtilitiesPage.qml index 351c437..7a10d02 100644 --- a/src/res/qml/UtilitiesPage.qml +++ b/src/res/qml/UtilitiesPage.qml @@ -42,10 +42,11 @@ MyStackViewPage { RowLayout { spacing: 18 + Layout.fillWidth: true MyPushButton { text: "Keyboard Input" - Layout.preferredWidth: 200 + Layout.fillWidth: true onClicked: { OverlayController.showKeyboard("", 601) } @@ -61,7 +62,7 @@ MyStackViewPage { MyPushButton { text: "Enter" - Layout.preferredWidth: 200 + Layout.fillWidth: true onClicked: { UtilitiesTabController.sendKeyboardEnter() } @@ -69,7 +70,7 @@ MyStackViewPage { MyPushButton { text: "Alt-Tab" - Layout.preferredWidth: 200 + Layout.fillWidth: true onClicked: { UtilitiesTabController.sendKeyboardAltTab() } @@ -77,7 +78,7 @@ MyStackViewPage { MyPushButton { text: "Backspace" - Layout.preferredWidth: 200 + Layout.fillWidth: true onClicked: { UtilitiesTabController.sendKeyboardBackspace(1) } @@ -85,11 +86,19 @@ MyStackViewPage { MyPushButton { text: "10x Backspace" - Layout.preferredWidth: 200 + Layout.fillWidth: true onClicked: { UtilitiesTabController.sendKeyboardBackspace(10) } } + + MyPushButton { + text: "Alt-Enter" + Layout.fillWidth: true + onClicked: { + UtilitiesTabController.sendKeyboardAltEnter() + } + } } } } diff --git a/src/tabcontrollers/KeyboardInput.h b/src/tabcontrollers/KeyboardInput.h index cb1226a..8821552 100644 --- a/src/tabcontrollers/KeyboardInput.h +++ b/src/tabcontrollers/KeyboardInput.h @@ -17,6 +17,7 @@ public: virtual void sendKeyboardEnter() = 0; virtual void sendKeyboardBackspace( const int count ) = 0; virtual void sendKeyboardAltTab() = 0; + virtual void sendKeyboardAltEnter() = 0; virtual void sendMediaNextSong() = 0; virtual void sendMediaPreviousSong() = 0; virtual void sendMediaPausePlay() = 0; diff --git a/src/tabcontrollers/UtilitiesTabController.cpp b/src/tabcontrollers/UtilitiesTabController.cpp index 948492e..9fd8246 100644 --- a/src/tabcontrollers/UtilitiesTabController.cpp +++ b/src/tabcontrollers/UtilitiesTabController.cpp @@ -78,6 +78,11 @@ void UtilitiesTabController::sendKeyboardEnter() keyboardInput->sendKeyboardEnter(); } +void UtilitiesTabController::sendKeyboardAltEnter() +{ + keyboardInput->sendKeyboardAltEnter(); +} + void UtilitiesTabController::sendKeyboardAltTab() { keyboardInput->sendKeyboardAltTab(); diff --git a/src/tabcontrollers/UtilitiesTabController.h b/src/tabcontrollers/UtilitiesTabController.h index d73f8e8..bf41f6b 100644 --- a/src/tabcontrollers/UtilitiesTabController.h +++ b/src/tabcontrollers/UtilitiesTabController.h @@ -69,6 +69,7 @@ public slots: void sendKeyboardInput( QString input ); void sendKeyboardEnter(); void sendKeyboardAltTab(); + void sendKeyboardAltEnter(); void sendKeyboardBackspace( const int count ); void sendMediaNextSong(); void sendMediaPreviousSong(); diff --git a/src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp b/src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp index f9b78c8..bb3f750 100644 --- a/src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp +++ b/src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp @@ -28,6 +28,11 @@ void KeyboardInputDummy::sendKeyboardAltTab() // noop } +void KeyboardInputDummy::sendKeyboardAltEnter() +{ + // noop +} + void KeyboardInputDummy::sendMediaNextSong() { // noop diff --git a/src/tabcontrollers/keyboardinput/KeyboardInputDummy.h b/src/tabcontrollers/keyboardinput/KeyboardInputDummy.h index cf63f1f..f67882e 100644 --- a/src/tabcontrollers/keyboardinput/KeyboardInputDummy.h +++ b/src/tabcontrollers/keyboardinput/KeyboardInputDummy.h @@ -13,6 +13,7 @@ public: virtual void sendKeyboardEnter() override; virtual void sendKeyboardBackspace( const int count ) override; virtual void sendKeyboardAltTab() override; + virtual void sendKeyboardAltEnter() override; virtual void sendMediaNextSong() override; virtual void sendMediaPreviousSong() override; virtual void sendMediaPausePlay() override; diff --git a/src/tabcontrollers/keyboardinput/KeyboardInputWindows.cpp b/src/tabcontrollers/keyboardinput/KeyboardInputWindows.cpp index 8e5a84a..4dd2585 100644 --- a/src/tabcontrollers/keyboardinput/KeyboardInputWindows.cpp +++ b/src/tabcontrollers/keyboardinput/KeyboardInputWindows.cpp @@ -234,11 +234,13 @@ a music player. */ void KeyboardInputWindows::sendKeyboardAltTab() { - // VK_MENU is Alt. - const auto pressAlt = createInputStruct( VK_MENU, KeyStatus::Down ); - const auto pressTab = createInputStruct( VK_TAB, KeyStatus::Down ); - const auto releaseAlt = createInputStruct( VK_MENU, KeyStatus::Up ); - const auto releaseTab = createInputStruct( VK_TAB, KeyStatus::Up ); + constexpr auto altKey = VK_MENU; + constexpr auto tabKey = VK_TAB; + + const auto pressAlt = createInputStruct( altKey, KeyStatus::Down ); + const auto pressTab = createInputStruct( tabKey, KeyStatus::Down ); + const auto releaseAlt = createInputStruct( altKey, KeyStatus::Up ); + const auto releaseTab = createInputStruct( tabKey, KeyStatus::Up ); constexpr auto numberOfActions = 4; @@ -248,6 +250,30 @@ void KeyboardInputWindows::sendKeyboardAltTab() sendKeyboardInputRaw( numberOfActions, actions ); } +/*! +Sends an Alt + Tab combination to Windows. + +Used for toggling full screen on games and various applications that appear on +the desktop. +*/ +void KeyboardInputWindows::sendKeyboardAltEnter() +{ + constexpr auto altKey = VK_MENU; + constexpr auto enterKey = VK_RETURN; + + const auto pressAlt = createInputStruct( altKey, KeyStatus::Down ); + const auto pressEnter = createInputStruct( enterKey, KeyStatus::Down ); + const auto releaseAlt = createInputStruct( altKey, KeyStatus::Up ); + const auto releaseEnter = createInputStruct( enterKey, KeyStatus::Up ); + + constexpr auto numberOfActions = 4; + + INPUT actions[numberOfActions] + = { pressAlt, pressEnter, releaseAlt, releaseEnter }; + + sendKeyboardInputRaw( numberOfActions, actions ); +} + /*! Sends a media key Next Song button to Windows. */ diff --git a/src/tabcontrollers/keyboardinput/KeyboardInputWindows.h b/src/tabcontrollers/keyboardinput/KeyboardInputWindows.h index 12ceb44..cfed120 100644 --- a/src/tabcontrollers/keyboardinput/KeyboardInputWindows.h +++ b/src/tabcontrollers/keyboardinput/KeyboardInputWindows.h @@ -13,6 +13,7 @@ public: virtual void sendKeyboardEnter() override; virtual void sendKeyboardBackspace( const int count ) override; virtual void sendKeyboardAltTab() override; + virtual void sendKeyboardAltEnter() override; virtual void sendMediaNextSong() override; virtual void sendMediaPreviousSong() override; virtual void sendMediaPausePlay() override;