--- 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 {