ReactOS
0.4.16-dev-2332-g4cba65d
conime.h
Go to the documentation of this file.
1
/*
2
* PROJECT: ReactOS Console IME
3
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4
* PURPOSE: Implementing Console IME Input for Far-East Asian
5
* COPYRIGHT: Copyright 2026 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6
*/
7
8
#pragma once
9
10
#define WM_USER_INIT (WM_USER + 0x00)
// 0x400
11
#define WM_USER_UNINIT (WM_USER + 0x01)
// 0x401
12
#define WM_USER_SWITCHIME (WM_USER + 0x02)
// 0x402
13
#define WM_USER_DEACTIVATE (WM_USER + 0x03)
// 0x403
14
#define WM_USER_SIMHOTKEY (WM_USER + 0x04)
// 0x404
15
#define WM_USER_GETIMESTATE (WM_USER + 0x05)
// 0x405
16
#define WM_USER_SETIMESTATE (WM_USER + 0x06)
// 0x406
17
#define WM_USER_SETSCREENSIZE (WM_USER + 0x07)
// 0x407
18
#define WM_USER_SENDIMESTATUS (WM_USER + 0x08)
// 0x408
19
#define WM_USER_CHANGEKEYBOARD (WM_USER + 0x09)
// 0x409
20
#define WM_USER_SETCODEPAGE (WM_USER + 0x0A)
// 0x40A
21
#define WM_USER_GO (WM_USER + 0x0B)
// 0x40B
22
#define WM_USER_GONEXT (WM_USER + 0x0C)
// 0x40C
23
#define WM_USER_GOBACK (WM_USER + 0x0D)
// 0x40D
24
25
#define WM_ROUTE 0x800
26
#define WM_ROUTE_KEYDOWN (WM_KEYDOWN + WM_ROUTE)
// 0x900
27
#define WM_ROUTE_KEYUP (WM_KEYUP + WM_ROUTE)
// 0x901
28
#define WM_ROUTE_CHAR (WM_CHAR + WM_ROUTE)
// 0x902
29
#define WM_ROUTE_DEADCHAR (WM_DEADCHAR + WM_ROUTE)
// 0x903
30
#define WM_ROUTE_SYSKEYDOWN (WM_SYSKEYDOWN + WM_ROUTE)
// 0x904
31
#define WM_ROUTE_SYSKEYUP (WM_SYSKEYUP + WM_ROUTE)
// 0x905
32
#define WM_ROUTE_SYSCHAR (WM_SYSCHAR + WM_ROUTE)
// 0x906
33
#define WM_ROUTE_SYSDEADCHAR (WM_SYSDEADCHAR + WM_ROUTE)
// 0x907
34
35
#define _GCS_SINGLECHAR 0x2000
36
37
#define IMEDISPLAY_MAX_X 160
38
39
// IME display-related
40
typedef
struct
tagIMEDISPLAY
41
{
42
UINT
uCharInfoLen
;
43
BOOL
bFlag
;
44
CHAR_INFO
CharInfo
[
IMEDISPLAY_MAX_X
];
45
}
IMEDISPLAY
, *
PIMEDISPLAY
;
46
47
// Keyboard layout info
48
typedef
struct
tagKLINFO
49
{
50
HKL
hKL
;
51
DWORD
dwConversion
;
52
}
KLINFO
, *
PKLINFO
;
53
54
// Flags for KLINFO.dwConversion
55
#define _IME_CMODE_OPEN 0x20000000
56
#define _IME_CMODE_DEACTIVATE 0x40000000
57
#define _IME_CMODE_MASK (_IME_CMODE_OPEN | _IME_CMODE_DEACTIVATE)
58
59
#define MAX_CANDLIST 32
60
#define MAX_ATTR_COLORS 8
61
62
// IME composition string info
63
typedef
struct
tagCOMPSTRINFO
64
{
65
DWORD
dwSize
;
66
DWORD
dwCompAttrLen
;
67
DWORD
dwCompAttrOffset
;
68
DWORD
dwCompStrLen
;
69
DWORD
dwCompStrOffset
;
70
DWORD
dwResultStrLen
;
71
DWORD
dwResultStrOffset
;
72
WORD
awAttrColor
[
MAX_ATTR_COLORS
];
73
}
COMPSTRINFO
, *
PCOMPSTRINFO
;
74
75
// IME candidate info
76
typedef
struct
tagCANDINFO
77
{
78
DWORD
dwAttrsOffset
;
79
WCHAR
szCandStr
[
ANYSIZE_ARRAY
];
80
}
CANDINFO
, *
PCANDINFO
;
81
82
// Console entry
83
typedef
struct
tagCONENTRY
84
{
85
HANDLE
hConsole
;
86
HWND
hwndConsole
;
87
COORD
ScreenSize
;
88
HKL
hKL
;
89
HIMC
hOldIMC
;
90
HIMC
hNewIMC
;
91
BOOL
bOpened
;
92
DWORD
dwConversion
;
93
DWORD
dwSentence
;
94
WORD
nCodePage
;
95
WORD
nOutputCodePage
;
96
WCHAR
szLayoutText
[256];
97
WCHAR
szMode
[10];
98
BOOL
bInComposition
;
99
PCOMPSTRINFO
pCompStr
;
100
WORD
awAttrColor
[
MAX_ATTR_COLORS
];
// See COMPSTRINFO.awAttrColor
101
BOOL
bHasAnyCand
;
102
PCANDIDATELIST
apCandList
[
MAX_CANDLIST
];
// See acbCandList below
103
PCANDINFO
pCandInfo
;
104
DWORD
dwSystemLineSize
;
105
DWORD
acbCandList
[
MAX_CANDLIST
];
// See apCandList above
106
DWORD
dwCandOffset
;
107
DWORD
dwCandIndexMax
;
108
PDWORD
pdwCandPageStart
;
109
DWORD
cbCandPageData
;
110
BOOL
bSkipPageMsg
;
111
DWORD
dwImeProp
;
112
BOOL
bConsoleEnabled
;
113
BOOL
bWndEnabled
;
114
INT
cKLs
;
115
PKLINFO
pKLInfo
;
116
}
CONENTRY
, *
PCONENTRY
;
IMEDISPLAY_MAX_X
#define IMEDISPLAY_MAX_X
Definition:
conime.h:37
IMEDISPLAY
struct tagIMEDISPLAY IMEDISPLAY
COMPSTRINFO
struct tagCOMPSTRINFO COMPSTRINFO
KLINFO
struct tagKLINFO KLINFO
MAX_CANDLIST
#define MAX_CANDLIST
Definition:
conime.h:59
CANDINFO
struct tagCANDINFO CANDINFO
PCONENTRY
struct tagCONENTRY * PCONENTRY
PCANDINFO
struct tagCANDINFO * PCANDINFO
PCOMPSTRINFO
struct tagCOMPSTRINFO * PCOMPSTRINFO
MAX_ATTR_COLORS
#define MAX_ATTR_COLORS
Definition:
conime.h:60
PIMEDISPLAY
struct tagIMEDISPLAY * PIMEDISPLAY
PKLINFO
struct tagKLINFO * PKLINFO
CONENTRY
struct tagCONENTRY CONENTRY
HIMC
DWORD HIMC
Definition:
dimm.idl:75
WORD
unsigned short WORD
Definition:
ntddk_ex.h:93
BOOL
unsigned int BOOL
Definition:
ntddk_ex.h:94
DWORD
unsigned long DWORD
Definition:
ntddk_ex.h:95
void
Definition:
nsiface.idl:2307
HKL
UINT_PTR HKL
Definition:
msctf.idl:125
UINT
unsigned int UINT
Definition:
ndis.h:50
PDWORD
DWORD * PDWORD
Definition:
pedump.c:68
_CHAR_INFO
Definition:
wincon.h:212
tagCANDIDATELIST
Definition:
imm.h:56
tagCANDINFO
Definition:
conime.h:77
tagCANDINFO::szCandStr
WCHAR szCandStr[ANYSIZE_ARRAY]
Definition:
conime.h:79
tagCANDINFO::dwAttrsOffset
DWORD dwAttrsOffset
Definition:
conime.h:78
tagCOMPSTRINFO
Definition:
conime.h:64
tagCOMPSTRINFO::awAttrColor
WORD awAttrColor[MAX_ATTR_COLORS]
Definition:
conime.h:72
tagCOMPSTRINFO::dwCompStrLen
DWORD dwCompStrLen
Definition:
conime.h:68
tagCOMPSTRINFO::dwSize
DWORD dwSize
Definition:
conime.h:65
tagCOMPSTRINFO::dwCompStrOffset
DWORD dwCompStrOffset
Definition:
conime.h:69
tagCOMPSTRINFO::dwCompAttrLen
DWORD dwCompAttrLen
Definition:
conime.h:66
tagCOMPSTRINFO::dwCompAttrOffset
DWORD dwCompAttrOffset
Definition:
conime.h:67
tagCOMPSTRINFO::dwResultStrOffset
DWORD dwResultStrOffset
Definition:
conime.h:71
tagCOMPSTRINFO::dwResultStrLen
DWORD dwResultStrLen
Definition:
conime.h:70
tagCONENTRY
Definition:
conime.h:84
tagCONENTRY::bConsoleEnabled
BOOL bConsoleEnabled
Definition:
conime.h:112
tagCONENTRY::acbCandList
DWORD acbCandList[MAX_CANDLIST]
Definition:
conime.h:105
tagCONENTRY::dwSystemLineSize
DWORD dwSystemLineSize
Definition:
conime.h:104
tagCONENTRY::bInComposition
BOOL bInComposition
Definition:
conime.h:98
tagCONENTRY::dwCandIndexMax
DWORD dwCandIndexMax
Definition:
conime.h:107
tagCONENTRY::pCandInfo
PCANDINFO pCandInfo
Definition:
conime.h:103
tagCONENTRY::apCandList
PCANDIDATELIST apCandList[MAX_CANDLIST]
Definition:
conime.h:102
tagCONENTRY::bOpened
BOOL bOpened
Definition:
conime.h:91
tagCONENTRY::bWndEnabled
BOOL bWndEnabled
Definition:
conime.h:113
tagCONENTRY::nCodePage
WORD nCodePage
Definition:
conime.h:94
tagCONENTRY::nOutputCodePage
WORD nOutputCodePage
Definition:
conime.h:95
tagCONENTRY::ScreenSize
COORD ScreenSize
Definition:
conime.h:87
tagCONENTRY::hConsole
HANDLE hConsole
Definition:
conime.h:85
tagCONENTRY::pCompStr
PCOMPSTRINFO pCompStr
Definition:
conime.h:99
tagCONENTRY::dwConversion
DWORD dwConversion
Definition:
conime.h:92
tagCONENTRY::bHasAnyCand
BOOL bHasAnyCand
Definition:
conime.h:101
tagCONENTRY::pdwCandPageStart
PDWORD pdwCandPageStart
Definition:
conime.h:108
tagCONENTRY::pKLInfo
PKLINFO pKLInfo
Definition:
conime.h:115
tagCONENTRY::hwndConsole
HWND hwndConsole
Definition:
conime.h:86
tagCONENTRY::hNewIMC
HIMC hNewIMC
Definition:
conime.h:90
tagCONENTRY::cKLs
INT cKLs
Definition:
conime.h:114
tagCONENTRY::cbCandPageData
DWORD cbCandPageData
Definition:
conime.h:109
tagCONENTRY::dwCandOffset
DWORD dwCandOffset
Definition:
conime.h:106
tagCONENTRY::hKL
HKL hKL
Definition:
conime.h:88
tagCONENTRY::dwSentence
DWORD dwSentence
Definition:
conime.h:93
tagCONENTRY::bSkipPageMsg
BOOL bSkipPageMsg
Definition:
conime.h:110
tagCONENTRY::hOldIMC
HIMC hOldIMC
Definition:
conime.h:89
tagCONENTRY::dwImeProp
DWORD dwImeProp
Definition:
conime.h:111
tagCONENTRY::szMode
WCHAR szMode[10]
Definition:
conime.h:97
tagCONENTRY::awAttrColor
WORD awAttrColor[MAX_ATTR_COLORS]
Definition:
conime.h:100
tagCONENTRY::szLayoutText
WCHAR szLayoutText[256]
Definition:
conime.h:96
tagCOORD
Definition:
blue.h:25
tagIMEDISPLAY
Definition:
conime.h:41
tagIMEDISPLAY::uCharInfoLen
UINT uCharInfoLen
Definition:
conime.h:42
tagIMEDISPLAY::CharInfo
CHAR_INFO CharInfo[IMEDISPLAY_MAX_X]
Definition:
conime.h:44
tagIMEDISPLAY::bFlag
BOOL bFlag
Definition:
conime.h:43
tagKLINFO
Definition:
conime.h:49
tagKLINFO::dwConversion
DWORD dwConversion
Definition:
conime.h:51
tagKLINFO::hKL
HKL hKL
Definition:
conime.h:50
ANYSIZE_ARRAY
#define ANYSIZE_ARRAY
Definition:
typedefs.h:46
INT
int32_t INT
Definition:
typedefs.h:58
WCHAR
__wchar_t WCHAR
Definition:
xmlstorage.h:180
base
system
conime
conime.h
Generated on Fri Mar 6 2026 06:03:02 for ReactOS by
1.9.6