diff --git a/xrdp/lang.c b/xrdp/lang.c index fa9812f3..33b9f4e3 100644 --- a/xrdp/lang.c +++ b/xrdp/lang.c @@ -88,6 +88,72 @@ char en_us_altgr[] = 0, 0, 0, 0, 0, 0, 0, 0 }; +/*****************************************************************************/ +/* italy */ + +/* non shift chars */ +char it_noshift[] = +{ + 0, 0, '1', '2', '3', '4', '5', '6', + '7', '8', '9', '0', '\'', 0xec, 0, 0, + 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', + 'o', 'p', 0xe8, '+', 0, 0, 'a', 's', + 'd', 'f', 'g', 'h', 'j', 'k', 'l', 0xf2, + 0xe0, '\\', 0, 0xf9, '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, 0, 0 +}; + +/* shift chars */ +char it_shift[] = +{ + 0, 0, '!', '"', 0xa3, '$', '%', '&', + '/', '(', ')', '=', '?', '^', 0, 0, + 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', + 'O', 'P', 0xe9, '*', 0, 0, 'A', 'S', + 'D', 'F', 'G', 'H', 'J', 'K', 'L', 0xe7, + 0xb0, '|', 0, 0xa7, '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, 0, 0 +}; + +/* right alt chars */ +char it_altgr[] = +{ + 0, 0, 0, 0, 0, 0, 0x80, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0x80, 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 +}; + /*****************************************************************************/ /* Portuguese (Brazil) */ @@ -395,10 +461,13 @@ get_char_from_scan_code(int device_flags, int scan_code, int* keys, keys_altgr = pt_br_altgr; has_altgr = 1; } - /* italy - else if (keylayout == 0x410) + else if (keylayout == 0x410) /* italy */ { - } */ + keys_noshift = it_noshift; + keys_shift = it_shift; + keys_altgr = it_altgr; + has_altgr = 1; + } else /* english us 0x409 */ { keys_noshift = en_us_noshift;