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
40typedef struct tagIMEDISPLAY
41{
46
47// Keyboard layout info
48typedef struct tagKLINFO
49{
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
63typedef struct tagCOMPSTRINFO
64{
74
75// IME candidate info
76typedef struct tagCANDINFO
77{
81
82// Console entry
83typedef struct tagCONENTRY
84{
100 WORD awAttrColor[MAX_ATTR_COLORS]; // See COMPSTRINFO.awAttrColor
102 PCANDIDATELIST apCandList[MAX_CANDLIST]; // See acbCandList below
105 DWORD acbCandList[MAX_CANDLIST]; // See apCandList above
#define IMEDISPLAY_MAX_X
Definition: conime.h:37
struct tagIMEDISPLAY IMEDISPLAY
struct tagCOMPSTRINFO COMPSTRINFO
struct tagKLINFO KLINFO
#define MAX_CANDLIST
Definition: conime.h:59
struct tagCANDINFO CANDINFO
struct tagCONENTRY * PCONENTRY
struct tagCANDINFO * PCANDINFO
struct tagCOMPSTRINFO * PCOMPSTRINFO
#define MAX_ATTR_COLORS
Definition: conime.h:60
struct tagIMEDISPLAY * PIMEDISPLAY
struct tagKLINFO * PKLINFO
struct tagCONENTRY CONENTRY
DWORD HIMC
Definition: dimm.idl:75
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
UINT_PTR HKL
Definition: msctf.idl:125
unsigned int UINT
Definition: ndis.h:50
DWORD * PDWORD
Definition: pedump.c:68
WCHAR szCandStr[ANYSIZE_ARRAY]
Definition: conime.h:79
DWORD dwAttrsOffset
Definition: conime.h:78
WORD awAttrColor[MAX_ATTR_COLORS]
Definition: conime.h:72
DWORD dwCompStrLen
Definition: conime.h:68
DWORD dwSize
Definition: conime.h:65
DWORD dwCompStrOffset
Definition: conime.h:69
DWORD dwCompAttrLen
Definition: conime.h:66
DWORD dwCompAttrOffset
Definition: conime.h:67
DWORD dwResultStrOffset
Definition: conime.h:71
DWORD dwResultStrLen
Definition: conime.h:70
BOOL bConsoleEnabled
Definition: conime.h:112
DWORD acbCandList[MAX_CANDLIST]
Definition: conime.h:105
DWORD dwSystemLineSize
Definition: conime.h:104
BOOL bInComposition
Definition: conime.h:98
DWORD dwCandIndexMax
Definition: conime.h:107
PCANDINFO pCandInfo
Definition: conime.h:103
PCANDIDATELIST apCandList[MAX_CANDLIST]
Definition: conime.h:102
BOOL bOpened
Definition: conime.h:91
BOOL bWndEnabled
Definition: conime.h:113
WORD nCodePage
Definition: conime.h:94
WORD nOutputCodePage
Definition: conime.h:95
COORD ScreenSize
Definition: conime.h:87
HANDLE hConsole
Definition: conime.h:85
PCOMPSTRINFO pCompStr
Definition: conime.h:99
DWORD dwConversion
Definition: conime.h:92
BOOL bHasAnyCand
Definition: conime.h:101
PDWORD pdwCandPageStart
Definition: conime.h:108
PKLINFO pKLInfo
Definition: conime.h:115
HWND hwndConsole
Definition: conime.h:86
HIMC hNewIMC
Definition: conime.h:90
INT cKLs
Definition: conime.h:114
DWORD cbCandPageData
Definition: conime.h:109
DWORD dwCandOffset
Definition: conime.h:106
HKL hKL
Definition: conime.h:88
DWORD dwSentence
Definition: conime.h:93
BOOL bSkipPageMsg
Definition: conime.h:110
HIMC hOldIMC
Definition: conime.h:89
DWORD dwImeProp
Definition: conime.h:111
WCHAR szMode[10]
Definition: conime.h:97
WORD awAttrColor[MAX_ATTR_COLORS]
Definition: conime.h:100
WCHAR szLayoutText[256]
Definition: conime.h:96
Definition: blue.h:25
UINT uCharInfoLen
Definition: conime.h:42
CHAR_INFO CharInfo[IMEDISPLAY_MAX_X]
Definition: conime.h:44
BOOL bFlag
Definition: conime.h:43
DWORD dwConversion
Definition: conime.h:51
HKL hKL
Definition: conime.h:50
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
int32_t INT
Definition: typedefs.h:58
__wchar_t WCHAR
Definition: xmlstorage.h:180