--- linux-2.6.10.orig/drivers/input/gcn-si.c	2005-01-28 23:15:50.000000000 +0900
+++ linux-2.6.10/drivers/input/gcn-si.c	2005-01-31 15:16:38.860605464 +0900
@@ -323,10 +323,9 @@
 		break;
 		
 	case CTL_KEYBOARD:
-		key[0] = (raw[0] >> 12) & 0xFF;
-		key[1] = (raw[0] >> 4) & 0xFF;
-		key[2] = (raw[0] << 4) & 0xFF;
-		key[2] |= (raw[1] << 28) & 0xFF;
+		key[0] = (raw[1] >> 24) & 0xFF;
+		key[1] = (raw[1] >> 16) & 0xFF;
+		key[2] = (raw[1] >>  8) & 0xFF;
 
 		/* check if anything was released */
 		for (i = 0; i < 3; ++i) {
--- linux-2.6.10.orig/drivers/input/gcn-keymap.h	2005-01-29 11:08:19.000000000 +0900
+++ linux-2.6.10/drivers/input/gcn-keymap.h	2005-01-29 12:09:46.000000000 +0900
@@ -12,17 +12,17 @@
 
 static unsigned char gamecube_keymap[] = {
 	/* 00 */ KEY_RESERVED,  KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,   KEY_HOME,      KEY_END,
-	/* 08 */ KEY_PAGEUP,    KEY_PAGEDOWN, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,
+	/* 08 */ KEY_PAGEUP,    KEY_PAGEDOWN, KEY_SCROLLLOCK, KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,
 	/* 10 */ KEY_A,         KEY_B,        KEY_C,          KEY_D,          KEY_E,         KEY_F,          KEY_G,         KEY_H,
 	/* 18 */ KEY_I,         KEY_J,        KEY_K,          KEY_L,          KEY_M,         KEY_N,          KEY_O,         KEY_P,
 	/* 20 */ KEY_Q,         KEY_R,        KEY_S,          KEY_T,          KEY_U,         KEY_V,          KEY_W,         KEY_X,
 	/* 28 */ KEY_Y,         KEY_Z,        KEY_1,          KEY_2,          KEY_3,         KEY_4,          KEY_5,         KEY_6,
-	/* 30 */ KEY_7,         KEY_8,        KEY_9,          KEY_0,          KEY_MINUS,     KEY_EQUAL,      KEY_BACKSLASH, KEY_APOSTROPHE,
-	/* 38 */ KEY_LEFTBRACE, KEY_EQUAL,    KEY_KPASTERISK, KEY_RIGHTBRACE, KEY_COMMA,     KEY_DOT,        KEY_SLASH,     KEY_RESERVED,
+	/* 30 */ KEY_7,         KEY_8,        KEY_9,          KEY_0,          KEY_MINUS,     KEY_EQUAL,      KEY_YEN,       KEY_LEFTBRACE,
+	/* 38 */ KEY_RIGHTBRACE,KEY_SEMICOLON,KEY_APOSTROPHE, KEY_BACKSLASH,  KEY_COMMA,     KEY_DOT,        KEY_SLASH,     KEY_RO,
 	/* 40 */ KEY_F1,        KEY_F2,       KEY_F3,         KEY_F4,         KEY_F5,        KEY_F6,         KEY_F7,        KEY_F8,
 	/* 48 */ KEY_F9,        KEY_F10,      KEY_F11,        KEY_F12,        KEY_ESC,       KEY_INSERT,     KEY_DELETE,    KEY_GRAVE,
 	/* 50 */ KEY_BACKSPACE, KEY_TAB,      KEY_RESERVED,   KEY_CAPSLOCK,   KEY_LEFTSHIFT, KEY_RIGHTSHIFT, KEY_LEFTCTRL,  KEY_LEFTALT,
-	/* 58 */ KEY_RESERVED,  KEY_SPACE,    KEY_RESERVED,   KEY_RESERVED,   KEY_LEFT,      KEY_DOWN,       KEY_UP,        KEY_RIGHT,
+	/* 58 */ KEY_MUHENKAN,  KEY_SPACE,    KEY_HENKAN,     KEY_HIRAGANA,   KEY_LEFT,      KEY_DOWN,       KEY_UP,        KEY_RIGHT,
 	/* 60 */ KEY_RESERVED,  KEY_ENTER,    KEY_RESERVED,   KEY_RESERVED,   KEY_SEMICOLON, KEY_KPPLUS,     KEY_RESERVED,  KEY_RESERVED,
 	/* 68 */ KEY_RESERVED,  KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,
 	/* 70 */ KEY_RESERVED,  KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,   KEY_RESERVED,  KEY_RESERVED,

