summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2014-05-02 12:28:26 +0200
committerBastien Nocera <hadess@hadess.net>2014-05-05 15:50:08 +0200
commit859c3ead7452c2eb3671d06c2bfeea92e33b593a (patch)
treeee1f545d8ced4c9857b915f6206f5e95dd1017fe
parentc62c3b83fe5773c8601d6bb5230867208d883028 (diff)
downloadgnome-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.c18
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 ();
}