|
13 | 13 | namespace winrt::PowerToys::PowerAccentKeyboardService::implementation |
14 | 14 | { |
15 | 15 | KeyboardListener::KeyboardListener() : |
16 | | - m_toolbarVisible(false), m_activationKeyHold(false), m_triggeredWithSpace(false), m_leftShiftPressed(false), m_rightShiftPressed(false), m_triggeredWithLeftArrow(false), m_triggeredWithRightArrow(false) |
| 16 | + m_toolbarVisible(false), m_triggeredWithSpace(false), m_leftShiftPressed(false), m_rightShiftPressed(false), m_triggeredWithLeftArrow(false), m_triggeredWithRightArrow(false) |
17 | 17 | { |
18 | 18 | s_instance = this; |
19 | 19 | LoggerHelpers::init_logger(L"PowerAccent", L"PowerAccentKeyboardService", "PowerAccent"); |
@@ -53,8 +53,8 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation |
53 | 53 |
|
54 | 54 | void KeyboardListener::SetShowToolbarEvent(ShowToolbar showToolbarEvent) |
55 | 55 | { |
56 | | - m_showToolbarCb = [trigger = std::move(showToolbarEvent)](LetterKey key, TriggerKey triggerKey) { |
57 | | - trigger(key, triggerKey); |
| 56 | + m_showToolbarCb = [trigger = std::move(showToolbarEvent)](LetterKey key) { |
| 57 | + trigger(key); |
58 | 58 | }; |
59 | 59 | } |
60 | 60 |
|
@@ -152,17 +152,6 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation |
152 | 152 | return false; |
153 | 153 | } |
154 | 154 |
|
155 | | - void KeyboardListener::BeginShowToolbar(std::chrono::milliseconds delay, LetterKey key, TriggerKey trigger) |
156 | | - { |
157 | | - std::unique_lock<std::mutex> lock(toolbarMutex); |
158 | | - auto result = toolbarCV.wait_for(lock, delay); |
159 | | - if (result == std::cv_status::timeout) |
160 | | - { |
161 | | - m_toolbarVisible = true; |
162 | | - m_showToolbarCb(key, trigger); |
163 | | - } |
164 | | - } |
165 | | - |
166 | 155 | bool KeyboardListener::OnKeyDown(KBDLLHOOKSTRUCT info) noexcept |
167 | 156 | { |
168 | 157 | auto letterKey = static_cast<LetterKey>(info.vkCode); |
@@ -210,29 +199,19 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation |
210 | 199 | } |
211 | 200 | } |
212 | 201 |
|
213 | | - if (!m_toolbarVisible && !m_activationKeyHold && letterPressed != LetterKey::None && triggerPressed && !IsSuppressedByGameMode() && !IsForegroundAppExcluded()) |
| 202 | + if (!m_toolbarVisible && letterPressed != LetterKey::None && triggerPressed && !IsSuppressedByGameMode() && !IsForegroundAppExcluded()) |
214 | 203 | { |
215 | 204 | Logger::debug(L"Show toolbar. Letter: {}, Trigger: {}", letterPressed, triggerPressed); |
216 | 205 |
|
217 | 206 | // Keep track if it was triggered with space so that it can be typed on false starts. |
218 | 207 | m_triggeredWithSpace = triggerPressed == VK_SPACE; |
219 | 208 | m_triggeredWithLeftArrow = triggerPressed == VK_LEFT; |
220 | 209 | m_triggeredWithRightArrow = triggerPressed == VK_RIGHT; |
221 | | - m_activationKeyHold = true; |
222 | | - m_bothKeysPressed = true; |
223 | | - if (toolbarThread != nullptr) |
224 | | - { |
225 | | - toolbarCV.notify_all(); |
226 | | - toolbarThread->join(); |
227 | | - } |
228 | | - toolbarThread = std::make_unique<std::thread>(std::bind(&KeyboardListener::BeginShowToolbar, this, m_settings.inputTime, letterPressed,static_cast<TriggerKey>(triggerPressed))); |
| 210 | + m_toolbarVisible = true; |
| 211 | + m_showToolbarCb(letterPressed); |
229 | 212 | } |
230 | 213 |
|
231 | | - if (m_activationKeyHold && triggerPressed && !m_toolbarVisible) |
232 | | - { |
233 | | - return true; |
234 | | - } |
235 | | - else if (m_toolbarVisible && triggerPressed) |
| 214 | + if (m_toolbarVisible && triggerPressed) |
236 | 215 | { |
237 | 216 | if (triggerPressed == VK_LEFT) |
238 | 217 | { |
@@ -272,9 +251,8 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation |
272 | 251 | { |
273 | 252 | letterPressed = LetterKey::None; |
274 | 253 |
|
275 | | - if (m_toolbarVisible || m_bothKeysPressed) |
| 254 | + if (m_toolbarVisible) |
276 | 255 | { |
277 | | - m_bothKeysPressed = false; |
278 | 256 | if (m_stopwatch.elapsed() < m_settings.inputTime) |
279 | 257 | { |
280 | 258 | Logger::debug(L"Activation too fast. Do nothing."); |
@@ -302,18 +280,11 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation |
302 | 280 | Logger::debug(L"Hide toolbar event and input char"); |
303 | 281 |
|
304 | 282 | m_hideToolbarCb(InputType::Char); |
| 283 | + |
305 | 284 | m_toolbarVisible = false; |
306 | 285 | } |
307 | 286 | } |
308 | 287 |
|
309 | | - auto triggerPressed = info.vkCode; |
310 | | - |
311 | | - if (m_activationKeyHold && (letterPressed == LetterKey::None || (triggerPressed == VK_SPACE || triggerPressed == VK_LEFT || triggerPressed == VK_RIGHT))) |
312 | | - { |
313 | | - m_activationKeyHold = false; |
314 | | - toolbarCV.notify_all(); |
315 | | - } |
316 | | - |
317 | 288 | return false; |
318 | 289 | } |
319 | 290 |
|
|
0 commit comments