fix: correctly encode mouse buttons >= 8 in X10 and SGR mode - st - simple term… | |
git clone git://git.suckless.org/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 9e68fdbcdb06dfa3d23fe3a7a7f7b59e40e1ea2f | |
parent 4ef0cbd8b9371f37f7d02ef37b5378b879e6b8bf | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Fri, 19 Mar 2021 11:54:36 +0100 | |
fix: correctly encode mouse buttons >= 8 in X10 and SGR mode | |
These are typically mapped in X11 to the side-buttons (backward/forwards) on | |
the mouse. A comparison of the button numbers in SGR mode (first field): | |
st old: | |
0 1 2 64 65 66 67 68 69 70 | |
st new (it is the same as xterm now): | |
0 1 2 64 65 66 67 128 129 130 | |
A script to test and reproduce it, first argument is "h" (on) or "l" (off): | |
#!/bin/sh | |
printf '\x1b[?1000%s\x1b[?1006%s' "$1" "$1" | |
for n in 1 2 3 4 5 6 7 8 9 10; do | |
printf 'button %d\n' "$n" | |
xdotool click "$n" | |
printf '\n\n' | |
done | |
Diffstat: | |
M x.c | 4 +++- | |
1 file changed, 3 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/x.c b/x.c | |
@@ -387,7 +387,9 @@ mousereport(XEvent *e) | |
button = 3; | |
} else { | |
button -= Button1; | |
- if (button >= 3) | |
+ if (button >= 7) | |
+ button += 128 - 7; | |
+ else if (button >= 3) | |
button += 64 - 3; | |
} | |
if (e->xbutton.type == ButtonPress) { |