Index: Events.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xnest/Events.c,v retrieving revision 1.6 diff -u -p -r1.6 Events.c --- Events.c 25 Jun 2005 21:28:48 -0000 1.6 +++ Events.c 30 Jun 2005 12:51:23 -0000 @@ -126,6 +126,7 @@ xnestCollectEvents() break; case ButtonPress: + xnestUpdateModifierState(X.xkey.state); x.u.u.type = ButtonPress; x.u.u.detail = X.xbutton.button; x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis(); @@ -133,6 +134,7 @@ xnestCollectEvents() break; case ButtonRelease: + xnestUpdateModifierState(X.xkey.state); x.u.u.type = ButtonRelease; x.u.u.detail = X.xbutton.button; x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis(); Index: Keyboard.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xnest/Keyboard.c,v retrieving revision 1.4 diff -u -p -r1.4 Keyboard.c --- Keyboard.c 25 Jun 2005 21:28:48 -0000 1.4 +++ Keyboard.c 30 Jun 2005 12:51:23 -0000 @@ -294,6 +294,8 @@ xnestUpdateModifierState(unsigned int st int i; CARD8 mask; + state = state & 0xff; + if (keyc->state == state) return;