9#ifndef _CON_SPLITTER_H_
10#define _CON_SPLITTER_H_
64#define UNICODE_NARROW_CHAR 0xFFF0
65#define UNICODE_WIDE_CHAR 0xFFF1
70#define CONSOLE_SPLITTER_ALLOC_UNIT 32
82#define KEY_STATE_VALID_EXPOSED (EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED)
84#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')
91 VOID **NotifyHandleList;
97#define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a) \
99 TEXT_IN_EX_SPLITTER_NOTIFY, \
101 TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE \
104#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')
114 UINTN CurrentNumberOfConsoles;
116 UINTN TextInListCount;
119 UINTN CurrentNumberOfExConsoles;
121 UINTN TextInExListCount;
124 UINTN CurrentNumberOfKeys;
134 BOOLEAN VirtualKeyStateExported;
138 UINTN CurrentNumberOfPointers;
140 UINTN PointerListCount;
144 UINTN CurrentNumberOfAbsolutePointers;
146 UINTN AbsolutePointerListCount;
147 BOOLEAN AbsoluteInputEventSignalState;
149 BOOLEAN KeyEventSignalState;
150 BOOLEAN InputEventSignalState;
154#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
156 TEXT_IN_SPLITTER_PRIVATE_DATA, \
158 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
161#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
163 TEXT_IN_SPLITTER_PRIVATE_DATA, \
165 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
167#define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
169 TEXT_IN_SPLITTER_PRIVATE_DATA, \
171 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
174#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \
176 TEXT_IN_SPLITTER_PRIVATE_DATA, \
178 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
181#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'o', 'S', 'p')
199 UINT32 UgaHorizontalResolution;
200 UINT32 UgaVerticalResolution;
201 UINT32 UgaColorDepth;
202 UINT32 UgaRefreshRate;
206 UINTN CurrentNumberOfGraphicsOutput;
207 UINTN CurrentNumberOfUgaDraw;
209 UINTN CurrentNumberOfConsoles;
211 UINTN TextOutListCount;
213 UINTN TextOutQueryDataCount;
214 INT32 *TextOutModeMap;
216 BOOLEAN AddingConOutDevice;
219#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
221 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
223 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
226#define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
228 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
230 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
233#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
235 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
237 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
240#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
242 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
244 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
667 IN BOOLEAN ExtendedVerification
754 OUT CHAR16 **DriverName
832 OUT CHAR16 **ControllerName
910 OUT CHAR16 **ControllerName
964 OUT CHAR16 **ControllerName
1042 OUT CHAR16 **ControllerName
1120 OUT CHAR16 **ControllerName
1254 IN BOOLEAN ExtendedVerification
1330 IN BOOLEAN ExtendedVerification
1408 OUT VOID **NotifyHandle
1428 IN VOID *NotificationHandle
1486 IN BOOLEAN ExtendedVerification
1546 IN BOOLEAN ExtendedVerification
1751 IN OUT VOID **Buffer
1774 IN UINT32 ModeNumber,
1796 IN UINT32 ModeNumber
1878 OUT UINT32 *HorizontalResolution,
1879 OUT UINT32 *VerticalResolution,
1880 OUT UINT32 *ColorDepth,
1881 OUT UINT32 *RefreshRate
1902 IN UINT32 HorizontalResolution,
1903 IN UINT32 VerticalResolution,
1904 IN UINT32 ColorDepth,
1905 IN UINT32 RefreshRate
EFI_STATUS EFIAPI ConSplitterTextInReset(IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI ConSplitterConInComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI ConSplitterTextOutSetCursorPosition(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN Column, IN UINTN Row)
EFI_STATUS EFIAPI ConSplitterUgaDrawGetMode(IN EFI_UGA_DRAW_PROTOCOL *This, OUT UINT32 *HorizontalResolution, OUT UINT32 *VerticalResolution, OUT UINT32 *ColorDepth, OUT UINT32 *RefreshRate)
EFI_STATUS EFIAPI ConSplitterConOutDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterConOutDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS ConSplitterAbsolutePointerAddDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer)
EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterTextOutOutputString(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN CHAR16 *WString)
EFI_STATUS EFIAPI ConSplitterConInDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterSimplePointerDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterTextOutSetAttribute(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN Attribute)
EFI_STATUS EFIAPI ConSplitterTextOutTestString(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN CHAR16 *WString)
EFI_STATUS ConSplitterGrowBuffer(IN UINTN ElementSize, IN OUT UINTN *Count, IN OUT VOID **Buffer)
EFI_STATUS EFIAPI ConSplitterTextOutQueryMode(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN ModeNumber, OUT UINTN *Columns, OUT UINTN *Rows)
EFI_STATUS EFIAPI ConSplitterConOutComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI ConSplitterTextOutReset(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI ConSplitterTextInResetEx(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI ConSplitterStdErrDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
VOID EFIAPI ConSplitterSimplePointerWaitForInput(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS ConSplitterSimplePointerDeleteDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer)
EFI_STATUS EFIAPI ConSplitterConInDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI ConSplitterGraphicsOutputBlt(IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL, IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, IN UINTN SourceX, IN UINTN SourceY, IN UINTN DestinationX, IN UINTN DestinationY, IN UINTN Width, IN UINTN Height, IN UINTN Delta OPTIONAL)
EFI_STATUS ConSplitterTextOutDeleteDevice(IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut)
VOID EFIAPI ConSplitterTextInWaitForKey(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI ConSplitterTextInReadKeyStrokeEx(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, OUT EFI_KEY_DATA *KeyData)
EFI_STATUS EFIAPI ConSplitterComponentNameGetDriverName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, OUT CHAR16 **DriverName)
EFI_STATUS EFIAPI ConSplitterTextOutEnableCursor(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN BOOLEAN Visible)
EFI_STATUS EFIAPI ConSplitterConOutDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterSimplePointerReset(IN EFI_SIMPLE_POINTER_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS ConSplitterTextOutAddDevice(IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut, IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput, IN EFI_UGA_DRAW_PROTOCOL *UgaDraw)
EFI_STATUS ConSplitterTextInAddDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn)
VOID TextOutSetMode(IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, IN UINTN ModeNumber)
EFI_STATUS EFIAPI ConSplitterConInDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterSimplePointerComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI ConSplitterTextOutSetMode(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN ModeNumber)
EFI_STATUS ConSplitterAbsolutePointerDeleteDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer)
EFI_STATUS EFIAPI ConSplitterStdErrDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
VOID EFIAPI ConSplitterAbsolutePointerWaitForInput(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI ConSplitterGraphicsOutputSetMode(IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, IN UINT32 ModeNumber)
EFI_STATUS EFIAPI ConSplitterSimplePointerGetState(IN EFI_SIMPLE_POINTER_PROTOCOL *This, IN OUT EFI_SIMPLE_POINTER_STATE *State)
EFI_STATUS ConSplitterTextInConstructor(TEXT_IN_SPLITTER_PRIVATE_DATA *ConInPrivate)
EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI ConSplitterAbsolutePointerReset(IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI ConSplitterStdErrDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterGraphicsOutputQueryMode(IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, IN UINT32 ModeNumber, OUT UINTN *SizeOfInfo, OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info)
EFI_STATUS EFIAPI ConSplitterAbsolutePointerGetState(IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, IN OUT EFI_ABSOLUTE_POINTER_STATE *State)
EFI_STATUS EFIAPI ConSplitterSimplePointerDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI ConSplitterStdErrComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI ConSplitterTextInUnregisterKeyNotify(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN VOID *NotificationHandle)
EFI_STATUS EFIAPI ConSplitterTextInReadKeyStroke(IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, OUT EFI_INPUT_KEY *Key)
EFI_STATUS EFIAPI ConSplitterTextInRegisterKeyNotify(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN EFI_KEY_DATA *KeyData, IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, OUT VOID **NotifyHandle)
EFI_STATUS ConSplitterTextInExDeleteDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx)
EFI_STATUS ConSplitterTextInExAddDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx)
EFI_STATUS ConSplitterSimplePointerAddDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer)
EFI_STATUS EFIAPI ConSplitterTextOutClearScreen(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This)
EFI_STATUS EFIAPI ConSplitterAbsolutePointerComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI ConSplitterUgaDrawBlt(IN EFI_UGA_DRAW_PROTOCOL *This, IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, IN EFI_UGA_BLT_OPERATION BltOperation, IN UINTN SourceX, IN UINTN SourceY, IN UINTN DestinationX, IN UINTN DestinationY, IN UINTN Width, IN UINTN Height, IN UINTN Delta OPTIONAL)
EFI_STATUS EFIAPI ConSplitterTextInPrivateReadKeyStroke(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, OUT EFI_INPUT_KEY *Key)
EFI_STATUS ConSplitterTextInDeleteDevice(IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn)
EFI_STATUS EFIAPI ConSplitterDriverEntry(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI ConSplitterUgaDrawSetMode(IN EFI_UGA_DRAW_PROTOCOL *This, IN UINT32 HorizontalResolution, IN UINT32 VerticalResolution, IN UINT32 ColorDepth, IN UINT32 RefreshRate)
EFI_STATUS ConSplitterTextOutConstructor(TEXT_OUT_SPLITTER_PRIVATE_DATA *ConOutPrivate)
EFI_STATUS EFIAPI ConSplitterSimplePointerDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI ConSplitterTextInSetState(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN EFI_KEY_TOGGLE_STATE *KeyToggleState)
EFI_GRAPHICS_OUTPUT_BLT_OPERATION
UINT8 EFI_KEY_TOGGLE_STATE
EFI_STATUS(EFIAPI * EFI_KEY_NOTIFY_FUNCTION)(IN EFI_KEY_DATA *KeyData)