diff options
author | jmz <jmz@FreeBSD.org> | 2001-01-27 11:21:24 +0800 |
---|---|---|
committer | jmz <jmz@FreeBSD.org> | 2001-01-27 11:21:24 +0800 |
commit | 39b0d7d36d8611426b76761b71b822ceccff3167 (patch) | |
tree | 1dafd58d415adcd8d6a05adc996cdb7b139c1055 | |
parent | a12d15ba90f2dd3da5807a988929fa912a4d55fc (diff) | |
download | freebsd-ports-gnome-39b0d7d36d8611426b76761b71b822ceccff3167.tar.gz freebsd-ports-gnome-39b0d7d36d8611426b76761b71b822ceccff3167.tar.zst freebsd-ports-gnome-39b0d7d36d8611426b76761b71b822ceccff3167.zip |
Fix a small bug in the MouseKeysAccel feature. See
http://www.math.missouri.edu/~stephen/software/bugfix-for-mousekeys
for a complete description.
Submitted by: Stephen Montgomery-Smith <stephen@math.missouri.edu>
-rw-r--r-- | x11/XFree86/Makefile | 2 | ||||
-rw-r--r-- | x11/XFree86/files/patch-u | 60 |
2 files changed, 61 insertions, 1 deletions
diff --git a/x11/XFree86/Makefile b/x11/XFree86/Makefile index 47c12168e5c3..8e43df716cc9 100644 --- a/x11/XFree86/Makefile +++ b/x11/XFree86/Makefile @@ -7,7 +7,7 @@ PORTNAME= XFree86 PORTVERSION= 3.3.6 -PORTREVISION= 6 +PORTREVISION= 7 CATEGORIES= x11 MASTER_SITES= ${MASTER_SITE_XFREE} MASTER_SITE_SUBDIR= ${PORTVERSION} diff --git a/x11/XFree86/files/patch-u b/x11/XFree86/files/patch-u new file mode 100644 index 000000000000..80e67c123fdb --- /dev/null +++ b/x11/XFree86/files/patch-u @@ -0,0 +1,60 @@ +--- programs/Xserver/xkb/xkbActions.c-orig Wed Jan 10 19:16:53 2001 ++++ programs/Xserver/xkb/xkbActions.c Fri Jan 19 20:05:55 2001 +@@ -1318,6 +1318,9 @@ + } + else CoreProcessPointerEvent(xE,dev,count); + } ++ else if (keyEvent) ++ FixKeyState(xE,dev); ++ + xkbi->prev_state= oldState; + XkbComputeDerivedState(xkbi); + keyc->prev_state= keyc->state; +--- programs/Xserver/dix/events.c-orig Thu Jan 11 16:02:02 2001 ++++ programs/Xserver/dix/events.c Wed Jan 24 19:14:27 2001 +@@ -2784,6 +2784,44 @@ + (*keybd->DeactivateGrab)(keybd); + } + ++#ifdef XKB ++/* This function is used to set the key pressed or key released state - ++ this is only used when the pressing of keys does not cause ++ CoreProcessKeyEvent to be called, as in for example Mouse Keys. ++*/ ++void ++FixKeyState (xE, keybd) ++ register xEvent *xE; ++ register DeviceIntPtr keybd; ++{ ++ int key, bit; ++ register BYTE *kptr; ++ register KeyClassPtr keyc = keybd->key; ++ ++ key = xE->u.u.detail; ++ kptr = &keyc->down[key >> 3]; ++ bit = 1 << (key & 7); ++#ifdef DEBUG ++ if ((xkbDebugFlags&0x4)&& ++ ((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) { ++ ErrorF("FixKeyState: Key %d %s\n",key, ++ (xE->u.u.type==KeyPress?"down":"up")); ++ } ++#endif ++ switch (xE->u.u.type) ++ { ++ case KeyPress: ++ *kptr |= bit; ++ break; ++ case KeyRelease: ++ *kptr &= ~bit; ++ break; ++ default: ++ FatalError("Impossible keyboard event"); ++ } ++} ++#endif ++ + void + #ifdef XKB + CoreProcessPointerEvent (xE, mouse, count) + |