xref: /freebsd-src/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h (revision 3245fa215aca18d135839a15c80ae1c905666a37)
10d1ba665SWarner Losh /** @file
20d1ba665SWarner Losh   Simple Text Input protocol from the UEFI 2.0 specification.
30d1ba665SWarner Losh 
40d1ba665SWarner Losh   Abstraction of a very simple input device like a keyboard or serial
50d1ba665SWarner Losh   terminal.
60d1ba665SWarner Losh 
70d1ba665SWarner Losh   Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
8*3245fa21SMitchell Horne   SPDX-License-Identifier: BSD-2-Clause-Patent
90d1ba665SWarner Losh 
100d1ba665SWarner Losh **/
110d1ba665SWarner Losh 
120d1ba665SWarner Losh #ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__
130d1ba665SWarner Losh #define __SIMPLE_TEXT_IN_PROTOCOL_H__
140d1ba665SWarner Losh 
150d1ba665SWarner Losh #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
160d1ba665SWarner Losh   { \
170d1ba665SWarner Losh     0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
180d1ba665SWarner Losh   }
190d1ba665SWarner Losh 
200d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL  EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
210d1ba665SWarner Losh 
220d1ba665SWarner Losh ///
230d1ba665SWarner Losh /// Protocol GUID name defined in EFI1.1.
240d1ba665SWarner Losh ///
250d1ba665SWarner Losh #define SIMPLE_INPUT_PROTOCOL   EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID
260d1ba665SWarner Losh 
270d1ba665SWarner Losh ///
280d1ba665SWarner Losh /// Protocol name in EFI1.1 for backward-compatible.
290d1ba665SWarner Losh ///
300d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL  SIMPLE_INPUT_INTERFACE;
310d1ba665SWarner Losh 
320d1ba665SWarner Losh ///
330d1ba665SWarner Losh /// The keystroke information for the key that was pressed.
340d1ba665SWarner Losh ///
350d1ba665SWarner Losh typedef struct {
360d1ba665SWarner Losh   UINT16  ScanCode;
370d1ba665SWarner Losh   CHAR16  UnicodeChar;
380d1ba665SWarner Losh } EFI_INPUT_KEY;
390d1ba665SWarner Losh 
400d1ba665SWarner Losh //
410d1ba665SWarner Losh // Required unicode control chars
420d1ba665SWarner Losh //
430d1ba665SWarner Losh #define CHAR_BACKSPACE        0x0008
440d1ba665SWarner Losh #define CHAR_TAB              0x0009
450d1ba665SWarner Losh #define CHAR_LINEFEED         0x000A
460d1ba665SWarner Losh #define CHAR_CARRIAGE_RETURN  0x000D
470d1ba665SWarner Losh 
480d1ba665SWarner Losh //
490d1ba665SWarner Losh // EFI Scan codes
500d1ba665SWarner Losh //
510d1ba665SWarner Losh #define SCAN_NULL       0x0000
520d1ba665SWarner Losh #define SCAN_UP         0x0001
530d1ba665SWarner Losh #define SCAN_DOWN       0x0002
540d1ba665SWarner Losh #define SCAN_RIGHT      0x0003
550d1ba665SWarner Losh #define SCAN_LEFT       0x0004
560d1ba665SWarner Losh #define SCAN_HOME       0x0005
570d1ba665SWarner Losh #define SCAN_END        0x0006
580d1ba665SWarner Losh #define SCAN_INSERT     0x0007
590d1ba665SWarner Losh #define SCAN_DELETE     0x0008
600d1ba665SWarner Losh #define SCAN_PAGE_UP    0x0009
610d1ba665SWarner Losh #define SCAN_PAGE_DOWN  0x000A
620d1ba665SWarner Losh #define SCAN_F1         0x000B
630d1ba665SWarner Losh #define SCAN_F2         0x000C
640d1ba665SWarner Losh #define SCAN_F3         0x000D
650d1ba665SWarner Losh #define SCAN_F4         0x000E
660d1ba665SWarner Losh #define SCAN_F5         0x000F
670d1ba665SWarner Losh #define SCAN_F6         0x0010
680d1ba665SWarner Losh #define SCAN_F7         0x0011
690d1ba665SWarner Losh #define SCAN_F8         0x0012
700d1ba665SWarner Losh #define SCAN_F9         0x0013
710d1ba665SWarner Losh #define SCAN_F10        0x0014
720d1ba665SWarner Losh #define SCAN_ESC        0x0017
730d1ba665SWarner Losh 
740d1ba665SWarner Losh /**
750d1ba665SWarner Losh   Reset the input device and optionally run diagnostics
760d1ba665SWarner Losh 
770d1ba665SWarner Losh   @param  This                 Protocol instance pointer.
780d1ba665SWarner Losh   @param  ExtendedVerification Driver may perform diagnostics on reset.
790d1ba665SWarner Losh 
800d1ba665SWarner Losh   @retval EFI_SUCCESS          The device was reset.
810d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR     The device is not functioning properly and could not be reset.
820d1ba665SWarner Losh 
830d1ba665SWarner Losh **/
840d1ba665SWarner Losh typedef
850d1ba665SWarner Losh EFI_STATUS
860d1ba665SWarner Losh (EFIAPI *EFI_INPUT_RESET)(
870d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL       *This,
880d1ba665SWarner Losh   IN BOOLEAN                              ExtendedVerification
890d1ba665SWarner Losh   );
900d1ba665SWarner Losh 
910d1ba665SWarner Losh /**
920d1ba665SWarner Losh   Reads the next keystroke from the input device. The WaitForKey Event can
930d1ba665SWarner Losh   be used to test for existence of a keystroke via WaitForEvent () call.
940d1ba665SWarner Losh 
950d1ba665SWarner Losh   @param  This  Protocol instance pointer.
960d1ba665SWarner Losh   @param  Key   A pointer to a buffer that is filled in with the keystroke
970d1ba665SWarner Losh                 information for the key that was pressed.
980d1ba665SWarner Losh 
990d1ba665SWarner Losh   @retval EFI_SUCCESS      The keystroke information was returned.
1000d1ba665SWarner Losh   @retval EFI_NOT_READY    There was no keystroke data available.
1010d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
1020d1ba665SWarner Losh                            hardware errors.
1030d1ba665SWarner Losh 
1040d1ba665SWarner Losh **/
1050d1ba665SWarner Losh typedef
1060d1ba665SWarner Losh EFI_STATUS
1070d1ba665SWarner Losh (EFIAPI *EFI_INPUT_READ_KEY)(
1080d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL       *This,
1090d1ba665SWarner Losh   OUT EFI_INPUT_KEY                       *Key
1100d1ba665SWarner Losh   );
1110d1ba665SWarner Losh 
1120d1ba665SWarner Losh ///
1130d1ba665SWarner Losh /// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device.
1140d1ba665SWarner Losh /// It is the minimum required protocol for ConsoleIn.
1150d1ba665SWarner Losh ///
1160d1ba665SWarner Losh struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
1170d1ba665SWarner Losh   EFI_INPUT_RESET     Reset;
1180d1ba665SWarner Losh   EFI_INPUT_READ_KEY  ReadKeyStroke;
1190d1ba665SWarner Losh   ///
1200d1ba665SWarner Losh   /// Event to use with WaitForEvent() to wait for a key to be available
1210d1ba665SWarner Losh   ///
1220d1ba665SWarner Losh   EFI_EVENT           WaitForKey;
1230d1ba665SWarner Losh };
1240d1ba665SWarner Losh 
1250d1ba665SWarner Losh extern EFI_GUID gEfiSimpleTextInProtocolGuid;
1260d1ba665SWarner Losh 
1270d1ba665SWarner Losh #endif
128