1 1.1 jmcneill /* $NetBSD: eficonex.h,v 1.1.1.1 2021/09/30 18:50:09 jmcneill Exp $ */ 2 1.1 jmcneill 3 1.1 jmcneill #ifndef _EFI_CONEX_H 4 1.1 jmcneill #define _EFI_CONEX_H 5 1.1 jmcneill 6 1.1 jmcneill /*++ 7 1.1 jmcneill 8 1.1 jmcneill Copyright (c) 2020 Kagurazaka Kotori <kagurazakakotori (at) gmail.com> 9 1.1 jmcneill 10 1.1 jmcneill Module Name: 11 1.1 jmcneill 12 1.1 jmcneill eficonex.h 13 1.1 jmcneill 14 1.1 jmcneill Abstract: 15 1.1 jmcneill 16 1.1 jmcneill EFI console extension protocols 17 1.1 jmcneill 18 1.1 jmcneill --*/ 19 1.1 jmcneill 20 1.1 jmcneill // 21 1.1 jmcneill // Simple Text Input Ex Protocol 22 1.1 jmcneill // 23 1.1 jmcneill 24 1.1 jmcneill #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \ 25 1.1 jmcneill { 0xdd9e7534, 0x7762, 0x4698, {0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa} } 26 1.1 jmcneill 27 1.1 jmcneill INTERFACE_DECL(_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL); 28 1.1 jmcneill 29 1.1 jmcneill typedef UINT8 EFI_KEY_TOGGLE_STATE; 30 1.1 jmcneill 31 1.1 jmcneill typedef struct EFI_KEY_STATE { 32 1.1 jmcneill UINT32 KeyShiftState; 33 1.1 jmcneill EFI_KEY_TOGGLE_STATE KeyToggleState; 34 1.1 jmcneill } EFI_KEY_STATE; 35 1.1 jmcneill 36 1.1 jmcneill typedef struct { 37 1.1 jmcneill EFI_INPUT_KEY Key; 38 1.1 jmcneill EFI_KEY_STATE KeyState; 39 1.1 jmcneill } EFI_KEY_DATA; 40 1.1 jmcneill 41 1.1 jmcneill // Shift states 42 1.1 jmcneill #define EFI_SHIFT_STATE_VALID 0x80000000 43 1.1 jmcneill #define EFI_RIGHT_SHIFT_PRESSED 0x00000001 44 1.1 jmcneill #define EFI_LEFT_SHIFT_PRESSED 0x00000002 45 1.1 jmcneill #define EFI_RIGHT_CONTROL_PRESSED 0x00000004 46 1.1 jmcneill #define EFI_LEFT_CONTROL_PRESSED 0x00000008 47 1.1 jmcneill #define EFI_RIGHT_ALT_PRESSED 0x00000010 48 1.1 jmcneill #define EFI_LEFT_ALT_PRESSED 0x00000020 49 1.1 jmcneill #define EFI_RIGHT_LOGO_PRESSED 0x00000040 50 1.1 jmcneill #define EFI_LEFT_LOGO_PRESSED 0x00000080 51 1.1 jmcneill #define EFI_MENU_KEY_PRESSED 0x00000100 52 1.1 jmcneill #define EFI_SYS_REQ_PRESSED 0x00000200 53 1.1 jmcneill 54 1.1 jmcneill // Toggle states 55 1.1 jmcneill #define EFI_TOGGLE_STATE_VALID 0x80 56 1.1 jmcneill #define EFI_KEY_STATE_EXPOSED 0x40 57 1.1 jmcneill #define EFI_SCROLL_LOCK_ACTIVE 0x01 58 1.1 jmcneill #define EFI_NUM_LOCK_ACTIVE 0x02 59 1.1 jmcneill #define EFI_CAPS_LOCK_ACTIVE 0x04 60 1.1 jmcneill 61 1.1 jmcneill typedef 62 1.1 jmcneill EFI_STATUS 63 1.1 jmcneill (EFIAPI *EFI_INPUT_RESET_EX) ( 64 1.1 jmcneill IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 65 1.1 jmcneill IN BOOLEAN ExtendedVerification 66 1.1 jmcneill ); 67 1.1 jmcneill 68 1.1 jmcneill typedef 69 1.1 jmcneill EFI_STATUS 70 1.1 jmcneill (EFIAPI *EFI_INPUT_READ_KEY_EX) ( 71 1.1 jmcneill IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 72 1.1 jmcneill OUT EFI_KEY_DATA *KeyData 73 1.1 jmcneill ); 74 1.1 jmcneill 75 1.1 jmcneill typedef 76 1.1 jmcneill EFI_STATUS 77 1.1 jmcneill (EFIAPI *EFI_SET_STATE) ( 78 1.1 jmcneill IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 79 1.1 jmcneill IN EFI_KEY_TOGGLE_STATE *KeyToggleState 80 1.1 jmcneill ); 81 1.1 jmcneill 82 1.1 jmcneill typedef 83 1.1 jmcneill EFI_STATUS 84 1.1 jmcneill (EFIAPI *EFI_KEY_NOTIFY_FUNCTION) ( 85 1.1 jmcneill IN EFI_KEY_DATA *KeyData 86 1.1 jmcneill ); 87 1.1 jmcneill 88 1.1 jmcneill typedef 89 1.1 jmcneill EFI_STATUS 90 1.1 jmcneill (EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY) ( 91 1.1 jmcneill IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 92 1.1 jmcneill IN EFI_KEY_DATA *KeyData, 93 1.1 jmcneill IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, 94 1.1 jmcneill OUT VOID **NotifyHandle 95 1.1 jmcneill ); 96 1.1 jmcneill 97 1.1 jmcneill typedef 98 1.1 jmcneill EFI_STATUS 99 1.1 jmcneill (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY) ( 100 1.1 jmcneill IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 101 1.1 jmcneill IN VOID *NotificationHandle 102 1.1 jmcneill ); 103 1.1 jmcneill 104 1.1 jmcneill typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL{ 105 1.1 jmcneill EFI_INPUT_RESET_EX Reset; 106 1.1 jmcneill EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx; 107 1.1 jmcneill EFI_EVENT WaitForKeyEx; 108 1.1 jmcneill EFI_SET_STATE SetState; 109 1.1 jmcneill EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify; 110 1.1 jmcneill EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify; 111 1.1 jmcneill } EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; 112 1.1 jmcneill 113 1.1 jmcneill #endif 114