/** @file Copyright (C) 2014 - 2016, Download-Fritz. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php. THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef APPLE_KEY_MAP_AGGREGATOR_H #define APPLE_KEY_MAP_AGGREGATOR_H #include // APPLE_KEY_MAP_AGGREGATOR_PROTOCOL_REVISION #define APPLE_KEY_MAP_AGGREGATOR_PROTOCOL_REVISION 0x00010000 // APPLE_KEY_MAP_AGGREGATOR_PROTOCOL_GUID #define APPLE_KEY_MAP_AGGREGATOR_PROTOCOL_GUID \ { 0x5B213447, 0x6E73, 0x4901, \ { 0xA4, 0xF1, 0xB8, 0x64, 0xF3, 0xB7, 0xA1, 0x72 } } typedef struct APPLE_KEY_MAP_AGGREGATOR_PROTOCOL APPLE_KEY_MAP_AGGREGATOR_PROTOCOL; // KEY_MAP_GET_KEY_STROKES /** Returns all pressed keys and key modifiers into the appropiate buffers. @param[in] This Protocol instance pointer. @param[out] Modifiers The modifiers manipulating the given keys. @param[out] NumberOfKeyCodes On input the number of keys allocated. On output the number of keys returned into KeyCodes. @param[out] KeyCodes A Pointer to a caller-allocated the pressed keys get returned in. @retval EFI_SUCCESS The pressed keys have been returned into KeyCodes. @retval EFI_BUFFER_TOO_SMALL The memory required to return the value exceeds the size of the allocated Buffer. The required number of keys to allocate to complete the operation has been returned into NumberOfKeyCodes. @retval other An error returned by a sub-operation. **/ typedef EFI_STATUS (EFIAPI *KEY_MAP_GET_KEY_STROKES)( IN APPLE_KEY_MAP_AGGREGATOR_PROTOCOL *This, OUT APPLE_MODIFIER_MAP *Modifiers, OUT UINTN *NumberOfKeyCodes, OUT APPLE_KEY *KeyCodes ); // KEY_MAP_CONTAINS_KEY_STROKES /** Returns whether or not a list of keys and their modifiers are part of the database of pressed keys. @param[in] This Protocol instance pointer. @param[in] Modifiers The modifiers manipulating the given keys. @param[in] NumberOfKeyCodes The number of keys present in KeyCodes. @param[in,out] KeyCodes The list of keys to check for. The children may be sorted in the process. @param[in] ExactMatch Specifies whether Modifiers and KeyCodes should be exact matches or just contained. @retval EFI_SUCCESS The queried keys are part of the database. @retval EFI_NOT_FOUND The queried keys could not be found. **/ typedef EFI_STATUS (EFIAPI *KEY_MAP_CONTAINS_KEY_STROKES)( IN APPLE_KEY_MAP_AGGREGATOR_PROTOCOL *This, IN APPLE_MODIFIER_MAP Modifiers, IN UINTN NumberOfKeyCodes, IN OUT APPLE_KEY *KeyCodes, IN BOOLEAN ExactMatch ); // APPLE_KEY_MAP_AGGREGATOR_PROTOCOL struct APPLE_KEY_MAP_AGGREGATOR_PROTOCOL { UINTN Revision; KEY_MAP_GET_KEY_STROKES GetKeyStrokes; KEY_MAP_CONTAINS_KEY_STROKES ContainsKeyStrokes; }; // gAppleKeyStateProtocolGuid extern EFI_GUID gAppleKeyStateProtocolGuid; #endif // APPLE_KEY_MAP_AGGREGATOR_H