diff --git a/xrdp/lang.c b/xrdp/lang.c index a45eeb84..fa9812f3 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 }; +/*****************************************************************************/ +/* Portuguese (Brazil) */ + +/* non shift chars */ +char pt_br_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', 0xb4, '[', 0, 0, 'a', 's', + 'd', 'f', 'g', 'h', 'j', 'k', 'l', 0xe7, + '~', '`', 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, 0, 0 +}; + +/* shift chars */ +char pt_br_shift[] = +{ + 0, 0, '!', '@', '#', '$', '%', 0xa8, + '&', '*', '(', ')', '_', '+', 0, 0, + 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', + 'O', 'P', '`', '{', 0, 0, 'A', 'S', + 'D', 'F', 'G', 'H', 'J', 'K', 'L', 0xc7, + '^', '"', 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, 0, 0 +}; + +/* right alt chars */ +char pt_br_altgr[] = +{ + 0, 0, 0xb9, 0xb2, 0xb3, 0xa3, 0xa2, 0xac, + 0, 0, 0, 0, 0, 0xa7, 0, 0, + '/', '?', 0xb0, 0, 0, 0, 0, 0, + 0, 0, 0, 0xaa, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0xba, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + /*****************************************************************************/ /* uk english */ @@ -322,6 +388,13 @@ get_char_from_scan_code(int device_flags, int scan_code, int* keys, keys_altgr = de_altgr; has_altgr = 1; } + else if (keylayout == 0x416) /* Portuguese (Brazil) */ + { + keys_noshift = pt_br_noshift; + keys_shift = pt_br_shift; + keys_altgr = pt_br_altgr; + has_altgr = 1; + } /* italy else if (keylayout == 0x410) {