]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Add key_102
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 10 May 2010 13:04:46 +0000 (15:04 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 10 May 2010 13:04:46 +0000 (15:04 +0200)
commands/keylayouts.c
include/grub/term.h

index 35bbb8376726e2f50ec4ffd70901662d4c4fe077..24da21364787d77aacf5fd9ecd19fa1ced2b096e 100644 (file)
@@ -83,7 +83,9 @@ get_abstract_code (grub_term_input_t term, int in)
              {GRUB_TERM_AT_KEY_END, GRUB_TERM_KEY_END},
              {GRUB_TERM_AT_KEY_DC, GRUB_TERM_KEY_DC},
              {GRUB_TERM_AT_KEY_PPAGE, GRUB_TERM_KEY_PPAGE},
-             {GRUB_TERM_AT_KEY_NPAGE, GRUB_TERM_KEY_NPAGE}
+             {GRUB_TERM_AT_KEY_NPAGE, GRUB_TERM_KEY_NPAGE},
+             {0x5600 | '\\', GRUB_TERM_KEY_102},
+             {0x5600 | '|', GRUB_TERM_KEY_SHIFT_102},
            };
        unsigned i;
        for (i = 0; i < ARRAY_SIZE (translations); i++)
@@ -114,6 +116,11 @@ get_abstract_code (grub_term_input_t term, int in)
 static int
 map (grub_term_input_t term __attribute__ ((unused)), int in)
 {
+  if (in == GRUB_TERM_KEY_102)
+    return '\\';
+  if (in == GRUB_TERM_KEY_SHIFT_102)
+    return '|';
+
   return in;
 }
 
@@ -128,13 +135,13 @@ translate (grub_term_input_t term, int in)
           && (code & 0xff) <= 'Z')
     code = (code & 0xff) + 'a' - 'A';    
 
-  code2 = map (term, code & 0xff);
+  code2 = map (term, code & 0x1ffffff);
   if ((code & GRUB_TERM_CAPS) && (code2 & 0xff) >= 'a' && (code2 & 0xff) <= 'z')
     code2 = code2 + 'A' - 'a';
   else if ((code & GRUB_TERM_CAPS) && (code2 & 0xff) >= 'A'
           && (code2 & 0xff) <= 'Z')
     code2 = code2 + 'a' - 'A';
-  return code2 | (code & ~0xffffff);
+  return code2 | (code & ~0x1ffffff);
 }
 
 static int
index a2fa80c1f9ddef9f463c76e742516500ba6d2f04..b3db120df38d992dab77b5f4b94f29b6ccddf8cf 100644 (file)
@@ -37,6 +37,9 @@
 #define GRUB_TERM_KEY_DC        (GRUB_TERM_EXTENDED | 7)
 #define GRUB_TERM_KEY_PPAGE     (GRUB_TERM_EXTENDED | 8)
 #define GRUB_TERM_KEY_NPAGE     (GRUB_TERM_EXTENDED | 9)
+/* Used by keylayouts code. Never returned in grub_getkey.  */
+#define GRUB_TERM_KEY_102       (GRUB_TERM_EXTENDED | 10)
+#define GRUB_TERM_KEY_SHIFT_102 (GRUB_TERM_EXTENDED | 11)
 
 #define GRUB_TERM_ESC          '\e'
 #define GRUB_TERM_TAB          '\t'