static void update_shortcut_label (GtkWidget *widget, const char *value) { char *text; guint accel_key, *keycode; GdkModifierType mods; if (value == NULL || *value == '\0') { gtk_label_set_text (GTK_LABEL (widget), "\342\200\224"); return; } gtk_accelerator_parse_with_keycode (value, &accel_key, &keycode, &mods); if (accel_key == 0 && keycode == NULL && mods == 0) { gtk_label_set_text (GTK_LABEL (widget), "\342\200\224"); g_warning ("Failed to parse keyboard shortcut: '%s'", value); return; } text = gtk_accelerator_get_label_with_keycode (gtk_widget_get_display (widget), accel_key, *keycode, mods); g_free (keycode); gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); }
static void cc_ua_panel_set_shortcut_label (CcUaPanel *self, const char *label, const char *key) { GtkWidget *widget; char *value; char *text; guint accel_key, *keycode; GdkModifierType mods; widget = WID (self->priv->builder, label); value = g_settings_get_string (self->priv->mediakeys_settings, key); if (value == NULL || *value == '\0') { gtk_label_set_text (GTK_LABEL (widget), _("No shortcut set")); g_free (value); return; } gtk_accelerator_parse_with_keycode (value, &accel_key, &keycode, &mods); if (accel_key == 0 && keycode == NULL && mods == 0) { gtk_label_set_text (GTK_LABEL (widget), _("No shortcut set")); g_free (value); g_warning ("Failed to parse keyboard shortcut: '%s'", value); return; } g_free (value); text = gtk_accelerator_get_label_with_keycode (gtk_widget_get_display (widget), accel_key, *keycode, mods); g_free (keycode); gtk_label_set_text (GTK_LABEL (widget), text); g_free (text); }
/** * g_paste_keybinding_activate: * @self: a #GPasteKeybinding instance * @settings: a #GPasteSettings instance * * Activate the keybinding * * Returns: */ G_PASTE_VISIBLE void g_paste_keybinding_activate (GPasteKeybinding *self, GPasteSettings *settings) { g_return_if_fail (G_PASTE_IS_KEYBINDING (self)); g_return_if_fail (G_PASTE_IS_SETTINGS (settings)); GPasteKeybindingPrivate *priv = g_paste_keybinding_get_instance_private (self); g_return_if_fail (!priv->active); const gchar *binding = priv->getter (settings); if (binding) { gtk_accelerator_parse_with_keycode (binding, NULL, &priv->keycodes, &priv->modifiers); priv->active = priv->keycodes != NULL; } }
Key * parse_key (const char *str) { Key *key; if (str == NULL || *str == '\0' || g_str_equal (str, "disabled")) { return NULL; } key = g_new0 (Key, 1); gtk_accelerator_parse_with_keycode (str, &key->keysym, &key->keycodes, &key->state); if (key->keysym == 0 && key->keycodes == NULL && key->state == 0) { g_free (key); return NULL; } return key; }