diff options
author | Mihail Konev <k.mvc@ya.ru> | 2017-01-04 07:08:51 +0500 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-01-04 13:23:31 +1000 |
commit | 9d32b71c93cf6187e9320c99ae857e34a51b7102 (patch) | |
tree | 004ab764b8afe1b9b3849d0ef1892518e02f5f01 /include/xkbsrv.h | |
parent | 29a4f3db60fdeaef7bca3aa2746bb43a1850fddd (diff) |
xkb: Match key releases with an overlaid press
Testcase:
In ~/.xbindkeysrc:
"xterm &"
XF86LaunchA
In ~/ov.xkb:
xkb_keymap {
xkb_keycodes { include "evdev" };
xkb_types { include "complete" };
xkb_compat { include "complete"
interpret Overlay1_Enable+AnyOfOrNone(all) {
action= SetControls(controls=Overlay1);
};
};
xkb_symbols { include "pc+inet(evdev)+us"
key <INS> { [ Overlay1_Enable ] };
key <AE01> { overlay1 = <AE02> }; // Insert+1 => 2
key <TLDE> { overlay1 = <I128> }; // Insert+~ => XF86LaunchA
};
xkb_geometry { include "pc(pc104)" };
};
Apply this layout: 'xkbcomp ~/ov.xkb $DISPLAY'.
Run "xbindkeys -n -v"
In the exact order:
- press Insert
- press Tilde
- release Insert
- wait
- release Tilde
Keyboard input in the new terminal window(s) would be locked
until another Insert+Tilde .
Reported-by: Mariusz Mazur <mariusz.g.mazur@gmail.com>
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'include/xkbsrv.h')
-rw-r--r-- | include/xkbsrv.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/xkbsrv.h b/include/xkbsrv.h index 6e4ad44d4..2870f3987 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -195,6 +195,8 @@ typedef struct _XkbSrvInfo { XkbFilterPtr filters; XkbSrvCheckRepeatPtr checkRepeat; + + char overlay_perkey_state[256/8]; /* bitfield */ } XkbSrvInfoRec, *XkbSrvInfoPtr; #define XkbSLI_IsDefault (1L<<0) |