Commit 9e62df51 authored by Andreas Schwab's avatar Andreas Schwab Committed by Dmitry Torokhov

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: default avatarMichael Schmitz <schmitzmic@gmail.com>
Signed-off-by: default avatarMichael Schmitz <schmitzmic@gmail.com>
Signed-off-by: default avatarAndreas Schwab <schwab@linux-m68k.org>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 49f62249
...@@ -75,8 +75,7 @@ MODULE_LICENSE("GPL"); ...@@ -75,8 +75,7 @@ MODULE_LICENSE("GPL");
*/ */
static unsigned char atakbd_keycode[0x72] = { /* American layout */ static unsigned char atakbd_keycode[0x73] = { /* American layout */
[0] = KEY_GRAVE,
[1] = KEY_ESC, [1] = KEY_ESC,
[2] = KEY_1, [2] = KEY_1,
[3] = KEY_2, [3] = KEY_2,
...@@ -117,9 +116,9 @@ static unsigned char atakbd_keycode[0x72] = { /* American layout */ ...@@ -117,9 +116,9 @@ static unsigned char atakbd_keycode[0x72] = { /* American layout */
[38] = KEY_L, [38] = KEY_L,
[39] = KEY_SEMICOLON, [39] = KEY_SEMICOLON,
[40] = KEY_APOSTROPHE, [40] = KEY_APOSTROPHE,
[41] = KEY_BACKSLASH, /* FIXME, '#' */ [41] = KEY_GRAVE,
[42] = KEY_LEFTSHIFT, [42] = KEY_LEFTSHIFT,
[43] = KEY_GRAVE, /* FIXME: '~' */ [43] = KEY_BACKSLASH,
[44] = KEY_Z, [44] = KEY_Z,
[45] = KEY_X, [45] = KEY_X,
[46] = KEY_C, [46] = KEY_C,
...@@ -145,45 +144,34 @@ static unsigned char atakbd_keycode[0x72] = { /* American layout */ ...@@ -145,45 +144,34 @@ static unsigned char atakbd_keycode[0x72] = { /* American layout */
[66] = KEY_F8, [66] = KEY_F8,
[67] = KEY_F9, [67] = KEY_F9,
[68] = KEY_F10, [68] = KEY_F10,
[69] = KEY_ESC, [71] = KEY_HOME,
[70] = KEY_DELETE, [72] = KEY_UP,
[71] = KEY_KP7,
[72] = KEY_KP8,
[73] = KEY_KP9,
[74] = KEY_KPMINUS, [74] = KEY_KPMINUS,
[75] = KEY_KP4, [75] = KEY_LEFT,
[76] = KEY_KP5, [77] = KEY_RIGHT,
[77] = KEY_KP6,
[78] = KEY_KPPLUS, [78] = KEY_KPPLUS,
[79] = KEY_KP1, [80] = KEY_DOWN,
[80] = KEY_KP2, [82] = KEY_INSERT,
[81] = KEY_KP3, [83] = KEY_DELETE,
[82] = KEY_KP0,
[83] = KEY_KPDOT,
[90] = KEY_KPLEFTPAREN,
[91] = KEY_KPRIGHTPAREN,
[92] = KEY_KPASTERISK, /* FIXME */
[93] = KEY_KPASTERISK,
[94] = KEY_KPPLUS,
[95] = KEY_HELP,
[96] = KEY_102ND, [96] = KEY_102ND,
[97] = KEY_KPASTERISK, /* FIXME */ [97] = KEY_UNDO,
[98] = KEY_KPSLASH, [98] = KEY_HELP,
[99] = KEY_KPLEFTPAREN, [99] = KEY_KPLEFTPAREN,
[100] = KEY_KPRIGHTPAREN, [100] = KEY_KPRIGHTPAREN,
[101] = KEY_KPSLASH, [101] = KEY_KPSLASH,
[102] = KEY_KPASTERISK, [102] = KEY_KPASTERISK,
[103] = KEY_UP, [103] = KEY_KP7,
[104] = KEY_KPASTERISK, /* FIXME */ [104] = KEY_KP8,
[105] = KEY_LEFT, [105] = KEY_KP9,
[106] = KEY_RIGHT, [106] = KEY_KP4,
[107] = KEY_KPASTERISK, /* FIXME */ [107] = KEY_KP5,
[108] = KEY_DOWN, [108] = KEY_KP6,
[109] = KEY_KPASTERISK, /* FIXME */ [109] = KEY_KP1,
[110] = KEY_KPASTERISK, /* FIXME */ [110] = KEY_KP2,
[111] = KEY_KPASTERISK, /* FIXME */ [111] = KEY_KP3,
[112] = KEY_KPASTERISK, /* FIXME */ [112] = KEY_KP0,
[113] = KEY_KPASTERISK /* FIXME */ [113] = KEY_KPDOT,
[114] = KEY_KPENTER,
}; };
static struct input_dev *atakbd_dev; static struct input_dev *atakbd_dev;
...@@ -191,7 +179,7 @@ static struct input_dev *atakbd_dev; ...@@ -191,7 +179,7 @@ static struct input_dev *atakbd_dev;
static void atakbd_interrupt(unsigned char scancode, char down) static void atakbd_interrupt(unsigned char scancode, char down)
{ {
if (scancode < 0x72) { /* scancodes < 0xf2 are keys */ if (scancode < 0x73) { /* scancodes < 0xf3 are keys */
// report raw events here? // report raw events here?
...@@ -205,7 +193,7 @@ static void atakbd_interrupt(unsigned char scancode, char down) ...@@ -205,7 +193,7 @@ static void atakbd_interrupt(unsigned char scancode, char down)
input_report_key(atakbd_dev, scancode, down); input_report_key(atakbd_dev, scancode, down);
input_sync(atakbd_dev); input_sync(atakbd_dev);
} }
} else /* scancodes >= 0xf2 are mouse data, most likely */ } else /* scancodes >= 0xf3 are mouse data, most likely */
printk(KERN_INFO "atakbd: unhandled scancode %x\n", scancode); printk(KERN_INFO "atakbd: unhandled scancode %x\n", scancode);
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment