Action buttons with SHIFT/CTRL modifiers

This commit is contained in:
Mahesh Asolkar 2024-09-29 13:25:40 -07:00
parent 2860b6f48b
commit 3ea25b64d6

View File

@ -108,13 +108,28 @@ LIBINPUT_CONFIG_TAP_MAP_LMR -- 1/2/3 finger tap maps to left/middle/right
static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM; static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
/* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */ /* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */
#define MODKEY WLR_MODIFIER_LOGO /* #define MODKEY WLR_MODIFIER_LOGO */
#define MODKEY WLR_MODIFIER_ALT
#define TAGKEYS(KEY,SKEY,TAG) \ #define TAGKEYS(KEY,SKEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \ { MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \ { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} } { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} }
#define AD_STR(a) #a
#define AD_CONCAT(a, b) AD_STR(a ## b)
#define ACTKEYS_DECL(FUNCP) \
static const char *key_cmd_ ## FUNCP[] = { "dwl_act", #FUNCP, NULL }; \
static const char *key_cmd_S_ ## FUNCP[] = { "dwl_act", AD_CONCAT(S_,FUNCP), NULL }; \
static const char *key_cmd_C_ ## FUNCP[] = { "dwl_act", AD_CONCAT(C_,FUNCP), NULL }; \
static const char *key_cmd_SC_ ## FUNCP[] = { "dwl_act", AD_CONCAT(SC_,FUNCP), NULL }
#define ACTKEYS_MAP(KEY,FUNCP) \
{ 0, KEY, spawn, {.v = key_cmd_ ## FUNCP} }, \
{ WLR_MODIFIER_CTRL, KEY, spawn, {.v = key_cmd_C_ ## FUNCP} }, \
{ WLR_MODIFIER_SHIFT, KEY, spawn, {.v = key_cmd_S_ ## FUNCP} }, \
{ WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT, KEY, spawn, {.v = key_cmd_SC_ ## FUNCP} }
/* helper for spawning shell commands in the pre dwm-5.0 fashion */ /* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
@ -126,19 +141,26 @@ static const char *alttermcmd[] = { "dwl_alt_term", NULL };
static const char *launchcmd[] = { "dwl_dmenu", NULL }; static const char *launchcmd[] = { "dwl_dmenu", NULL };
static const char *dispcmd[] = { "wdisplays", NULL }; static const char *dispcmd[] = { "wdisplays", NULL };
static const char *lockcmd[] = { "swaylock", NULL }; static const char *lockcmd[] = { "swaylock", NULL };
/* Function key commands */ /* Function key commands */
static const char *key_cmd_vol_mute[] = { "dwl_act", "vol_mute", NULL }; ACTKEYS_DECL(vol_mute);
static const char *key_cmd_vol_lower[] = { "dwl_act", "vol_lower", NULL }; ACTKEYS_DECL(vol_lower);
static const char *key_cmd_vol_raise[] = { "dwl_act", "vol_raise", NULL }; ACTKEYS_DECL(vol_raise);
static const char *key_cmd_mic_mute[] = { "dwl_act", "mic_mute", NULL }; ACTKEYS_DECL(mic_mute);
static const char *key_cmd_bright_low[] = { "dwl_act", "bright_low", NULL }; ACTKEYS_DECL(bright_low);
static const char *key_cmd_bright_high[] = { "dwl_act", "bright_high", NULL }; ACTKEYS_DECL(bright_high);
static const char *key_cmd_disp[] = { "dwl_act", "disp", NULL }; ACTKEYS_DECL(disp);
static const char *key_cmd_wlan[] = { "dwl_act", "wlan", NULL }; ACTKEYS_DECL(wlan);
static const char *key_cmd_tools[] = { "dwl_act", "tools", NULL }; ACTKEYS_DECL(webcam);
static const char *key_cmd_search[] = { "dwl_act", "search", NULL }; ACTKEYS_DECL(tools);
static const char *key_cmd_launch[] = { "dwl_act", "launch", NULL }; ACTKEYS_DECL(search);
static const char *key_cmd_explore[] = { "dwl_act", "explore", NULL }; ACTKEYS_DECL(launch);
ACTKEYS_DECL(explore);
ACTKEYS_DECL(print);
ACTKEYS_DECL(media_toggle);
ACTKEYS_DECL(media_stop);
ACTKEYS_DECL(media_prev);
ACTKEYS_DECL(media_next);
static const Key keys[] = { static const Key keys[] = {
/* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */ /* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */
@ -173,8 +195,33 @@ static const Key keys[] = {
{ MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, toggle_touch_input_device, { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT, XKB_KEY_Q, quit, {0} },
{0} }, { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT, XKB_KEY_L, spawn, {.v = lockcmd} },
{ WLR_MODIFIER_LOGO, XKB_KEY_l, spawn, {.v = lockcmd } },
{ WLR_MODIFIER_LOGO, XKB_KEY_p, spawn, {.v = key_cmd_disp } },
/* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */
{ WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} },
/* Action buttons */
ACTKEYS_MAP(XKB_KEY_XF86AudioMute, vol_mute),
ACTKEYS_MAP(XKB_KEY_XF86AudioLowerVolume, vol_lower),
ACTKEYS_MAP(XKB_KEY_XF86AudioRaiseVolume, vol_raise),
ACTKEYS_MAP(XKB_KEY_XF86AudioMicMute, mic_mute),
ACTKEYS_MAP(XKB_KEY_XF86MonBrightnessDown, bright_low),
ACTKEYS_MAP(XKB_KEY_XF86MonBrightnessUp, bright_high),
ACTKEYS_MAP(XKB_KEY_XF86Display, disp),
ACTKEYS_MAP(XKB_KEY_XF86WLAN, wlan),
ACTKEYS_MAP(XKB_KEY_XF86WebCam, webcam),
ACTKEYS_MAP(XKB_KEY_XF86Tools, tools),
ACTKEYS_MAP(XKB_KEY_XF86Search, search),
ACTKEYS_MAP(XKB_KEY_XF86LaunchA, launch),
ACTKEYS_MAP(XKB_KEY_XF86Explorer, explore),
ACTKEYS_MAP(XKB_KEY_Print, print),
ACTKEYS_MAP(XKB_KEY_XF86AudioPlay, media_toggle),
ACTKEYS_MAP(XKB_KEY_XF86AudioStop, media_stop),
ACTKEYS_MAP(XKB_KEY_XF86AudioPrev, media_prev),
ACTKEYS_MAP(XKB_KEY_XF86AudioNext, media_next),
/* { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, toggle_touch_input_device,
{0} },*/
TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0),
TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1),
TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2),
@ -184,22 +231,7 @@ static const Key keys[] = {
TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6), TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6),
TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7), TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7),
TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8), TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8),
{ MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT, XKB_KEY_Q, quit, {0} },
{ MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT, XKB_KEY_L, spawn, {.v = lockcmd} },
{ 0 , XKB_KEY_XF86AudioMute, spawn, {.v = key_cmd_vol_mute }},
{ 0 , XKB_KEY_XF86AudioLowerVolume, spawn, {.v = key_cmd_vol_lower }},
{ 0 , XKB_KEY_XF86AudioRaiseVolume, spawn, {.v = key_cmd_vol_raise }},
{ 0 , XKB_KEY_XF86AudioMicMute, spawn, {.v = key_cmd_mic_mute }},
{ 0 , XKB_KEY_XF86MonBrightnessDown, spawn, {.v = key_cmd_bright_low }},
{ 0 , XKB_KEY_XF86MonBrightnessUp, spawn, {.v = key_cmd_bright_high }},
{ 0 , XKB_KEY_XF86Display, spawn, {.v = key_cmd_disp }},
{ 0 , XKB_KEY_XF86WLAN, spawn, {.v = key_cmd_wlan }},
{ 0 , XKB_KEY_XF86Tools, spawn, {.v = key_cmd_tools }},
{ 0 , XKB_KEY_XF86Search, spawn, {.v = key_cmd_search }},
{ 0 , XKB_KEY_XF86LaunchA, spawn, {.v = key_cmd_launch }},
{ 0 , XKB_KEY_XF86Explorer, spawn, {.v = key_cmd_explore }},
/* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */
{ WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} },
/* Ctrl-Alt-Fx is used to switch to another VT, if you don't know what a VT is /* Ctrl-Alt-Fx is used to switch to another VT, if you don't know what a VT is
* do not remove them. * do not remove them.
*/ */