1 | /** @file
|
---|
2 | Simple Pointer protocol from the UEFI 2.0 specification.
|
---|
3 |
|
---|
4 | Abstraction of a very simple pointer device like a mouse or trackball.
|
---|
5 |
|
---|
6 | Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
---|
7 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
8 |
|
---|
9 | **/
|
---|
10 |
|
---|
11 | #ifndef __SIMPLE_POINTER_H__
|
---|
12 | #define __SIMPLE_POINTER_H__
|
---|
13 |
|
---|
14 | #define EFI_SIMPLE_POINTER_PROTOCOL_GUID \
|
---|
15 | { \
|
---|
16 | 0x31878c87, 0xb75, 0x11d5, {0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
---|
17 | }
|
---|
18 |
|
---|
19 | typedef struct _EFI_SIMPLE_POINTER_PROTOCOL EFI_SIMPLE_POINTER_PROTOCOL;
|
---|
20 |
|
---|
21 | //
|
---|
22 | // Data structures
|
---|
23 | //
|
---|
24 | typedef struct {
|
---|
25 | ///
|
---|
26 | /// The signed distance in counts that the pointer device has been moved along the x-axis.
|
---|
27 | ///
|
---|
28 | INT32 RelativeMovementX;
|
---|
29 | ///
|
---|
30 | /// The signed distance in counts that the pointer device has been moved along the y-axis.
|
---|
31 | ///
|
---|
32 | INT32 RelativeMovementY;
|
---|
33 | ///
|
---|
34 | /// The signed distance in counts that the pointer device has been moved along the z-axis.
|
---|
35 | ///
|
---|
36 | INT32 RelativeMovementZ;
|
---|
37 | ///
|
---|
38 | /// If TRUE, then the left button of the pointer device is being
|
---|
39 | /// pressed. If FALSE, then the left button of the pointer device is not being pressed.
|
---|
40 | ///
|
---|
41 | BOOLEAN LeftButton;
|
---|
42 | ///
|
---|
43 | /// If TRUE, then the right button of the pointer device is being
|
---|
44 | /// pressed. If FALSE, then the right button of the pointer device is not being pressed.
|
---|
45 | ///
|
---|
46 | BOOLEAN RightButton;
|
---|
47 | } EFI_SIMPLE_POINTER_STATE;
|
---|
48 |
|
---|
49 | typedef struct {
|
---|
50 | ///
|
---|
51 | /// The resolution of the pointer device on the x-axis in counts/mm.
|
---|
52 | /// If 0, then the pointer device does not support an x-axis.
|
---|
53 | ///
|
---|
54 | UINT64 ResolutionX;
|
---|
55 | ///
|
---|
56 | /// The resolution of the pointer device on the y-axis in counts/mm.
|
---|
57 | /// If 0, then the pointer device does not support an x-axis.
|
---|
58 | ///
|
---|
59 | UINT64 ResolutionY;
|
---|
60 | ///
|
---|
61 | /// The resolution of the pointer device on the z-axis in counts/mm.
|
---|
62 | /// If 0, then the pointer device does not support an x-axis.
|
---|
63 | ///
|
---|
64 | UINT64 ResolutionZ;
|
---|
65 | ///
|
---|
66 | /// TRUE if a left button is present on the pointer device. Otherwise FALSE.
|
---|
67 | ///
|
---|
68 | BOOLEAN LeftButton;
|
---|
69 | ///
|
---|
70 | /// TRUE if a right button is present on the pointer device. Otherwise FALSE.
|
---|
71 | ///
|
---|
72 | BOOLEAN RightButton;
|
---|
73 | } EFI_SIMPLE_POINTER_MODE;
|
---|
74 |
|
---|
75 | /**
|
---|
76 | Resets the pointer device hardware.
|
---|
77 |
|
---|
78 | @param This A pointer to the EFI_SIMPLE_POINTER_PROTOCOL
|
---|
79 | instance.
|
---|
80 | @param ExtendedVerification Indicates that the driver may perform a more exhaustive
|
---|
81 | verification operation of the device during reset.
|
---|
82 |
|
---|
83 | @retval EFI_SUCCESS The device was reset.
|
---|
84 | @retval EFI_DEVICE_ERROR The device is not functioning correctly and could not be reset.
|
---|
85 |
|
---|
86 | **/
|
---|
87 | typedef
|
---|
88 | EFI_STATUS
|
---|
89 | (EFIAPI *EFI_SIMPLE_POINTER_RESET)(
|
---|
90 | IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
---|
91 | IN BOOLEAN ExtendedVerification
|
---|
92 | );
|
---|
93 |
|
---|
94 | /**
|
---|
95 | Retrieves the current state of a pointer device.
|
---|
96 |
|
---|
97 | @param This A pointer to the EFI_SIMPLE_POINTER_PROTOCOL
|
---|
98 | instance.
|
---|
99 | @param State A pointer to the state information on the pointer device.
|
---|
100 |
|
---|
101 | @retval EFI_SUCCESS The state of the pointer device was returned in State.
|
---|
102 | @retval EFI_NOT_READY The state of the pointer device has not changed since the last call to
|
---|
103 | GetState().
|
---|
104 | @retval EFI_DEVICE_ERROR A device error occurred while attempting to retrieve the pointer device's
|
---|
105 | current state.
|
---|
106 |
|
---|
107 | **/
|
---|
108 | typedef
|
---|
109 | EFI_STATUS
|
---|
110 | (EFIAPI *EFI_SIMPLE_POINTER_GET_STATE)(
|
---|
111 | IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
---|
112 | OUT EFI_SIMPLE_POINTER_STATE *State
|
---|
113 | );
|
---|
114 |
|
---|
115 | ///
|
---|
116 | /// The EFI_SIMPLE_POINTER_PROTOCOL provides a set of services for a pointer
|
---|
117 | /// device that can use used as an input device from an application written
|
---|
118 | /// to this specification. The services include the ability to reset the
|
---|
119 | /// pointer device, retrieve get the state of the pointer device, and
|
---|
120 | /// retrieve the capabilities of the pointer device.
|
---|
121 | ///
|
---|
122 | struct _EFI_SIMPLE_POINTER_PROTOCOL {
|
---|
123 | EFI_SIMPLE_POINTER_RESET Reset;
|
---|
124 | EFI_SIMPLE_POINTER_GET_STATE GetState;
|
---|
125 | ///
|
---|
126 | /// Event to use with WaitForEvent() to wait for input from the pointer device.
|
---|
127 | ///
|
---|
128 | EFI_EVENT WaitForInput;
|
---|
129 | ///
|
---|
130 | /// Pointer to EFI_SIMPLE_POINTER_MODE data.
|
---|
131 | ///
|
---|
132 | EFI_SIMPLE_POINTER_MODE *Mode;
|
---|
133 | };
|
---|
134 |
|
---|
135 | extern EFI_GUID gEfiSimplePointerProtocolGuid;
|
---|
136 |
|
---|
137 | #endif
|
---|