I missed a system input method that we should exclude when looking for IMEs - the emoji Touch Bar.
Also the mask applied to keyboard scan codes seems to result in some mismatched events and out-of-order input.
From: Tim Clem tclem@codeweavers.com
Fixes weird keyboard behavior on MacBooks with the Touch Bar. --- dlls/winemac.drv/cocoa_app.m | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index de3a23a5d2d..f6a9cd145ea 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -2075,6 +2075,8 @@ Dictation is its own source too (com.apple.inputmethod.ironwood), but CFSTR("com.apple.inputmethod.AssistiveControl"), /* The popup for accented characters when you hold down a key. */ CFSTR("com.apple.PressAndHold"), + /* Emoji list on MacBooks with the Touch Bar. */ + CFSTR("com.apple.inputmethod.EmojiFunctionRowItem"), };
CFStringRef sourceID = TISGetInputSourceProperty(inputSource, kTISPropertyInputSourceID);
From: Tim Clem tclem@codeweavers.com
Fixes missed key up events on older macOS versions, which could result in out-of-order input.
Fix via Rémi Bernon rbernon@codeweavers.com. --- dlls/win32u/imm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/win32u/imm.c b/dlls/win32u/imm.c index d1dc1de8c55..4a9aca22360 100644 --- a/dlls/win32u/imm.c +++ b/dlls/win32u/imm.c @@ -583,7 +583,7 @@ LRESULT ime_driver_call( HWND hwnd, enum wine_ime_call call, WPARAM wparam, LPAR { struct imm_thread_data *data = get_imm_thread_data();
- data->ime_process_scan = HIWORD(lparam) & 0x1ff; + data->ime_process_scan = HIWORD(lparam); data->ime_process_vkey = LOWORD(wparam); res = user_driver->pImeProcessKey( params->himc, wparam, lparam, params->state ); data->ime_process_vkey = data->ime_process_scan = 0; @@ -597,7 +597,7 @@ LRESULT ime_driver_call( HWND hwnd, enum wine_ime_call call, WPARAM wparam, LPAR res = TRUE; }
- TRACE( "processing scan %#x, vkey %#x -> %u\n", LOWORD(wparam), HIWORD(lparam) & 0x1ff, (UINT)res ); + TRACE( "processing scan %#x, vkey %#x -> %u\n", LOWORD(wparam), HIWORD(lparam), (UINT)res ); return res; } case WINE_IME_TO_ASCII_EX:
This merge request was approved by Rémi Bernon.