diff options
author | Bastien Nocera <hadess@hadess.net> | 2014-05-02 12:28:26 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-05-05 15:50:08 +0200 |
commit | 859c3ead7452c2eb3671d06c2bfeea92e33b593a (patch) | |
tree | ee1f545d8ced4c9857b915f6206f5e95dd1017fe | |
parent | c62c3b83fe5773c8601d6bb5230867208d883028 (diff) | |
download | gnome-settings-daemon-859c3ead7452c2eb3671d06c2bfeea92e33b593a.tar.gz |
power: Fix wakeup with some keymaps
When trying to wake up the screen, try to use XF86WakeUp in preference
to the left Alt. Don't use the right Alt key as it might be set as the
Compose key which would eat the event without resetting the idle.
Also make sure to initialise the keycode only once.
https://bugzilla.gnome.org/show_bug.cgi?id=729375
-rw-r--r-- | plugins/power/gpm-common.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/plugins/power/gpm-common.c b/plugins/power/gpm-common.c index 74adccc8..a16846e6 100644 --- a/plugins/power/gpm-common.c +++ b/plugins/power/gpm-common.c @@ -744,20 +744,18 @@ backlight_set_abs (GnomeRRScreen *rr_screen, void reset_idletime (void) { - static gboolean inited = FALSE; - static KeyCode keycode1, keycode2; - static gboolean first_keycode = FALSE; + static KeyCode keycode; - if (inited == FALSE) { - keycode1 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Alt_L); - keycode2 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Alt_R); + if (keycode == 0) { + keycode = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_WakeUp); + if (keycode == 0) + keycode = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Alt_L); } gdk_error_trap_push (); - /* send a left or right alt key; first press, then release */ - XTestFakeKeyEvent (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), first_keycode ? keycode1 : keycode2, True, CurrentTime); - XTestFakeKeyEvent (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), first_keycode ? keycode1 : keycode2, False, CurrentTime); - first_keycode = !first_keycode; + /* send a wakeup or left alt key; first press, then release */ + XTestFakeKeyEvent (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), keycode, True, CurrentTime); + XTestFakeKeyEvent (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), keycode, False, CurrentTime); gdk_error_trap_pop_ignored (); } |