diff options
author | Jean-Louis Dupond <jean-louis@dupond.be> | 2012-05-29 16:32:44 +0400 |
---|---|---|
committer | Jean-Louis Dupond <jean-louis@dupond.be> | 2012-05-29 16:32:44 +0400 |
commit | 46814a0d90dace85fa127c2d2b623d6c02a654c0 (patch) | |
tree | 6a8f8861745ab5200c88a13fbe196ee3a75495a8 /remmina-plugins/rdp/rdp_event.c | |
parent | a193737f3829878c88a827a5b7dd6ac72db9e941 (diff) |
Also add SCROLL_LOCK state and fix GTK2 compatibility
Diffstat (limited to 'remmina-plugins/rdp/rdp_event.c')
-rw-r--r-- | remmina-plugins/rdp/rdp_event.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c index f204b21bc..761be0c1c 100644 --- a/remmina-plugins/rdp/rdp_event.c +++ b/remmina-plugins/rdp/rdp_event.c @@ -31,18 +31,35 @@ static void remmina_rdp_event_on_focus_in(GtkWidget* widget, GdkEventKey* event, { rfContext* rfi; rdpInput* input; + GdkModifierType state; +#if GTK_VERSION == 3 + GdkDeviceManager *manager; + GdkDevice *keyboard = NULL; +#endif rfi = GET_DATA(gp); input = rfi->instance->input; uint32 toggle_keys_state = 0; - if (gdk_keymap_get_num_lock_state(gdk_keymap_get_default())) +#if GTK_VERSION == 3 + manager = gdk_display_get_device_manager(gdk_display_get_default()); + keyboard = gdk_device_manager_get_client_pointer(manager); + gdk_window_get_device_position(gdk_get_default_root_window(), keyboard, NULL, NULL, &state); +#else + gdk_window_get_pointer(gdk_get_default_root_window(), NULL, NULL, &state); +#endif + + if (state & GDK_LOCK_MASK) + { + toggle_keys_state |= KBD_SYNC_CAPS_LOCK; + } + if (state & GDK_MOD2_MASK) { toggle_keys_state |= KBD_SYNC_NUM_LOCK; } - if (gdk_keymap_get_caps_lock_state(gdk_keymap_get_default())) + if (state & GDK_MOD5_MASK) { - toggle_keys_state |= KBD_SYNC_CAPS_LOCK; + toggle_keys_state |= KBD_SYNC_SCROLL_LOCK; } input->SynchronizeEvent(input, toggle_keys_state); |