]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2008-05-29 Robert Millan <rmh@aybabtu.com>
authorrobertmh <robertmh@localhost>
Thu, 29 May 2008 18:15:27 +0000 (18:15 +0000)
committerrobertmh <robertmh@localhost>
Thu, 29 May 2008 18:15:27 +0000 (18:15 +0000)
        * term/i386/pc/at_keyboard.c: Include `grub/machine/machine.h'.
        (OLPC_UP, OLPC_DOWN, OLPC_LEFT, OLPC_RIGHT): New macros.
        [GRUB_MACHINE_IEEE1275] (keyboard_map): Add OLPC scan codes
        (grub_console_checkkey): Add grub_dprintf() call to report unknown
        scan codes.

ChangeLog
term/i386/pc/at_keyboard.c

index f70fdfddbe858fdce3ab20403ba3f5d6ca4ca761..f69678babbd2b1854c0959be0a68df461b20070a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-29  Robert Millan  <rmh@aybabtu.com>
+
+       * term/i386/pc/at_keyboard.c: Include `grub/machine/machine.h'.
+       (OLPC_UP, OLPC_DOWN, OLPC_LEFT, OLPC_RIGHT): New macros.
+       [GRUB_MACHINE_IEEE1275] (keyboard_map): Add OLPC scan codes
+       (grub_console_checkkey): Add grub_dprintf() call to report unknown
+       scan codes.
+
 2008-05-29  Robert Millan  <rmh@aybabtu.com>
 
        * term/i386/pc/at_keyboard.c (grub_console_checkkey): Add support for
index 2417bf5f4d378e967290a8f92290e88bd691e693..b62cd66785adb88cd8e0729c1c8aff88735bbc37 100644 (file)
@@ -17,6 +17,7 @@
  */
 
 #include <grub/machine/console.h>
+#include <grub/machine/machine.h>
 #include <grub/cpu/io.h>
 #include <grub/misc.h>
 #include <grub/term.h>
 
 static short at_keyboard_status = 0;
 
+#ifdef GRUB_MACHINE_IEEE1275
+#define OLPC_UP                GRUB_TERM_UP
+#define OLPC_DOWN      GRUB_TERM_DOWN
+#define OLPC_LEFT      GRUB_TERM_LEFT
+#define OLPC_RIGHT     GRUB_TERM_RIGHT
+#else
+#define OLPC_UP                '\0'
+#define OLPC_DOWN      '\0'
+#define OLPC_LEFT      '\0'
+#define OLPC_RIGHT     '\0'
+#endif
+
 static char keyboard_map[128] =
 {
   '\0', GRUB_TERM_ESC, '1', '2', '3', '4', '5', '6',
@@ -63,7 +76,10 @@ static char keyboard_map[128] =
   '\0', ' ', '\0', '\0', '\0', '\0', '\0', '\0',
   '\0', '\0', '\0', '\0', '\0', '\0', '\0', GRUB_TERM_HOME,
   GRUB_TERM_UP, GRUB_TERM_NPAGE, '-', GRUB_TERM_LEFT, '\0', GRUB_TERM_RIGHT, '+', GRUB_TERM_END,
-  GRUB_TERM_DOWN, GRUB_TERM_PPAGE, '\0', GRUB_TERM_DC
+  GRUB_TERM_DOWN, GRUB_TERM_PPAGE, '\0', GRUB_TERM_DC, '\0', '\0', '\0', '\0',
+  '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
+  '\0', '\0', '\0', '\0', '\0', OLPC_UP, OLPC_DOWN, OLPC_LEFT,
+  OLPC_RIGHT
 };
 
 static char keyboard_map_shift[128] =
@@ -167,14 +183,14 @@ grub_keyboard_getkey (void)
 int
 grub_console_checkkey (void)
 {
-  int key;
-  key = grub_keyboard_getkey ();
-  if (key == -1)
+  int code, key;
+  code = grub_keyboard_getkey ();
+  if (code == -1)
     return -1;
 #ifdef DEBUG_AT_KEYBOARD
   grub_dprintf ("atkeyb", "Detected key 0x%x\n", key);
 #endif
-  switch (key)
+  switch (code)
     {
       case CAPS_LOCK:
        at_keyboard_status ^= KEYBOARD_STATUS_CAPS_LOCK;
@@ -187,12 +203,16 @@ grub_console_checkkey (void)
        break;
       default:
        if (at_keyboard_status & (KEYBOARD_STATUS_CTRL_L | KEYBOARD_STATUS_CTRL_R))
-         key = keyboard_map[key] - 'a' + 1;
+         key = keyboard_map[code] - 'a' + 1;
        else if ((at_keyboard_status & (KEYBOARD_STATUS_SHIFT_L | KEYBOARD_STATUS_SHIFT_R))
-           && keyboard_map_shift[key])
-         key = keyboard_map_shift[key];
+           && keyboard_map_shift[code])
+         key = keyboard_map_shift[code];
        else
-         key = keyboard_map[key];
+         key = keyboard_map[code];
+
+       if (key == 0)
+         grub_dprintf ("atkeyb", "Unknown key 0x%x detected\n", code);
+
        if (at_keyboard_status & KEYBOARD_STATUS_CAPS_LOCK)
          {
            if ((key >= 'a') && (key <= 'z'))