From: Dana Jansens Date: Tue, 12 Aug 2003 18:05:40 +0000 (+0000) Subject: add the chainQuitKey option to teh section of the rc3 X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=fdc52e879f11166186014ebb2bac7121edf08e79;p=chaz%2Fopenbox add the chainQuitKey option to teh section of the rc3 --- diff --git a/data/rc3 b/data/rc3 index c0126ff9..ae3263a0 100644 --- a/data/rc3 +++ b/data/rc3 @@ -53,6 +53,8 @@ + C-g + diff --git a/openbox/config.c b/openbox/config.c index f0514523..19b66403 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -2,6 +2,7 @@ #include "keyboard.h" #include "mouse.h" #include "prop.h" +#include "translate.h" #include "parser/parse.h" gboolean config_focus_new; @@ -29,6 +30,9 @@ ObOrientation config_dock_orient; gboolean config_dock_hide; guint config_dock_hide_timeout; +guint config_keyboard_reset_keycode; +guint config_keyboard_reset_state; + gint config_mouse_threshold; gint config_mouse_dclicktime; @@ -49,6 +53,12 @@ static void parse_key(xmlDocPtr doc, xmlNodePtr node, GList *keylist) xmlNodePtr n, nact; GList *it; + if ((n = parse_find_node("chainQuitKey", node))) { + key = parse_string(doc, n); + translate_key(key, &config_keyboard_reset_state, + &config_keyboard_reset_keycode); + } + n = parse_find_node("keybind", node); while (n) { if (parse_attr_string("key", n, &key)) { @@ -343,6 +353,9 @@ void config_startup() parse_register("dock", parse_dock, NULL); + translate_key("C-g", &config_keyboard_reset_state, + &config_keyboard_reset_keycode); + parse_register("keyboard", parse_keyboard, NULL); config_mouse_threshold = 3; diff --git a/openbox/config.h b/openbox/config.h index b0254135..fe4fb605 100644 --- a/openbox/config.h +++ b/openbox/config.h @@ -54,6 +54,11 @@ extern int config_desktops_num; /*! Names for the desktops */ extern GSList *config_desktops_names; +/*! The keycode of the key combo which resets the keybaord chains */ +guint config_keyboard_reset_keycode; +/*! The modifiers of the key combo which resets the keybaord chains */ +guint config_keyboard_reset_state; + /*! Number of pixels a drag must go before being considered a drag */ extern gint config_mouse_threshold; /*! Number of milliseconds within which 2 clicks must occur to be a diff --git a/openbox/keyboard.c b/openbox/keyboard.c index 513b6e1e..0ba7c869 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -8,6 +8,7 @@ #include "action.h" #include "prop.h" #include "timer.h" +#include "config.h" #include "keytree.h" #include "keyboard.h" #include "translate.h" @@ -36,6 +37,10 @@ static void grab_for_window(Window win, gboolean grab) grab_key(p->key, p->state, win, GrabModeAsync); p = p->next_sibling; } + if (curpos) + grab_key(config_keyboard_reset_keycode, + config_keyboard_reset_state, + win, GrabModeAsync); } } @@ -179,6 +184,13 @@ void keyboard_event(ObClient *client, const XEvent *e) g_assert(e->type == KeyPress); + if (e->xkey.keycode == config_keyboard_reset_keycode && + e->xkey.state == config_keyboard_reset_state) + { + keyboard_reset_chains(); + return; + } + if (curpos == NULL) p = keyboard_firstnode; else