]> Zhao Yanbai Git Server - minix.git/commitdiff
Added a separate keymap for escaped scancodes. This makes the code
authorBen Gras <ben@minix3.org>
Wed, 4 Feb 2009 17:04:16 +0000 (17:04 +0000)
committerBen Gras <ben@minix3.org>
Wed, 4 Feb 2009 17:04:16 +0000 (17:04 +0000)
a little cleaner (escaped scancodes are less of a special case) and
lets us be completely flexible when assigning meaning to them.

Future: a tool and ioctl to load the escaped keymap.

19 files changed:
drivers/tty/keyboard.c
drivers/tty/keymaps/Makefile
drivers/tty/keymaps/dvorak.src
drivers/tty/keymaps/french.src
drivers/tty/keymaps/genmap.c
drivers/tty/keymaps/german.src
drivers/tty/keymaps/italian.src
drivers/tty/keymaps/japanese.src
drivers/tty/keymaps/latin-america.src
drivers/tty/keymaps/olivetti.src
drivers/tty/keymaps/polish.src
drivers/tty/keymaps/russian-cp866.src
drivers/tty/keymaps/russian.src
drivers/tty/keymaps/scandinavian.src
drivers/tty/keymaps/spanish.src
drivers/tty/keymaps/uk.src
drivers/tty/keymaps/us-std-esc.src
drivers/tty/keymaps/us-std.src
drivers/tty/keymaps/us-swap.src

index 23485891297dcc1979833ff79299e55523d6640a..5e093574eed2bd7e38db755453d3aec2d50df42f 100644 (file)
 #include <minix/com.h>
 #include <minix/keymap.h>
 #include "tty.h"
+
+u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 #include "keymaps/us-std.src"
+};
+
+u16_t keymap_escaped[NR_SCAN_CODES * MAP_COLS] = {
+#include "keymaps/us-std-esc.src"
+};
 
 int irq_hook_id = -1;
 int aux_irq_hook_id = -1;
@@ -467,7 +474,10 @@ int scode;
 
   if (scode == SLASH_SCAN && esc) return '/';  /* don't map numeric slash */
 
-  keyrow = &keymap[scode * MAP_COLS];
+  if(esc)
+         keyrow = &keymap[scode * MAP_COLS];
+  else
+         keyrow = &keymap_escaped[scode * MAP_COLS];
 
   caps = shift;
   lk = locks[ccurrent];
@@ -737,7 +747,6 @@ int scode;                  /* scan code of key just struck or released */
                alt_down = make;
                break;
        case CALOCK:            /* Caps lock - toggle on 0 -> 1 transition */
-               if(escape) return -1;
                if (caps_down < make) {
                        locks[ccurrent] ^= CAPS_LOCK;
                        set_leds();
@@ -745,7 +754,6 @@ int scode;                  /* scan code of key just struck or released */
                caps_down = make;
                break;
        case NLOCK:             /* Num lock */
-               if(escape) return -1;
                if (num_down < make) {
                        locks[ccurrent] ^= NUM_LOCK;
                        set_leds();
@@ -753,7 +761,6 @@ int scode;                  /* scan code of key just struck or released */
                num_down = make;
                break;
        case SLOCK:             /* Scroll lock */
-               if(escape) return -1;
                if (scroll_down < make) {
                        locks[ccurrent] ^= SCROLL_LOCK;
                        set_leds();
@@ -764,13 +771,9 @@ int scode;                 /* scan code of key just struck or released */
                esc = 1;                /* Next key is escaped */
                return(-1);
        default:                /* A normal key */
-               if(escape) {
-                       printf("tty: ignoring escaped 0x%x\n", scode);
-                       return -1;
-               }
                if(!ch) {
-                       printf("tty: ignoring unrecognized scancode 0x%x\n",
-                               scode);
+                       printf("tty: ignoring unrecognized %s scancode 0x%x\n",
+                               esc ? "escaped" : "straight", scode);
                        return -1;
                }
                if(make) return(ch);
index 952a806d599a1bb8c4a829bfca2b405b5808f10b..dfaf1b29ac31701b9479062c933e94c58f0e6dfc 100644 (file)
@@ -24,6 +24,7 @@ all:  \
        spanish.map \
        uk.map \
        us-std.map \
+       us-std-esc.map \
        us-swap.map \
 
 install:       \
@@ -42,6 +43,7 @@ install:      \
        $(LK)/spanish.map \
        $(LK)/uk.map \
        $(LK)/us-std.map \
+       $(LK)/us-std-esc.map \
        $(LK)/us-swap.map \
 
 clean:
@@ -92,5 +94,8 @@ $(LK)/uk.map: uk.map
 $(LK)/us-std.map:      us-std.map
        install -c $? $@
 
+$(LK)/us-std-esc.map:  us-std-esc.map
+       install -c $? $@
+
 $(LK)/us-swap.map:     us-swap.map
        install -c $? $@
index abcd82ff72c6dc30cee0da9cee4bafcf8e627b31..0cfd965a6868f6f3d75b9031cc186f51687c65fd 100644 (file)
@@ -3,8 +3,6 @@
  * Contributed by: Ulrich Hobelmann <u.hobelmann@web.de>
  */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -135,5 +133,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
-
index 5326c4d4de9a0c76b20558c7cad64dda4aa09df9..01a61cdc1f08eab2716e129b0b2860df0a2ef67a 100644 (file)
@@ -1,7 +1,5 @@
 /* Keymap for the French keyboard. */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt     AltGr   Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -132,4 +130,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 1d5c809a72429ba58f24dd25fa5bd4ecd7658dd1..5093cb7e2419c2bc85f5c754e152bb19a2786c55 100644 (file)
@@ -8,7 +8,9 @@
 #include <string.h>
 #include <errno.h>
 
+u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 #include KEYSRC
+};
 
 u8_t comprmap[4 + NR_SCAN_CODES * MAP_COLS * 9/8 * 2 + 1];
 
index 264436c2e7226a6e85f40ba5facb5f1e61754f92..8cbab636d38dd54875c7362b69e8b6f447a05719 100644 (file)
@@ -1,7 +1,5 @@
 /* Keymap for German MF-2 keyboard. */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           unsh    Shift   Alt     AltGr   Alt+Sh  Strg    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -132,4 +130,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 56a4ea0640f4373c7abe6a831eb1bc9b80190451..95c64ee9122f6803e10b9dec40c0be63792b5f90 100644 (file)
@@ -2,8 +2,6 @@
 /* Modified by Ernesto Del Prete in October 1997 */
 /* ernesto@cclix1.polito.it or s84508@cclix1.polito.it */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt     AltGr   Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -134,4 +132,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index d9b9391da46993d397e0003b80f059e41d06417f..7ab519f43522e6443c8f591e5dd59b0fc8d81bc5 100644 (file)
@@ -22,8 +22,6 @@
 #error NR_SCAN_CODES mis-match
 #endif
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -154,4 +152,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - YEN    */      '\\',   '|',    A('\\'),A('\\'),A('|'), C('\\'),
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 4dc40ecfc6e7bbd2029f09b63fe851491a546b8d..5c40715811fd64b1fc16a84ad8f77bad242f6dfd 100644 (file)
@@ -18,8 +18,6 @@
 #error NR_SCAN_CODES mis-match
 #endif
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code            !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none    */      0,      0,      0,      0,      0,      0,      
@@ -150,4 +148,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???     */      0,      0,      0,      0,      0,      0,
 /*126 - ???     */      0,      0,      0,      0,      0,      0,
 /*127 - ???     */      0,      0,      0,      0,      0,      0
-};
index a18d4fd31905f66d43d175c1a6fc8c091bf098c8..25deb961d4ddbd94740ed44672e9052adabcf705 100644 (file)
@@ -1,7 +1,5 @@
 /* Keymap for the Olivetti M24. */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -132,4 +130,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 21ec112a77a777e4ae24d3c4fd981437b582569f..b8a2d5ec5e034a0a01a4c2024cc200cb3a409790 100644 (file)
@@ -4,9 +4,6 @@
  * Charset: ISO-8859-2 - [Polska Norma PN-93 T-42118]
  */
 
-
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -137,4 +134,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 92015b158b7434f45543534a78595186da97f0dc..470d99ff58f7012cf91cf9a35fc732a64f3f003f 100644 (file)
@@ -3,8 +3,6 @@
  * Modified by Roman V. Ignatov <ignatov@minix3.ru>
  * Charset: cp866
  */
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
@@ -136,4 +134,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index ccce9099d68902acbb62f05fbb538a59eb029bd0..94a420e2532a8faefde5649a2c290ac623b0bb1a 100644 (file)
@@ -3,8 +3,6 @@
  * Modified by Roman V. Ignatov <ignatov@minix3.ru>
  * Charset: koi8-r
  */
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
@@ -136,4 +134,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index a4afba929291b80aa6d4d4f9ca4b49ef3635ebd2..3c21af31345ddcfa5b6371d92b8b2b0cd43f5c2e 100644 (file)
@@ -3,8 +3,6 @@
  * preliminary version, 8 Sept 1996  
  */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           unsh    Shift   Alt     AltGr   Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -135,4 +133,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 096ef3738f00c315aa76fbda9eeb7c27e1386971..2404e40dabf8c754433599ee2bf08da8e17ef8c0 100644 (file)
@@ -1,8 +1,6 @@
 /* Keymap for Spanish MF-2 keyboard. */
 /* Modified by Javier Garcia Martin jawa@inf.deusto.es */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt     AltGr   Alt+Sh  Ctrl    */
 /* 
 ==================================================================== 
@@ -135,4 +133,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index e7cc9fbd8f6aa37e67208bedb175933c0086de1a..4b3245b654568467b8933bfca772ec5918ca1220 100644 (file)
@@ -1,7 +1,5 @@
 /* Keymap for standard UK keyboard.                    Author: Darren Mason */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -132,4 +130,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 82059ffc281d742fbbac84da748b0a667ab5625d..8e99995eaf48597abee1c941b1050a6a181cd5a7 100644 (file)
@@ -60,7 +60,7 @@
 /* 55 - '*'    */      '*',    '*',    A('*'), A('*'), A('*'), C('@'),
 /* 56 - ALT    */      ALT,    ALT,    ALT,    ALT,    ALT,    ALT,
 /* 57 - ' '    */      ' ',    ' ',    A(' '), A(' '), A(' '), C('@'),
-/* 58 - CapsLck        */      CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK,
+/* 58 - CapsLck        */      0,      0,      0,      0,      0,      0,
 /* 59 - F1     */      F1,     SF1,    AF1,    AF1,    ASF1,   CF1,
 /* 60 - F2     */      F2,     SF2,    AF2,    AF2,    ASF2,   CF2,
 /* 61 - F3     */      F3,     SF3,    AF3,    AF3,    ASF3,   CF3,
@@ -71,8 +71,8 @@
 /* 66 - F8     */      F8,     SF8,    AF8,    AF8,    ASF8,   CF8,
 /* 67 - F9     */      F9,     SF9,    AF9,    AF9,    ASF9,   CF9,
 /* 68 - F10    */      F10,    SF10,   AF10,   AF10,   ASF10,  CF10,
-/* 69 - NumLock        */      NLOCK,  NLOCK,  NLOCK,  NLOCK,  NLOCK,  NLOCK,
-/* 70 - ScrLock */     SLOCK,  SLOCK,  SLOCK,  SLOCK,  SLOCK,  SLOCK,
+/* 69 - NumLock        */      0,      0,      0,      0,      0,      0,
+/* 70 - ScrLock */     0,      0,      0,      0,      0,      0,
 /* 71 - Home   */      HOME,   '7',    AHOME,  AHOME,  A('7'), CHOME,  
 /* 72 - CurUp  */      UP,     '8',    AUP,    AUP,    A('8'), CUP,
 /* 73 - PgUp   */      PGUP,   '9',    APGUP,  APGUP,  A('9'), CPGUP,
index ea4e33432958a39c3f3c4756673d0131d34cb073..82059ffc281d742fbbac84da748b0a667ab5625d 100644 (file)
@@ -1,7 +1,5 @@
 /* Keymap for US MF-2 keyboard. */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -132,4 +130,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};
index 16d84a01263013d627077e962efca0c208008a6a..e4be4dbfe8c0a05adc6fd89b0546ce19a173460a 100644 (file)
@@ -1,7 +1,5 @@
 /* Keymap for US MF-2 keyboard with the Caps Lock and Control key swapped. */
 
-u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
-
 /* scan-code           !Shift  Shift   Alt1    Alt2    Alt+Sh  Ctrl    */
 /* ==================================================================== */
 /* 00 - none   */      0,      0,      0,      0,      0,      0,      
@@ -132,4 +130,3 @@ u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {
 /*125 - ???    */      0,      0,      0,      0,      0,      0,
 /*126 - ???    */      0,      0,      0,      0,      0,      0,
 /*127 - ???    */      0,      0,      0,      0,      0,      0
-};