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
9 use shared
::minwindef
::{BOOL, DWORD, UINT, WORD}
;
10 use um
::winnt
::{CHAR, SHORT, WCHAR}
;
11 STRUCT
!{struct COORD
{
15 pub type PCOORD
= *mut COORD
;
16 STRUCT
!{struct SMALL_RECT
{
22 pub type PSMALL_RECT
= *mut SMALL_RECT
;
23 UNION
!{union KEY_EVENT_RECORD_uChar
{
25 UnicodeChar UnicodeChar_mut
: WCHAR
,
26 AsciiChar AsciiChar_mut
: CHAR
,
28 STRUCT
!{struct KEY_EVENT_RECORD
{
31 wVirtualKeyCode
: WORD
,
32 wVirtualScanCode
: WORD
,
33 uChar
: KEY_EVENT_RECORD_uChar
,
34 dwControlKeyState
: DWORD
,
36 pub type PKEY_EVENT_RECORD
= *mut KEY_EVENT_RECORD
;
37 pub const RIGHT_ALT_PRESSED
: DWORD
= 0x0001;
38 pub const LEFT_ALT_PRESSED
: DWORD
= 0x0002;
39 pub const RIGHT_CTRL_PRESSED
: DWORD
= 0x0004;
40 pub const LEFT_CTRL_PRESSED
: DWORD
= 0x0008;
41 pub const SHIFT_PRESSED
: DWORD
= 0x0010;
42 pub const NUMLOCK_ON
: DWORD
= 0x0020;
43 pub const SCROLLLOCK_ON
: DWORD
= 0x0040;
44 pub const CAPSLOCK_ON
: DWORD
= 0x0080;
45 pub const ENHANCED_KEY
: DWORD
= 0x0100;
46 pub const NLS_DBCSCHAR
: DWORD
= 0x00010000;
47 pub const NLS_ALPHANUMERIC
: DWORD
= 0x00000000;
48 pub const NLS_KATAKANA
: DWORD
= 0x00020000;
49 pub const NLS_HIRAGANA
: DWORD
= 0x00040000;
50 pub const NLS_ROMAN
: DWORD
= 0x00400000;
51 pub const NLS_IME_CONVERSION
: DWORD
= 0x00800000;
52 pub const NLS_IME_DISABLE
: DWORD
= 0x20000000;
53 STRUCT
!{struct MOUSE_EVENT_RECORD
{
54 dwMousePosition
: COORD
,
56 dwControlKeyState
: DWORD
,
59 pub type PMOUSE_EVENT_RECORD
= *mut MOUSE_EVENT_RECORD
;
60 pub const FROM_LEFT_1ST_BUTTON_PRESSED
: DWORD
= 0x0001;
61 pub const RIGHTMOST_BUTTON_PRESSED
: DWORD
= 0x0002;
62 pub const FROM_LEFT_2ND_BUTTON_PRESSED
: DWORD
= 0x0004;
63 pub const FROM_LEFT_3RD_BUTTON_PRESSED
: DWORD
= 0x0008;
64 pub const FROM_LEFT_4TH_BUTTON_PRESSED
: DWORD
= 0x0010;
65 pub const MOUSE_MOVED
: DWORD
= 0x0001;
66 pub const DOUBLE_CLICK
: DWORD
= 0x0002;
67 pub const MOUSE_WHEELED
: DWORD
= 0x0004;
68 pub const MOUSE_HWHEELED
: DWORD
= 0x0008;
69 STRUCT
!{struct WINDOW_BUFFER_SIZE_RECORD
{
72 pub type PWINDOW_BUFFER_SIZE_RECORD
= *mut WINDOW_BUFFER_SIZE_RECORD
;
73 STRUCT
!{struct MENU_EVENT_RECORD
{
76 pub type PMENU_EVENT_RECORD
= *mut MENU_EVENT_RECORD
;
77 STRUCT
!{struct FOCUS_EVENT_RECORD
{
80 pub type PFOCUS_EVENT_RECORD
= *mut FOCUS_EVENT_RECORD
;
81 UNION
!{union INPUT_RECORD_Event
{
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
,
89 STRUCT
!{struct INPUT_RECORD
{
91 Event
: INPUT_RECORD_Event
,
93 pub type PINPUT_RECORD
= *mut INPUT_RECORD
;
94 pub const KEY_EVENT
: WORD
= 0x0001;
95 pub const MOUSE_EVENT
: WORD
= 0x0002;
96 pub const WINDOW_BUFFER_SIZE_EVENT
: WORD
= 0x0004;
97 pub const MENU_EVENT
: WORD
= 0x0008;
98 pub const FOCUS_EVENT
: WORD
= 0x0010;
99 UNION
!{union CHAR_INFO_Char
{
101 UnicodeChar UnicodeChar_mut
: WCHAR
,
102 AsciiChar AsciiChar_mut
: CHAR
,
104 STRUCT
!{struct CHAR_INFO
{
105 Char
: CHAR_INFO_Char
,
108 pub type PCHAR_INFO
= *mut CHAR_INFO
;
109 STRUCT
!{struct CONSOLE_FONT_INFO
{
113 pub type PCONSOLE_FONT_INFO
= *mut CONSOLE_FONT_INFO
;
114 pub type HPCON
= *mut c_void
;