diff --git a/Xserver/hw/rdp/rdpinput.c b/Xserver/hw/rdp/rdpinput.c index ba9fc677..09b884db 100644 --- a/Xserver/hw/rdp/rdpinput.c +++ b/Xserver/hw/rdp/rdpinput.c @@ -25,6 +25,7 @@ keyboard and mouse stuff static DeviceIntPtr kbdDevice; static int g_old_button_mask = 0; +static int g_caps_lock = 0; extern int g_Bpp; /* from rdpmain.c */ extern ScreenPtr g_pScreen; /* from rdpmain.c */ extern rdpScreenInfo rdpScreen; /* from rdpmain.c */ @@ -197,7 +198,33 @@ static KeySym kbdMap[] = XK_KP_0, NoSymbol, /* 114 */ XK_Insert, NoSymbol, /* 115 */ XK_KP_Delete, NoSymbol, /* 116 */ - XK_KP_Decimal, NoSymbol /* 117 */ + XK_KP_Decimal, NoSymbol, /* 117 */ + XK_A, XK_a, /* 118 */ + XK_B, XK_b, /* 119 */ + XK_C, XK_c, /* 120 */ + XK_D, XK_d, /* 121 */ + XK_E, XK_e, /* 122 */ + XK_F, XK_f, /* 123 */ + XK_G, XK_g, /* 124 */ + XK_H, XK_h, /* 125 */ + XK_I, XK_i, /* 126 */ + XK_J, XK_j, /* 127 */ + XK_K, XK_k, /* 128 */ + XK_L, XK_l, /* 129 */ + XK_M, XK_m, /* 130 */ + XK_N, XK_n, /* 131 */ + XK_O, XK_o, /* 132 */ + XK_P, XK_p, /* 133 */ + XK_Q, XK_q, /* 134 */ + XK_R, XK_r, /* 135 */ + XK_S, XK_s, /* 136 */ + XK_T, XK_t, /* 137 */ + XK_U, XK_u, /* 138 */ + XK_V, XK_v, /* 139 */ + XK_W, XK_w, /* 140 */ + XK_X, XK_x, /* 141 */ + XK_Y, XK_y, /* 142 */ + XK_Z, XK_z /* 143 */ }; @@ -699,6 +726,8 @@ KbdAddEvent(int down, int param1, int param2, int param3, int param4) } break; case 30: /* a */ + /*ch = g_caps_lock ? 118 : 38;*/ + /*ch = 118;*/ ch = 38; break; case 31: /* s */ @@ -798,6 +827,7 @@ KbdAddEvent(int down, int param1, int param2, int param3, int param4) break; case 58: /* caps lock */ ch = 91; + g_caps_lock = down; break; case 59: /* F1 */ ch = 77; diff --git a/Xserver/hw/rdp/rdpup.c b/Xserver/hw/rdp/rdpup.c index 01e8a05d..c0b27b8f 100644 --- a/Xserver/hw/rdp/rdpup.c +++ b/Xserver/hw/rdp/rdpup.c @@ -265,12 +265,45 @@ rdpup_process_msg(struct stream* s) in_uint32_le(s, param4); DEBUG_OUT_UP(("rdpup_process_msg - msg %d param1 %d param2 %d param3 %d \ param4 %d\n", msg, param1, param2, param3, param4)); + /*ErrorF("rdpup_process_msg - msg %d param1 %d param2 %d param3 %d \ +param4 %d\n", msg, param1, param2, param3, param4);*/ switch (msg) { case 15: /* key down */ case 16: /* key up */ KbdAddEvent(msg == 15, param1, param2, param3, param4); break; + case 17: /* from RDP_INPUT_SYNCHRONIZE */ +#if 0 + /* scroll lock */ + if (param1 & 1) + { + KbdAddEvent(1, 70, 0, 70, 0); + } + else + { + KbdAddEvent(0, 70, 49152, 70, 49152); + } + /* num lock */ + if (param1 & 2) + { + KbdAddEvent(1, 69, 0, 69, 0); + } + else + { + KbdAddEvent(0, 69, 49152, 69, 49152); + } + /* caps lock */ + if (param1 & 4) + { + KbdAddEvent(1, 58, 0, 58, 0); + } + else + { + KbdAddEvent(0, 58, 49152, 58, 49152); + } +#endif + break; case 100: g_cursor_x = param1; g_cursor_y = param2; @@ -393,8 +426,9 @@ rdpup_check(void) } else { - ErrorF("rejecting connection - maybe\n"); - /* g_tcp_close(g_tcp_accept(g_listen_sck));*/ + ErrorF("rejecting connection\n"); + g_sleep(10); + g_tcp_close(g_tcp_accept(g_listen_sck)); } } if (sel & 2)