]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/edk2/Include/Protocol/SimpleTextIn.h
Re-add opencsd as a vendor import from the dist directory
[FreeBSD/FreeBSD.git] / sys / contrib / edk2 / Include / Protocol / SimpleTextIn.h
1 /** @file
2   Simple Text Input protocol from the UEFI 2.0 specification.
3
4   Abstraction of a very simple input device like a keyboard or serial
5   terminal.
6
7   Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
8   SPDX-License-Identifier: BSD-2-Clause-Patent
9
10 **/
11
12 #ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__
13 #define __SIMPLE_TEXT_IN_PROTOCOL_H__
14
15 #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
16   { \
17     0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
18   }
19
20 typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL  EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
21
22 ///
23 /// Protocol GUID name defined in EFI1.1.
24 ///
25 #define SIMPLE_INPUT_PROTOCOL   EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID
26
27 ///
28 /// Protocol name in EFI1.1 for backward-compatible.
29 ///
30 typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL  SIMPLE_INPUT_INTERFACE;
31
32 ///
33 /// The keystroke information for the key that was pressed.
34 ///
35 typedef struct {
36   UINT16  ScanCode;
37   CHAR16  UnicodeChar;
38 } EFI_INPUT_KEY;
39
40 //
41 // Required unicode control chars
42 //
43 #define CHAR_BACKSPACE        0x0008
44 #define CHAR_TAB              0x0009
45 #define CHAR_LINEFEED         0x000A
46 #define CHAR_CARRIAGE_RETURN  0x000D
47
48 //
49 // EFI Scan codes
50 //
51 #define SCAN_NULL       0x0000
52 #define SCAN_UP         0x0001
53 #define SCAN_DOWN       0x0002
54 #define SCAN_RIGHT      0x0003
55 #define SCAN_LEFT       0x0004
56 #define SCAN_HOME       0x0005
57 #define SCAN_END        0x0006
58 #define SCAN_INSERT     0x0007
59 #define SCAN_DELETE     0x0008
60 #define SCAN_PAGE_UP    0x0009
61 #define SCAN_PAGE_DOWN  0x000A
62 #define SCAN_F1         0x000B
63 #define SCAN_F2         0x000C
64 #define SCAN_F3         0x000D
65 #define SCAN_F4         0x000E
66 #define SCAN_F5         0x000F
67 #define SCAN_F6         0x0010
68 #define SCAN_F7         0x0011
69 #define SCAN_F8         0x0012
70 #define SCAN_F9         0x0013
71 #define SCAN_F10        0x0014
72 #define SCAN_ESC        0x0017
73
74 /**
75   Reset the input device and optionally run diagnostics
76
77   @param  This                 Protocol instance pointer.
78   @param  ExtendedVerification Driver may perform diagnostics on reset.
79
80   @retval EFI_SUCCESS          The device was reset.
81   @retval EFI_DEVICE_ERROR     The device is not functioning properly and could not be reset.
82
83 **/
84 typedef
85 EFI_STATUS
86 (EFIAPI *EFI_INPUT_RESET)(
87   IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL       *This,
88   IN BOOLEAN                              ExtendedVerification
89   );
90
91 /**
92   Reads the next keystroke from the input device. The WaitForKey Event can
93   be used to test for existence of a keystroke via WaitForEvent () call.
94
95   @param  This  Protocol instance pointer.
96   @param  Key   A pointer to a buffer that is filled in with the keystroke
97                 information for the key that was pressed.
98
99   @retval EFI_SUCCESS      The keystroke information was returned.
100   @retval EFI_NOT_READY    There was no keystroke data available.
101   @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
102                            hardware errors.
103
104 **/
105 typedef
106 EFI_STATUS
107 (EFIAPI *EFI_INPUT_READ_KEY)(
108   IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL       *This,
109   OUT EFI_INPUT_KEY                       *Key
110   );
111
112 ///
113 /// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device.
114 /// It is the minimum required protocol for ConsoleIn.
115 ///
116 struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
117   EFI_INPUT_RESET     Reset;
118   EFI_INPUT_READ_KEY  ReadKeyStroke;
119   ///
120   /// Event to use with WaitForEvent() to wait for a key to be available
121   ///
122   EFI_EVENT           WaitForKey;
123 };
124
125 extern EFI_GUID gEfiSimpleTextInProtocolGuid;
126
127 #endif