summaryrefslogtreecommitdiff
path: root/services
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2012-02-25 17:45:31 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2012-02-25 17:45:31 +0100
commit968d2700720661ce921886b2ccba6136c55b355a (patch)
tree2b1dd9deeb9e2b03ce5b146d7dab65a9786dc513 /services
parent964ca1d1e158403bd64402c32a32d101c1039ab8 (diff)
PanelService: store a keycode instead of a keysym.
(bzr r1858.9.172)
Diffstat (limited to 'services')
-rw-r--r--services/panel-service.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/services/panel-service.c b/services/panel-service.c
index 73c9d0cd2..6e5c37310 100644
--- a/services/panel-service.c
+++ b/services/panel-service.c
@@ -75,7 +75,7 @@ struct _PanelServicePrivate
gint last_bottom;
guint32 last_menu_button;
- KeySym toggle_key;
+ KeyCode toggle_key;
guint32 toggle_modifiers;
guint32 key_monitor_id;
@@ -410,8 +410,7 @@ event_filter (GdkXEvent *ev, GdkEvent *gev, PanelService *self)
if (event->evtype == XI_KeyPress)
{
- if (event->mods.base == priv->toggle_modifiers &&
- XkbKeycodeToKeysym(event->display, event->detail, 0, 0) == priv->toggle_key)
+ if (event->mods.base == priv->toggle_modifiers && event->detail == priv->toggle_key)
{
if (GTK_IS_MENU (priv->last_menu))
gtk_menu_popdown (GTK_MENU (priv->last_menu));
@@ -520,7 +519,8 @@ panel_service_update_menu_keybinding (PanelService *self)
GConfClient *client = gconf_client_get_default ();
gchar *binding = gconf_client_get_string (client, MENU_TOGGLE_KEYBINDING_PATH, NULL);
- KeySym key = 0;
+ KeyCode keycode = 0;
+ KeySym keysym = NoSymbol;
guint32 modifiers = 0;
gchar *keystart = (binding) ? strrchr(binding, '>') : NULL;
@@ -539,11 +539,14 @@ panel_service_update_menu_keybinding (PanelService *self)
if (keystart != keyend)
{
gchar *keystr = g_strndup (keystart, keyend-keystart);
- key = XStringToKeysym (keystr);
+ keysym = XStringToKeysym (keystr);
}
- if (key)
+ if (keysym != NoSymbol)
{
+ Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+ keycode = XKeysymToKeycode(dpy, keysym);
+
if (g_strrstr (binding, "<Shift>"))
{
modifiers |= GDK_SHIFT_MASK;
@@ -562,7 +565,7 @@ panel_service_update_menu_keybinding (PanelService *self)
}
}
- self->priv->toggle_key = key;
+ self->priv->toggle_key = keycode;
self->priv->toggle_modifiers = modifiers;
g_free (binding);