Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: atakbd - fix Atari keymap

Fix errors in Atari keymap (mostly in keypad, help and undo keys).

Patch provided on debian-68k ML by Andreas Schwab <schwab@linux-m68k.org>,
keymap array size and unhandled scancode limit adjusted to 0x73 by me.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Andreas Schwab and committed by
Dmitry Torokhov
9e62df51 49f62249

+26 -38
+26 -38
drivers/input/keyboard/atakbd.c
··· 75 75 */ 76 76 77 77 78 - static unsigned char atakbd_keycode[0x72] = { /* American layout */ 79 - [0] = KEY_GRAVE, 78 + static unsigned char atakbd_keycode[0x73] = { /* American layout */ 80 79 [1] = KEY_ESC, 81 80 [2] = KEY_1, 82 81 [3] = KEY_2, ··· 116 117 [38] = KEY_L, 117 118 [39] = KEY_SEMICOLON, 118 119 [40] = KEY_APOSTROPHE, 119 - [41] = KEY_BACKSLASH, /* FIXME, '#' */ 120 + [41] = KEY_GRAVE, 120 121 [42] = KEY_LEFTSHIFT, 121 - [43] = KEY_GRAVE, /* FIXME: '~' */ 122 + [43] = KEY_BACKSLASH, 122 123 [44] = KEY_Z, 123 124 [45] = KEY_X, 124 125 [46] = KEY_C, ··· 144 145 [66] = KEY_F8, 145 146 [67] = KEY_F9, 146 147 [68] = KEY_F10, 147 - [69] = KEY_ESC, 148 - [70] = KEY_DELETE, 149 - [71] = KEY_KP7, 150 - [72] = KEY_KP8, 151 - [73] = KEY_KP9, 148 + [71] = KEY_HOME, 149 + [72] = KEY_UP, 152 150 [74] = KEY_KPMINUS, 153 - [75] = KEY_KP4, 154 - [76] = KEY_KP5, 155 - [77] = KEY_KP6, 151 + [75] = KEY_LEFT, 152 + [77] = KEY_RIGHT, 156 153 [78] = KEY_KPPLUS, 157 - [79] = KEY_KP1, 158 - [80] = KEY_KP2, 159 - [81] = KEY_KP3, 160 - [82] = KEY_KP0, 161 - [83] = KEY_KPDOT, 162 - [90] = KEY_KPLEFTPAREN, 163 - [91] = KEY_KPRIGHTPAREN, 164 - [92] = KEY_KPASTERISK, /* FIXME */ 165 - [93] = KEY_KPASTERISK, 166 - [94] = KEY_KPPLUS, 167 - [95] = KEY_HELP, 154 + [80] = KEY_DOWN, 155 + [82] = KEY_INSERT, 156 + [83] = KEY_DELETE, 168 157 [96] = KEY_102ND, 169 - [97] = KEY_KPASTERISK, /* FIXME */ 170 - [98] = KEY_KPSLASH, 158 + [97] = KEY_UNDO, 159 + [98] = KEY_HELP, 171 160 [99] = KEY_KPLEFTPAREN, 172 161 [100] = KEY_KPRIGHTPAREN, 173 162 [101] = KEY_KPSLASH, 174 163 [102] = KEY_KPASTERISK, 175 - [103] = KEY_UP, 176 - [104] = KEY_KPASTERISK, /* FIXME */ 177 - [105] = KEY_LEFT, 178 - [106] = KEY_RIGHT, 179 - [107] = KEY_KPASTERISK, /* FIXME */ 180 - [108] = KEY_DOWN, 181 - [109] = KEY_KPASTERISK, /* FIXME */ 182 - [110] = KEY_KPASTERISK, /* FIXME */ 183 - [111] = KEY_KPASTERISK, /* FIXME */ 184 - [112] = KEY_KPASTERISK, /* FIXME */ 185 - [113] = KEY_KPASTERISK /* FIXME */ 164 + [103] = KEY_KP7, 165 + [104] = KEY_KP8, 166 + [105] = KEY_KP9, 167 + [106] = KEY_KP4, 168 + [107] = KEY_KP5, 169 + [108] = KEY_KP6, 170 + [109] = KEY_KP1, 171 + [110] = KEY_KP2, 172 + [111] = KEY_KP3, 173 + [112] = KEY_KP0, 174 + [113] = KEY_KPDOT, 175 + [114] = KEY_KPENTER, 186 176 }; 187 177 188 178 static struct input_dev *atakbd_dev; ··· 179 191 static void atakbd_interrupt(unsigned char scancode, char down) 180 192 { 181 193 182 - if (scancode < 0x72) { /* scancodes < 0xf2 are keys */ 194 + if (scancode < 0x73) { /* scancodes < 0xf3 are keys */ 183 195 184 196 // report raw events here? 185 197 ··· 193 205 input_report_key(atakbd_dev, scancode, down); 194 206 input_sync(atakbd_dev); 195 207 } 196 - } else /* scancodes >= 0xf2 are mouse data, most likely */ 208 + } else /* scancodes >= 0xf3 are mouse data, most likely */ 197 209 printk(KERN_INFO "atakbd: unhandled scancode %x\n", scancode); 198 210 199 211 return;