c0a81478
by Byeong-Sik Jeon at 2025-04-09T12:22:54+02:00
win32u: Support WM_IME_KEYDOWN message during ImeProcessKey.
In Korean input, when ime is in the composition state, if a non-printable key
(ENTER, HOME, etc) is pressed, it returns a result_string and passes the key
to WinProc with the WM_IME_KEYDOWN message.
This can be seen in ‘imm32/test/imm32.c::test_ga_na_da()’.
In the current winemac.drv, if I select the “Korean 2-Set Keyboard” as the
input source and type ‘r-k-ENTER’, it only returns the result string ‘0xAC00’.
No WM_IME_KEYDOWN message is generated.
At this point, the WINE_IME_POST_UPDATE call occurs and macdrv_ImeProcessKey
returns FALSE. A FALSE return value means that the key has not been consumed
by ime and the key should be passed to the WinProc as a raw WM_KEYDOWN.
However, because the ime_update call have occurred, ImeProcessKey should return
TRUE and a raw WM_KEYDOWN message should be generated via a different path.
So a WM_IME_KEYDOWN message is required.
This patch allows the macdrv_ImeProcessKey return value to be passed to
ImeToAsciiEx() to determine if a WM_IME_KEYDOWN message should be generated.