mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-30 05:08:30 +00:00
conhost: Handle WM_CHAR for window console.
This lets some characters (like diacritics, generated by two keys, (eg. circumflex-e on a French keyboard layout)) have usable key-down INPUT_RECORD. Signed-off-by: Eric Pouech <epouech@codeweavers.com>
This commit is contained in:
parent
35de72453c
commit
b85c6f5bbb
|
@ -1237,6 +1237,25 @@ static void record_key_input( struct console *console, BOOL down, WPARAM wparam,
|
|||
write_console_input( console, &ir, 1, TRUE );
|
||||
}
|
||||
|
||||
/* generate input_record from WM_CHAR message. */
|
||||
static void record_char_input( struct console *console, WCHAR ch, LPARAM lparam )
|
||||
{
|
||||
INPUT_RECORD ir;
|
||||
SHORT sh = VkKeyScanW( ch );
|
||||
|
||||
if (sh == ~0) return;
|
||||
ir.EventType = KEY_EVENT;
|
||||
ir.Event.KeyEvent.bKeyDown = TRUE;
|
||||
ir.Event.KeyEvent.wRepeatCount = 0;
|
||||
ir.Event.KeyEvent.wVirtualKeyCode = LOBYTE(sh);
|
||||
ir.Event.KeyEvent.wVirtualScanCode = MapVirtualKeyW( LOBYTE(sh), 0 );
|
||||
ir.Event.KeyEvent.uChar.UnicodeChar = ch;
|
||||
ir.Event.KeyEvent.dwControlKeyState = 0;
|
||||
if (lparam & (1u << 24)) ir.Event.KeyEvent.dwControlKeyState |= ENHANCED_KEY;
|
||||
|
||||
write_console_input( console, &ir, 1, TRUE );
|
||||
}
|
||||
|
||||
static void record_mouse_input( struct console *console, COORD c, WPARAM wparam, DWORD event )
|
||||
{
|
||||
BYTE key_state[256];
|
||||
|
@ -2124,6 +2143,13 @@ static LRESULT WINAPI window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp
|
|||
record_key_input( console, msg == WM_SYSKEYDOWN, wparam, lparam );
|
||||
break;
|
||||
|
||||
case WM_CHAR:
|
||||
if (console->window && console->window->in_selection)
|
||||
handle_selection_key( console, TRUE, LOBYTE( VkKeyScanW( (WCHAR)wparam ) ), lparam );
|
||||
else
|
||||
record_char_input( console, (WCHAR)wparam, lparam );
|
||||
break;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
if (console->window && (console->window->quick_edit || console->window->in_selection))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue