mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-26 07:57:59 -04:00
revert: input: do not include consumed modifiers in the set sent to the client
There were two issues with it:
* Not all applications decode the sequence into a set of modifiers +
key, but use a fixed sequence -> combo mapping, that we broke.
* There were unforeseen issues with e.g. F1-12, where the modifier
were removed from combos like Ctrl+F12, or Alt+F12. The reason is
simple; XKB tells us that Ctrl, or Alt, is a consumed modifier. Now,
_why_ it thinks that is a different story.
This reverts 6cd72bdee6
Closes #425
This commit is contained in:
parent
37245fe4e6
commit
058eba33ec
2 changed files with 10 additions and 5 deletions
|
|
@ -31,6 +31,11 @@
|
||||||
### Deprecated
|
### Deprecated
|
||||||
### Removed
|
### Removed
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
* Reverted _"Consumed modifiers are no longer sent to the client
|
||||||
|
application"_ (https://codeberg.org/dnkl/foot/issues/425).
|
||||||
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
### Contributors
|
### Contributors
|
||||||
|
|
||||||
|
|
|
||||||
10
input.c
10
input.c
|
|
@ -1026,10 +1026,10 @@ key_press_release(struct seat *seat, struct terminal *term, uint32_t serial,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum modifier keymap_mods = MOD_NONE;
|
enum modifier keymap_mods = MOD_NONE;
|
||||||
keymap_mods |= mods & ~consumed & shift ? MOD_SHIFT : MOD_NONE;
|
keymap_mods |= seat->kbd.shift ? MOD_SHIFT : MOD_NONE;
|
||||||
keymap_mods |= mods & ~consumed & alt ? MOD_ALT : MOD_NONE;
|
keymap_mods |= seat->kbd.alt ? MOD_ALT : MOD_NONE;
|
||||||
keymap_mods |= mods & ~consumed & ctrl ? MOD_CTRL : MOD_NONE;
|
keymap_mods |= seat->kbd.ctrl ? MOD_CTRL : MOD_NONE;
|
||||||
keymap_mods |= mods & ~consumed & meta ? MOD_META : MOD_NONE;
|
keymap_mods |= seat->kbd.meta ? MOD_META : MOD_NONE;
|
||||||
|
|
||||||
const struct key_data *keymap;
|
const struct key_data *keymap;
|
||||||
if (sym == XKB_KEY_Escape && keymap_mods == MOD_NONE && term->modify_escape_key) {
|
if (sym == XKB_KEY_Escape && keymap_mods == MOD_NONE && term->modify_escape_key) {
|
||||||
|
|
@ -1113,7 +1113,7 @@ key_press_release(struct seat *seat, struct terminal *term, uint32_t serial,
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
if (mods & ~consumed & alt) {
|
if (mods & alt) {
|
||||||
/*
|
/*
|
||||||
* When the alt modifier is pressed, we do one out of three things:
|
* When the alt modifier is pressed, we do one out of three things:
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue