mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 14:34:57 +08: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:
committed by
GitHub
parent
ce73ba4426
commit
61fb4db34c
@@ -162,24 +162,6 @@ C_ASSERT(sizeof(INPUTCONTEXT) == 0x140);
|
||||
#define INPUTCONTEXTDX_CHANGE_SENTENCE 0x4
|
||||
#define INPUTCONTEXTDX_CHANGE_FORCE_OPEN 0x100
|
||||
|
||||
#ifndef WM_IME_REPORT
|
||||
#define WM_IME_REPORT 0x280
|
||||
#endif
|
||||
|
||||
/* WM_IME_REPORT wParam */
|
||||
#define IR_STRINGSTART 0x100
|
||||
#define IR_STRINGEND 0x101
|
||||
#define IR_OPENCONVERT 0x120
|
||||
#define IR_CHANGECONVERT 0x121
|
||||
#define IR_CLOSECONVERT 0x122
|
||||
#define IR_FULLCONVERT 0x123
|
||||
#define IR_IMESELECT 0x130
|
||||
#define IR_STRING 0x140
|
||||
#define IR_DBCSCHAR 0x160
|
||||
#define IR_UNDETERMINE 0x170
|
||||
#define IR_STRINGEX 0x180
|
||||
#define IR_MODEINFO 0x190
|
||||
|
||||
/* IMC */
|
||||
|
||||
LPINPUTCONTEXT WINAPI ImmLockIMC(_In_ HIMC hIMC);
|
||||
|
||||
@@ -236,25 +236,6 @@ typedef struct IME_STATE
|
||||
C_ASSERT(sizeof(IME_STATE) == 0x18);
|
||||
#endif
|
||||
|
||||
/* for WM_IME_REPORT IR_UNDETERMINE */
|
||||
typedef struct tagUNDETERMINESTRUCT
|
||||
{
|
||||
DWORD dwSize;
|
||||
UINT uDefIMESize;
|
||||
UINT uDefIMEPos;
|
||||
UINT uUndetTextLen;
|
||||
UINT uUndetTextPos;
|
||||
UINT uUndetAttrPos;
|
||||
UINT uCursorPos;
|
||||
UINT uDeltaStart;
|
||||
UINT uDetermineTextLen;
|
||||
UINT uDetermineTextPos;
|
||||
UINT uDetermineDelimPos;
|
||||
UINT uYomiTextLen;
|
||||
UINT uYomiTextPos;
|
||||
UINT uYomiDelimPos;
|
||||
} UNDETERMINESTRUCT, *PUNDETERMINESTRUCT, *LPUNDETERMINESTRUCT;
|
||||
|
||||
UINT WINAPI GetKeyboardLayoutCP(_In_ LANGID wLangId);
|
||||
|
||||
BOOL WINAPI
|
||||
@@ -316,12 +297,12 @@ BOOL WINAPI ImmIMPQueryIMEW(_Inout_ LPIMEPROW pImePro);
|
||||
BOOL WINAPI ImmIMPSetIMEA(_In_opt_ HWND hWnd, _Inout_ LPIMEPROA pImePro);
|
||||
BOOL WINAPI ImmIMPSetIMEW(_In_opt_ HWND hWnd, _Inout_ LPIMEPROW pImePro);
|
||||
|
||||
WORD WINAPI
|
||||
LRESULT WINAPI
|
||||
ImmSendIMEMessageExA(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam);
|
||||
|
||||
WORD WINAPI
|
||||
LRESULT WINAPI
|
||||
ImmSendIMEMessageExW(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam);
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
/*
|
||||
* PROJECT: ReactOS header
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: The special virtual keys for Japanese
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* The special virtual keys for Japanese: Used for key states.
|
||||
* https://www.kthree.co.jp/kihelp/index.html?page=app/vkey&type=html
|
||||
*/
|
||||
#define VK_DBE_ALPHANUMERIC 0xF0
|
||||
#define VK_DBE_KATAKANA 0xF1
|
||||
#define VK_DBE_HIRAGANA 0xF2
|
||||
#define VK_DBE_SBCSCHAR 0xF3
|
||||
#define VK_DBE_DBCSCHAR 0xF4
|
||||
#define VK_DBE_ROMAN 0xF5
|
||||
#define VK_DBE_NOROMAN 0xF6
|
||||
#define VK_DBE_ENTERWORDREGISTERMODE 0xF7
|
||||
#define VK_DBE_ENTERCONFIGMODE 0xF8
|
||||
#define VK_DBE_FLUSHSTRING 0xF9
|
||||
#define VK_DBE_CODEINPUT 0xFA
|
||||
#define VK_DBE_NOCODEINPUT 0xFB
|
||||
#define VK_DBE_DETERINESTRING 0xFC
|
||||
#define VK_DBE_ENTERDLGCONVERSIONMODE 0xFD
|
||||
@@ -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 <james.tabor@reactos.org>
|
||||
* Copyright 2018 Amine Khaldi <amine.khaldi@reactos.org>
|
||||
* Copyright 2020-2025 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
* Copyright 2020-2026 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#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 <katayama.hirofumi.mz@gmail.com>
|
||||
* COPYRIGHT: Copyright 2020-2026 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#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
|
||||
}
|
||||
|
||||
82
win32ss/user/imm32/win3send.c
Normal file
82
win32ss/user/imm32/win3send.c
Normal file
@@ -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 <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#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