#include "action.h"
#include "prop.h"
#include "timer.h"
+#include "config.h"
#include "keytree.h"
#include "keyboard.h"
#include "translate.h"
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);
}
}
if (interactive_grab) {
*client = grabbed_client;
*context = grabbed_context;
- }
- if ((e->type == KeyRelease &&
- !(grabbed_state & e->xkey.state)))
- done = TRUE;
- else if (e->type == KeyPress) {
- if (e->xkey.keycode == ob_keycode(OB_KEY_RETURN))
+ if ((e->type == KeyRelease &&
+ !(grabbed_state & e->xkey.state)))
done = TRUE;
- else if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE)) {
+ else if (e->type == KeyPress) {
+ if (e->xkey.keycode == ob_keycode(OB_KEY_RETURN))
+ done = TRUE;
+ else if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE)) {
+ if (grabbed_action->func == action_cycle_windows) {
+ grabbed_action->data.cycle.cancel = TRUE;
+ }
+ if (grabbed_action->func == action_desktop_dir) {
+ grabbed_action->data.desktopdir.cancel = TRUE;
+ }
+ if (grabbed_action->func == action_send_to_desktop_dir)
+ {
+ grabbed_action->data.sendtodir.cancel = TRUE;
+ }
+ done = TRUE;
+ }
+ }
+ if (done) {
if (grabbed_action->func == action_cycle_windows) {
- grabbed_action->data.cycle.cancel = TRUE;
+ grabbed_action->data.cycle.final = TRUE;
}
if (grabbed_action->func == action_desktop_dir) {
- grabbed_action->data.desktopdir.cancel = TRUE;
+ grabbed_action->data.desktopdir.final = TRUE;
}
- if (grabbed_action->func == action_send_to_desktop_dir)
- {
- grabbed_action->data.sendtodir.cancel = TRUE;
+ if (grabbed_action->func == action_send_to_desktop_dir) {
+ grabbed_action->data.sendtodir.final = TRUE;
}
- done = TRUE;
- }
- }
- if (done) {
- if (grabbed_action->func == action_cycle_windows) {
- grabbed_action->data.cycle.final = TRUE;
- }
- if (grabbed_action->func == action_desktop_dir) {
- grabbed_action->data.desktopdir.final = TRUE;
- }
- if (grabbed_action->func == action_send_to_desktop_dir) {
- grabbed_action->data.sendtodir.final = TRUE;
- }
- grabbed_action->func(&grabbed_action->data);
+ grabbed_action->func(&grabbed_action->data);
- interactive_grab = FALSE;
- grab_keyboard(FALSE);
- grab_pointer(FALSE, None);
- keyboard_reset_chains();
+ interactive_grab = FALSE;
+ grab_keyboard(FALSE);
+ grab_pointer(FALSE, None);
+ keyboard_reset_chains();
- handled = TRUE;
+ handled = TRUE;
+ }
}
return handled;
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
if (act->func == action_showmenu)
{
- act->data.showmenu.x =
- e->xkey.x_root;
- act->data.showmenu.y =
- e->xkey.y_root;
+ act->data.showmenu.x = e->xkey.x_root;
+ act->data.showmenu.y = e->xkey.y_root;
}
act->data.any.c = client;