1*65641822SToomas Soome /* Copyright (C) 2014 by John Cronin 2*65641822SToomas Soome * 3*65641822SToomas Soome * Permission is hereby granted, free of charge, to any person obtaining a copy 4*65641822SToomas Soome * of this software and associated documentation files (the "Software"), to deal 5*65641822SToomas Soome * in the Software without restriction, including without limitation the rights 6*65641822SToomas Soome * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7*65641822SToomas Soome * copies of the Software, and to permit persons to whom the Software is 8*65641822SToomas Soome * furnished to do so, subject to the following conditions: 9*65641822SToomas Soome 10*65641822SToomas Soome * The above copyright notice and this permission notice shall be included in 11*65641822SToomas Soome * all copies or substantial portions of the Software. 12*65641822SToomas Soome 13*65641822SToomas Soome * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14*65641822SToomas Soome * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15*65641822SToomas Soome * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16*65641822SToomas Soome * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17*65641822SToomas Soome * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18*65641822SToomas Soome * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19*65641822SToomas Soome * THE SOFTWARE. 20*65641822SToomas Soome */ 21*65641822SToomas Soome 22*65641822SToomas Soome #ifndef _EFI_POINT_H 23*65641822SToomas Soome #define _EFI_POINT_H 24*65641822SToomas Soome 25*65641822SToomas Soome #define EFI_SIMPLE_POINTER_PROTOCOL_GUID \ 26*65641822SToomas Soome { 0x31878c87, 0xb75, 0x11d5, { 0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } 27*65641822SToomas Soome 28*65641822SToomas Soome INTERFACE_DECL(_EFI_SIMPLE_POINTER); 29*65641822SToomas Soome 30*65641822SToomas Soome typedef struct { 31*65641822SToomas Soome INT32 RelativeMovementX; 32*65641822SToomas Soome INT32 RelativeMovementY; 33*65641822SToomas Soome INT32 RelativeMovementZ; 34*65641822SToomas Soome BOOLEAN LeftButton; 35*65641822SToomas Soome BOOLEAN RightButton; 36*65641822SToomas Soome } EFI_SIMPLE_POINTER_STATE; 37*65641822SToomas Soome 38*65641822SToomas Soome typedef struct { 39*65641822SToomas Soome UINT64 ResolutionX; 40*65641822SToomas Soome UINT64 ResolutionY; 41*65641822SToomas Soome UINT64 ResolutionZ; 42*65641822SToomas Soome BOOLEAN LeftButton; 43*65641822SToomas Soome BOOLEAN RightButton; 44*65641822SToomas Soome } EFI_SIMPLE_POINTER_MODE; 45*65641822SToomas Soome 46*65641822SToomas Soome typedef 47*65641822SToomas Soome EFI_STATUS 48*65641822SToomas Soome (EFIAPI *EFI_SIMPLE_POINTER_RESET) ( 49*65641822SToomas Soome IN struct _EFI_SIMPLE_POINTER *This, 50*65641822SToomas Soome IN BOOLEAN ExtendedVerification 51*65641822SToomas Soome ); 52*65641822SToomas Soome 53*65641822SToomas Soome typedef 54*65641822SToomas Soome EFI_STATUS 55*65641822SToomas Soome (EFIAPI *EFI_SIMPLE_POINTER_GET_STATE) ( 56*65641822SToomas Soome IN struct _EFI_SIMPLE_POINTER *This, 57*65641822SToomas Soome IN OUT EFI_SIMPLE_POINTER_STATE *State 58*65641822SToomas Soome ); 59*65641822SToomas Soome 60*65641822SToomas Soome typedef struct _EFI_SIMPLE_POINTER { 61*65641822SToomas Soome EFI_SIMPLE_POINTER_RESET Reset; 62*65641822SToomas Soome EFI_SIMPLE_POINTER_GET_STATE GetState; 63*65641822SToomas Soome EFI_EVENT WaitForInput; 64*65641822SToomas Soome EFI_SIMPLE_POINTER_MODE *Mode; 65*65641822SToomas Soome } EFI_SIMPLE_POINTER_PROTOCOL; 66*65641822SToomas Soome 67*65641822SToomas Soome #define EFI_ABSOLUTE_POINTER_PROTOCOL_GUID \ 68*65641822SToomas Soome { 0x8D59D32B, 0xC655, 0x4AE9, { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } } 69*65641822SToomas Soome 70*65641822SToomas Soome INTERFACE_DECL(_EFI_ABSOLUTE_POINTER_PROTOCOL); 71*65641822SToomas Soome 72*65641822SToomas Soome typedef struct { 73*65641822SToomas Soome UINT64 AbsoluteMinX; 74*65641822SToomas Soome UINT64 AbsoluteMinY; 75*65641822SToomas Soome UINT64 AbsoluteMinZ; 76*65641822SToomas Soome UINT64 AbsoluteMaxX; 77*65641822SToomas Soome UINT64 AbsoluteMaxY; 78*65641822SToomas Soome UINT64 AbsoluteMaxZ; 79*65641822SToomas Soome UINT32 Attributes; 80*65641822SToomas Soome } EFI_ABSOLUTE_POINTER_MODE; 81*65641822SToomas Soome 82*65641822SToomas Soome typedef struct { 83*65641822SToomas Soome UINT64 CurrentX; 84*65641822SToomas Soome UINT64 CurrentY; 85*65641822SToomas Soome UINT64 CurrentZ; 86*65641822SToomas Soome UINT32 ActiveButtons; 87*65641822SToomas Soome } EFI_ABSOLUTE_POINTER_STATE; 88*65641822SToomas Soome 89*65641822SToomas Soome #define EFI_ABSP_SupportsAltActive 0x00000001 90*65641822SToomas Soome #define EFI_ABSP_SupportsPressureAsZ 0x00000002 91*65641822SToomas Soome #define EFI_ABSP_TouchActive 0x00000001 92*65641822SToomas Soome #define EFI_ABS_AltActive 0x00000002 93*65641822SToomas Soome 94*65641822SToomas Soome typedef 95*65641822SToomas Soome EFI_STATUS 96*65641822SToomas Soome (EFIAPI *EFI_ABSOLUTE_POINTER_RESET) ( 97*65641822SToomas Soome IN struct _EFI_ABSOLUTE_POINTER_PROTOCOL *This, 98*65641822SToomas Soome IN BOOLEAN ExtendedVerification 99*65641822SToomas Soome ); 100*65641822SToomas Soome 101*65641822SToomas Soome typedef 102*65641822SToomas Soome EFI_STATUS 103*65641822SToomas Soome (EFIAPI *EFI_ABSOLUTE_POINTER_GET_STATE) ( 104*65641822SToomas Soome IN struct _EFI_ABSOLUTE_POINTER_PROTOCOL *This, 105*65641822SToomas Soome IN OUT EFI_ABSOLUTE_POINTER_STATE *State 106*65641822SToomas Soome ); 107*65641822SToomas Soome 108*65641822SToomas Soome typedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL { 109*65641822SToomas Soome EFI_ABSOLUTE_POINTER_RESET Reset; 110*65641822SToomas Soome EFI_ABSOLUTE_POINTER_GET_STATE GetState; 111*65641822SToomas Soome EFI_EVENT WaitForInput; 112*65641822SToomas Soome EFI_ABSOLUTE_POINTER_MODE *Mode; 113*65641822SToomas Soome } EFI_ABSOLUTE_POINTER_PROTOCOL; 114*65641822SToomas Soome 115*65641822SToomas Soome #endif 116