]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Properly handle extended_pending
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 22 Aug 2010 15:44:03 +0000 (17:44 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 22 Aug 2010 15:44:03 +0000 (17:44 +0200)
term/at_keyboard.c

index 2b7dd9bee1fce93b1b6709703b535327aeede9a8..4213b29dbe19ad74937ad8429e9dd4d4b145c081 100644 (file)
@@ -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;