diff options
| -rw-r--r-- | config.def.h | 10 | ||||
| -rw-r--r-- | main.c | 6 |
2 files changed, 15 insertions, 1 deletions
diff --git a/config.def.h b/config.def.h index 76df792..587e85b 100644 --- a/config.def.h +++ b/config.def.h @@ -32,6 +32,10 @@ static void _kbd_insmode(Cinnamon* cinnamon, void* arg) { set_mode(cinnamon, 1); } +static void _kbd_passthru(Cinnamon* cinnamon, void* arg) { + set_mode(cinnamon, 2); +} + static void _kbd_tabopen(Cinnamon* cinnamon, void* arg) { /* wrapper to satisfy the arg + keep keybinds isolated */ tabopen(cinnamon); @@ -69,10 +73,16 @@ static void _kbd_tabclose(Cinnamon* cinnamon, void* arg) { tabclose(cinnamon); } +static void _kbd_toggletabs(Cinnamon* cinnamon, void* arg) { + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(cinnamon->notebook), !gtk_notebook_get_show_tabs(GTK_NOTEBOOK(cinnamon->notebook))); +} + static const Keybind keybinds[] = { { "t", &_kbd_tabopen, NULL }, { "d", &_kbd_tabclose, NULL }, // { "o", ":commandline_show \":open\"" }, + { "s", &_kbd_toggletabs, NULL }, + { "<S-i>", &_kbd_passthru, NULL }, { "i", &_kbd_insmode, NULL }, { "j", &_kbd_scroll, "down" }, { "k", &_kbd_scroll, "up" }, @@ -46,6 +46,7 @@ static void parse_keybind(const char *key, guint *keyval, GdkModifierType *mods) if (strstr(key, "A-")) *mods |= GDK_MOD1_MASK; /* everything after the last '-' and before '>' */ + /* this means we can't have things like <S-A-z> for example, but too bad so sad. cannot be bothered to implement that at the moment */ start = strrchr(key, '-') + 1; end = strchr(key, '>'); snprintf(name, sizeof(name), "%.*s", (int)(end - start), start); @@ -60,6 +61,7 @@ static void on_title_changed(WebKitWebView *webview, GParamSpec *pspec, GtkNoteb static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) { Cinnamon* cinnamon = (Cinnamon*)data; + GdkModifierType relevant = GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK; if (mode == 1 || mode == 2) { if (mode == 1 && event->keyval == GDK_KEY_Escape) { set_mode(cinnamon, 0); @@ -68,6 +70,9 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer dat cmdbar_focused = false; } } + if (mode == 2 && event->keyval == GDK_KEY_Escape && (event->state & relevant) == GDK_SHIFT_MASK) { + set_mode(cinnamon, 0); + } } else { if (event->keyval == GDK_KEY_colon) { @@ -82,7 +87,6 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer dat guint keyval; GdkModifierType mods; parse_keybind(keybinds[i].key, &keyval, &mods); - GdkModifierType relevant = GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK; if (gdk_keyval_to_lower(event->keyval) == keyval && (event->state & relevant) == mods) { /* we dont know what to do yet, printf */ keybinds[i].fptr(cinnamon, keybinds[i].arg); |
