1use ctypes::c_void;
9use shared::minwindef::{BOOL, DWORD, UINT, WORD};
10use um::winnt::{CHAR, SHORT, WCHAR};
11STRUCT!{struct COORD {
12 X: SHORT,
13 Y: SHORT,
14}}
15pub type PCOORD = *mut COORD;
16STRUCT!{struct SMALL_RECT {
17 Left: SHORT,
18 Top: SHORT,
19 Right: SHORT,
20 Bottom: SHORT,
21}}
22pub type PSMALL_RECT = *mut SMALL_RECT;
23UNION!{union KEY_EVENT_RECORD_uChar {
24 [u16; 1],
25 UnicodeChar UnicodeChar_mut: WCHAR,
26 AsciiChar AsciiChar_mut: CHAR,
27}}
28STRUCT!{struct KEY_EVENT_RECORD {
29 bKeyDown: BOOL,
30 wRepeatCount: WORD,
31 wVirtualKeyCode: WORD,
32 wVirtualScanCode: WORD,
33 uChar: KEY_EVENT_RECORD_uChar,
34 dwControlKeyState: DWORD,
35}}
36pub type PKEY_EVENT_RECORD = *mut KEY_EVENT_RECORD;
37pub const RIGHT_ALT_PRESSED: DWORD = 0x0001;
38pub const LEFT_ALT_PRESSED: DWORD = 0x0002;
39pub const RIGHT_CTRL_PRESSED: DWORD = 0x0004;
40pub const LEFT_CTRL_PRESSED: DWORD = 0x0008;
41pub const SHIFT_PRESSED: DWORD = 0x0010;
42pub const NUMLOCK_ON: DWORD = 0x0020;
43pub const SCROLLLOCK_ON: DWORD = 0x0040;
44pub const CAPSLOCK_ON: DWORD = 0x0080;
45pub const ENHANCED_KEY: DWORD = 0x0100;
46pub const NLS_DBCSCHAR: DWORD = 0x00010000;
47pub const NLS_ALPHANUMERIC: DWORD = 0x00000000;
48pub const NLS_KATAKANA: DWORD = 0x00020000;
49pub const NLS_HIRAGANA: DWORD = 0x00040000;
50pub const NLS_ROMAN: DWORD = 0x00400000;
51pub const NLS_IME_CONVERSION: DWORD = 0x00800000;
52pub const NLS_IME_DISABLE: DWORD = 0x20000000;
53STRUCT!{struct MOUSE_EVENT_RECORD {
54 dwMousePosition: COORD,
55 dwButtonState: DWORD,
56 dwControlKeyState: DWORD,
57 dwEventFlags: DWORD,
58}}
59pub type PMOUSE_EVENT_RECORD = *mut MOUSE_EVENT_RECORD;
60pub const FROM_LEFT_1ST_BUTTON_PRESSED: DWORD = 0x0001;
61pub const RIGHTMOST_BUTTON_PRESSED: DWORD = 0x0002;
62pub const FROM_LEFT_2ND_BUTTON_PRESSED: DWORD = 0x0004;
63pub const FROM_LEFT_3RD_BUTTON_PRESSED: DWORD = 0x0008;
64pub const FROM_LEFT_4TH_BUTTON_PRESSED: DWORD = 0x0010;
65pub const MOUSE_MOVED: DWORD = 0x0001;
66pub const DOUBLE_CLICK: DWORD = 0x0002;
67pub const MOUSE_WHEELED: DWORD = 0x0004;
68pub const MOUSE_HWHEELED: DWORD = 0x0008;
69STRUCT!{struct WINDOW_BUFFER_SIZE_RECORD {
70 dwSize: COORD,
71}}
72pub type PWINDOW_BUFFER_SIZE_RECORD = *mut WINDOW_BUFFER_SIZE_RECORD;
73STRUCT!{struct MENU_EVENT_RECORD {
74 dwCommandId: UINT,
75}}
76pub type PMENU_EVENT_RECORD = *mut MENU_EVENT_RECORD;
77STRUCT!{struct FOCUS_EVENT_RECORD {
78 bSetFocus: BOOL,
79}}
80pub type PFOCUS_EVENT_RECORD = *mut FOCUS_EVENT_RECORD;
81UNION!{union INPUT_RECORD_Event {
82 [u32; 4],
83 KeyEvent KeyEvent_mut: KEY_EVENT_RECORD,
84 MouseEvent MouseEvent_mut: MOUSE_EVENT_RECORD,
85 WindowBufferSizeEvent WindowBufferSizeEvent_mut: WINDOW_BUFFER_SIZE_RECORD,
86 MenuEvent MenuEvent_mut: MENU_EVENT_RECORD,
87 FocusEvent FocusEvent_mut: FOCUS_EVENT_RECORD,
88}}
89STRUCT!{struct INPUT_RECORD {
90 EventType: WORD,
91 Event: INPUT_RECORD_Event,
92}}
93pub type PINPUT_RECORD = *mut INPUT_RECORD;
94pub const KEY_EVENT: WORD = 0x0001;
95pub const MOUSE_EVENT: WORD = 0x0002;
96pub const WINDOW_BUFFER_SIZE_EVENT: WORD = 0x0004;
97pub const MENU_EVENT: WORD = 0x0008;
98pub const FOCUS_EVENT: WORD = 0x0010;
99UNION!{union CHAR_INFO_Char {
100 [u16; 1],
101 UnicodeChar UnicodeChar_mut: WCHAR,
102 AsciiChar AsciiChar_mut: CHAR,
103}}
104STRUCT!{struct CHAR_INFO {
105 Char: CHAR_INFO_Char,
106 Attributes: WORD,
107}}
108pub type PCHAR_INFO = *mut CHAR_INFO;
109STRUCT!{struct CONSOLE_FONT_INFO {
110 nFont: DWORD,
111 dwFontSize: COORD,
112}}
113pub type PCONSOLE_FONT_INFO = *mut CONSOLE_FONT_INFO;
114pub type HPCON = *mut c_void;