/* $XConsortium: sunKeyMap.c,v 4.22 94/05/18 11:16:07 kaleb Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.

                    All Rights Reserved

Permission  to  use,  copy,  modify,  and  distribute   this
software  and  its documentation for any purpose and without
fee is hereby granted, provided that the above copyright no-
tice  appear  in all copies and that both that copyright no-
tice and this permission notice appear in  supporting  docu-
mentation,  and  that the names of Sun or X Consortium
not be used in advertising or publicity pertaining to 
distribution  of  the software  without specific prior 
written permission. Sun and X Consortium make no 
representations about the suitability of this software for 
any purpose. It is provided "as is" without any express or 
implied warranty.

SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
ABLE  FOR  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA  OR
PROFITS,  WHETHER  IN  AN  ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.

********************************************************/

/*
 * Modified from  hpcKeymap.c of Xhpc 
 */

#include "dreamcast.h"
#include "keysym.h"

#define GLYPHS_PER_KEY  2

static KeySym map_jpkbd[] = { 
    /* 0x00 */	NoSymbol,	NoSymbol,
    /* 0x01 */	NoSymbol,	NoSymbol,
    /* 0x02 */	NoSymbol,	NoSymbol,
    /* 0x03 */	NoSymbol,	NoSymbol,
    /* 0x04 */	XK_A,		NoSymbol,
    /* 0x05 */	XK_B,		NoSymbol,
    /* 0x06 */	XK_C,		NoSymbol,
    /* 0x07 */	XK_D,		NoSymbol,
    /* 0x08 */  XK_E,		NoSymbol,
    /* 0x09 */	XK_F,		NoSymbol,
    /* 0x0a */	XK_G,		NoSymbol,
    /* 0x0b */	XK_H,		NoSymbol,
    /* 0x0c */	XK_I,		NoSymbol,
    /* 0x0d */	XK_J,		NoSymbol,
    /* 0x0e */	XK_K,		NoSymbol,
    /* 0x0f */	XK_L,		NoSymbol,
    /* 0x10 */	XK_M,		NoSymbol,
    /* 0x11 */	XK_N,		NoSymbol,
    /* 0x12 */	XK_O,		NoSymbol,
    /* 0x13 */	XK_P,		NoSymbol,
    /* 0x14 */	XK_Q,		NoSymbol,
    /* 0x15 */	XK_R,		NoSymbol,
    /* 0x16 */	XK_S,		NoSymbol,
    /* 0x17 */	XK_T,		NoSymbol,
    /* 0x18 */	XK_U,		NoSymbol,
    /* 0x19 */	XK_V,		NoSymbol,
    /* 0x1a */	XK_W,		NoSymbol,
    /* 0x1b */	XK_X,		NoSymbol,
    /* 0x1c */	XK_Y,		NoSymbol,
    /* 0x1d */	XK_Z,		NoSymbol,
    /* 0x1e */	XK_1,		XK_exclam,
    /* 0x1f */	XK_2,		XK_quotedbl,
    /* 0x20 */	XK_3,		XK_numbersign,
    /* 0x21 */	XK_4,		XK_dollar,
    /* 0x22 */	XK_5,		XK_percent,
    /* 0x23 */	XK_6,		XK_ampersand,
    /* 0x24 */	XK_7,		XK_apostrophe,
    /* 0x25 */	XK_8,		XK_parenleft,
    /* 0x26 */	XK_9,		XK_parenright,
    /* 0x27 */	XK_0,		XK_asciitilde,
    /* 0x28 */	XK_Return,	NoSymbol,
    /* 0x29 */	XK_Escape,	NoSymbol,
    /* 0x2a */	XK_BackSpace,	NoSymbol,
    /* 0x2b */	XK_Tab,		NoSymbol,
    /* 0x2c */	XK_space,	NoSymbol,
    /* 0x2d */	XK_minus,	XK_equal,
    /* 0x2e */	XK_asciicircum,	XK_macron,
    /* 0x2f */	XK_at,		XK_grave,
    /* 0x30 */	XK_bracketleft,	XK_braceleft,
    /* 0x31 */	NoSymbol,	NoSymbol,	
    /* 0x32 */	XK_bracketright,XK_braceright,	
    /* 0x33 */	XK_semicolon,	XK_plus,
    /* 0x34 */	XK_colon,	XK_asterisk,
    /* 0x35 */	XK_Zenkaku_Hankaku, NoSymbol,
    /* 0x36 */	XK_comma,	XK_less,
    /* 0x37 */	XK_period,	XK_greater,
    /* 0x38 */	XK_slash,	XK_question,
    /* 0x39 */	XK_Caps_Lock,	NoSymbol,
    /* 0x3a */	XK_F1,		NoSymbol,
    /* 0x3b */	XK_F2,		NoSymbol,
    /* 0x3c */	XK_F3,		NoSymbol,
    /* 0x3d */	XK_F4,		NoSymbol,
    /* 0x3e */	XK_F5,		NoSymbol,
    /* 0x3f */	XK_F6,		NoSymbol,
    /* 0x40 */	XK_F7,		NoSymbol,
    /* 0x41 */	XK_F8,		NoSymbol,
    /* 0x42 */	XK_F9,		NoSymbol,
    /* 0x43 */	XK_F10,		NoSymbol,
    /* 0x44 */	XK_F11,		NoSymbol,
    /* 0x45 */	XK_F12,		NoSymbol,
    /* 0x46 */	XK_Print,	NoSymbol,
    /* 0x47 */	XK_Scroll_Lock,	NoSymbol,
    /* 0x48 */	XK_Pause,	NoSymbol,
    /* 0x49 */	XK_Insert,	NoSymbol,
    /* 0x4a */	XK_Home,	NoSymbol,
    /* 0x4b */	XK_Prior,	NoSymbol,
    /* 0x4c */	XK_Delete,	NoSymbol,
    /* 0x4d */	XK_End,		NoSymbol,
    /* 0x4e */	XK_Next,	NoSymbol,
    /* 0x4f */	XK_Right,	NoSymbol,
    /* 0x50 */	XK_Left,	NoSymbol,
    /* 0x51 */	XK_Down,	NoSymbol,
    /* 0x52 */	XK_Up,		NoSymbol,

#if 0	/* Japanese keyboard doesn't have keypad */
    /* 0x53 */	XK_Num_Lock,	NoSymbol,
    /* 0x54 */	XK_KP_Divide,	NoSymbol,
    /* 0x55 */	XK_KP_Multiply,	NoSymbol,
    /* 0x56 */	XK_KP_Subtract,	NoSymbol,
    /* 0x57 */	XK_KP_Add,	NoSymbol,
    /* 0x58 */	XK_KP_Enter,	NoSymbol,
    /* 0x59 */	XK_KP_1,	XK_KP_End,
    /* 0x5a */	XK_KP_2,	XK_KP_Down,
    /* 0x5b */	XK_KP_3,	XK_KP_Next,
    /* 0x5c */	XK_KP_4,	XK_KP_Left,
    /* 0x5d */	XK_KP_5,	NoSymbol,
    /* 0x5e */	XK_KP_6,	XK_KP_Right,
    /* 0x5f */	XK_KP_7,	XK_KP_Home,
    /* 0x60 */	XK_KP_8,	XK_KP_Up,
    /* 0x61 */	XK_KP_9,	XK_KP_Prior,
    /* 0x62 */	XK_KP_0,	XK_KP_Insert,
    /* 0x63 */	XK_KP_Decimal,	XK_KP_Delete,
#else
    /* 0x53 */	NoSymbol,	NoSymbol,
    /* 0x54 */	NoSymbol,	NoSymbol,
    /* 0x55 */	NoSymbol,	NoSymbol,
    /* 0x56 */	NoSymbol,	NoSymbol,
    /* 0x57 */	NoSymbol,	NoSymbol,
    /* 0x58 */	NoSymbol,	NoSymbol,
    /* 0x59 */	NoSymbol,	NoSymbol,
    /* 0x5a */	NoSymbol,	NoSymbol,
    /* 0x5b */	NoSymbol,	NoSymbol,
    /* 0x5c */	NoSymbol,	NoSymbol,
    /* 0x5d */	NoSymbol,	NoSymbol,
    /* 0x5e */	NoSymbol,	NoSymbol,
    /* 0x5f */	NoSymbol,	NoSymbol,
    /* 0x60 */	NoSymbol,	NoSymbol,
    /* 0x61 */	NoSymbol,	NoSymbol,
    /* 0x62 */	NoSymbol,	NoSymbol,
    /* 0x63 */	NoSymbol,	NoSymbol,
#endif
    /* 0x64 */	NoSymbol,	NoSymbol,
    /* 0x65 */	NoSymbol,	NoSymbol,
    /* 0x66 */	NoSymbol,	NoSymbol,
    /* 0x67 */	NoSymbol,	NoSymbol,
    /* 0x68 */	NoSymbol,	NoSymbol,
    /* 0x69 */	NoSymbol,	NoSymbol,
    /* 0x6a */	NoSymbol,	NoSymbol,
    /* 0x6b */	NoSymbol,	NoSymbol,
    /* 0x6c */	NoSymbol,	NoSymbol,
    /* 0x6d */	NoSymbol,	NoSymbol,
    /* 0x6e */	NoSymbol,	NoSymbol,
    /* 0x6f */	NoSymbol,	NoSymbol,
    /* 0x70 */	NoSymbol,	NoSymbol,
    /* 0x71 */	NoSymbol,	NoSymbol,
    /* 0x72 */	NoSymbol,	NoSymbol,
    /* 0x73 */	NoSymbol,	NoSymbol,
    /* 0x74 */	NoSymbol,	NoSymbol,
    /* 0x75 */	NoSymbol,	NoSymbol,
    /* 0x76 */	NoSymbol,	NoSymbol,
    /* 0x77 */	NoSymbol,	NoSymbol,
    /* 0x78 */	NoSymbol,	NoSymbol,
    /* 0x79 */	NoSymbol,	NoSymbol,
    /* 0x7a */	NoSymbol,	NoSymbol,
    /* 0x7b */	NoSymbol,	NoSymbol,
    /* 0x7c */	NoSymbol,	NoSymbol,
    /* 0x7d */	NoSymbol,	NoSymbol,
    /* 0x7e */	NoSymbol,	NoSymbol,
    /* 0x7f */	NoSymbol,	NoSymbol,

    /* 0x80 */	NoSymbol,	NoSymbol,
    /* 0x81 */	NoSymbol,	NoSymbol,
    /* 0x82 */	NoSymbol,	NoSymbol,
    /* 0x83 */	NoSymbol,	NoSymbol,
    /* 0x84 */	NoSymbol,	NoSymbol,
    /* 0x85 */	NoSymbol,	NoSymbol,
    /* 0x86 */	NoSymbol,	NoSymbol,
    /* 0x87 */	XK_backslash,	XK_underscore,
    /* 0x88 */	XK_Hiragana_Katakana,	NoSymbol,
    /* 0x89 */	XK_yen,		XK_bar,
    /* 0x8a */	XK_Henkan,	NoSymbol,
    /* 0x8b */	XK_Muhenkan,	NoSymbol,
    /* 0x8c */	NoSymbol,	NoSymbol,
    /* 0x8d */	NoSymbol,	NoSymbol,
    /* 0x8e */	NoSymbol,	NoSymbol,
    /* 0x8f */	NoSymbol,	NoSymbol,
    /* 0x90 */	NoSymbol,	NoSymbol,
    /* 0x91 */	NoSymbol,	NoSymbol,
    /* 0x92 */	NoSymbol,	NoSymbol,
    /* 0x93 */	NoSymbol,	NoSymbol,
    /* 0x94 */	NoSymbol,	NoSymbol,
    /* 0x95 */	NoSymbol,	NoSymbol,
    /* 0x96 */	NoSymbol,	NoSymbol,
    /* 0x97 */	NoSymbol,	NoSymbol,
    /* 0x98 */	NoSymbol,	NoSymbol,
    /* 0x99 */	NoSymbol,	NoSymbol,
    /* 0x9a */	NoSymbol,	NoSymbol,
    /* 0x9b */	NoSymbol,	NoSymbol,
    /* 0x9c */	NoSymbol,	NoSymbol,
    /* 0x9d */	NoSymbol,	NoSymbol,
    /* 0x9e */	NoSymbol,	NoSymbol,
    /* 0x9f */	NoSymbol,	NoSymbol,
    /* 0xa0 */	NoSymbol,	NoSymbol,
    /* 0xa1 */	NoSymbol,	NoSymbol,
    /* 0xa2 */	NoSymbol,	NoSymbol,
    /* 0xa3 */	NoSymbol,	NoSymbol,
    /* 0xa4 */	NoSymbol,	NoSymbol,
    /* 0xa5 */	NoSymbol,	NoSymbol,
    /* 0x86 */	NoSymbol,	NoSymbol,
    /* 0xa7 */	NoSymbol,	NoSymbol,
    /* 0xa8 */	NoSymbol,	NoSymbol,
    /* 0xa9 */	NoSymbol,	NoSymbol,
    /* 0xaa */	NoSymbol,	NoSymbol,
    /* 0xab */	NoSymbol,	NoSymbol,
    /* 0xac */	NoSymbol,	NoSymbol,
    /* 0xad */	NoSymbol,	NoSymbol,
    /* 0xae */	NoSymbol,	NoSymbol,
    /* 0xaf */	NoSymbol,	NoSymbol,
    /* 0xb0 */	NoSymbol,	NoSymbol,
    /* 0xb1 */	NoSymbol,	NoSymbol,
    /* 0xb2 */	NoSymbol,	NoSymbol,
    /* 0xb3 */	NoSymbol,	NoSymbol,
    /* 0xb4 */	NoSymbol,	NoSymbol,
    /* 0xb5 */	NoSymbol,	NoSymbol,
    /* 0xb6 */	NoSymbol,	NoSymbol,
    /* 0xb7 */	NoSymbol,	NoSymbol,
    /* 0xb8 */	NoSymbol,	NoSymbol,
    /* 0xb9 */	NoSymbol,	NoSymbol,
    /* 0xba */	NoSymbol,	NoSymbol,
    /* 0xbb */	NoSymbol,	NoSymbol,
    /* 0xbc */	NoSymbol,	NoSymbol,
    /* 0xbd */	NoSymbol,	NoSymbol,
    /* 0xbe */	NoSymbol,	NoSymbol,
    /* 0xbf */	NoSymbol,	NoSymbol,
    /* 0xc0 */	NoSymbol,	NoSymbol,
    /* 0xc1 */	NoSymbol,	NoSymbol,
    /* 0xc2 */	NoSymbol,	NoSymbol,
    /* 0xc3 */	NoSymbol,	NoSymbol,
    /* 0xc4 */	NoSymbol,	NoSymbol,
    /* 0xc5 */	NoSymbol,	NoSymbol,
    /* 0xc6 */	NoSymbol,	NoSymbol,
    /* 0xc7 */	NoSymbol,	NoSymbol,
    /* 0xc8 */	NoSymbol,	NoSymbol,
    /* 0xc9 */	NoSymbol,	NoSymbol,
    /* 0xca */	NoSymbol,	NoSymbol,
    /* 0xcb */	NoSymbol,	NoSymbol,
    /* 0xcc */	NoSymbol,	NoSymbol,
    /* 0xcd */	NoSymbol,	NoSymbol,
    /* 0xce */	NoSymbol,	NoSymbol,
    /* 0xcf */	NoSymbol,	NoSymbol,
    /* 0xd0 */	NoSymbol,	NoSymbol,
    /* 0xd1 */	NoSymbol,	NoSymbol,
    /* 0xd2 */	NoSymbol,	NoSymbol,
    /* 0xd3 */	NoSymbol,	NoSymbol,
    /* 0xd4 */	NoSymbol,	NoSymbol,
    /* 0xd5 */	NoSymbol,	NoSymbol,
    /* 0xd6 */	NoSymbol,	NoSymbol,
    /* 0xd7 */	NoSymbol,	NoSymbol,
    /* 0xd8 */	NoSymbol,	NoSymbol,
    /* 0xd9 */	NoSymbol,	NoSymbol,
    /* 0xda */	NoSymbol,	NoSymbol,
    /* 0xdb */	NoSymbol,	NoSymbol,
    /* 0xdc */	NoSymbol,	NoSymbol,
    /* 0xdd */	NoSymbol,	NoSymbol,
    /* 0xde */	NoSymbol,	NoSymbol,
    /* 0xdf */	NoSymbol,	NoSymbol,
    /* 0xe0 */	XK_Control_L,	NoSymbol,
    /* 0xe1 */	XK_Shift_L,	NoSymbol,
    /* 0xe2 */	XK_Alt_L,	NoSymbol,
    /* 0xe3 */	XK_Meta_L,	NoSymbol,
    /* 0xe4 */	XK_Control_R,	NoSymbol,
    /* 0xe5 */	XK_Shift_R,	NoSymbol,
    /* 0xe6 */	XK_Alt_R,	NoSymbol,
    /* 0xe7 */	XK_Meta_R,	NoSymbol,
};

static KeySym map_ukkbd[] = { 
    /* 0x00 */	NoSymbol,	NoSymbol,
    /* 0x01 */	NoSymbol,	NoSymbol,
    /* 0x02 */	NoSymbol,	NoSymbol,
    /* 0x03 */	NoSymbol,	NoSymbol,
    /* 0x04 */	XK_A,		NoSymbol,
    /* 0x05 */	XK_B,		NoSymbol,
    /* 0x06 */	XK_C,		NoSymbol,
    /* 0x07 */	XK_D,		NoSymbol,
    /* 0x08 */  XK_E,		NoSymbol,
    /* 0x09 */	XK_F,		NoSymbol,
    /* 0x0a */	XK_G,		NoSymbol,
    /* 0x0b */	XK_H,		NoSymbol,
    /* 0x0c */	XK_I,		NoSymbol,
    /* 0x0d */	XK_J,		NoSymbol,
    /* 0x0e */	XK_K,		NoSymbol,
    /* 0x0f */	XK_L,		NoSymbol,
    /* 0x10 */	XK_M,		NoSymbol,
    /* 0x11 */	XK_N,		NoSymbol,
    /* 0x12 */	XK_O,		NoSymbol,
    /* 0x13 */	XK_P,		NoSymbol,
    /* 0x14 */	XK_Q,		NoSymbol,
    /* 0x15 */	XK_R,		NoSymbol,
    /* 0x16 */	XK_S,		NoSymbol,
    /* 0x17 */	XK_T,		NoSymbol,
    /* 0x18 */	XK_U,		NoSymbol,
    /* 0x19 */	XK_V,		NoSymbol,
    /* 0x1a */	XK_W,		NoSymbol,
    /* 0x1b */	XK_X,		NoSymbol,
    /* 0x1c */	XK_Y,		NoSymbol,
    /* 0x1d */	XK_Z,		NoSymbol,
    /* 0x1e */	XK_1,		XK_exclam,
    /* 0x1f */	XK_2,		XK_quotedbl,
    /* 0x20 */	XK_3,		XK_numbersign,
    /* 0x21 */	XK_4,		XK_dollar,
    /* 0x22 */	XK_5,		XK_percent,
    /* 0x23 */	XK_6,		XK_asciicircum,
    /* 0x24 */	XK_7,		XK_ampersand,
    /* 0x25 */	XK_8,		XK_asterisk,
    /* 0x26 */	XK_9,		XK_parenleft,
    /* 0x27 */	XK_0,		XK_parenright,
    /* 0x28 */	XK_Return,	NoSymbol,
    /* 0x29 */	XK_Escape,	NoSymbol,
    /* 0x2a */	XK_BackSpace,	NoSymbol,
    /* 0x2b */	XK_Tab,		NoSymbol,
    /* 0x2c */	XK_space,	NoSymbol,
    /* 0x2d */	XK_minus,	XK_underscore,
    /* 0x2e */	XK_equal,	XK_plus,
    /* 0x2f */	XK_bracketleft,	XK_braceleft,
    /* 0x30 */	XK_bracketright,XK_braceright,
    /* 0x31 */	NoSymbol,	NoSymbol,	
    /* 0x32 */	XK_numbersign,	XK_asciitilde,	
    /* 0x33 */	XK_semicolon,	XK_colon,
    /* 0x34 */	XK_apostrophe,	XK_at,
    /* 0x35 */	XK_grave,	XK_notsign,
    /* 0x36 */	XK_comma,	XK_less,
    /* 0x37 */	XK_period,	XK_greater,
    /* 0x38 */	XK_slash,	XK_question,
    /* 0x39 */	XK_Caps_Lock,	NoSymbol,
    /* 0x3a */	XK_F1,		NoSymbol,
    /* 0x3b */	XK_F2,		NoSymbol,
    /* 0x3c */	XK_F3,		NoSymbol,
    /* 0x3d */	XK_F4,		NoSymbol,
    /* 0x3e */	XK_F5,		NoSymbol,
    /* 0x3f */	XK_F6,		NoSymbol,
    /* 0x40 */	XK_F7,		NoSymbol,
    /* 0x41 */	XK_F8,		NoSymbol,
    /* 0x42 */	XK_F9,		NoSymbol,
    /* 0x43 */	XK_F10,		NoSymbol,
    /* 0x44 */	XK_F11,		NoSymbol,
    /* 0x45 */	XK_F12,		NoSymbol,
    /* 0x46 */	XK_Print,	NoSymbol,
    /* 0x47 */	XK_Scroll_Lock,	NoSymbol,
    /* 0x48 */	XK_Pause,	NoSymbol,
    /* 0x49 */	XK_Insert,	NoSymbol,
    /* 0x4a */	XK_Home,	NoSymbol,
    /* 0x4b */	XK_Prior,	NoSymbol,
    /* 0x4c */	XK_Delete,	NoSymbol,
    /* 0x4d */	XK_End,		NoSymbol,
    /* 0x4e */	XK_Next,	NoSymbol,
    /* 0x4f */	XK_Right,	NoSymbol,
    /* 0x50 */	XK_Left,	NoSymbol,
    /* 0x51 */	XK_Down,	NoSymbol,
    /* 0x52 */	XK_Up,		NoSymbol,

    /* 0x53 */	XK_Num_Lock,	NoSymbol,
    /* 0x54 */	XK_KP_Divide,	NoSymbol,
    /* 0x55 */	XK_KP_Multiply,	NoSymbol,
    /* 0x56 */	XK_KP_Subtract,	NoSymbol,
    /* 0x57 */	XK_KP_Add,	NoSymbol,
    /* 0x58 */	XK_KP_Enter,	NoSymbol,
    /* 0x59 */	XK_KP_1,	XK_KP_End,
    /* 0x5a */	XK_KP_2,	XK_KP_Down,
    /* 0x5b */	XK_KP_3,	XK_KP_Next,
    /* 0x5c */	XK_KP_4,	XK_KP_Left,
    /* 0x5d */	XK_KP_5,	NoSymbol,
    /* 0x5e */	XK_KP_6,	XK_KP_Right,
    /* 0x5f */	XK_KP_7,	XK_KP_Home,
    /* 0x60 */	XK_KP_8,	XK_KP_Up,
    /* 0x61 */	XK_KP_9,	XK_KP_Prior,
    /* 0x62 */	XK_KP_0,	XK_KP_Insert,
    /* 0x63 */	XK_KP_Decimal,	XK_KP_Delete,

    /* 0x64 */	XK_backslash,	XK_bar,
    /* 0x65 */	NoSymbol,	NoSymbol,
    /* 0x66 */	NoSymbol,	NoSymbol,
    /* 0x67 */	NoSymbol,	NoSymbol,
    /* 0x68 */	NoSymbol,	NoSymbol,
    /* 0x69 */	NoSymbol,	NoSymbol,
    /* 0x6a */	NoSymbol,	NoSymbol,
    /* 0x6b */	NoSymbol,	NoSymbol,
    /* 0x6c */	NoSymbol,	NoSymbol,
    /* 0x6d */	NoSymbol,	NoSymbol,
    /* 0x6e */	NoSymbol,	NoSymbol,
    /* 0x6f */	NoSymbol,	NoSymbol,
    /* 0x70 */	NoSymbol,	NoSymbol,
    /* 0x71 */	NoSymbol,	NoSymbol,
    /* 0x72 */	NoSymbol,	NoSymbol,
    /* 0x73 */	NoSymbol,	NoSymbol,
    /* 0x74 */	NoSymbol,	NoSymbol,
    /* 0x75 */	NoSymbol,	NoSymbol,
    /* 0x76 */	NoSymbol,	NoSymbol,
    /* 0x77 */	NoSymbol,	NoSymbol,
    /* 0x78 */	NoSymbol,	NoSymbol,
    /* 0x79 */	NoSymbol,	NoSymbol,
    /* 0x7a */	NoSymbol,	NoSymbol,
    /* 0x7b */	NoSymbol,	NoSymbol,
    /* 0x7c */	NoSymbol,	NoSymbol,
    /* 0x7d */	NoSymbol,	NoSymbol,
    /* 0x7e */	NoSymbol,	NoSymbol,
    /* 0x7f */	NoSymbol,	NoSymbol,

    /* 0x80 */	NoSymbol,	NoSymbol,
    /* 0x81 */	NoSymbol,	NoSymbol,
    /* 0x82 */	NoSymbol,	NoSymbol,
    /* 0x83 */	NoSymbol,	NoSymbol,
    /* 0x84 */	NoSymbol,	NoSymbol,
    /* 0x85 */	NoSymbol,	NoSymbol,
    /* 0x86 */	NoSymbol,	NoSymbol,
    /* 0x87 */	NoSymbol,	NoSymbol,
    /* 0x88 */	NoSymbol,	NoSymbol,
    /* 0x89 */	NoSymbol,	NoSymbol,
    /* 0x8a */	NoSymbol,	NoSymbol,
    /* 0x8b */	NoSymbol,	NoSymbol,
    /* 0x8c */	NoSymbol,	NoSymbol,
    /* 0x8d */	NoSymbol,	NoSymbol,
    /* 0x8e */	NoSymbol,	NoSymbol,
    /* 0x8f */	NoSymbol,	NoSymbol,
    /* 0x90 */	NoSymbol,	NoSymbol,
    /* 0x91 */	NoSymbol,	NoSymbol,
    /* 0x92 */	NoSymbol,	NoSymbol,
    /* 0x93 */	NoSymbol,	NoSymbol,
    /* 0x94 */	NoSymbol,	NoSymbol,
    /* 0x95 */	NoSymbol,	NoSymbol,
    /* 0x96 */	NoSymbol,	NoSymbol,
    /* 0x97 */	NoSymbol,	NoSymbol,
    /* 0x98 */	NoSymbol,	NoSymbol,
    /* 0x99 */	NoSymbol,	NoSymbol,
    /* 0x9a */	NoSymbol,	NoSymbol,
    /* 0x9b */	NoSymbol,	NoSymbol,
    /* 0x9c */	NoSymbol,	NoSymbol,
    /* 0x9d */	NoSymbol,	NoSymbol,
    /* 0x9e */	NoSymbol,	NoSymbol,
    /* 0x9f */	NoSymbol,	NoSymbol,
    /* 0xa0 */	NoSymbol,	NoSymbol,
    /* 0xa1 */	NoSymbol,	NoSymbol,
    /* 0xa2 */	NoSymbol,	NoSymbol,
    /* 0xa3 */	NoSymbol,	NoSymbol,
    /* 0xa4 */	NoSymbol,	NoSymbol,
    /* 0xa5 */	NoSymbol,	NoSymbol,
    /* 0x86 */	NoSymbol,	NoSymbol,
    /* 0xa7 */	NoSymbol,	NoSymbol,
    /* 0xa8 */	NoSymbol,	NoSymbol,
    /* 0xa9 */	NoSymbol,	NoSymbol,
    /* 0xaa */	NoSymbol,	NoSymbol,
    /* 0xab */	NoSymbol,	NoSymbol,
    /* 0xac */	NoSymbol,	NoSymbol,
    /* 0xad */	NoSymbol,	NoSymbol,
    /* 0xae */	NoSymbol,	NoSymbol,
    /* 0xaf */	NoSymbol,	NoSymbol,
    /* 0xb0 */	NoSymbol,	NoSymbol,
    /* 0xb1 */	NoSymbol,	NoSymbol,
    /* 0xb2 */	NoSymbol,	NoSymbol,
    /* 0xb3 */	NoSymbol,	NoSymbol,
    /* 0xb4 */	NoSymbol,	NoSymbol,
    /* 0xb5 */	NoSymbol,	NoSymbol,
    /* 0xb6 */	NoSymbol,	NoSymbol,
    /* 0xb7 */	NoSymbol,	NoSymbol,
    /* 0xb8 */	NoSymbol,	NoSymbol,
    /* 0xb9 */	NoSymbol,	NoSymbol,
    /* 0xba */	NoSymbol,	NoSymbol,
    /* 0xbb */	NoSymbol,	NoSymbol,
    /* 0xbc */	NoSymbol,	NoSymbol,
    /* 0xbd */	NoSymbol,	NoSymbol,
    /* 0xbe */	NoSymbol,	NoSymbol,
    /* 0xbf */	NoSymbol,	NoSymbol,
    /* 0xc0 */	NoSymbol,	NoSymbol,
    /* 0xc1 */	NoSymbol,	NoSymbol,
    /* 0xc2 */	NoSymbol,	NoSymbol,
    /* 0xc3 */	NoSymbol,	NoSymbol,
    /* 0xc4 */	NoSymbol,	NoSymbol,
    /* 0xc5 */	NoSymbol,	NoSymbol,
    /* 0xc6 */	NoSymbol,	NoSymbol,
    /* 0xc7 */	NoSymbol,	NoSymbol,
    /* 0xc8 */	NoSymbol,	NoSymbol,
    /* 0xc9 */	NoSymbol,	NoSymbol,
    /* 0xca */	NoSymbol,	NoSymbol,
    /* 0xcb */	NoSymbol,	NoSymbol,
    /* 0xcc */	NoSymbol,	NoSymbol,
    /* 0xcd */	NoSymbol,	NoSymbol,
    /* 0xce */	NoSymbol,	NoSymbol,
    /* 0xcf */	NoSymbol,	NoSymbol,
    /* 0xd0 */	NoSymbol,	NoSymbol,
    /* 0xd1 */	NoSymbol,	NoSymbol,
    /* 0xd2 */	NoSymbol,	NoSymbol,
    /* 0xd3 */	NoSymbol,	NoSymbol,
    /* 0xd4 */	NoSymbol,	NoSymbol,
    /* 0xd5 */	NoSymbol,	NoSymbol,
    /* 0xd6 */	NoSymbol,	NoSymbol,
    /* 0xd7 */	NoSymbol,	NoSymbol,
    /* 0xd8 */	NoSymbol,	NoSymbol,
    /* 0xd9 */	NoSymbol,	NoSymbol,
    /* 0xda */	NoSymbol,	NoSymbol,
    /* 0xdb */	NoSymbol,	NoSymbol,
    /* 0xdc */	NoSymbol,	NoSymbol,
    /* 0xdd */	NoSymbol,	NoSymbol,
    /* 0xde */	NoSymbol,	NoSymbol,
    /* 0xdf */	NoSymbol,	NoSymbol,
    /* 0xe0 */	XK_Control_L,	NoSymbol,
    /* 0xe1 */	XK_Shift_L,	NoSymbol,
    /* 0xe2 */	XK_Alt_L,	NoSymbol,
    /* 0xe3 */	XK_Meta_L,	NoSymbol,
    /* 0xe4 */	XK_Control_R,	NoSymbol,
    /* 0xe5 */	XK_Shift_R,	NoSymbol,
    /* 0xe6 */	XK_Alt_R,	NoSymbol,
    /* 0xe7 */	XK_Meta_R,	NoSymbol,
};

static KeySym map_uskbd[] = { 
    /* 0x00 */	NoSymbol,	NoSymbol,
    /* 0x01 */	NoSymbol,	NoSymbol,
    /* 0x02 */	NoSymbol,	NoSymbol,
    /* 0x03 */	NoSymbol,	NoSymbol,
    /* 0x04 */	XK_A,		NoSymbol,
    /* 0x05 */	XK_B,		NoSymbol,
    /* 0x06 */	XK_C,		NoSymbol,
    /* 0x07 */	XK_D,		NoSymbol,
    /* 0x08 */  XK_E,		NoSymbol,
    /* 0x09 */	XK_F,		NoSymbol,
    /* 0x0a */	XK_G,		NoSymbol,
    /* 0x0b */	XK_H,		NoSymbol,
    /* 0x0c */	XK_I,		NoSymbol,
    /* 0x0d */	XK_J,		NoSymbol,
    /* 0x0e */	XK_K,		NoSymbol,
    /* 0x0f */	XK_L,		NoSymbol,
    /* 0x10 */	XK_M,		NoSymbol,
    /* 0x11 */	XK_N,		NoSymbol,
    /* 0x12 */	XK_O,		NoSymbol,
    /* 0x13 */	XK_P,		NoSymbol,
    /* 0x14 */	XK_Q,		NoSymbol,
    /* 0x15 */	XK_R,		NoSymbol,
    /* 0x16 */	XK_S,		NoSymbol,
    /* 0x17 */	XK_T,		NoSymbol,
    /* 0x18 */	XK_U,		NoSymbol,
    /* 0x19 */	XK_V,		NoSymbol,
    /* 0x1a */	XK_W,		NoSymbol,
    /* 0x1b */	XK_X,		NoSymbol,
    /* 0x1c */	XK_Y,		NoSymbol,
    /* 0x1d */	XK_Z,		NoSymbol,
    /* 0x1e */	XK_1,		XK_exclam,
    /* 0x1f */	XK_2,		XK_at,	
    /* 0x20 */	XK_3,		XK_numbersign,
    /* 0x21 */	XK_4,		XK_dollar,
    /* 0x22 */	XK_5,		XK_percent,
    /* 0x23 */	XK_6,		XK_asciicircum,
    /* 0x24 */	XK_7,		XK_ampersand,
    /* 0x25 */	XK_8,		XK_asterisk,
    /* 0x26 */	XK_9,		XK_parenleft,
    /* 0x27 */	XK_0,		XK_parenright,
    /* 0x28 */	XK_Return,	NoSymbol,
    /* 0x29 */	XK_Escape,	NoSymbol,
    /* 0x2a */	XK_BackSpace,	NoSymbol,
    /* 0x2b */	XK_Tab,		NoSymbol,
    /* 0x2c */	XK_space,	NoSymbol,
    /* 0x2d */	XK_minus,	XK_underscore,
    /* 0x2e */	XK_equal,	XK_plus,
    /* 0x2f */	XK_bracketleft,	XK_braceleft,
    /* 0x30 */	XK_bracketright,XK_braceright,
    /* 0x31 */	XK_backslash,	XK_bar,	
    /* 0x32 */	XK_backslash,	XK_bar,	
    /* 0x33 */	XK_semicolon,	XK_colon,
    /* 0x34 */	XK_quoteright,	XK_quotedbl,
    /* 0x35 */	XK_grave,	XK_asciitilde,
    /* 0x36 */	XK_comma,	XK_less,
    /* 0x37 */	XK_period,	XK_greater,
    /* 0x38 */	XK_slash,	XK_question,
    /* 0x39 */	XK_Caps_Lock,	NoSymbol,
    /* 0x3a */	XK_F1,		NoSymbol,
    /* 0x3b */	XK_F2,		NoSymbol,
    /* 0x3c */	XK_F3,		NoSymbol,
    /* 0x3d */	XK_F4,		NoSymbol,
    /* 0x3e */	XK_F5,		NoSymbol,
    /* 0x3f */	XK_F6,		NoSymbol,
    /* 0x40 */	XK_F7,		NoSymbol,
    /* 0x41 */	XK_F8,		NoSymbol,
    /* 0x42 */	XK_F9,		NoSymbol,
    /* 0x43 */	XK_F10,		NoSymbol,
    /* 0x44 */	XK_F11,		NoSymbol,
    /* 0x45 */	XK_F12,		NoSymbol,
    /* 0x46 */	XK_Print,	NoSymbol,
    /* 0x47 */	XK_Scroll_Lock,	NoSymbol,
    /* 0x48 */	XK_Pause,	NoSymbol,
    /* 0x49 */	XK_Insert,	NoSymbol,
    /* 0x4a */	XK_Home,	NoSymbol,
    /* 0x4b */	XK_Prior,	NoSymbol,
    /* 0x4c */	XK_Delete,	NoSymbol,
    /* 0x4d */	XK_End,		NoSymbol,
    /* 0x4e */	XK_Next,	NoSymbol,
    /* 0x4f */	XK_Right,	NoSymbol,
    /* 0x50 */	XK_Left,	NoSymbol,
    /* 0x51 */	XK_Down,	NoSymbol,
    /* 0x52 */	XK_Up,		NoSymbol,

    /* 0x53 */	XK_Num_Lock,	NoSymbol,
    /* 0x54 */	XK_KP_Divide,	NoSymbol,
    /* 0x55 */	XK_KP_Multiply,	NoSymbol,
    /* 0x56 */	XK_KP_Subtract,	NoSymbol,
    /* 0x57 */	XK_KP_Add,	NoSymbol,
    /* 0x58 */	XK_KP_Enter,	NoSymbol,
    /* 0x59 */	XK_KP_1,	XK_KP_End,
    /* 0x5a */	XK_KP_2,	XK_KP_Down,
    /* 0x5b */	XK_KP_3,	XK_KP_Next,
    /* 0x5c */	XK_KP_4,	XK_KP_Left,
    /* 0x5d */	XK_KP_5,	NoSymbol,
    /* 0x5e */	XK_KP_6,	XK_KP_Right,
    /* 0x5f */	XK_KP_7,	XK_KP_Home,
    /* 0x60 */	XK_KP_8,	XK_KP_Up,
    /* 0x61 */	XK_KP_9,	XK_KP_Prior,
    /* 0x62 */	XK_KP_0,	XK_KP_Insert,
    /* 0x63 */	XK_KP_Decimal,	XK_KP_Delete,
    /* 0x64 */	NoSymbol,	NoSymbol,
    /* 0x65 */	NoSymbol,	NoSymbol,
    /* 0x66 */	NoSymbol,	NoSymbol,
    /* 0x67 */	NoSymbol,	NoSymbol,
    /* 0x68 */	NoSymbol,	NoSymbol,
    /* 0x69 */	NoSymbol,	NoSymbol,
    /* 0x6a */	NoSymbol,	NoSymbol,
    /* 0x6b */	NoSymbol,	NoSymbol,
    /* 0x6c */	NoSymbol,	NoSymbol,
    /* 0x6d */	NoSymbol,	NoSymbol,
    /* 0x6e */	NoSymbol,	NoSymbol,
    /* 0x6f */	NoSymbol,	NoSymbol,
    /* 0x70 */	NoSymbol,	NoSymbol,
    /* 0x71 */	NoSymbol,	NoSymbol,
    /* 0x72 */	NoSymbol,	NoSymbol,
    /* 0x73 */	NoSymbol,	NoSymbol,
    /* 0x74 */	NoSymbol,	NoSymbol,
    /* 0x75 */	NoSymbol,	NoSymbol,
    /* 0x76 */	NoSymbol,	NoSymbol,
    /* 0x77 */	NoSymbol,	NoSymbol,
    /* 0x78 */	NoSymbol,	NoSymbol,
    /* 0x79 */	NoSymbol,	NoSymbol,
    /* 0x7a */	NoSymbol,	NoSymbol,
    /* 0x7b */	NoSymbol,	NoSymbol,
    /* 0x7c */	NoSymbol,	NoSymbol,
    /* 0x7d */	NoSymbol,	NoSymbol,
    /* 0x7e */	NoSymbol,	NoSymbol,
    /* 0x7f */	NoSymbol,	NoSymbol,

    /* 0x80 */	NoSymbol,	NoSymbol,
    /* 0x81 */	NoSymbol,	NoSymbol,
    /* 0x82 */	NoSymbol,	NoSymbol,
    /* 0x83 */	NoSymbol,	NoSymbol,
    /* 0x84 */	NoSymbol,	NoSymbol,
    /* 0x85 */	NoSymbol,	NoSymbol,
    /* 0x86 */	NoSymbol,	NoSymbol,
    /* 0x87 */	NoSymbol,	NoSymbol,
    /* 0x88 */	NoSymbol,	NoSymbol,
    /* 0x89 */	NoSymbol,	NoSymbol,
    /* 0x8a */	NoSymbol,	NoSymbol,
    /* 0x8b */	NoSymbol,	NoSymbol,
    /* 0x8c */	NoSymbol,	NoSymbol,
    /* 0x8d */	NoSymbol,	NoSymbol,
    /* 0x8e */	NoSymbol,	NoSymbol,
    /* 0x8f */	NoSymbol,	NoSymbol,
    /* 0x90 */	NoSymbol,	NoSymbol,
    /* 0x91 */	NoSymbol,	NoSymbol,
    /* 0x92 */	NoSymbol,	NoSymbol,
    /* 0x93 */	NoSymbol,	NoSymbol,
    /* 0x94 */	NoSymbol,	NoSymbol,
    /* 0x95 */	NoSymbol,	NoSymbol,
    /* 0x96 */	NoSymbol,	NoSymbol,
    /* 0x97 */	NoSymbol,	NoSymbol,
    /* 0x98 */	NoSymbol,	NoSymbol,
    /* 0x99 */	NoSymbol,	NoSymbol,
    /* 0x9a */	NoSymbol,	NoSymbol,
    /* 0x9b */	NoSymbol,	NoSymbol,
    /* 0x9c */	NoSymbol,	NoSymbol,
    /* 0x9d */	NoSymbol,	NoSymbol,
    /* 0x9e */	NoSymbol,	NoSymbol,
    /* 0x9f */	NoSymbol,	NoSymbol,
    /* 0xa0 */	NoSymbol,	NoSymbol,
    /* 0xa1 */	NoSymbol,	NoSymbol,
    /* 0xa2 */	NoSymbol,	NoSymbol,
    /* 0xa3 */	NoSymbol,	NoSymbol,
    /* 0xa4 */	NoSymbol,	NoSymbol,
    /* 0xa5 */	NoSymbol,	NoSymbol,
    /* 0x86 */	NoSymbol,	NoSymbol,
    /* 0xa7 */	NoSymbol,	NoSymbol,
    /* 0xa8 */	NoSymbol,	NoSymbol,
    /* 0xa9 */	NoSymbol,	NoSymbol,
    /* 0xaa */	NoSymbol,	NoSymbol,
    /* 0xab */	NoSymbol,	NoSymbol,
    /* 0xac */	NoSymbol,	NoSymbol,
    /* 0xad */	NoSymbol,	NoSymbol,
    /* 0xae */	NoSymbol,	NoSymbol,
    /* 0xaf */	NoSymbol,	NoSymbol,
    /* 0xb0 */	NoSymbol,	NoSymbol,
    /* 0xb1 */	NoSymbol,	NoSymbol,
    /* 0xb2 */	NoSymbol,	NoSymbol,
    /* 0xb3 */	NoSymbol,	NoSymbol,
    /* 0xb4 */	NoSymbol,	NoSymbol,
    /* 0xb5 */	NoSymbol,	NoSymbol,
    /* 0xb6 */	NoSymbol,	NoSymbol,
    /* 0xb7 */	NoSymbol,	NoSymbol,
    /* 0xb8 */	NoSymbol,	NoSymbol,
    /* 0xb9 */	NoSymbol,	NoSymbol,
    /* 0xba */	NoSymbol,	NoSymbol,
    /* 0xbb */	NoSymbol,	NoSymbol,
    /* 0xbc */	NoSymbol,	NoSymbol,
    /* 0xbd */	NoSymbol,	NoSymbol,
    /* 0xbe */	NoSymbol,	NoSymbol,
    /* 0xbf */	NoSymbol,	NoSymbol,
    /* 0xc0 */	NoSymbol,	NoSymbol,
    /* 0xc1 */	NoSymbol,	NoSymbol,
    /* 0xc2 */	NoSymbol,	NoSymbol,
    /* 0xc3 */	NoSymbol,	NoSymbol,
    /* 0xc4 */	NoSymbol,	NoSymbol,
    /* 0xc5 */	NoSymbol,	NoSymbol,
    /* 0xc6 */	NoSymbol,	NoSymbol,
    /* 0xc7 */	NoSymbol,	NoSymbol,
    /* 0xc8 */	NoSymbol,	NoSymbol,
    /* 0xc9 */	NoSymbol,	NoSymbol,
    /* 0xca */	NoSymbol,	NoSymbol,
    /* 0xcb */	NoSymbol,	NoSymbol,
    /* 0xcc */	NoSymbol,	NoSymbol,
    /* 0xcd */	NoSymbol,	NoSymbol,
    /* 0xce */	NoSymbol,	NoSymbol,
    /* 0xcf */	NoSymbol,	NoSymbol,
    /* 0xd0 */	NoSymbol,	NoSymbol,
    /* 0xd1 */	NoSymbol,	NoSymbol,
    /* 0xd2 */	NoSymbol,	NoSymbol,
    /* 0xd3 */	NoSymbol,	NoSymbol,
    /* 0xd4 */	NoSymbol,	NoSymbol,
    /* 0xd5 */	NoSymbol,	NoSymbol,
    /* 0xd6 */	NoSymbol,	NoSymbol,
    /* 0xd7 */	NoSymbol,	NoSymbol,
    /* 0xd8 */	NoSymbol,	NoSymbol,
    /* 0xd9 */	NoSymbol,	NoSymbol,
    /* 0xda */	NoSymbol,	NoSymbol,
    /* 0xdb */	NoSymbol,	NoSymbol,
    /* 0xdc */	NoSymbol,	NoSymbol,
    /* 0xdd */	NoSymbol,	NoSymbol,
    /* 0xde */	NoSymbol,	NoSymbol,
    /* 0xdf */	NoSymbol,	NoSymbol,
    /* 0xe0 */	XK_Control_L,	NoSymbol,
    /* 0xe1 */	XK_Shift_L,	NoSymbol,
    /* 0xe2 */	XK_Alt_L,	NoSymbol,
    /* 0xe3 */	XK_Meta_L,	NoSymbol,
    /* 0xe4 */	XK_Control_R,	NoSymbol,
    /* 0xe5 */	XK_Shift_R,	NoSymbol,
    /* 0xe6 */	XK_Alt_R,	NoSymbol,
    /* 0xe7 */	XK_Meta_R,	NoSymbol,
};

#define AltMask         Mod1Mask
#define NumLockMask     Mod2Mask
#define AltLangMask     Mod3Mask
#define KanaMask        Mod4Mask
#define ScrollLockMask  Mod5Mask

static dreamcastModmapRec modmap_jpkbd[] = {
	{ 0xe1,	ShiftMask },		/* Shift_L */
	{ 0xe5,	ShiftMask },		/* Shift_R */
	{ 0x39,	LockMask },		/* CapsLock */
	{ 0xe0,	ControlMask },		/* Control_L */
	{ 0xe4,	ControlMask },		/* Control_R */
	{ 0xe2,	AltMask },		/* Alt_L */
	{ 0xe6,	AltMask },		/* Alt_R */
	{ 0x35,	AltLangMask },		/* Zenkaku_Hankaku */
	{ 0x88,	KanaMask },		/* Hiragana_Katakana */
	{ 0x47,	ScrollLockMask },	/* ScrollLock */
	{ 0,	0 }
};

static dreamcastModmapRec modmap_uskbd[] = {
	{ 0xe1,	ShiftMask },		/* Shift_L */
	{ 0xe5,	ShiftMask },		/* Shift_R */
	{ 0x39,	LockMask },		/* CapsLock */
	{ 0xe0,	ControlMask },		/* Control_L */
	{ 0xe4,	ControlMask },		/* Control_R */
	{ 0xe2,	AltMask },		/* Alt_L */
	{ 0xe6,	AltMask },		/* Alt_R */
	{ 0x53,	NumLockMask },		/* NumLock */
	{ 0x47,	ScrollLockMask },	/* ScrollLock */
	{ 0,	0 }
};

KeySymsRec dreamcastKeySyms[] = {
    /*	  map		minKC	maxKC	width */
	{ map_jpkbd,	0x00,	0xe7,	GLYPHS_PER_KEY },
	{ map_ukkbd,	0x00,	0xe7,	GLYPHS_PER_KEY },
	{ map_uskbd,	0x00,	0xe7,	GLYPHS_PER_KEY },
};

dreamcastModmapRec *dreamcastModMaps[] = {
    modmap_jpkbd,
    modmap_uskbd, /* XXX no info about ukkbsd */
    modmap_uskbd,
};
