mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-11 08:21:01 -04:00
input: match unshifted key-bindings before shifted
That is, try to match e.g. Control+shift+a, before trying to match Control+A. In most cases, order doesn't matter. There are however a couple of symbols where the layout consumes the shift-modifier, and the generated symbol is the same in both the shifted and unshifted form. One such example is backspace. Before this patch, key-bindings with shift-backspace would be ignored, if there were another key-binding with backspace. So, for example, if we had one key-binding with Control+Backspace, and another with Control+Shift+Backspace, the latter would never trigger, as we would always match the first one. By checking for unshifted matches first, we ensure Control+Shift+Backspace does match.
This commit is contained in:
parent
bee17a95b8
commit
51128a3484
3 changed files with 42 additions and 42 deletions
34
search.c
34
search.c
|
|
@ -1392,23 +1392,6 @@ search_input(struct seat *seat, struct terminal *term,
|
|||
* Key bindings
|
||||
*/
|
||||
|
||||
/* Match translated symbol */
|
||||
tll_foreach(bindings->search, it) {
|
||||
const struct key_binding *bind = &it->item;
|
||||
|
||||
if (bind->k.sym == sym &&
|
||||
bind->mods == (mods & ~consumed)) {
|
||||
|
||||
if (execute_binding(seat, term, bind, serial,
|
||||
&update_search_result, &search_direction,
|
||||
&redraw))
|
||||
{
|
||||
goto update_search;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Match untranslated symbols */
|
||||
tll_foreach(bindings->search, it) {
|
||||
const struct key_binding *bind = &it->item;
|
||||
|
|
@ -1429,6 +1412,23 @@ search_input(struct seat *seat, struct terminal *term,
|
|||
}
|
||||
}
|
||||
|
||||
/* Match translated symbol */
|
||||
tll_foreach(bindings->search, it) {
|
||||
const struct key_binding *bind = &it->item;
|
||||
|
||||
if (bind->k.sym == sym &&
|
||||
bind->mods == (mods & ~consumed)) {
|
||||
|
||||
if (execute_binding(seat, term, bind, serial,
|
||||
&update_search_result, &search_direction,
|
||||
&redraw))
|
||||
{
|
||||
goto update_search;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Match raw key code */
|
||||
tll_foreach(bindings->search, it) {
|
||||
const struct key_binding *bind = &it->item;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue