diff -cr xrdp-0.4.0/xrdp/lang.c xrdp-0.4.0-common/xrdp/lang.c *** xrdp-0.4.0/xrdp/lang.c Mon Apr 2 05:42:35 2007 --- xrdp-0.4.0-common/xrdp/lang.c Thu Jan 17 09:53:12 2008 *************** *** 419,424 **** --- 419,490 ---- }; /*****************************************************************************/ + /* Japanese */ + + /* non shift chars */ + char ja_noshift[] = + { + 0, 0, '1', '2', '3', '4', '5', '6', + '7', '8', '9', '0', '-', '^', 0, 0, + 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', + 'o', 'p', '@', '[', 0, 0, 'a', 's', + 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', + ':', 0, 0, ']', 'z', 'x', 'c', 'v', + 'b', 'n', 'm', ',', '.', '/', 0, 0, + 0, ' ', 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, '7', + '8', '9', '-', '4', '5', '6', '+', '1', + '2', '3', '0', '.', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, '\\', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }; + + /* shift chars */ + char ja_shift[] = + { + 0, 0, '!', '"', '#', '$', '%', '&', + '\'', '(', ')', 0, '=', '~', 0, 0, + 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', + 'O', 'P', '`', '{', 0, 0, 'A', 'S', + 'D', 'F', 'G', 'H', 'J', 'K', 'L', '+', + '*', 0, 0, '}', 'Z', 'X', 'C', 'V', + 'B', 'N', 'M', '<', '>', '?', 0, '*', + 0, ' ', 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, '7', + '8', '9', '-', '4', '5', '6', '+', '1', + '2', '3', '0', '.', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, '_', 0, 0, 0, 0, + 0, 0, 0, 0, 0, '|', 0, 0, + }; + + /* right alt chars */ + char ja_altgr[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }; + + /*****************************************************************************/ char APP_CC get_char_from_scan_code(int device_flags, int scan_code, int* keys, int caps_lock, int num_lock, int scroll_lock, *************** *** 462,467 **** --- 528,539 ---- keys_shift = it_shift; keys_altgr = it_altgr; } + else if (keylayout == 0x411 || keylayout == 0x0e0010411) /* Japanese(ja-JP & ja-JP.unicode */ + { + keys_noshift = ja_noshift; + keys_shift = ja_shift; + keys_altgr = ja_altgr; + } else /* english us 0x409 */ { keys_noshift = en_us_noshift;