|
|
|
@ -23,6 +23,8 @@
|
|
|
|
|
|
|
|
|
|
#include "xrdp.h"
|
|
|
|
|
|
|
|
|
|
/* map for rdp to x11 scancodes
|
|
|
|
|
code1 is regular scancode, code2 is extended scancode */
|
|
|
|
|
struct codepair
|
|
|
|
|
{
|
|
|
|
|
tui8 code1;
|
|
|
|
@ -51,6 +53,11 @@ static struct codepair g_map[] =
|
|
|
|
|
{ 98, 0 }, { 0, 115 }, { 0, 116 }, { 0, 117 }, { 102, 0 }, /* 90 - 94 */
|
|
|
|
|
{ 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, /* 95 - 99 */
|
|
|
|
|
{ 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, /* 100 - 104 */
|
|
|
|
|
{ 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, /* 105 - 109 */
|
|
|
|
|
{ 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, /* 110 - 114 */
|
|
|
|
|
{ 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, /* 115 - 119 */
|
|
|
|
|
{ 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, /* 120 - 124 */
|
|
|
|
|
{ 133, 0 }, { 134, 0 }, { 135, 0 } /* 125 - 127 */
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
@ -65,16 +72,12 @@ get_key_info_from_scan_code(int device_flags, int scan_code, int* keys,
|
|
|
|
|
int ext;
|
|
|
|
|
int index;
|
|
|
|
|
|
|
|
|
|
ext = device_flags & 0x0100;
|
|
|
|
|
ext = device_flags & KBD_FLAG_EXT; /* 0x0100 */
|
|
|
|
|
shift = keys[42] || keys[54];
|
|
|
|
|
altgr = keys[56]; /* right alt */
|
|
|
|
|
altgr = keys[56] & KBD_FLAG_EXT; /* right alt */
|
|
|
|
|
rv = 0;
|
|
|
|
|
scan_code = scan_code % 128;
|
|
|
|
|
index = 0;
|
|
|
|
|
if (scan_code <= (sizeof(g_map) / sizeof(g_map[0])))
|
|
|
|
|
{
|
|
|
|
|
scan_code = scan_code & 0x7f;
|
|
|
|
|
index = ext ? g_map[scan_code].code2 : g_map[scan_code].code1;
|
|
|
|
|
}
|
|
|
|
|
/* keymap file is created with numlock off so we have to do this */
|
|
|
|
|
if ((index >= 79) && (index <= 91))
|
|
|
|
|
{
|
|
|
|
|