v2 / vlib / term / ui / consoleapi_windows.c.v
86 lines · 72 sloc · 1.54 KB · 757929392e0e7a75fc1272116460981e589737d5
Raw
1module ui
2
3pub union C.Event {
4 KeyEvent C.KEY_EVENT_RECORD
5 MouseEvent C.MOUSE_EVENT_RECORD
6 WindowBufferSizeEvent C.WINDOW_BUFFER_SIZE_RECORD
7 MenuEvent C.MENU_EVENT_RECORD
8 FocusEvent C.FOCUS_EVENT_RECORD
9}
10
11@[typedef]
12pub struct C.INPUT_RECORD {
13 EventType u16
14 Event C.Event
15}
16
17pub union C.uChar {
18mut:
19 UnicodeChar rune
20 AsciiChar u8
21}
22
23@[typedef]
24pub struct C.KEY_EVENT_RECORD {
25 bKeyDown int
26 wRepeatCount u16
27 wVirtualKeyCode u16
28 wVirtualScanCode u16
29 uChar C.uChar
30 dwControlKeyState u32
31}
32
33@[typedef]
34pub struct C.MOUSE_EVENT_RECORD {
35 dwMousePosition C.COORD
36 dwButtonState u32
37 dwControlKeyState u32
38 dwEventFlags u32
39}
40
41@[typedef]
42pub struct C.WINDOW_BUFFER_SIZE_RECORD {
43 dwSize C.COORD
44}
45
46@[typedef]
47pub struct C.MENU_EVENT_RECORD {
48 dwCommandId u32
49}
50
51@[typedef]
52pub struct C.FOCUS_EVENT_RECORD {
53 bSetFocus int
54}
55
56@[typedef]
57pub struct C.COORD {
58mut:
59 X i16
60 Y i16
61}
62
63@[typedef]
64pub struct C.SMALL_RECT {
65mut:
66 Left u16
67 Top u16
68 Right u16
69 Bottom u16
70}
71
72@[typedef]
73pub struct C.CONSOLE_SCREEN_BUFFER_INFO {
74mut:
75 dwSize C.COORD
76 dwCursorPosition C.COORD
77 wAttributes u16
78 srWindow C.SMALL_RECT
79 dwMaximumWindowSize C.COORD
80}
81
82fn C.ReadConsoleInput(hConsoleInput C.HANDLE, lpBuffer &C.INPUT_RECORD, nLength u32, lpNumberOfEventsRead &u32) bool
83
84fn C.GetNumberOfConsoleInputEvents(hConsoleInput C.HANDLE, lpcNumberOfEvents &u32) bool
85
86fn C.GetConsoleScreenBufferInfo(handle C.HANDLE, info &C.CONSOLE_SCREEN_BUFFER_INFO) bool
87