Allow any set of modifiers to be used in keybindings

Previous the code only allowed ShiftMask,ControlMask or Mod1Mask to be
used in keybindings and the presence of any others modifiers would be
ignored. Most problems generally allow certain modifiers to be be
ignored but not most and certainly don't allow Super-A to be treated
like A.
Now users can use any modifiers they want in keybindings and can also
ignore any modifiers they want. By default only ModMask2 (commonly
numlock is ignored)

Co-authored-by: N-R-K <79544946+N-R-K@users.noreply.github.com>
This commit is contained in:
Arthur Williams 2021-09-20 11:17:35 +06:00 committed by NRK
parent 24e70a99e3
commit 3234b0e521
2 changed files with 4 additions and 1 deletions

View file

@ -67,6 +67,9 @@ static const int THUMB_SIZE = 3;
#endif #endif
#ifdef _MAPPINGS_CONFIG #ifdef _MAPPINGS_CONFIG
/* Following modifiers (NumLock | CapsLock) will be ignored when processing keybindings */
static const int ignore_mask = Mod2Mask | LockMask;
/* keyboard mappings for image and thumbnail mode: */ /* keyboard mappings for image and thumbnail mode: */
static const keymap_t keys[] = { static const keymap_t keys[] = {
/* modifiers key function argument */ /* modifiers key function argument */

2
main.c
View file

@ -566,7 +566,7 @@ end:
redraw(); redraw();
} }
#define MODMASK(mask) ((mask) & (ShiftMask|ControlMask|Mod1Mask)) #define MODMASK(mask) ((mask) & ~ignore_mask)
void on_keypress(XKeyEvent *kev) void on_keypress(XKeyEvent *kev)
{ {