console.c revision 0fa2cac4f0cdefaf1addd7f1fe0fd8113db9360b
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/*
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* Copyright (C) 2012-2013 Kay Sievers <kay@vrfy.org>
* Copyright (C) 2012 Harald Hoyer <harald@redhat.com>
*/
#include <efi.h>
#include <efilib.h>
#include "util.h"
#include "console.h"
#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
{ 0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This;
);
typedef UINT8 EFI_KEY_TOGGLE_STATE;
typedef struct {
typedef struct {
} EFI_KEY_DATA;
struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This;
);
struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This;
);
);
struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This;
VOID **NotifyHandle;
);
struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This;
);
typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL {
if (!checked) {
TextInputEx = NULL;
}
/* wait until key is pressed */
if (wait) {
if (TextInputEx)
else
}
if (TextInputEx) {
/* do not distinguish between left and right keys */
shift |= EFI_ALT_PRESSED;
};
/* 32 bit modifier keys + 16 bit scan code + 16 bit unicode */
if (keypress > 0) {
return 0;
}
}
}
/* fallback for firmware which does not support SimpleTextInputExProtocol
*
* This is also called in case ReadKeyStrokeEx did not return a key, because
* some broken firmwares offer SimpleTextInputExProtocol, but never acually
* handle any key. */
return err;
return 0;
}