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_ */