mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
Make 2-1 chord via Ctrl-Button1 work under X.
I noticed that, when Acme runs on MacOS X, I can simulate 2-1 chord as follows: 1. Press and hold Option key on the keyboard. 2. (while holding down Option) press mouse button 1. 3. Release Option. 4. Release mouse button 1. However, under X, the analogous chord with Control didn't work for me. I believe the reason is that Button1 never gets "pressed" when the sequence of events I described above is processed by code in x11-screen.c. I arrived at that conclusion by "walking through" the code as it processes events in my head. This PR contains one possible way to remedy the situation. The drawback is that, if someone were to do Ctrl-Button2, they'd get a spurious 2-1 chord, but I think that may be acceptable.
This commit is contained in:
parent
e2a141ae09
commit
897d3c1b7b
1 changed files with 6 additions and 2 deletions
|
@ -450,10 +450,10 @@ runxevent(XEvent *xev)
|
|||
else {
|
||||
if(ke->keycode == kcodecontrol){
|
||||
c &= ~ControlMask;
|
||||
modp = 1;
|
||||
modp = 2;
|
||||
} else if(ke->keycode == kcodealt || ke->keycode == kcodeshift){
|
||||
c &= ~Mod1Mask;
|
||||
modp = 1;
|
||||
modp = 4;
|
||||
}
|
||||
}
|
||||
if(modp){
|
||||
|
@ -465,6 +465,10 @@ runxevent(XEvent *xev)
|
|||
_x.kbuttons |= 2;
|
||||
if(c & Mod1Mask)
|
||||
_x.kbuttons |= 4;
|
||||
if (m.buttons & modp) {
|
||||
m.buttons &= ~modp;
|
||||
m.buttons |= 1;
|
||||
}
|
||||
gfx_mousetrack(w->client, m.xy.x, m.xy.y, m.buttons|_x.kbuttons, m.msec);
|
||||
}
|
||||
modp = 0;
|
||||
|
|
Loading…
Reference in a new issue