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 - 2008, Intel Corporation. All rights reserved.<BR>
|
---|
7 | 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
|
---|
11 |
|
---|
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.
|
---|
14 |
|
---|
15 | **/
|
---|
16 |
|
---|
17 | #ifndef __SIMPLE_POINTER_H__
|
---|
18 | #define __SIMPLE_POINTER_H__
|
---|
19 |
|
---|
20 | #define EFI_SIMPLE_POINTER_PROTOCOL_GUID \
|
---|
21 | { \
|
---|
22 | 0x31878c87, 0xb75, 0x11d5, {0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
---|
23 | }
|
---|
24 |
|
---|
25 | typedef struct _EFI_SIMPLE_POINTER_PROTOCOL EFI_SIMPLE_POINTER_PROTOCOL;
|
---|
26 |
|
---|
27 | //
|
---|
28 | // Data structures
|
---|
29 | //
|
---|
30 | typedef struct {
|
---|
31 | ///
|
---|
32 | /// The signed distance in counts that the pointer device has been moved along the x-axis.
|
---|
33 | ///
|
---|
34 | INT32 RelativeMovementX;
|
---|
35 | ///
|
---|
36 | /// The signed distance in counts that the pointer device has been moved along the y-axis.
|
---|
37 | ///
|
---|
38 | INT32 RelativeMovementY;
|
---|
39 | ///
|
---|
40 | /// The signed distance in counts that the pointer device has been moved along the z-axis.
|
---|
41 | ///
|
---|
42 | INT32 RelativeMovementZ;
|
---|
43 | ///
|
---|
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.
|
---|
46 | ///
|
---|
47 | BOOLEAN LeftButton;
|
---|
48 | ///
|
---|
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.
|
---|
51 | ///
|
---|
52 | BOOLEAN RightButton;
|
---|
53 | } EFI_SIMPLE_POINTER_STATE;
|
---|
54 |
|
---|
55 | typedef struct {
|
---|
56 | ///
|
---|
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.
|
---|
59 | ///
|
---|
60 | UINT64 ResolutionX;
|
---|
61 | ///
|
---|
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.
|
---|
64 | ///
|
---|
65 | UINT64 ResolutionY;
|
---|
66 | ///
|
---|
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.
|
---|
69 | ///
|
---|
70 | UINT64 ResolutionZ;
|
---|
71 | ///
|
---|
72 | /// TRUE if a left button is present on the pointer device. Otherwise FALSE.
|
---|
73 | ///
|
---|
74 | BOOLEAN LeftButton;
|
---|
75 | ///
|
---|
76 | /// TRUE if a right button is present on the pointer device. Otherwise FALSE.
|
---|
77 | ///
|
---|
78 | BOOLEAN RightButton;
|
---|
79 | } EFI_SIMPLE_POINTER_MODE;
|
---|
80 |
|
---|
81 | /**
|
---|
82 | Resets the pointer device hardware.
|
---|
83 |
|
---|
84 | @param This A pointer to the EFI_SIMPLE_POINTER_PROTOCOL
|
---|
85 | instance.
|
---|
86 | @param ExtendedVerification Indicates that the driver may perform a more exhaustive
|
---|
87 | verification operation of the device during reset.
|
---|
88 |
|
---|
89 | @retval EFI_SUCCESS The device was reset.
|
---|
90 | @retval EFI_DEVICE_ERROR The device is not functioning correctly and could not be reset.
|
---|
91 |
|
---|
92 | **/
|
---|
93 | typedef
|
---|
94 | EFI_STATUS
|
---|
95 | (EFIAPI *EFI_SIMPLE_POINTER_RESET)(
|
---|
96 | IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
---|
97 | IN BOOLEAN ExtendedVerification
|
---|
98 | );
|
---|
99 |
|
---|
100 | /**
|
---|
101 | Retrieves the current state of a pointer device.
|
---|
102 |
|
---|
103 | @param This A pointer to the EFI_SIMPLE_POINTER_PROTOCOL
|
---|
104 | instance.
|
---|
105 | @param State A pointer to the state information on the pointer device.
|
---|
106 |
|
---|
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
|
---|
109 | GetState().
|
---|
110 | @retval EFI_DEVICE_ERROR A device error occurred while attempting to retrieve the pointer device's
|
---|
111 | current state.
|
---|
112 |
|
---|
113 | **/
|
---|
114 | typedef
|
---|
115 | EFI_STATUS
|
---|
116 | (EFIAPI *EFI_SIMPLE_POINTER_GET_STATE)(
|
---|
117 | IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
---|
118 | IN OUT EFI_SIMPLE_POINTER_STATE *State
|
---|
119 | );
|
---|
120 |
|
---|
121 | ///
|
---|
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.
|
---|
127 | ///
|
---|
128 | struct _EFI_SIMPLE_POINTER_PROTOCOL {
|
---|
129 | EFI_SIMPLE_POINTER_RESET Reset;
|
---|
130 | EFI_SIMPLE_POINTER_GET_STATE GetState;
|
---|
131 | ///
|
---|
132 | /// Event to use with WaitForEvent() to wait for input from the pointer device.
|
---|
133 | ///
|
---|
134 | EFI_EVENT WaitForInput;
|
---|
135 | ///
|
---|
136 | /// Pointer to EFI_SIMPLE_POINTER_MODE data.
|
---|
137 | ///
|
---|
138 | EFI_SIMPLE_POINTER_MODE *Mode;
|
---|
139 | };
|
---|
140 |
|
---|
141 | extern EFI_GUID gEfiSimplePointerProtocolGuid;
|
---|
142 |
|
---|
143 | #endif
|
---|