summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2014-02-22 21:37:29 +0100
committerMikael Magnusson <mikachu@gmail.com>2014-10-20 10:28:00 +0200
commit7b3dc69468e3cb97117b82036041afd9d89912e1 (patch)
tree1dcc98d31797ddc569813dc35a81cd519d4e36da
parent39dfb7458a75ca502fb0c18ec0f1a107f5d51249 (diff)
Add keyboard/rebindOnMappingNotify option
I have to switch to a qwerty layout to play steam games, and every time I switch back and forth, we lose some random bindings so I also had to reconfigure Openbox every time, now I don't.
-rw-r--r--openbox/config.c9
-rw-r--r--openbox/config.h2
-rw-r--r--openbox/event.c12
3 files changed, 16 insertions, 7 deletions
diff --git a/openbox/config.c b/openbox/config.c
index 76f48569..434791bf 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -83,8 +83,9 @@ guint config_dock_show_delay;
guint config_dock_app_move_button;
guint config_dock_app_move_modifiers;
-guint config_keyboard_reset_keycode;
-guint config_keyboard_reset_state;
+guint config_keyboard_reset_keycode;
+guint config_keyboard_reset_state;
+gboolean config_keyboard_rebind_on_mapping_notify;
gint config_mouse_threshold;
gint config_mouse_dclicktime;
@@ -503,6 +504,9 @@ static void parse_keyboard(xmlNodePtr node, gpointer d)
parse_key(n, NULL);
n = obt_xml_find_node(n->next, "keybind");
}
+
+ if ((n = obt_xml_find_node(node->children, "rebindOnMappingNotify")))
+ config_keyboard_rebind_on_mapping_notify = obt_xml_node_bool(n);
}
/*
@@ -1120,6 +1124,7 @@ void config_startup(ObtXmlInst *i)
translate_key("C-g", &config_keyboard_reset_state,
&config_keyboard_reset_keycode);
+ config_keyboard_rebind_on_mapping_notify = TRUE;
bind_default_keyboard();
diff --git a/openbox/config.h b/openbox/config.h
index fc1d217e..96a66cf1 100644
--- a/openbox/config.h
+++ b/openbox/config.h
@@ -179,6 +179,8 @@ extern guint config_desktop_popup_time;
extern guint config_keyboard_reset_keycode;
/*! The modifiers of the key combo which resets the keybaord chains */
extern guint config_keyboard_reset_state;
+/*! Reload the keyboard bindings when the mapping changes */
+extern gboolean config_keyboard_rebind_on_mapping_notify;
/*! Number of pixels a drag must go before being considered a drag */
extern gint config_mouse_threshold;
diff --git a/openbox/event.c b/openbox/event.c
index 243f2078..9f560306 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -637,11 +637,13 @@ static void event_process(const XEvent *ec, gpointer data)
else if (e->type == MappingNotify) {
/* keyboard layout changes for modifier mapping changes. reload the
modifier map, and rebind all the key bindings as appropriate */
- ob_debug("Keyboard map changed. Reloading keyboard bindings.");
- ob_set_state(OB_STATE_RECONFIGURING);
- obt_keyboard_reload();
- keyboard_rebind();
- ob_set_state(OB_STATE_RUNNING);
+ if (config_keyboard_rebind_on_mapping_notify) {
+ ob_debug("Keyboard map changed. Reloading keyboard bindings.");
+ ob_set_state(OB_STATE_RECONFIGURING);
+ obt_keyboard_reload();
+ keyboard_rebind();
+ ob_set_state(OB_STATE_RUNNING);
+ }
}
else if (e->type == ClientMessage) {
/* This is for _NET_WM_REQUEST_FRAME_EXTENTS messages. They come for