aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl.c
diff options
context:
space:
mode:
authorGravatar Barrucadu <mike@barrucadu.co.uk>2009-04-25 23:18:59 +0100
committerGravatar Barrucadu <mike@barrucadu.co.uk>2009-04-25 23:18:59 +0100
commit8a886c9fb87f56d0531736422c47606412bc5019 (patch)
tree9eba0fbb2c60cd2894a1ab2495bf9a842e163808 /uzbl.c
parent1afecf317c8f2e208b583a11543ce697631f7d4c (diff)
Loads key bindings into two structs - internal_bindings and external_bindings.
Diffstat (limited to 'uzbl.c')
-rw-r--r--uzbl.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/uzbl.c b/uzbl.c
index ac693a3..a8474d1 100644
--- a/uzbl.c
+++ b/uzbl.c
@@ -76,6 +76,16 @@ typedef struct
void (*func)(WebKitWebView*);
} Command;
+typedef struct
+{
+ const char *binding;
+ const char *action;
+} Binding;
+
+static Binding internal_bindings[256];
+static Binding external_bindings[256];
+static int num_internal_bindings = 0;
+static int num_external_bindings = 0;
static void
update_title (GtkWindow* window);
@@ -293,6 +303,18 @@ GtkWidget* create_window () {
}
static void
+add_binding (char *binding, char *action, bool internal) {
+ Binding bind = {binding, action};
+ if (internal) {
+ internal_bindings[num_internal_bindings] = bind;
+ num_internal_bindings ++;
+ } else {
+ external_bindings[num_external_bindings] = bind;
+ num_external_bindings ++;
+ }
+}
+
+static void
settings_init () {
GKeyFile* config = g_key_file_new ();
gboolean res = g_key_file_load_from_file (config, "./sampleconfig", G_KEY_FILE_NONE, NULL); //TODO: pass config file as argument
@@ -337,6 +359,23 @@ settings_init () {
} else {
printf ("Mod key disabled/\n");
}
+
+ gchar **keysi = g_key_file_get_keys (config, "bindings_internal", NULL, NULL);
+ int i = 0;
+ for (i = 0; keysi[i]; i++)
+ {
+ gchar *binding = g_key_file_get_string(config, "bindings_internal", keysi[i], NULL);
+ printf("Action: %s, Binding: %s (internal)\n", g_strdup (keysi[i]), binding);
+ add_binding (binding, g_strdup (keysi[i]), true);
+ }
+
+ gchar **keyse = g_key_file_get_keys (config, "bindings_external", NULL, NULL);
+ for (i = 0; keyse[i]; i++)
+ {
+ gchar *binding = g_key_file_get_string(config, "bindings_external", keyse[i], NULL);
+ printf("Action: %s, Binding: %s (external)\n", g_strdup (keyse[i]), binding);
+ add_binding (binding, g_strdup (keyse[i]), false);
+ }
}
int