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 144