File indexing completed on 2025-05-11 08:24:05
0001
0002 #ifndef _EFI_CON_H
0003 #define _EFI_CON_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #define SIMPLE_TEXT_OUTPUT_PROTOCOL \
0035 { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
0036
0037 INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
0038
0039 typedef
0040 EFI_STATUS
0041 (EFIAPI *EFI_TEXT_RESET) (
0042 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0043 IN BOOLEAN ExtendedVerification
0044 );
0045
0046 typedef
0047 EFI_STATUS
0048 (EFIAPI *EFI_TEXT_OUTPUT_STRING) (
0049 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0050 IN CHAR16 *String
0051 );
0052
0053 typedef
0054 EFI_STATUS
0055 (EFIAPI *EFI_TEXT_TEST_STRING) (
0056 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0057 IN CHAR16 *String
0058 );
0059
0060 typedef
0061 EFI_STATUS
0062 (EFIAPI *EFI_TEXT_QUERY_MODE) (
0063 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0064 IN UINTN ModeNumber,
0065 OUT UINTN *Columns,
0066 OUT UINTN *Rows
0067 );
0068
0069 typedef
0070 EFI_STATUS
0071 (EFIAPI *EFI_TEXT_SET_MODE) (
0072 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0073 IN UINTN ModeNumber
0074 );
0075
0076 typedef
0077 EFI_STATUS
0078 (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
0079 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0080 IN UINTN Attribute
0081 );
0082
0083 #define EFI_BLACK 0x00
0084 #define EFI_BLUE 0x01
0085 #define EFI_GREEN 0x02
0086 #define EFI_CYAN (EFI_BLUE | EFI_GREEN)
0087 #define EFI_RED 0x04
0088 #define EFI_MAGENTA (EFI_BLUE | EFI_RED)
0089 #define EFI_BROWN (EFI_GREEN | EFI_RED)
0090 #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
0091 #define EFI_BRIGHT 0x08
0092 #define EFI_DARKGRAY (EFI_BRIGHT)
0093 #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
0094 #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
0095 #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
0096 #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
0097 #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
0098 #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
0099 #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
0100
0101 #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4))
0102
0103 #define EFI_BACKGROUND_BLACK 0x00
0104 #define EFI_BACKGROUND_BLUE 0x10
0105 #define EFI_BACKGROUND_GREEN 0x20
0106 #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
0107 #define EFI_BACKGROUND_RED 0x40
0108 #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
0109 #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
0110 #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
0111
0112
0113 typedef
0114 EFI_STATUS
0115 (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
0116 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This
0117 );
0118
0119 typedef
0120 EFI_STATUS
0121 (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
0122 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0123 IN UINTN Column,
0124 IN UINTN Row
0125 );
0126
0127 typedef
0128 EFI_STATUS
0129 (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
0130 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
0131 IN BOOLEAN Enable
0132 );
0133
0134 typedef struct {
0135 INT32 MaxMode;
0136
0137 INT32 Mode;
0138 INT32 Attribute;
0139 INT32 CursorColumn;
0140 INT32 CursorRow;
0141 BOOLEAN CursorVisible;
0142 } SIMPLE_TEXT_OUTPUT_MODE;
0143
0144 typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
0145 EFI_TEXT_RESET Reset;
0146
0147 EFI_TEXT_OUTPUT_STRING OutputString;
0148 EFI_TEXT_TEST_STRING TestString;
0149
0150 EFI_TEXT_QUERY_MODE QueryMode;
0151 EFI_TEXT_SET_MODE SetMode;
0152 EFI_TEXT_SET_ATTRIBUTE SetAttribute;
0153
0154 EFI_TEXT_CLEAR_SCREEN ClearScreen;
0155 EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
0156 EFI_TEXT_ENABLE_CURSOR EnableCursor;
0157
0158
0159 SIMPLE_TEXT_OUTPUT_MODE *Mode;
0160 } SIMPLE_TEXT_OUTPUT_INTERFACE;
0161
0162
0163
0164
0165
0166 #define BOXDRAW_HORIZONTAL 0x2500
0167 #define BOXDRAW_VERTICAL 0x2502
0168 #define BOXDRAW_DOWN_RIGHT 0x250c
0169 #define BOXDRAW_DOWN_LEFT 0x2510
0170 #define BOXDRAW_UP_RIGHT 0x2514
0171 #define BOXDRAW_UP_LEFT 0x2518
0172 #define BOXDRAW_VERTICAL_RIGHT 0x251c
0173 #define BOXDRAW_VERTICAL_LEFT 0x2524
0174 #define BOXDRAW_DOWN_HORIZONTAL 0x252c
0175 #define BOXDRAW_UP_HORIZONTAL 0x2534
0176 #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
0177
0178 #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
0179 #define BOXDRAW_DOUBLE_VERTICAL 0x2551
0180 #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
0181 #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
0182 #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
0183
0184 #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
0185 #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
0186 #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
0187
0188 #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
0189 #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
0190 #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
0191
0192 #define BOXDRAW_UP_LEFT_DOUBLE 0x255b
0193 #define BOXDRAW_UP_DOUBLE_LEFT 0x255c
0194 #define BOXDRAW_DOUBLE_UP_LEFT 0x255d
0195
0196 #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
0197 #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
0198 #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
0199
0200 #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
0201 #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
0202 #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
0203
0204 #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
0205 #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
0206 #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
0207
0208 #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
0209 #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
0210 #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
0211
0212 #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
0213 #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
0214 #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
0215
0216
0217
0218
0219
0220 #define BLOCKELEMENT_FULL_BLOCK 0x2588
0221 #define BLOCKELEMENT_LIGHT_SHADE 0x2591
0222
0223
0224
0225
0226 #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
0227 #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
0228 #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
0229 #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
0230
0231
0232
0233
0234
0235 #define ARROW_UP 0x2191
0236 #define ARROW_DOWN 0x2193
0237
0238
0239
0240
0241
0242 #define SIMPLE_TEXT_INPUT_PROTOCOL \
0243 { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
0244
0245 INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
0246
0247 typedef struct {
0248 UINT16 ScanCode;
0249 CHAR16 UnicodeChar;
0250 } EFI_INPUT_KEY;
0251
0252
0253
0254
0255
0256 #define CHAR_NULL 0x0000
0257 #define CHAR_BACKSPACE 0x0008
0258 #define CHAR_TAB 0x0009
0259 #define CHAR_LINEFEED 0x000A
0260 #define CHAR_CARRIAGE_RETURN 0x000D
0261
0262
0263
0264
0265
0266 #define SCAN_NULL 0x0000
0267 #define SCAN_UP 0x0001
0268 #define SCAN_DOWN 0x0002
0269 #define SCAN_RIGHT 0x0003
0270 #define SCAN_LEFT 0x0004
0271 #define SCAN_HOME 0x0005
0272 #define SCAN_END 0x0006
0273 #define SCAN_INSERT 0x0007
0274 #define SCAN_DELETE 0x0008
0275 #define SCAN_PAGE_UP 0x0009
0276 #define SCAN_PAGE_DOWN 0x000A
0277 #define SCAN_F1 0x000B
0278 #define SCAN_F2 0x000C
0279 #define SCAN_F3 0x000D
0280 #define SCAN_F4 0x000E
0281 #define SCAN_F5 0x000F
0282 #define SCAN_F6 0x0010
0283 #define SCAN_F7 0x0011
0284 #define SCAN_F8 0x0012
0285 #define SCAN_F9 0x0013
0286 #define SCAN_F10 0x0014
0287 #define SCAN_ESC 0x0017
0288
0289
0290
0291
0292 #define SCAN_F11 0x0015
0293 #define SCAN_F12 0x0016
0294 #define SCAN_F13 0x0068
0295 #define SCAN_F14 0x0069
0296 #define SCAN_F15 0x006A
0297 #define SCAN_F16 0x006B
0298 #define SCAN_F17 0x006C
0299 #define SCAN_F18 0x006D
0300 #define SCAN_F19 0x006E
0301 #define SCAN_F20 0x006F
0302 #define SCAN_F21 0x0070
0303 #define SCAN_F22 0x0071
0304 #define SCAN_F23 0x0072
0305 #define SCAN_F24 0x0073
0306 #define SCAN_MUTE 0x007F
0307 #define SCAN_VOLUME_UP 0x0080
0308 #define SCAN_VOLUME_DOWN 0x0081
0309 #define SCAN_BRIGHTNESS_UP 0x0100
0310 #define SCAN_BRIGHTNESS_DOWN 0x0101
0311 #define SCAN_SUSPEND 0x0102
0312 #define SCAN_HIBERNATE 0x0103
0313 #define SCAN_TOGGLE_DISPLAY 0x0104
0314 #define SCAN_RECOVERY 0x0105
0315 #define SCAN_EJECT 0x0106
0316
0317 typedef
0318 EFI_STATUS
0319 (EFIAPI *EFI_INPUT_RESET) (
0320 IN struct _SIMPLE_INPUT_INTERFACE *This,
0321 IN BOOLEAN ExtendedVerification
0322 );
0323
0324 typedef
0325 EFI_STATUS
0326 (EFIAPI *EFI_INPUT_READ_KEY) (
0327 IN struct _SIMPLE_INPUT_INTERFACE *This,
0328 OUT EFI_INPUT_KEY *Key
0329 );
0330
0331 typedef struct _SIMPLE_INPUT_INTERFACE {
0332 EFI_INPUT_RESET Reset;
0333 EFI_INPUT_READ_KEY ReadKeyStroke;
0334 EFI_EVENT WaitForKey;
0335 } SIMPLE_INPUT_INTERFACE;
0336
0337 #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
0338 {0xdd9e7534, 0x7762, 0x4698, {0x8c, 0x14, 0xf5, 0x85, \
0339 0x17, 0xa6, 0x25, 0xaa} }
0340
0341 INTERFACE_DECL(_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL);
0342
0343 typedef UINT8 EFI_KEY_TOGGLE_STATE;
0344
0345
0346
0347
0348 typedef struct EFI_KEY_STATE {
0349 UINT32 KeyShiftState;
0350 EFI_KEY_TOGGLE_STATE KeyToggleState;
0351 } EFI_KEY_STATE;
0352
0353 typedef struct {
0354 EFI_INPUT_KEY Key;
0355 EFI_KEY_STATE KeyState;
0356 } EFI_KEY_DATA;
0357
0358
0359
0360
0361 #define EFI_SHIFT_STATE_VALID 0x80000000
0362 #define EFI_RIGHT_SHIFT_PRESSED 0x00000001
0363 #define EFI_LEFT_SHIFT_PRESSED 0x00000002
0364 #define EFI_RIGHT_CONTROL_PRESSED 0x00000004
0365 #define EFI_LEFT_CONTROL_PRESSED 0x00000008
0366 #define EFI_RIGHT_ALT_PRESSED 0x00000010
0367 #define EFI_LEFT_ALT_PRESSED 0x00000020
0368 #define EFI_RIGHT_LOGO_PRESSED 0x00000040
0369 #define EFI_LEFT_LOGO_PRESSED 0x00000080
0370 #define EFI_MENU_KEY_PRESSED 0x00000100
0371 #define EFI_SYS_REQ_PRESSED 0x00000200
0372
0373
0374
0375
0376 #define EFI_TOGGLE_STATE_VALID 0x80
0377 #define EFI_KEY_STATE_EXPOSED 0x40
0378 #define EFI_SCROLL_LOCK_ACTIVE 0x01
0379 #define EFI_NUM_LOCK_ACTIVE 0x02
0380 #define EFI_CAPS_LOCK_ACTIVE 0x04
0381
0382
0383
0384
0385 typedef
0386 EFI_STATUS
0387 (EFIAPI *EFI_KEY_NOTIFY_FUNCTION) (
0388 IN EFI_KEY_DATA *KeyData
0389 );
0390
0391 typedef
0392 EFI_STATUS
0393 (EFIAPI *EFI_INPUT_RESET_EX) (
0394 IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
0395 IN BOOLEAN ExtendedVerification
0396 )
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412 ;
0413
0414 typedef
0415 EFI_STATUS
0416 (EFIAPI *EFI_INPUT_READ_KEY_EX) (
0417 IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
0418 OUT EFI_KEY_DATA *KeyData
0419 )
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438 ;
0439
0440 typedef
0441 EFI_STATUS
0442 (EFIAPI *EFI_SET_STATE) (
0443 IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
0444 IN EFI_KEY_TOGGLE_STATE *KeyToggleState
0445 )
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464 ;
0465
0466 typedef
0467 EFI_STATUS
0468 (EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY) (
0469 IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
0470 IN EFI_KEY_DATA *KeyData,
0471 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
0472 OUT EFI_HANDLE *NotifyHandle
0473 )
0474
0475
0476
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493 ;
0494
0495 typedef
0496 EFI_STATUS
0497 (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY) (
0498 IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
0499 IN EFI_HANDLE NotificationHandle
0500 )
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510
0511
0512
0513
0514
0515
0516 ;
0517
0518 typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL {
0519 EFI_INPUT_RESET_EX Reset;
0520 EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
0521 EFI_EVENT WaitForKeyEx;
0522 EFI_SET_STATE SetState;
0523 EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
0524 EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
0525 } EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
0526
0527 #endif