Remove checkkey on term level

This commit is contained in:
Vladimir 'phcoder' Serbinenko committed 2010-08-23 12:07:49 +02:00
1 parent 7ae3eb6232
commit df2174dded
13 files changed
+65 -240

No files matched your search

+1 -35
View File
@@ -28,7 +28,6 @@
static short at_keyboard_status = 0;
static int e0_received = 0;
static int f0_received = 0;
static int pending_key = -1;
static grub_uint8_t led_status;
@@ -478,7 +477,7 @@ grub_keyboard_getkey (void)
/* If there is a character pending, return it; otherwise return -1. */
static int
grub_at_keyboard_getkey_noblock (void)
grub_at_keyboard_getkey (struct grub_term_input *term __attribute__ ((unused)))
{
int code;
code = grub_keyboard_getkey ();
@@ -517,41 +516,9 @@ grub_at_keyboard_getkey_noblock (void)
}
}
static int
grub_at_keyboard_checkkey (struct grub_term_input *term __attribute__ ((unused)))
{
if (pending_key != -1)
return 1;
pending_key = grub_at_keyboard_getkey_noblock ();
if (pending_key != -1)
return 1;
return -1;
}
static int
grub_at_keyboard_getkey (struct grub_term_input *term __attribute__ ((unused)))
{
int key;
if (pending_key != -1)
{
key = pending_key;
pending_key = -1;
return key;
}
do
{
key = grub_at_keyboard_getkey_noblock ();
} while (key == -1);
return key;
}
static grub_err_t
grub_keyboard_controller_init (struct grub_term_input *term __attribute__ ((unused)))
{
pending_key = -1;
at_keyboard_status = 0;
/* Drain input buffer. */
while (1)
@@ -583,7 +550,6 @@ static struct grub_term_input grub_at_keyboard_term =
.name = "at_keyboard",
.init = grub_keyboard_controller_init,
.fini = grub_keyboard_controller_fini,
.checkkey = grub_at_keyboard_checkkey,
.getkey = grub_at_keyboard_getkey
};
+4 -44
View File
@@ -28,8 +28,6 @@ static const grub_uint8_t
grub_console_standard_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW,
GRUB_EFI_BACKGROUND_BLACK);
static int read_key = -1;
static grub_uint32_t
map_char (grub_uint32_t c)
{
@@ -112,15 +110,12 @@ const unsigned efi_codes[] =
static int
grub_console_checkkey (struct grub_term_input *term __attribute__ ((unused)))
grub_console_getkey (struct grub_term_input *term __attribute__ ((unused)))
{
grub_efi_simple_input_interface_t *i;
grub_efi_input_key_t key;
grub_efi_status_t status;
if (read_key >= 0)
return 1;
i = grub_efi_system_table->con_in;
status = efi_call_2 (i->read_key_stroke, i, &key);
@@ -128,45 +123,11 @@ grub_console_checkkey (struct grub_term_input *term __attribute__ ((unused)))
return -1;
if (key.scan_code == 0)
read_key = key.unicode_char;
return key.unicode_char;
else if (key.scan_code < ARRAY_SIZE (efi_codes))
read_key = efi_codes[key.scan_code];
return efi_codes[key.scan_code];
return read_key;
}
static int
grub_console_getkey (struct grub_term_input *term)
{
grub_efi_simple_input_interface_t *i;
grub_efi_boot_services_t *b;
grub_efi_uintn_t index;
grub_efi_status_t status;
int key;
if (read_key >= 0)
{
key = read_key;
read_key = -1;
return key;
}
i = grub_efi_system_table->con_in;
b = grub_efi_system_table->boot_services;
do
{
status = efi_call_3 (b->wait_for_event, 1, &(i->wait_for_key), &index);
if (status != GRUB_EFI_SUCCESS)
return -1;
grub_console_checkkey (term);
}
while (read_key < 0);
key = read_key;
read_key = -1;
return key;
return -1;
}
static grub_uint16_t
@@ -268,7 +229,6 @@ grub_efi_console_fini (struct grub_term_output *term)
static struct grub_term_input grub_console_term_input =
{
.name = "console",
.checkkey = grub_console_checkkey,
.getkey = grub_console_getkey,
};
-1
View File
@@ -34,7 +34,6 @@ grub_console_getkeystatus (struct grub_term_input *term __attribute__ ((unused))
static struct grub_term_input grub_console_term_input =
{
.name = "console",
.checkkey = grub_console_checkkey,
.getkey = grub_console_getkey,
.getkeystatus = grub_console_getkeystatus
};
-1
View File
@@ -189,7 +189,6 @@ static struct grub_term_input grub_ofconsole_term_input =
{
.name = "ofconsole",
.init = grub_ofconsole_init_input,
.checkkey = grub_terminfo_checkkey,
.getkey = grub_terminfo_getkey,
.data = &grub_ofconsole_terminfo_input
};
-1
View File
@@ -99,7 +99,6 @@ static struct grub_term_input grub_serial_term_input =
{
.name = "serial",
.init = grub_terminfo_input_init,
.checkkey = grub_terminfo_checkkey,
.getkey = grub_terminfo_getkey,
.data = &grub_serial_terminfo_input
};
+17 -26
View File
@@ -467,39 +467,30 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,
#undef CONTINUE_READ
}
/* The terminfo version of checkkey. */
int
grub_terminfo_checkkey (struct grub_term_input *termi)
{
struct grub_terminfo_input_state *data
= (struct grub_terminfo_input_state *) (termi->data);
if (data->npending)
return data->input_buf[0];
grub_terminfo_readkey (termi, data->input_buf,
&data->npending, data->readkey);
if (data->npending)
return data->input_buf[0];
return -1;
}
/* The terminfo version of getkey. */
int
grub_terminfo_getkey (struct grub_term_input *termi)
{
struct grub_terminfo_input_state *data
= (struct grub_terminfo_input_state *) (termi->data);
int ret;
while (! data->npending)
grub_terminfo_readkey (termi, data->input_buf, &data->npending,
data->readkey);
if (data->npending)
{
data->npending--;
grub_memmove (data->input_buf, data->input_buf + 1, data->npending);
return data->input_buf[0];
}
ret = data->input_buf[0];
data->npending--;
grub_memmove (data->input_buf, data->input_buf + 1, data->npending);
return ret;
grub_terminfo_readkey (termi, data->input_buf,
&data->npending, data->readkey);
if (data->npending)
{
data->npending--;
grub_memmove (data->input_buf, data->input_buf + 1, data->npending);
return data->input_buf[0];
}
return -1;
}
grub_err_t
+8 -41
View File
@@ -68,7 +68,6 @@ struct grub_usb_keyboard_data
grub_usb_device_t usbdev;
grub_uint8_t status;
grub_uint16_t mods;
int key;
int interfno;
struct grub_usb_desc_endp *endp;
grub_usb_transfer_t transfer;
@@ -78,15 +77,11 @@ struct grub_usb_keyboard_data
grub_uint64_t repeat_time;
};
static struct grub_term_input grub_usb_keyboards[16];
static int grub_usb_keyboard_checkkey (struct grub_term_input *term);
static int grub_usb_keyboard_getkey (struct grub_term_input *term);
static int grub_usb_keyboard_getkeystatus (struct grub_term_input *term);
static struct grub_term_input grub_usb_keyboard_term =
{
.checkkey = grub_usb_keyboard_checkkey,
.getkey = grub_usb_keyboard_getkey,
.getkeystatus = grub_usb_keyboard_getkeystatus,
.next = 0
@@ -231,19 +226,12 @@ grub_usb_keyboard_attach (grub_usb_device_t usbdev, int configno, int interfno)
USB_HID_GET_REPORT, 0x0100, interfno,
sizeof (report), (char *) report);
if (err)
{
data->status = 0;
data->key = -1;
}
data->status = 0;
else
{
data->status = report[0];
data->key = report[2] ? : -1;
}
data->status = report[0];
}
#else
data->status = 0;
data->key = -1;
#endif
data->transfer = grub_usb_bulk_read_background (usbdev,
@@ -283,16 +271,13 @@ send_leds (struct grub_usb_keyboard_data *termdata)
}
static int
grub_usb_keyboard_checkkey (struct grub_term_input *term)
grub_usb_keyboard_getkey (struct grub_term_input *term)
{
grub_usb_err_t err;
struct grub_usb_keyboard_data *termdata = term->data;
grub_uint8_t data[sizeof (termdata->report)];
grub_size_t actual;
if (termdata->key != -1)
return termdata->key;
if (termdata->dead)
return -1;
@@ -304,11 +289,11 @@ grub_usb_keyboard_checkkey (struct grub_term_input *term)
if (termdata->last_key != -1
&& grub_get_time_ms () > termdata->repeat_time)
{
termdata->key = termdata->last_key;
termdata->repeat_time = grub_get_time_ms ()
+ GRUB_TERM_REPEAT_INTERVAL;
return termdata->last_key;
}
return termdata->key;
return -1;
}
grub_memcpy (data, termdata->report, sizeof (data));
@@ -358,29 +343,13 @@ grub_usb_keyboard_checkkey (struct grub_term_input *term)
return -1;
}
termdata->last_key = termdata->key
= grub_term_map_key (data[2], interpret_status (data[0]) | termdata->mods);
termdata->last_key = grub_term_map_key (data[2], interpret_status (data[0])
| termdata->mods);
termdata->repeat_time = grub_get_time_ms () + GRUB_TERM_REPEAT_PRE_INTERVAL;
grub_errno = GRUB_ERR_NONE;
return termdata->key;
}
static int
grub_usb_keyboard_getkey (struct grub_term_input *term)
{
int ret;
struct grub_usb_keyboard_data *termdata = term->data;
while (termdata->key == -1)
grub_usb_keyboard_checkkey (term);
ret = termdata->key;
termdata->key = -1;
return ret;
return termdata->last_key;
}
static int
@@ -388,8 +357,6 @@ grub_usb_keyboard_getkeystatus (struct grub_term_input *term)
{
struct grub_usb_keyboard_data *termdata = term->data;
grub_usb_keyboard_checkkey (term);
return interpret_status (termdata->status) | termdata->mods;
}