You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/prompt_toolkit/win32_types.py

156 lines
4.0 KiB

from ctypes import Union, Structure, c_char, c_short, c_long, c_ulong
from ctypes.wintypes import DWORD, BOOL, LPVOID, WORD, WCHAR
# Input/Output standard device numbers. Note that these are not handle objects.
# It's the `windll.kernel32.GetStdHandle` system call that turns them into a
# real handle object.
STD_INPUT_HANDLE = c_ulong(-10)
STD_OUTPUT_HANDLE = c_ulong(-11)
STD_ERROR_HANDLE = c_ulong(-12)
class COORD(Structure):
"""
Struct in wincon.h
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682119(v=vs.85).aspx
"""
_fields_ = [
('X', c_short), # Short
('Y', c_short), # Short
]
def __repr__(self):
return '%s(X=%r, Y=%r, type_x=%r, type_y=%r)' % (
self.__class__.__name__, self.X, self.Y, type(self.X), type(self.Y))
class UNICODE_OR_ASCII(Union):
_fields_ = [
('AsciiChar', c_char),
('UnicodeChar', WCHAR),
]
class KEY_EVENT_RECORD(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684166(v=vs.85).aspx
"""
_fields_ = [
('KeyDown', c_long), # bool
('RepeatCount', c_short), # word
('VirtualKeyCode', c_short), # word
('VirtualScanCode', c_short), # word
('uChar', UNICODE_OR_ASCII), # Unicode or ASCII.
('ControlKeyState', c_long) # double word
]
class MOUSE_EVENT_RECORD(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684239(v=vs.85).aspx
"""
_fields_ = [
('MousePosition', COORD),
('ButtonState', c_long), # dword
('ControlKeyState', c_long), # dword
('EventFlags', c_long) # dword
]
class WINDOW_BUFFER_SIZE_RECORD(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687093(v=vs.85).aspx
"""
_fields_ = [
('Size', COORD)
]
class MENU_EVENT_RECORD(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684213(v=vs.85).aspx
"""
_fields_ = [
('CommandId', c_long) # uint
]
class FOCUS_EVENT_RECORD(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683149(v=vs.85).aspx
"""
_fields_ = [
('SetFocus', c_long) # bool
]
class EVENT_RECORD(Union):
_fields_ = [
('KeyEvent', KEY_EVENT_RECORD),
('MouseEvent', MOUSE_EVENT_RECORD),
('WindowBufferSizeEvent', WINDOW_BUFFER_SIZE_RECORD),
('MenuEvent', MENU_EVENT_RECORD),
('FocusEvent', FOCUS_EVENT_RECORD)
]
class INPUT_RECORD(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683499(v=vs.85).aspx
"""
_fields_ = [
('EventType', c_short), # word
('Event', EVENT_RECORD) # Union.
]
EventTypes = {
1: 'KeyEvent',
2: 'MouseEvent',
4: 'WindowBufferSizeEvent',
8: 'MenuEvent',
16: 'FocusEvent'
}
class SMALL_RECT(Structure):
"""struct in wincon.h."""
_fields_ = [
("Left", c_short),
("Top", c_short),
("Right", c_short),
("Bottom", c_short),
]
class CONSOLE_SCREEN_BUFFER_INFO(Structure):
"""struct in wincon.h."""
_fields_ = [
("dwSize", COORD),
("dwCursorPosition", COORD),
("wAttributes", WORD),
("srWindow", SMALL_RECT),
("dwMaximumWindowSize", COORD),
]
def __str__(self):
return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % (
self.dwSize.Y, self.dwSize.X,
self.dwCursorPosition.Y, self.dwCursorPosition.X,
self.wAttributes,
self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right,
self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X,
)
class SECURITY_ATTRIBUTES(Structure):
"""
http://msdn.microsoft.com/en-us/library/windows/desktop/aa379560(v=vs.85).aspx
"""
_fields_ = [
('nLength', DWORD),
('lpSecurityDescriptor', LPVOID),
('bInheritHandle', BOOL),
]