There's been a feature that's missing in the UNIX version of COW that is present in the win32 version, which is support for continuousMouse (ie. if you press a mouse button and keep it down, it will behave as if you have pressed it multiple times). I've found the cause, which is shown in the diff below. Basically if a MouseMotionEvent occurs, it wasn't checking the right event (it was checking 'button', which is a MouseButtonEvent (ie for mouse clicks, but not movement). The right event is 'motion'. Also, I took out some dead code (it seems to be useless) from input.c::buttonaction(), which returns without processing the event if the event type is W_EV_CM_BUTTON (a mouse motion event), this prevented the correct processing of motion events, since it returns without doing anything. If it's ok with everyone I would like to commit this. (PLEASE so I don't have to reboot to windows every time I want to trek ;)) gerard Index: input.c =================================================================== RCS file: /cvsroot/netrek/client/cow/input.c,v retrieving revision 1.7 diff -c -r1.7 input.c *** input.c 2001/08/21 20:52:15 1.7 --- input.c 2001/12/08 03:05:12 *************** *** 1192,1204 **** } } - #ifdef MOTION_MOUSE - if ((data->type == W_EV_CM_BUTTON) && /* KOC - 10/18/95 */ - (!motion_mouse_enablable) && /* Hack for */ - (data->key != W_RBUTTON)) /* continuous_steer */ - return; - #endif - if (data->Window == infow) { int x, y; --- 1192,1197 ---- Index: x11window.c =================================================================== RCS file: /cvsroot/netrek/client/cow/x11window.c,v retrieving revision 1.5 diff -c -r1.5 x11window.c *** x11window.c 2001/08/21 20:52:15 1.5 --- x11window.c 2001/12/08 03:05:21 *************** *** 1606,1639 **** } #endif ! switch (button->button & 0xf) { ! case Button3: wevent->key = W_RBUTTON; break; ! case Button1: wevent->key = W_LBUTTON; break; ! case Button2: wevent->key = W_MBUTTON; break; #ifdef Button4 ! case Button4: wevent->key = W_WUBUTTON; break; #endif #ifdef Button5 ! case Button5: wevent->key = W_WDBUTTON; break; #endif #ifdef Button6 ! case Button6: wevent->key = W_X1BUTTON; break; #endif #ifdef Button7 ! case Button7: wevent->key = W_X2BUTTON; break; #endif --- 1606,1639 ---- } #endif ! switch (motion->state) { ! case Button3Mask: wevent->key = W_RBUTTON; break; ! case Button1Mask: wevent->key = W_LBUTTON; break; ! case Button2Mask: wevent->key = W_MBUTTON; break; #ifdef Button4 ! case Button4Mask: wevent->key = W_WUBUTTON; break; #endif #ifdef Button5 ! case Button5Mask: wevent->key = W_WDBUTTON; break; #endif #ifdef Button6 ! case Button6Mask: wevent->key = W_X1BUTTON; break; #endif #ifdef Button7 ! case Button7Mask: wevent->key = W_X2BUTTON; break; #endif