[PATCH v2 2/3] user32: Don't translate control codes when alt is pressed.
Rémi Bernon
rbernon at codeweavers.com
Tue Apr 27 04:58:09 CDT 2021
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/user32/input.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 51a08d0786b..9a58537f4b3 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -880,7 +880,7 @@ INT WINAPI ToUnicode(UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
INT WINAPI ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
WCHAR *str, int size, UINT flags, HKL layout )
{
- BOOL shift, ctrl, numlock;
+ BOOL shift, ctrl, alt, numlock;
WCHAR buffer[2];
INT len;
@@ -889,6 +889,7 @@ INT WINAPI ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
if (!state) return 0;
+ alt = state[VK_MENU] & 0x80;
shift = state[VK_SHIFT] & 0x80;
ctrl = state[VK_CONTROL] & 0x80;
numlock = state[VK_NUMLOCK] & 0x01;
@@ -933,7 +934,7 @@ INT WINAPI ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
break;
}
}
- else /* Control codes */
+ else if (!alt) /* Control codes */
{
switch (virt)
{
@@ -947,6 +948,7 @@ INT WINAPI ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
break;
}
}
+ else buffer[0] = 0;
buffer[1] = 0;
len = wcslen( buffer );
--
2.31.0
More information about the wine-devel
mailing list