#include <Protocol/GraphicsOutput.h>\r
#include <Guid/PrimaryConsoleInDevice.h>\r
#include <Protocol/SimplePointer.h>\r
+#include <Protocol/AbsolutePointer.h>\r
#include <Protocol/SimpleTextOut.h>\r
#include <Guid/ConsoleInDevice.h>\r
#include <Protocol/SimpleTextIn.h>\r
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;\r
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;\r
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;\r
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;\r
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
LIST_ENTRY NotifyEntry;\r
} TEXT_IN_EX_SPLITTER_NOTIFY;\r
+\r
typedef struct {\r
- UINT64 Signature;\r
- EFI_HANDLE VirtualHandle;\r
-\r
- EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
- UINTN CurrentNumberOfConsoles;\r
- EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
- UINTN TextInListCount;\r
-\r
- EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;\r
- UINTN CurrentNumberOfExConsoles;\r
- EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;\r
- UINTN TextInExListCount;\r
- LIST_ENTRY NotifyList; \r
-\r
-\r
- EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
- EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
- UINTN CurrentNumberOfPointers;\r
- EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
- UINTN PointerListCount;\r
-\r
- BOOLEAN PasswordEnabled;\r
- CHAR16 Password[MAX_STD_IN_PASSWORD];\r
- UINTN PwdIndex;\r
- CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
- EFI_EVENT LockEvent;\r
-\r
- BOOLEAN KeyEventSignalState;\r
- BOOLEAN InputEventSignalState;\r
+ UINT64 Signature;\r
+ EFI_HANDLE VirtualHandle;\r
+\r
+ EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
+ UINTN CurrentNumberOfConsoles;\r
+ EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
+ UINTN TextInListCount;\r
+\r
+ EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;\r
+ UINTN CurrentNumberOfExConsoles;\r
+ EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;\r
+ UINTN TextInExListCount;\r
+ LIST_ENTRY NotifyList;\r
+\r
+\r
+ EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
+ EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
+ UINTN CurrentNumberOfPointers;\r
+ EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
+ UINTN PointerListCount;\r
+\r
+ EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;\r
+ EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;\r
+ UINTN CurrentNumberOfAbsolutePointers;\r
+ EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;\r
+ UINTN AbsolutePointerListCount;\r
+ BOOLEAN AbsoluteInputEventSignalState;\r
+\r
+ BOOLEAN PasswordEnabled;\r
+ CHAR16 Password[MAX_STD_IN_PASSWORD];\r
+ UINTN PwdIndex;\r
+ CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
+ EFI_EVENT LockEvent;\r
+\r
+ BOOLEAN KeyEventSignalState;\r
+ BOOLEAN InputEventSignalState;\r
} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
\r
#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
BOOLEAN TextOutEnabled;\r
} TEXT_OUT_AND_GOP_DATA;\r
\r
-typedef struct {\r
- UINT32 HorizontalResolution;\r
- UINT32 VerticalResolution;\r
-} TEXT_OUT_GOP_MODE;\r
-\r
typedef struct {\r
UINT64 Signature;\r
EFI_HANDLE VirtualHandle;\r
\r
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
- TEXT_OUT_GOP_MODE *GraphicsOutputModeBuffer;\r
+ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;\r
UINTN CurrentNumberOfGraphicsOutput;\r
+ UINTN CurrentNumberOfUgaDraw;\r
BOOLEAN HardwareNeedsStarting;\r
\r
EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
)\r
;\r
\r
+//\r
+// Driver binding functions\r
+//\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerDriverBindingSupported (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerDriverBindingStart (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerDriverBindingStop (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ConSplitterAbsolutePointerAddDevice (\r
+ IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
+ IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ConSplitterAbsolutePointerDeleteDevice (\r
+ IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
+ IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
+ )\r
+;\r
+\r
+//\r
+// Absolute Pointer protocol interfaces\r
+//\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerReset (\r
+ IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
+ IN BOOLEAN ExtendedVerification\r
+ )\r
+/*++\r
+\r
+ Routine Description:\r
+ Resets the pointer device hardware.\r
+\r
+ Arguments:\r
+ This - Protocol instance pointer.\r
+ ExtendedVerification - Driver may perform diagnostics on reset.\r
+\r
+ Returns:\r
+ EFI_SUCCESS - The device was reset.\r
+ EFI_DEVICE_ERROR - The device is not functioning correctly and could\r
+ not be reset.\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerGetState (\r
+ IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
+ IN OUT EFI_ABSOLUTE_POINTER_STATE *State\r
+ )\r
+/*++\r
+\r
+ Routine Description:\r
+ Retrieves the current state of a pointer device.\r
+\r
+ Arguments:\r
+ This - Protocol instance pointer.\r
+ State - A pointer to the state information on the pointer device.\r
+\r
+ Returns:\r
+ EFI_SUCCESS - The state of the pointer device was returned in State..\r
+ EFI_NOT_READY - The state of the pointer device has not changed since the last call to\r
+ GetState().\r
+ EFI_DEVICE_ERROR - A device error occurred while attempting to retrieve the pointer\r
+ device's current state.\r
+--*/\r
+;\r
+\r
+VOID\r
+EFIAPI\r
+ConSplitterAbsolutePointerWaitForInput (\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
+ )\r
+;\r
+\r
/**\r
Retrieves a Unicode string that is the user readable name of the driver.\r
\r
OUT CHAR16 **ControllerName\r
);\r
\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerComponentNameGetControllerName (\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_HANDLE ChildHandle OPTIONAL,\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **ControllerName\r
+ )\r
+;\r
\r
/**\r
Retrieves a Unicode string that is the user readable name of the controller\r
\r
Returns:\r
EFI_SUCCESS - The device was reset.\r
- EFI_DEVICE_ERROR - The device is not functioning properly and could \r
+ EFI_DEVICE_ERROR - The device is not functioning properly and could\r
not be reset.\r
\r
--*/\r
/*++\r
\r
Routine Description:\r
- Reads the next keystroke from the input device. The WaitForKey Event can \r
+ Reads the next keystroke from the input device. The WaitForKey Event can\r
be used to test for existance of a keystroke via WaitForEvent () call.\r
\r
Arguments:\r
This - Protocol instance pointer.\r
- KeyData - A pointer to a buffer that is filled in with the keystroke \r
+ KeyData - A pointer to a buffer that is filled in with the keystroke\r
state data for the key that was pressed.\r
\r
Returns:\r
EFI_SUCCESS - The keystroke information was returned.\r
EFI_NOT_READY - There was no keystroke data availiable.\r
- EFI_DEVICE_ERROR - The keystroke information was not returned due to \r
+ EFI_DEVICE_ERROR - The keystroke information was not returned due to\r
hardware errors.\r
- EFI_INVALID_PARAMETER - KeyData is NULL. \r
+ EFI_INVALID_PARAMETER - KeyData is NULL.\r
\r
--*/\r
;\r
\r
Arguments:\r
This - Protocol instance pointer.\r
- KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the \r
+ KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
state for the input device.\r
- \r
- Returns: \r
+\r
+ Returns:\r
EFI_SUCCESS - The device state was set successfully.\r
- EFI_DEVICE_ERROR - The device is not functioning correctly and could \r
+ EFI_DEVICE_ERROR - The device is not functioning correctly and could\r
not have the setting adjusted.\r
EFI_UNSUPPORTED - The device does not have the ability to set its state.\r
- EFI_INVALID_PARAMETER - KeyToggleState is NULL. \r
+ EFI_INVALID_PARAMETER - KeyToggleState is NULL.\r
\r
---*/ \r
+--*/\r
;\r
\r
EFI_STATUS\r
\r
Arguments:\r
This - Protocol instance pointer.\r
- KeyData - A pointer to a buffer that is filled in with the keystroke \r
+ KeyData - A pointer to a buffer that is filled in with the keystroke\r
information data for the key that was pressed.\r
- KeyNotificationFunction - Points to the function to be called when the key \r
- sequence is typed specified by KeyData. \r
- NotifyHandle - Points to the unique handle assigned to the registered notification. \r
+ KeyNotificationFunction - Points to the function to be called when the key\r
+ sequence is typed specified by KeyData.\r
+ NotifyHandle - Points to the unique handle assigned to the registered notification.\r
\r
Returns:\r
EFI_SUCCESS - The notification function was registered successfully.\r
EFI_OUT_OF_RESOURCES - Unable to allocate resources for necesssary data structures.\r
- EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL. \r
- \r
---*/ \r
+ EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL.\r
+\r
+--*/\r
;\r
\r
EFI_STATUS\r
Remove a registered notification function from a particular keystroke.\r
\r
Arguments:\r
- This - Protocol instance pointer. \r
+ This - Protocol instance pointer.\r
NotificationHandle - The handle of the notification function being unregistered.\r
\r
Returns:\r
EFI_SUCCESS - The notification function was unregistered successfully.\r
EFI_INVALID_PARAMETER - The NotificationHandle is invalid.\r
- EFI_NOT_FOUND - Can not find the matching entry in database. \r
- \r
---*/ \r
+ EFI_NOT_FOUND - Can not find the matching entry in database.\r
+\r
+--*/\r
;\r
VOID\r
EFIAPI\r
;\r
\r
EFI_STATUS\r
-DevNullSyncGopStdOut (\r
+DevNullSyncStdOut (\r
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
)\r
;\r