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