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)))
|
if (! KEYBOARD_ISREADY (grub_inb (KEYBOARD_REG_STATUS)))
|
||||||
return -1;
|
return -1;
|
||||||
key = grub_inb (KEYBOARD_REG_DATA);
|
key = grub_inb (KEYBOARD_REG_DATA);
|
||||||
|
if (key == 0xe0)
|
||||||
|
{
|
||||||
|
extended_pending = 1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
/* FIXME */ grub_keyboard_isr (key);
|
/* FIXME */ grub_keyboard_isr (key);
|
||||||
ret = KEYBOARD_SCANCODE (key);
|
ret = KEYBOARD_SCANCODE (key);
|
||||||
if (ret == SHIFT_L || ret == SHIFT_R || ret == ALT || ret == CTRL)
|
if (ret == SHIFT_L || ret == SHIFT_R || ret == ALT || ret == CTRL)
|
||||||
return -1;
|
{
|
||||||
|
extended_pending = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if (extended_pending)
|
if (extended_pending)
|
||||||
ret |= 0x80;
|
ret |= 0x80;
|
||||||
extended_pending = (key == 0xe0);
|
extended_pending = 0;
|
||||||
if (! KEYBOARD_ISMAKE (key))
|
if (! KEYBOARD_ISMAKE (key))
|
||||||
return -1;
|
return -1;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Reference in a new issue