add the chainQuitKey option to teh <keyboard> section of the rc3
This commit is contained in:
parent
83705e52c4
commit
fdc52e879f
4 changed files with 32 additions and 0 deletions
2
data/rc3
2
data/rc3
|
@ -53,6 +53,8 @@
|
|||
</dock>
|
||||
|
||||
<keyboard>
|
||||
<chainQuitKey>C-g</chainQuitKey>
|
||||
|
||||
<keybind key="A-F10">
|
||||
<action name="MaximizeFull"></action>
|
||||
</keybind>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue