Properly handle extended_pending
This commit is contained in:
parent
59004db595
commit
6e05e7f0f8
1 changed files with 10 additions and 2 deletions
|
@ -122,13 +122,21 @@ grub_keyboard_getkey (void)
|
|||
if (! KEYBOARD_ISREADY (grub_inb (KEYBOARD_REG_STATUS)))
|
||||
return -1;
|
||||
key = grub_inb (KEYBOARD_REG_DATA);
|
||||
if (key == 0xe0)
|
||||
{
|
||||
extended_pending = 1;
|
||||
return -1;
|
||||
}
|
||||
/* FIXME */ grub_keyboard_isr (key);
|
||||
ret = KEYBOARD_SCANCODE (key);
|
||||
if (ret == SHIFT_L || ret == SHIFT_R || ret == ALT || ret == CTRL)
|
||||
return -1;
|
||||
{
|
||||
extended_pending = 0;
|
||||
return -1;
|
||||
}
|
||||
if (extended_pending)
|
||||
ret |= 0x80;
|
||||
extended_pending = (key == 0xe0);
|
||||
extended_pending = 0;
|
||||
if (! KEYBOARD_ISMAKE (key))
|
||||
return -1;
|
||||
return ret;
|
||||
|
|
Loading…
Reference in a new issue