master
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7#ifndef _WINCONTYPES_
8#define _WINCONTYPES_
9
10#include <minwindef.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
17
18typedef struct _COORD {
19 SHORT X;
20 SHORT Y;
21} COORD, *PCOORD;
22
23typedef struct _SMALL_RECT {
24 SHORT Left;
25 SHORT Top;
26 SHORT Right;
27 SHORT Bottom;
28} SMALL_RECT, *PSMALL_RECT;
29
30typedef struct _KEY_EVENT_RECORD {
31 WINBOOL bKeyDown;
32 WORD wRepeatCount;
33 WORD wVirtualKeyCode;
34 WORD wVirtualScanCode;
35 union {
36 WCHAR UnicodeChar;
37 CHAR AsciiChar;
38 } uChar;
39 DWORD dwControlKeyState;
40} KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
41
42#define RIGHT_ALT_PRESSED 0x0001
43#define LEFT_ALT_PRESSED 0x0002
44#define RIGHT_CTRL_PRESSED 0x0004
45#define LEFT_CTRL_PRESSED 0x0008
46#define SHIFT_PRESSED 0x0010
47#define NUMLOCK_ON 0x0020
48#define SCROLLLOCK_ON 0x0040
49#define CAPSLOCK_ON 0x0080
50#define ENHANCED_KEY 0x0100
51#define NLS_DBCSCHAR 0x00010000
52#define NLS_ALPHANUMERIC 0x00000000
53#define NLS_KATAKANA 0x00020000
54#define NLS_HIRAGANA 0x00040000
55#define NLS_ROMAN 0x00400000
56#define NLS_IME_CONVERSION 0x00800000
57#define ALTNUMPAD_BIT 0x04000000
58#define NLS_IME_DISABLE 0x20000000
59
60typedef struct _MOUSE_EVENT_RECORD {
61 COORD dwMousePosition;
62 DWORD dwButtonState;
63 DWORD dwControlKeyState;
64 DWORD dwEventFlags;
65} MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
66
67#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
68#define RIGHTMOST_BUTTON_PRESSED 0x0002
69#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
70#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
71#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
72
73#define MOUSE_MOVED 0x0001
74#define DOUBLE_CLICK 0x0002
75#define MOUSE_WHEELED 0x0004
76#if (_WIN32_WINNT >= 0x0600)
77#define MOUSE_HWHEELED 0x0008
78#endif /* _WIN32_WINNT >= 0x0600 */
79
80typedef struct _WINDOW_BUFFER_SIZE_RECORD {
81 COORD dwSize;
82} WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
83
84typedef struct _MENU_EVENT_RECORD {
85 UINT dwCommandId;
86} MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
87
88typedef struct _FOCUS_EVENT_RECORD {
89 WINBOOL bSetFocus;
90} FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
91
92typedef struct _INPUT_RECORD {
93 WORD EventType;
94 union {
95 KEY_EVENT_RECORD KeyEvent;
96 MOUSE_EVENT_RECORD MouseEvent;
97 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
98 MENU_EVENT_RECORD MenuEvent;
99 FOCUS_EVENT_RECORD FocusEvent;
100 } Event;
101} INPUT_RECORD, *PINPUT_RECORD;
102
103#define KEY_EVENT 0x0001
104#define MOUSE_EVENT 0x0002
105#define WINDOW_BUFFER_SIZE_EVENT 0x0004
106#define MENU_EVENT 0x0008
107#define FOCUS_EVENT 0x0010
108
109typedef struct _CHAR_INFO {
110 union {
111 WCHAR UnicodeChar;
112 CHAR AsciiChar;
113 } Char;
114 WORD Attributes;
115} CHAR_INFO, *PCHAR_INFO;
116
117typedef struct _CONSOLE_FONT_INFO {
118 DWORD nFont;
119 COORD dwFontSize;
120} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
121
122typedef VOID *HPCON;
123
124#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
125
126#ifdef __cplusplus
127}
128#endif
129
130#endif /* _WINCONTYPES_ */