--- linux-2.6.16/drivers/input/keyboard/locomokbd.c.orig 2006-05-13 22:53:33.810228656 +0200 +++ linux-2.6.16/drivers/input/keyboard/locomokbd.c 2006-05-13 22:56:56.544408376 +0200 @@ -45,17 +45,20 @@ #define LOCOMOKBD_NUMKEYS 128 -#define LOCOMO_KEY_CALENDER KEY_F1 -#define LOCOMO_KEY_ADDRESS KEY_F2 -#define LOCOMO_KEY_CANCEL KEY_F4 -#define LOCOMO_KEY_CENTER KEY_F5 -#define LOCOMO_KEY_MAIL KEY_F10 -#define LOCOMO_KEY_OK KEY_F11 +#define LOCOMO_KEY_CALENDER KEY_LEFTCTRL +#define LOCOMO_KEY_ADDRESS KEY_LEFTALT /* Needed for SysRQ */ +#define LOCOMO_KEY_HOME KEY_SYSRQ /* Needed for SysRQ */ #define LOCOMO_KEY_MENU KEY_F12 +#define LOCOMO_KEY_MAIL KEY_F10 +#define LOCOMO_KEY_OK KEY_F11 /* Don't hardwire to KEY_RETURN */ +#define LOCOMO_KEY_CANCEL KEY_POWER +#define LOCOMO_KEY_CENTER KEY_F5 /* Don't hardwire to KEY_RETURN */ + +#define LOCOMO_KEY_FN KEY_F9 static unsigned char locomokbd_keycode[LOCOMOKBD_NUMKEYS] = { - 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */ - KEY_HOME, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, KEY_HOME, LOCOMO_KEY_ADDRESS, /* 10 - 19 */ + 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, LOCOMO_KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */ + 0, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, 0, LOCOMO_KEY_ADDRESS, /* 10 - 19 */ 0, 0, 0, 0, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 20 - 29 */ 0, 0, 0, LOCOMO_KEY_CENTER, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */ @@ -65,7 +68,7 @@ 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */ KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */ 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */ - KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */ + KEY_LEFTSHIFT, KEY_TAB, LOCOMO_KEY_FN, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */ KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */ }; @@ -76,7 +79,7 @@ #define NR_SCANCODES 128 #define KB_DELAY 8 -#define SCAN_INTERVAL (HZ/10) +#define SCAN_INTERVAL (HZ/20) #define LOCOMOKBD_PRESSED 1 struct locomokbd { @@ -146,6 +149,7 @@ locomokbd_charge_all(membase); num_pressed = 0; + for (col = 0; col < KB_COLS; col++) { locomokbd_activate_col(membase, col); @@ -155,7 +159,7 @@ for (row = 0; row < KB_ROWS; row++) { scancode = SCANCODE(col, row); if (rowd & KB_ROWMASK(row)) { - /* printk(KERN_ERR "locomokbd: COL [%i] ROW [%i] scancode [%i] keycode [%i]\n",col,row,scancode,locomokbd->keycode[scancode]); */ + /* printk(KERN_ERR "locomokbd: ROW [%i] COL [%i] scancode [%i] keycode [%i]\n",row,col,scancode,locomokbd->keycode[scancode]); */ num_pressed += 1; input_report_key(locomokbd->input, locomokbd->keycode[scancode], 1); } else {