aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmz <jmz@FreeBSD.org>2001-01-27 11:21:24 +0800
committerjmz <jmz@FreeBSD.org>2001-01-27 11:21:24 +0800
commit39b0d7d36d8611426b76761b71b822ceccff3167 (patch)
tree1dafd58d415adcd8d6a05adc996cdb7b139c1055
parenta12d15ba90f2dd3da5807a988929fa912a4d55fc (diff)
downloadfreebsd-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/Makefile2
-rw-r--r--x11/XFree86/files/patch-u60
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)
+