Fix keyboard_mapping fallback issue.

When the keyboard_mapping option fails to load the specified path, the
restored default bindings should take into account the current value of
modkey.
This commit is contained in:
Reginald Kennedy 2020-05-25 03:34:13 +08:00
parent 68d7f0b3b9
commit 985528ad57

View file

@ -8986,38 +8986,39 @@ setconfbinding(const char *selector, const char *value, int flags)
return (1);
}
#define MODSHIFT MODKEY | XCB_MOD_MASK_SHIFT
#define MOD mod_key
#define MODSHIFT mod_key | XCB_MOD_MASK_SHIFT
void
setup_keybindings(void)
{
#define BINDKEY(m, k, a) setbinding(m, KEYBIND, k, a, 0, NULL)
#define BINDKEYSPAWN(m, k, s) setbinding(m, KEYBIND, k, FN_SPAWN_CUSTOM, 0, s)
BINDKEY(MODKEY, XK_b, FN_BAR_TOGGLE);
BINDKEY(MOD, XK_b, FN_BAR_TOGGLE);
BINDKEY(MODSHIFT, XK_b, FN_BAR_TOGGLE_WS);
BINDKEY(MODKEY, XK_b, FN_BAR_TOGGLE);
BINDKEY(MOD, XK_b, FN_BAR_TOGGLE);
BINDKEY(MODSHIFT, XK_b, FN_BAR_TOGGLE_WS);
BINDKEY(MODKEY, XK_v, FN_BUTTON2);
BINDKEY(MODKEY, XK_space, FN_CYCLE_LAYOUT);
BINDKEY(MOD, XK_v, FN_BUTTON2);
BINDKEY(MOD, XK_space, FN_CYCLE_LAYOUT);
BINDKEY(MODSHIFT, XK_backslash, FN_FLIP_LAYOUT);
BINDKEY(MODKEY, XK_t, FN_FLOAT_TOGGLE);
BINDKEY(MODKEY, XK_m, FN_FOCUS_MAIN);
BINDKEY(MODKEY, XK_j, FN_FOCUS_NEXT);
BINDKEY(MODKEY, XK_Tab, FN_FOCUS_NEXT);
BINDKEY(MODKEY, XK_k, FN_FOCUS_PREV);
BINDKEY(MOD, XK_t, FN_FLOAT_TOGGLE);
BINDKEY(MOD, XK_m, FN_FOCUS_MAIN);
BINDKEY(MOD, XK_j, FN_FOCUS_NEXT);
BINDKEY(MOD, XK_Tab, FN_FOCUS_NEXT);
BINDKEY(MOD, XK_k, FN_FOCUS_PREV);
BINDKEY(MODSHIFT, XK_Tab, FN_FOCUS_PREV);
BINDKEY(MODKEY, XK_u, FN_FOCUS_URGENT);
BINDKEY(MOD, XK_u, FN_FOCUS_URGENT);
BINDKEY(MODSHIFT, XK_e, FN_FULLSCREEN_TOGGLE);
BINDKEY(MODKEY, XK_e, FN_MAXIMIZE_TOGGLE);
BINDKEY(MOD, XK_e, FN_MAXIMIZE_TOGGLE);
BINDKEY(MODSHIFT, XK_equal, FN_HEIGHT_GROW);
BINDKEY(MODSHIFT, XK_minus, FN_HEIGHT_SHRINK);
BINDKEY(MODKEY, XK_w, FN_ICONIFY);
BINDKEY(MODKEY, XK_h, FN_MASTER_SHRINK);
BINDKEY(MODKEY, XK_l, FN_MASTER_GROW);
BINDKEY(MODKEY, XK_comma, FN_MASTER_ADD);
BINDKEY(MODKEY, XK_period, FN_MASTER_DEL);
BINDKEY(MOD, XK_w, FN_ICONIFY);
BINDKEY(MOD, XK_h, FN_MASTER_SHRINK);
BINDKEY(MOD, XK_l, FN_MASTER_GROW);
BINDKEY(MOD, XK_comma, FN_MASTER_ADD);
BINDKEY(MOD, XK_period, FN_MASTER_DEL);
BINDKEY(MODSHIFT, XK_bracketright, FN_MOVE_DOWN);
BINDKEY(MODKEY, XK_bracketleft, FN_MOVE_LEFT);
BINDKEY(MODKEY, XK_bracketright, FN_MOVE_RIGHT);
BINDKEY(MOD, XK_bracketleft, FN_MOVE_LEFT);
BINDKEY(MOD, XK_bracketright, FN_MOVE_RIGHT);
BINDKEY(MODSHIFT, XK_bracketleft, FN_MOVE_UP);
BINDKEY(MODSHIFT, XK_KP_End, FN_MVRG_1);
BINDKEY(MODSHIFT, XK_KP_Down, FN_MVRG_2);
@ -9052,71 +9053,71 @@ setup_keybindings(void)
BINDKEY(MODSHIFT, XK_F12, FN_MVWS_22);
BINDKEY(MODSHIFT, XK_slash, FN_NAME_WORKSPACE);
BINDKEY(MODSHIFT, XK_q, FN_QUIT);
BINDKEY(MODKEY, XK_r, FN_RAISE);
BINDKEY(MOD, XK_r, FN_RAISE);
BINDKEY(MODSHIFT, XK_r, FN_RAISE_TOGGLE);
BINDKEY(MODKEY, XK_q, FN_RESTART);
BINDKEY(MODKEY, XK_KP_End, FN_RG_1);
BINDKEY(MODKEY, XK_KP_Down, FN_RG_2);
BINDKEY(MODKEY, XK_KP_Next, FN_RG_3);
BINDKEY(MODKEY, XK_KP_Left, FN_RG_4);
BINDKEY(MODKEY, XK_KP_Begin, FN_RG_5);
BINDKEY(MODKEY, XK_KP_Right, FN_RG_6);
BINDKEY(MODKEY, XK_KP_Home, FN_RG_7);
BINDKEY(MODKEY, XK_KP_Up, FN_RG_8);
BINDKEY(MODKEY, XK_KP_Prior, FN_RG_9);
BINDKEY(MOD, XK_q, FN_RESTART);
BINDKEY(MOD, XK_KP_End, FN_RG_1);
BINDKEY(MOD, XK_KP_Down, FN_RG_2);
BINDKEY(MOD, XK_KP_Next, FN_RG_3);
BINDKEY(MOD, XK_KP_Left, FN_RG_4);
BINDKEY(MOD, XK_KP_Begin, FN_RG_5);
BINDKEY(MOD, XK_KP_Right, FN_RG_6);
BINDKEY(MOD, XK_KP_Home, FN_RG_7);
BINDKEY(MOD, XK_KP_Up, FN_RG_8);
BINDKEY(MOD, XK_KP_Prior, FN_RG_9);
BINDKEY(MODSHIFT, XK_Right, FN_RG_NEXT);
BINDKEY(MODSHIFT, XK_Left, FN_RG_PREV);
BINDKEY(MODKEY, XK_f, FN_SEARCH_WIN);
BINDKEY(MODKEY, XK_slash, FN_SEARCH_WORKSPACE);
BINDKEY(MOD, XK_f, FN_SEARCH_WIN);
BINDKEY(MOD, XK_slash, FN_SEARCH_WORKSPACE);
BINDKEYSPAWN(MODSHIFT, XK_i, "initscr");
BINDKEYSPAWN(MODSHIFT, XK_Delete, "lock");
BINDKEYSPAWN(MODKEY, XK_p, "menu");
BINDKEYSPAWN(MODKEY, XK_s, "screenshot_all");
BINDKEYSPAWN(MOD, XK_p, "menu");
BINDKEYSPAWN(MOD, XK_s, "screenshot_all");
BINDKEYSPAWN(MODSHIFT, XK_s, "screenshot_wind");
BINDKEYSPAWN(MODSHIFT, XK_Return, "term");
BINDKEY(MODSHIFT, XK_comma, FN_STACK_INC);
BINDKEY(MODSHIFT, XK_period, FN_STACK_DEC);
BINDKEY(MODSHIFT, XK_space, FN_STACK_RESET);
BINDKEY(MODKEY, XK_Return, FN_SWAP_MAIN);
BINDKEY(MOD, XK_Return, FN_SWAP_MAIN);
BINDKEY(MODSHIFT, XK_j, FN_SWAP_NEXT);
BINDKEY(MODSHIFT, XK_k, FN_SWAP_PREV);
BINDKEY(MODSHIFT, XK_w, FN_UNICONIFY);
BINDKEY(MODSHIFT, XK_v, FN_VERSION);
BINDKEY(MODKEY, XK_equal, FN_WIDTH_GROW);
BINDKEY(MODKEY, XK_minus, FN_WIDTH_SHRINK);
BINDKEY(MODKEY, XK_x, FN_WIND_DEL);
BINDKEY(MOD, XK_equal, FN_WIDTH_GROW);
BINDKEY(MOD, XK_minus, FN_WIDTH_SHRINK);
BINDKEY(MOD, XK_x, FN_WIND_DEL);
BINDKEY(MODSHIFT, XK_x, FN_WIND_KILL);
BINDKEY(MODKEY, XK_1, FN_WS_1);
BINDKEY(MODKEY, XK_2, FN_WS_2);
BINDKEY(MODKEY, XK_3, FN_WS_3);
BINDKEY(MODKEY, XK_4, FN_WS_4);
BINDKEY(MODKEY, XK_5, FN_WS_5);
BINDKEY(MODKEY, XK_6, FN_WS_6);
BINDKEY(MODKEY, XK_7, FN_WS_7);
BINDKEY(MODKEY, XK_8, FN_WS_8);
BINDKEY(MODKEY, XK_9, FN_WS_9);
BINDKEY(MODKEY, XK_0, FN_WS_10);
BINDKEY(MODKEY, XK_F1, FN_WS_11);
BINDKEY(MODKEY, XK_F2, FN_WS_12);
BINDKEY(MODKEY, XK_F3, FN_WS_13);
BINDKEY(MODKEY, XK_F4, FN_WS_14);
BINDKEY(MODKEY, XK_F5, FN_WS_15);
BINDKEY(MODKEY, XK_F6, FN_WS_16);
BINDKEY(MODKEY, XK_F7, FN_WS_17);
BINDKEY(MODKEY, XK_F8, FN_WS_18);
BINDKEY(MODKEY, XK_F9, FN_WS_19);
BINDKEY(MODKEY, XK_F10, FN_WS_20);
BINDKEY(MODKEY, XK_F11, FN_WS_21);
BINDKEY(MODKEY, XK_F12, FN_WS_22);
BINDKEY(MODKEY, XK_Right, FN_WS_NEXT);
BINDKEY(MODKEY, XK_Left, FN_WS_PREV);
BINDKEY(MODKEY, XK_Up, FN_WS_NEXT_ALL);
BINDKEY(MODKEY, XK_Down, FN_WS_PREV_ALL);
BINDKEY(MOD, XK_1, FN_WS_1);
BINDKEY(MOD, XK_2, FN_WS_2);
BINDKEY(MOD, XK_3, FN_WS_3);
BINDKEY(MOD, XK_4, FN_WS_4);
BINDKEY(MOD, XK_5, FN_WS_5);
BINDKEY(MOD, XK_6, FN_WS_6);
BINDKEY(MOD, XK_7, FN_WS_7);
BINDKEY(MOD, XK_8, FN_WS_8);
BINDKEY(MOD, XK_9, FN_WS_9);
BINDKEY(MOD, XK_0, FN_WS_10);
BINDKEY(MOD, XK_F1, FN_WS_11);
BINDKEY(MOD, XK_F2, FN_WS_12);
BINDKEY(MOD, XK_F3, FN_WS_13);
BINDKEY(MOD, XK_F4, FN_WS_14);
BINDKEY(MOD, XK_F5, FN_WS_15);
BINDKEY(MOD, XK_F6, FN_WS_16);
BINDKEY(MOD, XK_F7, FN_WS_17);
BINDKEY(MOD, XK_F8, FN_WS_18);
BINDKEY(MOD, XK_F9, FN_WS_19);
BINDKEY(MOD, XK_F10, FN_WS_20);
BINDKEY(MOD, XK_F11, FN_WS_21);
BINDKEY(MOD, XK_F12, FN_WS_22);
BINDKEY(MOD, XK_Right, FN_WS_NEXT);
BINDKEY(MOD, XK_Left, FN_WS_PREV);
BINDKEY(MOD, XK_Up, FN_WS_NEXT_ALL);
BINDKEY(MOD, XK_Down, FN_WS_PREV_ALL);
BINDKEY(MODSHIFT, XK_Up, FN_WS_NEXT_MOVE);
BINDKEY(MODSHIFT, XK_Down, FN_WS_PREV_MOVE);
BINDKEY(MODKEY, XK_a, FN_WS_PRIOR);
BINDKEY(MOD, XK_a, FN_WS_PRIOR);
#ifdef SWM_DEBUG
BINDKEY(MODKEY, XK_d, FN_DEBUG_TOGGLE);
BINDKEY(MOD, XK_d, FN_DEBUG_TOGGLE);
BINDKEY(MODSHIFT, XK_d, FN_DUMPWINS);
#endif
#undef BINDKEY
@ -9128,12 +9129,13 @@ setup_btnbindings(void)
{
setbinding(ANYMOD, BTNBIND, XCB_BUTTON_INDEX_1, FN_FOCUS,
BINDING_F_REPLAY, NULL);
setbinding(MODKEY, BTNBIND, XCB_BUTTON_INDEX_3, FN_RESIZE, 0, NULL);
setbinding(MOD, BTNBIND, XCB_BUTTON_INDEX_3, FN_RESIZE, 0, NULL);
setbinding(MODSHIFT, BTNBIND, XCB_BUTTON_INDEX_3, FN_RESIZE_CENTERED, 0,
NULL);
setbinding(MODKEY, BTNBIND, XCB_BUTTON_INDEX_1, FN_MOVE, 0, NULL);
setbinding(MOD, BTNBIND, XCB_BUTTON_INDEX_1, FN_MOVE, 0, NULL);
}
#undef MODSHIFT
#undef MOD
void
clear_bindings(void)