winapi\um/
wincontypes.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! This module contains the public data structures, data types, and procedures exported by the NT
7//! console subsystem.
8use 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;