wineandroid: Fix handling of Caps Lock with non-alphabetic keys.

Spotted by Dmitry Timoshkov.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2017-06-26 15:12:10 +02:00
parent ae5ec5c597
commit ab006d0085
1 changed files with 2 additions and 2 deletions

View File

@ -757,7 +757,7 @@ INT CDECL ANDROID_ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
LPWSTR buf, int size, UINT flags, HKL hkl ) LPWSTR buf, int size, UINT flags, HKL hkl )
{ {
WCHAR buffer[2]; WCHAR buffer[2];
BOOL shift = (state[VK_SHIFT] & 0x80) || (state[VK_CAPITAL] & 0x01); BOOL shift = state[VK_SHIFT] & 0x80;
BOOL ctrl = state[VK_CONTROL] & 0x80; BOOL ctrl = state[VK_CONTROL] & 0x80;
BOOL numlock = state[VK_NUMLOCK] & 0x01; BOOL numlock = state[VK_NUMLOCK] & 0x01;
@ -798,7 +798,7 @@ INT CDECL ANDROID_ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
} }
if (virt >= 'A' && virt <= 'Z') if (virt >= 'A' && virt <= 'Z')
{ {
buffer[0] = shift ? virt : virt + 'a' - 'A'; buffer[0] = shift || (state[VK_CAPITAL] & 0x01) ? virt : virt + 'a' - 'A';
break; break;
} }
if (virt >= VK_NUMPAD0 && virt <= VK_NUMPAD9 && numlock && !shift) if (virt >= VK_NUMPAD0 && virt <= VK_NUMPAD9 && numlock && !shift)