From a9d129aa5a66bf8e264fe9d5b620a761dd82fc28 Mon Sep 17 00:00:00 2001 From: gokcekantarci <115616017+gokcekantarci@users.noreply.github.com> Date: Wed, 26 Jul 2023 19:05:21 +0300 Subject: [PATCH] [Quick Accent]Left/Right key action normal behaviour added for less than input delay(#27604) * [Quick Accent] - Left/Right key action normal behaviour added for less than input delay. - Showing toolbar bug is resolved. * [Quick Accent] Used spaces instead of tabs --- .../poweraccent/PowerAccent.Core/PowerAccent.cs | 12 ++++++++++++ .../KeyboardListener.cpp | 14 ++++++++++++-- .../PowerAccentKeyboardService/KeyboardListener.h | 2 ++ .../KeyboardListener.idl | 2 ++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs b/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs index 01d87d034c..ee89f62158 100644 --- a/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs +++ b/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs @@ -203,6 +203,18 @@ public class PowerAccent : IDisposable break; } + case InputType.Right: + { + SendKeys.SendWait("{RIGHT}"); + break; + } + + case InputType.Left: + { + SendKeys.SendWait("{LEFT}"); + break; + } + case InputType.Char: { if (_selectedIndex != -1) diff --git a/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.cpp b/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.cpp index 11ba7afc93..68aa84383f 100644 --- a/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.cpp +++ b/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.cpp @@ -12,7 +12,7 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation { KeyboardListener::KeyboardListener() : - m_toolbarVisible(false), m_triggeredWithSpace(false), m_leftShiftPressed(false), m_rightShiftPressed(false) + m_toolbarVisible(false), m_triggeredWithSpace(false), m_leftShiftPressed(false), m_rightShiftPressed(false), m_triggeredWithLeftArrow(false), m_triggeredWithRightArrow(false) { s_instance = this; LoggerHelpers::init_logger(L"PowerAccent", L"PowerAccentKeyboardService", "PowerAccent"); @@ -174,8 +174,8 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation (triggerPressed == VK_SPACE && m_settings.activationKey == PowerAccentActivationKey::LeftRightArrow) || ((triggerPressed == VK_LEFT || triggerPressed == VK_RIGHT) && m_settings.activationKey == PowerAccentActivationKey::Space)) { - triggerPressed = 0; Logger::debug(L"Reset trigger key"); + return false; } } } @@ -186,6 +186,8 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation // Keep track if it was triggered with space so that it can be typed on false starts. m_triggeredWithSpace = triggerPressed == VK_SPACE; + m_triggeredWithLeftArrow = triggerPressed == VK_LEFT; + m_triggeredWithRightArrow = triggerPressed == VK_RIGHT; m_toolbarVisible = true; m_showToolbarCb(letterPressed); } @@ -241,6 +243,14 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation { m_hideToolbarCb(InputType::Space); } + else if (m_triggeredWithLeftArrow) + { + m_hideToolbarCb(InputType::Left); + } + else if (m_triggeredWithRightArrow) + { + m_hideToolbarCb(InputType::Right); + } else { m_hideToolbarCb(InputType::None); diff --git a/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.h b/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.h index a7f68835d6..65d2dca34a 100644 --- a/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.h +++ b/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.h @@ -55,6 +55,8 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation std::function m_nextCharCb; std::function m_isLanguageLetterCb; bool m_triggeredWithSpace; + bool m_triggeredWithLeftArrow; + bool m_triggeredWithRightArrow; spdlog::stopwatch m_stopwatch; bool m_leftShiftPressed; bool m_rightShiftPressed; diff --git a/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.idl b/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.idl index 7e47362723..708e1c51a7 100644 --- a/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.idl +++ b/src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.idl @@ -60,6 +60,8 @@ namespace PowerToys { None, Space, + Left, + Right, Char };