summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_wm.c
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2008-02-26 21:55:19 +0000
committerjsorg71 <jsorg71>2008-02-26 21:55:19 +0000
commit30b0b77fcebf29fcd13eb998a696f8f67461ad30 (patch)
tree2e5310f26c9ee1cad2bb3f529df28fe6facff747 /xrdp/xrdp_wm.c
parent57484bd7016c6e56854dc4c34ac0dc8077a07014 (diff)
downloadxrdp-proprietary-30b0b77fcebf29fcd13eb998a696f8f67461ad30.tar.gz
xrdp-proprietary-30b0b77fcebf29fcd13eb998a696f8f67461ad30.zip
don't supress key up and sync modifiers on connect
Diffstat (limited to 'xrdp/xrdp_wm.c')
-rw-r--r--xrdp/xrdp_wm.c94
1 files changed, 10 insertions, 84 deletions
diff --git a/xrdp/xrdp_wm.c b/xrdp/xrdp_wm.c
index d4e92ca3..1918e4ab 100644
--- a/xrdp/xrdp_wm.c
+++ b/xrdp/xrdp_wm.c
@@ -42,8 +42,6 @@ xrdp_wm_create(struct xrdp_process* owner,
self->cache = xrdp_cache_create(self, self->session, self->client_info);
self->log = list_create();
self->log->auto_free = 1;
- self->key_down_list = list_create();
- self->key_down_list->auto_free = 1;
self->mm = xrdp_mm_create(self);
self->default_font = xrdp_font_create(self);
/* this will use built in keymap or load from file */
@@ -65,8 +63,6 @@ xrdp_wm_delete(struct xrdp_wm* self)
xrdp_bitmap_delete(self->screen);
/* free the log */
list_delete(self->log);
- /* key down list */
- list_delete(self->key_down_list);
/* free default font */
xrdp_font_delete(self->default_font);
/* free self */
@@ -1050,60 +1046,14 @@ xrdp_wm_mouse_click(struct xrdp_wm* self, int x, int y, int but, int down)
}
/*****************************************************************************/
-static struct xrdp_key_down* APP_CC
-xrdp_get_key_down(struct xrdp_wm* self, int scan_code, int* index)
-{
- int i;
- struct xrdp_key_down* key_down;
-
- for (i = 0; i < self->key_down_list->count; i++)
- {
- key_down = (struct xrdp_key_down*)list_get_item(self->key_down_list, i);
- if (key_down != 0)
- {
- if (key_down->scan_code == scan_code)
- {
- if (index != 0)
- {
- *index = i;
- }
- return key_down;
- }
- }
- }
- return 0;
-}
-
-/*****************************************************************************/
-static void APP_CC
-xrdp_add_key_down(struct xrdp_wm* self, int param1, int param2,
- int scan_code, int param4)
-{
- struct xrdp_key_down* key_down;
- if (xrdp_get_key_down(self, scan_code, 0) != 0)
- {
- return;
- }
- key_down = (struct xrdp_key_down*)g_malloc(sizeof(struct xrdp_key_down), 0);
- key_down->scan_code = scan_code;
- key_down->param1 = param1;
- key_down->param2 = param2;
- key_down->param4 = param4;
- list_add_item(self->key_down_list, (long)key_down);
-}
-
-/*****************************************************************************/
int APP_CC
xrdp_wm_key(struct xrdp_wm* self, int device_flags, int scan_code)
{
int msg;
- int key_down_index;
int c;
- struct xrdp_key_down* key_down;
/*g_printf("count %d\n", self->key_down_list->count);*/
scan_code = scan_code % 128;
- key_down = 0;
if (self->popup_wnd != 0)
{
xrdp_wm_clear_popup(self);
@@ -1113,12 +1063,6 @@ xrdp_wm_key(struct xrdp_wm* self, int device_flags, int scan_code)
{
self->keys[scan_code] = 0;
msg = WM_KEYUP;
- key_down = xrdp_get_key_down(self, scan_code, &key_down_index);
- /* if there was no key down, don't allow a key up */
- if (key_down == 0)
- {
- return 0;
- }
}
else /* key down */
{
@@ -1141,37 +1085,19 @@ xrdp_wm_key(struct xrdp_wm* self, int device_flags, int scan_code)
{
if (self->mm->mod->mod_event != 0)
{
- if (msg == WM_KEYDOWN)
+ c = get_char_from_scan_code
+ (device_flags, scan_code, self->keys, self->caps_lock,
+ self->num_lock, self->scroll_lock,
+ &(self->keymap));
+ if (c != 0)
{
- c = get_char_from_scan_code
- (device_flags, scan_code, self->keys, self->caps_lock,
- self->num_lock, self->scroll_lock,
- &(self->keymap));
- if (c != 0)
- {
- self->mm->mod->mod_event(self->mm->mod, msg, c,
- 0xffff, scan_code, device_flags);
- xrdp_add_key_down(self, c, 0xffff, scan_code,
- device_flags);
- }
- else
- {
- self->mm->mod->mod_event(self->mm->mod, msg, scan_code,
- device_flags, scan_code, device_flags);
- xrdp_add_key_down(self, scan_code, device_flags, scan_code,
- device_flags);
- }
+ self->mm->mod->mod_event(self->mm->mod, msg, c,
+ 0xffff, scan_code, device_flags);
}
- else /* key up */
+ else
{
- if (key_down != 0)
- {
- self->mm->mod->mod_event(self->mm->mod, msg, key_down->param1,
- key_down->param2 | KBD_FLAG_UP,
- key_down->scan_code,
- key_down->param4 | KBD_FLAG_UP);
- list_remove_item(self->key_down_list, key_down_index);
- }
+ self->mm->mod->mod_event(self->mm->mod, msg, scan_code,
+ device_flags, scan_code, device_flags);
}
}
}