19 HKL hOldKL, LayoutList[32], hFoundKL =
NULL;
20 UINT iLayout, nLayoutCount;
31 for (iLayout = 0; iLayout < nLayoutCount; ++iLayout)
33 if (LayoutList[iLayout] == hOldKL)
44 for (iLayout = 0; iLayout < nLayoutCount; ++iLayout)
46 if (bNowIME ==
ImmIsIME(LayoutList[iLayout]))
51 hFoundKL = LayoutList[iLayout];
57 if (hFoundKL && hKL != hFoundKL)
102 DWORD dwConversion, dwSentence;
133 DWORD dwConversion, dwSentence;
191 DWORD dwConversion, dwSentence;
214 DWORD dwConversion, dwSentence;
232 DWORD dwConversion, dwSentence;
292 WARN(
"0x%X\n", dwHotKeyID);
314 case WM_IME_STARTCOMPOSITION:
case WM_IME_ENDCOMPOSITION:
388 pSetBand->
fSet = fSet;
446 static const size_t acbData[7 * 2] =
460 ERR(
"Out of boundary\n");
464 dwSize = acbData[bAnsiAPI * 7 + dwCommand - 1];
478 ERR(
"Invalid pRS\n");
487 ERR(
"Invalid pRS\n");
509 if (bAnsiAPI == bAnsiWnd)
522 if (bAnsiAPI == bAnsiWnd || !
pData)
548 if (bAnsiAPI == bAnsiWnd)
585 WARN(
"0x%X\n", dwCommand);
597 if (bAnsiAPI == bAnsiWnd)
634 WARN(
"0x%X\n", dwCommand);
639 if (pTempData !=
pData)
695 TRACE(
"(0x%lX, %p, %p, %p)\n", dwHotKey, lpuModifiers, lpuVKey, lphKL);
696 if (lpuModifiers && lpuVKey)
706 TRACE(
"(%p)\n", hwndIme);
721 TRACE(
"(%p, 0x%lX)\n",
hWnd, dwHotKeyID);
783 TRACE(
"(%p, %p, 0x%X, %p, 0x%lX)\n",
hWnd, hKL, vKey,
lParam, dwHotKeyID);
792 if (
LOBYTE(vKey) == VK_PACKET &&
811 vk = (bLowWordOnly ?
LOWORD(vKey) : vKey);
812 if (pImeDpi->ImeProcessKey(hIMC,
vk,
lParam, KeyState))
820 else if (bSkipThisKey)
853 ret &= ~IPHK_PROCESSBYIME;
898 DWORD dwIndex, dwCount, cbTrans;
902 TRACE(
"(%p)\n", hIMC);
927 cbTrans = dwCount *
sizeof(
TRANSMSG);
934#ifdef IMM_WIN3_SUPPORT
944 dwCount = WINNLSTranslateMessage(dwCount, pTrans, hIMC, bAnsi, wLang);
952 for (dwIndex = 0; dwIndex < dwCount; ++dwIndex, ++pItem)
984#ifdef IMM_WIN3_SUPPORT
999 dwCount = WINNLSTranslateMessage(dwCount, pNewTransMsg, hIMC, bAnsi, Lang);
1003 pNewTransMsg = lpTransMsg;
1010 pItem = pNewTransMsg;
1011 for (dwIndex = 0; dwIndex < dwCount; ++dwIndex, ++pItem)
1019#ifdef IMM_WIN3_SUPPORT
1020 if (pNewTransMsg != lpTransMsg)
1031#define MSG_COUNT 0x100
1038 BYTE abKeyState[256];
1068 dwCount = pIC->dwNumMsgBuf;
1079 pIC->dwNumMsgBuf = 0;
1113 if ((
BYTE)
vk == VK_PACKET)
1134 kret = pImeDpi->ImeToAsciiEx(
vk,
HIWORD(lKeyData), abKeyState,
pList, 0, hIMC);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
LONG WINAPI ImmGetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
LONG WINAPI ImmGetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
BOOL WINAPI ImmIsIME(HKL hKL)
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
PIMEDPI WINAPI ImmLockImeDpi(HKL hKL)
VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
BOOL WINAPI ImmSetConversionStatus(HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
BOOL WINAPI ImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
HIMC WINAPI ImmGetContext(HWND hWnd)
VOID WINAPI ImmUnlockClientImc(PCLIENTIMC pClientImc)
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
PCLIENTIMC WINAPI ImmLockClientImc(HIMC hImc)
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
BOOL WINAPI ImmEnumInputContext(DWORD dwThreadId, IMCENUMPROC lpfn, LPARAM lParam)
VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
#define IS_ZERO_UNEXPECTEDLY(p)
LPVOID APIENTRY ImmLocalAlloc(DWORD dwFlags, DWORD dwBytes)
#define LANGID_CHINESE_SIMPLIFIED
VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
#define ValidateHwnd(hwnd)
#define ImmLocalFree(lpData)
#define IS_CROSS_THREAD_HIMC(hIMC)
PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
#define ValidateHwndNoErr(hwnd)
#define LANGID_CHINESE_TRADITIONAL
DWORD APIENTRY Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
#define INVALID_HOTKEY_ID
#define IS_NULL_UNEXPECTEDLY(p)
#define ImeDpi_IsUnicode(pImeDpi)
LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
DWORD APIENTRY Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
BOOL NTAPI IsBadWritePtr(IN LPVOID lp, IN UINT_PTR ucb)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
struct _tagTRANSMSG TRANSMSG
#define IME_HOTKEY_PRIVATE_LAST
#define IME_JHOTKEY_CLOSE_OPEN
#define IME_KHOTKEY_HANJACONVERT
struct tagRECONVERTSTRING RECONVERTSTRING
#define IME_CMODE_HANJACONVERT
#define IME_THOTKEY_IME_NONIME_TOGGLE
#define IME_CHOTKEY_SYMBOL_TOGGLE
#define NI_COMPOSITIONSTR
#define IMR_RECONVERTSTRING
#define IME_CHOTKEY_IME_NONIME_TOGGLE
#define IMN_SETSENTENCEMODE
#define IME_ESC_PRIVATE_HOTKEY
#define IME_PROP_ACCEPT_WIDE_VKEY
#define IME_KHOTKEY_SHAPE_TOGGLE
struct tagIMECHARPOSITION IMECHARPOSITION
#define IME_THOTKEY_SHAPE_TOGGLE
#define IME_HOTKEY_PRIVATE_FIRST
#define IMR_CONFIRMRECONVERTSTRING
#define IMR_QUERYCHARPOSITION
#define IME_KHOTKEY_ENGLISH
#define IMN_SETOPENSTATUS
#define IME_PROP_KBD_CHAR_FIRST
#define IME_CMODE_FULLSHAPE
#define IME_THOTKEY_SYMBOL_TOGGLE
#define IMR_COMPOSITIONFONT
#define IME_CHOTKEY_SHAPE_TOGGLE
#define IMN_SETCONVERSIONMODE
#define INPUTCONTEXTDX_CHANGE_OPEN
#define INPUTCONTEXTDX_CHANGE_SENTENCE
#define IMS_COMPLETECOMPSTR
#define IMS_UNSETLANGBAND
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
#define INPUTCONTEXTDX_CHANGE_CONVERSION
#define IMS_SENDNOTIFICATION
DWORD NTAPI NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion)
DWORD NTAPI NtUserGetAppImeLevel(HWND hWnd)
@ THREADSTATE_OLDKEYBOARDLAYOUT
#define WNDS2_WMCREATEMSGPROCESSED
BOOL NTAPI NtUserGetImeHotKey(DWORD dwHotKeyId, LPUINT lpuModifiers, LPUINT lpuVirtualKey, LPHKL lphKL)
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
#define GetWin32ClientInfo()
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
#define QUERY_WINDOW_DEFAULT_IME
#define WNDS_ANSIWINDOWPROC
BOOL WINAPI ImmTranslateMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lKeyData)
static BOOL APIENTRY ImmIsUIMessageAW(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam, BOOL bAnsi)
LRESULT APIENTRY ImmRequestMessageAW(HIMC hIMC, WPARAM wParam, LPARAM lParam, BOOL bAnsi)
static DWORD APIENTRY Imm32DelaySetLangBandProc(LPVOID arg)
LRESULT WINAPI ImmRequestMessageW(HIMC hIMC, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY Imm32JCloseOpen(HIMC hIMC, HKL hKL, HWND hWnd)
BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
BOOL WINAPI ImmGetHotKey(IN DWORD dwHotKey, OUT LPUINT lpuModifiers, OUT LPUINT lpuVKey, OUT LPHKL lphKL)
static BOOL CALLBACK Imm32SendNotificationProc(HIMC hIMC, LPARAM lParam)
DWORD WINAPI ImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID)
UINT WINAPI ImmGetVirtualKey(HWND hWnd)
BOOL APIENTRY Imm32CSymbolToggle(HIMC hIMC, HKL hKL, HWND hWnd)
UINT WINAPI ImmWINNLSGetIMEHotkey(HWND hwndIme)
BOOL APIENTRY Imm32ImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, BOOL bNowIME, LANGID LangID)
LRESULT WINAPI ImmSystemHandler(HIMC hIMC, WPARAM wParam, LPARAM lParam)
BOOL WINAPI ImmIsUIMessageW(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
VOID APIENTRY ImmPostMessages(HWND hwnd, HIMC hIMC, DWORD dwCount, LPTRANSMSG lpTransMsg)
DWORD WINAPI ImmGetAppCompatFlags(HIMC hIMC)
BOOL APIENTRY Imm32CShapeToggle(HIMC hIMC, HKL hKL, HWND hWnd)
BOOL APIENTRY Imm32ProcessHotKey(HWND hWnd, HIMC hIMC, HKL hKL, DWORD dwHotKeyID)
LRESULT WINAPI ImmSendMessageToActiveDefImeWndW(UINT uMsg, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY Imm32KEnglish(HIMC hIMC)
BOOL APIENTRY Imm32SendNotification(BOOL bProcess)
BOOL WINAPI ImmIsUIMessageA(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
LRESULT WINAPI ImmRequestMessageA(HIMC hIMC, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY Imm32KShapeToggle(HIMC hIMC)
BOOL APIENTRY Imm32CImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, LANGID LangID)
struct IMM_DELAY_SET_LANG_BAND * PIMM_DELAY_SET_LANG_BAND
LRESULT APIENTRY Imm32ProcessRequest(HIMC hIMC, PWND pWnd, DWORD dwCommand, LPVOID pData, BOOL bAnsiAPI)
BOOL APIENTRY Imm32KHanjaConvert(HIMC hIMC)
LRESULT APIENTRY CtfImmSetLangBand(HWND hWnd, BOOL fSet)
BOOL WINAPI ImmSimulateHotKey(HWND hWnd, DWORD dwHotKeyID)
LCID WINAPI GetSystemDefaultLCID(void)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define UNREFERENCED_PARAMETER(P)
#define offsetof(TYPE, MEMBER)
#define LANGIDFROMLCID(l)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define RtlCopyMemory(Destination, Source, Length)
#define IPHK_PROCESSBYIME
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
BOOL WINAPI IsWindow(_In_opt_ HWND)
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI ToUnicode(_In_ UINT wVirtKey, _In_ UINT wScanCode, _In_reads_bytes_opt_(256) CONST BYTE *lpKeyState, _Out_writes_(cchBuff) LPWSTR pwszBuff, _In_ int cchBuff, _In_ UINT wFlags)
_Check_return_ BOOL WINAPI GetKeyboardState(_Out_writes_(256) PBYTE lpKeyState)
LRESULT WINAPI SendMessageTimeoutW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM, _In_ UINT, _In_ UINT, _Out_opt_ PDWORD_PTR)
#define WM_IME_SETCONTEXT
UINT WINAPI GetKeyboardLayoutList(_In_ int nBuff, _Out_writes_to_opt_(nBuff, return) HKL FAR *lpList)
#define WM_IME_COMPOSITIONFULL
int WINAPI ToAsciiEx(_In_ UINT, _In_ UINT, _In_reads_opt_(256) CONST BYTE *, _Out_ LPWORD, _In_ UINT, _In_opt_ HKL)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)