gboolean tomboy_keybinder_bind (const char *keystring, TomboyBindkeyHandler handler, gpointer user_data) { Binding *binding; gboolean success; binding = g_new0 (Binding, 1); binding->keystring = g_strdup (keystring); binding->handler = handler; binding->user_data = user_data; /* Sets the binding's keycode and modifiers */ success = do_grab_key (binding); if (success) { bindings = g_slist_prepend (bindings, binding); } else { g_free (binding->keystring); g_free (binding); } return success; }
/** * keybinder_bind_full: * @keystring: an accelerator description (gtk_accelerator_parse() format) * @handler: (scope notified): callback function * @user_data: (closure) (allow-none): data to pass to @handler * @notify: (allow-none): called when @handler is unregistered * * Grab a key combination globally and register a callback to be called each * time the key combination is pressed. * * Rename to: keybinder_bind * * Since: 0.3.0 * * Returns: %TRUE if the accelerator could be grabbed */ gboolean keybinder_bind_full (const char *keystring, KeybinderHandler handler, void *user_data, GDestroyNotify notify) { struct Binding *binding; gboolean success; binding = g_new0 (struct Binding, 1); binding->keystring = g_strdup (keystring); binding->handler = handler; binding->user_data = user_data; binding->notify = notify; /* Sets the binding's keycode and modifiers */ success = do_grab_key (binding); if (success) { bindings = g_slist_prepend (bindings, binding); } else { g_free (binding->keystring); g_free (binding); } return success; }
gboolean cd_keybinder_bind (const char *keystring, CDBindkeyHandler handler, gpointer user_data) { Binding *binding; gboolean success; if (!keystring) return FALSE; binding = g_new0 (Binding, 1); binding->keystring = g_strdup (keystring); binding->handler = handler; binding->user_data = user_data; /* Sets the binding's keycode and modifiers */ cd_debug ("%s", keystring); success = do_grab_key (binding); if (success) { bindings = g_slist_prepend (bindings, binding); } else { cd_warning ("couldnt bind %s", keystring); g_free (binding->keystring); g_free (binding); } return success; }
static void keymap_changed (GdkKeymap *map) { GSList *iter; (void) map; TRACE (g_print ("Keymap changed! Regrabbing keys...")); for (iter = bindings; iter != NULL; iter = iter->next) { struct Binding *binding = iter->data; do_ungrab_key (binding); } for (iter = bindings; iter != NULL; iter = iter->next) { struct Binding *binding = iter->data; do_grab_key (binding); } }
static void keymap_changed (GdkKeymap *map) { GdkKeymap *keymap = gdk_keymap_get_default (); GSList *iter; TRACE (g_print ("Keymap changed! Regrabbing keys...")); for (iter = bindings; iter != NULL; iter = iter->next) { Binding *binding = (Binding *) iter->data; do_ungrab_key (binding); } lookup_ignorable_modifiers (keymap); for (iter = bindings; iter != NULL; iter = iter->next) { Binding *binding = (Binding *) iter->data; do_grab_key (binding); } }