mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
[SDK][IMM32][NTUSER] Delete <jpnvkeys.h> and use <wine/ime.h> instead (#8847)
Follow-up of #8846. Now <jpnvkeys.h> is useless. Minor refactoring and standardation. JIRA issue: CORE-19268 - Replace <jpnvkeys.h> usage with <wine/ime.h> and fix VK_DBE_ENTERIMECONFIGMODE naming. - Remove duplicated WM_IME_REPORT/IR_* and UNDETERMINESTRUCT definitions now provided by wine/ime.h. - Introduce win3send.c half- implementing ImmSendIMEMessageExA/W. - Add CMake option IMM_WIN3_SUPPORT (default: ON).
This commit is contained in:
@@ -20,6 +20,7 @@ list(APPEND SOURCE
|
||||
softkbd.c
|
||||
utils.c
|
||||
win3.c
|
||||
win3send.c
|
||||
${CMAKE_CURRENT_BINARY_DIR}/imm32_stubs.c
|
||||
${CMAKE_CURRENT_BINARY_DIR}/imm32.def)
|
||||
|
||||
@@ -31,3 +32,8 @@ set_module_type(imm32 win32dll UNICODE ENTRYPOINT ImmDllInitialize 12)
|
||||
target_link_libraries(imm32 wine win32ksys uuid)
|
||||
add_importlibs(imm32 advapi32 user32 gdi32 kernel32 ntdll)
|
||||
add_cd_file(TARGET imm32 DESTINATION reactos/system32 FOR all)
|
||||
|
||||
option(IMM_WIN3_SUPPORT "IMM Win 3.x support" ON)
|
||||
if(IMM_WIN3_SUPPORT)
|
||||
target_compile_definitions(imm32 PRIVATE IMM_WIN3_SUPPORT)
|
||||
endif()
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
* Copyright 2002, 2003, 2007 CodeWeavers, Aric Stewart
|
||||
* Copyright 2017 James Tabor <[email protected]>
|
||||
* Copyright 2018 Amine Khaldi <[email protected]>
|
||||
* Copyright 2020-2025 Katayama Hirofumi MZ <[email protected]>
|
||||
* Copyright 2020-2026 Katayama Hirofumi MZ <[email protected]>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include <wine/ime.h>
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imm);
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include <jpnvkeys.h>
|
||||
#include <wine/ime.h>
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imm);
|
||||
|
||||
@@ -1245,7 +1245,7 @@ ImmCallImeConsoleIME(
|
||||
case VK_DBE_CODEINPUT:
|
||||
case VK_DBE_NOCODEINPUT:
|
||||
case VK_DBE_ENTERWORDREGISTERMODE:
|
||||
case VK_DBE_ENTERCONFIGMODE:
|
||||
case VK_DBE_ENTERIMECONFIGMODE:
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -187,3 +187,6 @@ LRESULT
|
||||
CtfImmSetLangBand(
|
||||
_In_ HWND hWnd,
|
||||
_In_ BOOL fSet);
|
||||
|
||||
DWORD
|
||||
WINNLSTranslateMessage(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi, WORD wLang);
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
* PROJECT: ReactOS IMM32
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Implementing IMM32 Win3.x compatibility
|
||||
* COPYRIGHT: Copyright 2020-2021 Katayama Hirofumi MZ <[email protected]>
|
||||
* COPYRIGHT: Copyright 2020-2026 Katayama Hirofumi MZ <[email protected]>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include <wine/ime.h>
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imm);
|
||||
|
||||
@@ -178,10 +179,14 @@ WINNLSTranslateMessageK(DWORD dwCount, LPTRANSMSG pEntries, LPINPUTCONTEXTDX pIC
|
||||
return dwCount;
|
||||
}
|
||||
|
||||
#endif /* def IMM_WIN3_SUPPORT */
|
||||
|
||||
/* This function is used in ImmGenerateMessage and ImmTranslateMessage */
|
||||
DWORD
|
||||
WINNLSTranslateMessage(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi, WORD wLang)
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
#ifdef IMM_WIN3_SUPPORT
|
||||
DWORD ret = 0;
|
||||
LPINPUTCONTEXTDX pIC;
|
||||
LPCOMPOSITIONSTRING pCS;
|
||||
|
||||
@@ -204,30 +209,7 @@ WINNLSTranslateMessage(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi
|
||||
ImmUnlockIMCC(pIC->hCompStr);
|
||||
ImmUnlockIMC(hIMC);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* IMM_WIN3_SUPPORT */
|
||||
|
||||
/***********************************************************************
|
||||
* ImmSendIMEMessageExA(IMM32.@)
|
||||
*/
|
||||
WORD WINAPI
|
||||
ImmSendIMEMessageExA(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
FIXME("(%p, %p)\n", hWnd, lParam);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImmSendIMEMessageExW(IMM32.@)
|
||||
*/
|
||||
WORD WINAPI
|
||||
ImmSendIMEMessageExW(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
FIXME("(%p, %p)\n", hWnd, lParam);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* PROJECT: ReactOS IMM32
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Implementing ImmSendIMEMessageExA/W
|
||||
* COPYRIGHT: Copyright 2020-2026 Katayama Hirofumi MZ <[email protected]>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include <wine/ime.h>
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imm);
|
||||
|
||||
#ifdef IMM_WIN3_SUPPORT /* 3.x support */
|
||||
|
||||
static DWORD Imm32TranslateIMESubFunctions(HWND hWnd, PIMESTRUCT pIme, BOOL bAnsi)
|
||||
{
|
||||
FIXME("(%p, %p, %d)\n", hWnd, pIme, bAnsi);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT Imm32SendIMEMessageExAW(HWND hWnd, HGLOBAL hIME, BOOL bAnsi)
|
||||
{
|
||||
PIMESTRUCT pIme = GlobalLock(hIME);
|
||||
if (!pIme)
|
||||
return 0;
|
||||
|
||||
LRESULT ret;
|
||||
HKL hKL = GetKeyboardLayout(0);
|
||||
if (Imm32IsSystemJapaneseOrKorean() && ImmIsIME(hKL))
|
||||
{
|
||||
HWND hwndIme = ImmGetDefaultIMEWnd(hWnd);
|
||||
if (IsWindow(hwndIme))
|
||||
{
|
||||
HWND hTargetWnd = IsWindow(hWnd) ? hWnd : GetFocus();
|
||||
ret = Imm32TranslateIMESubFunctions(hTargetWnd, pIme, bAnsi);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = (pIme->fnc == IME_GETVERSION) ? IME_RS_INVALID : IME_RS_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pIme->wParam = IME_RS_INVALID;
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
GlobalUnlock(hIME);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* def IMM_WIN3_SUPPORT */
|
||||
|
||||
/***********************************************************************
|
||||
* ImmSendIMEMessageExA(IMM32.@)
|
||||
*/
|
||||
LRESULT WINAPI
|
||||
ImmSendIMEMessageExA(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
#ifdef IMM_WIN3_SUPPORT
|
||||
return Imm32SendIMEMessageExAW(hWnd, (HGLOBAL)lParam, TRUE);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImmSendIMEMessageExW(IMM32.@)
|
||||
*/
|
||||
LRESULT WINAPI
|
||||
ImmSendIMEMessageExW(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
#ifdef IMM_WIN3_SUPPORT
|
||||
return Imm32SendIMEMessageExAW(hWnd, (HGLOBAL)lParam, FALSE);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
#include <win32k.h>
|
||||
#include <jpnvkeys.h>
|
||||
#include <wine/ime.h>
|
||||
#include <cjkcode.h>
|
||||
|
||||
DBG_DEFAULT_CHANNEL(UserMisc);
|
||||
@@ -690,7 +690,7 @@ IntImmProcessKey(
|
||||
switch (uVirtualKey)
|
||||
{
|
||||
case VK_DBE_CODEINPUT:
|
||||
case VK_DBE_ENTERCONFIGMODE:
|
||||
case VK_DBE_ENTERIMECONFIGMODE:
|
||||
case VK_DBE_ENTERWORDREGISTERMODE:
|
||||
case VK_DBE_HIRAGANA:
|
||||
case VK_DBE_KATAKANA:
|
||||
|
||||
Reference in New Issue
Block a user