2 Simple Pointer protocol from the UEFI 2.0 specification.
4 Abstraction of a very simple pointer device like a mouse or trackball.
6 Copyright (c) 2006 - 2008, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #ifndef __SIMPLE_POINTER_H__
18 #define __SIMPLE_POINTER_H__
20 #define EFI_SIMPLE_POINTER_PROTOCOL_GUID \
22 0x31878c87, 0xb75, 0x11d5, {0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
25 typedef struct _EFI_SIMPLE_POINTER_PROTOCOL EFI_SIMPLE_POINTER_PROTOCOL
;
32 /// The signed distance in counts that the pointer device has been moved along the x-axis.
34 INT32 RelativeMovementX
;
36 /// The signed distance in counts that the pointer device has been moved along the y-axis.
38 INT32 RelativeMovementY
;
40 /// The signed distance in counts that the pointer device has been moved along the z-axis.
42 INT32 RelativeMovementZ
;
44 /// If TRUE, then the left button of the pointer device is being
45 /// pressed. If FALSE, then the left button of the pointer device is not being pressed.
49 /// If TRUE, then the right button of the pointer device is being
50 /// pressed. If FALSE, then the right button of the pointer device is not being pressed.
53 } EFI_SIMPLE_POINTER_STATE
;
57 /// The resolution of the pointer device on the x-axis in counts/mm.
58 /// If 0, then the pointer device does not support an x-axis.
62 /// The resolution of the pointer device on the y-axis in counts/mm.
63 /// If 0, then the pointer device does not support an x-axis.
67 /// The resolution of the pointer device on the z-axis in counts/mm.
68 /// If 0, then the pointer device does not support an x-axis.
72 /// TRUE if a left button is present on the pointer device. Otherwise FALSE.
76 /// TRUE if a right button is present on the pointer device. Otherwise FALSE.
79 } EFI_SIMPLE_POINTER_MODE
;
82 Resets the pointer device hardware.
84 @param This A pointer to the EFI_SIMPLE_POINTER_PROTOCOL
86 @param ExtendedVerification Indicates that the driver may perform a more exhaustive
87 verification operation of the device during reset.
89 @retval EFI_SUCCESS The device was reset.
90 @retval EFI_DEVICE_ERROR The device is not functioning correctly and could not be reset.
95 (EFIAPI
*EFI_SIMPLE_POINTER_RESET
)(
96 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
97 IN BOOLEAN ExtendedVerification
101 Retrieves the current state of a pointer device.
103 @param This A pointer to the EFI_SIMPLE_POINTER_PROTOCOL
105 @param State A pointer to the state information on the pointer device.
107 @retval EFI_SUCCESS The state of the pointer device was returned in State.
108 @retval EFI_NOT_READY The state of the pointer device has not changed since the last call to
110 @retval EFI_DEVICE_ERROR A device error occurred while attempting to retrieve the pointer device's
116 (EFIAPI
*EFI_SIMPLE_POINTER_GET_STATE
)(
117 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
118 IN OUT EFI_SIMPLE_POINTER_STATE
*State
122 /// The EFI_SIMPLE_POINTER_PROTOCOL provides a set of services for a pointer
123 /// device that can use used as an input device from an application written
124 /// to this specification. The services include the ability to reset the
125 /// pointer device, retrieve get the state of the pointer device, and
126 /// retrieve the capabilities of the pointer device.
128 struct _EFI_SIMPLE_POINTER_PROTOCOL
{
129 EFI_SIMPLE_POINTER_RESET Reset
;
130 EFI_SIMPLE_POINTER_GET_STATE GetState
;
132 /// Event to use with WaitForEvent() to wait for input from the pointer device.
134 EFI_EVENT WaitForInput
;
136 /// Pointer to EFI_SIMPLE_POINTER_MODE data.
138 EFI_SIMPLE_POINTER_MODE
*Mode
;
141 extern EFI_GUID gEfiSimplePointerProtocolGuid
;