Skip to content

Commit 7fece23

Browse files
fix on-screen keyboard activation
1 parent 74214f6 commit 7fece23

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/modules/poweraccent/PowerAccentKeyboardService/KeyboardListener.cpp

+15-8
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,14 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation
169169

170170
if (std::find(letters.begin(), letters.end(), letterKey) != cend(letters) && m_isLanguageLetterCb(letterKey))
171171
{
172+
if (m_toolbarVisible && letterPressed == letterKey)
173+
{
174+
// On-screen keyboard continuously sends WM_KEYDOWN when a key is held down
175+
// If Quick Accent is visible, prevent the letter key from being processed
176+
// https://github.com/microsoft/PowerToys/issues/36853
177+
return true;
178+
}
179+
172180
m_stopwatch.reset();
173181
letterPressed = letterKey;
174182
}
@@ -220,7 +228,7 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation
220228
Logger::debug(L"Next toolbar position - space");
221229
m_nextCharCb(TriggerKey::Space, m_leftShiftPressed || m_rightShiftPressed);
222230
}
223-
231+
224232
return true;
225233
}
226234

@@ -282,14 +290,14 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation
282290

283291
LRESULT KeyboardListener::LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
284292
{
293+
if (nCode == HC_ACTION && s_instance != nullptr)
285294
{
286-
if (nCode == HC_ACTION && s_instance != nullptr)
295+
KBDLLHOOKSTRUCT* key = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);
296+
switch (wParam)
287297
{
288-
KBDLLHOOKSTRUCT* key = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);
289-
switch (wParam)
290-
{
291298
case WM_KEYDOWN:
292299
{
300+
Logger::debug(L"Key down: {}", key->vkCode);
293301
if (s_instance->OnKeyDown(*key))
294302
{
295303
return true;
@@ -304,10 +312,9 @@ namespace winrt::PowerToys::PowerAccentKeyboardService::implementation
304312
}
305313
}
306314
break;
307-
}
308315
}
309-
310-
return CallNextHookEx(NULL, nCode, wParam, lParam);
311316
}
317+
318+
return CallNextHookEx(NULL, nCode, wParam, lParam);
312319
}
313320
}

0 commit comments

Comments
 (0)