+2009-09-24 Robert Millan <rmh.grub@aybabtu.com>
+
+ Fix "lost keypress" bug in at_keyboard.
+
+ * term/i386/pc/at_keyboard.c (grub_at_keyboard_checkkey): New function.
+ Checks for readyness of input buffer (without flushing it).
+ (grub_at_keyboard_term): Use grub_at_keyboard_checkkey() rather
+ than grub_at_keyboard_getkey_noblock() for `checkkey' struct member.
+
2009-09-24 Robert Millan <rmh.grub@aybabtu.com>
* util/i386/pc/grub-mkimage.c (generate_image): Enclose BIOS-specific
return key;
}
+static int
+grub_at_keyboard_checkkey (void)
+{
+ /* FIXME: this will be triggered by BREAK events. */
+ return KEYBOARD_ISREADY (grub_inb (KEYBOARD_REG_STATUS)) ? 1 : -1;
+}
+
static int
grub_at_keyboard_getkey (void)
{
.name = "at_keyboard",
.init = grub_keyboard_controller_init,
.fini = grub_keyboard_controller_fini,
- /* FIXME: This routine flushes input buffer, and it shouldn't. */
- .checkkey = grub_at_keyboard_getkey_noblock,
+ .checkkey = grub_at_keyboard_checkkey,
.getkey = grub_at_keyboard_getkey,
};