rem: wWindowChangeWorkspace(wwin, cw);
add: if (count > 1) wWindowChangeWorkspace(wwin, cw);
context: handleKeyPress(XEvent *event){    WScreen *scr = wScreenForRootWindow(event->xkey.root);    WWindow *wwin = scr->focused_window;    int i;    int modifiers;    int command=-1, index;#ifdef KEEP_XKB_LOCK_STATUS       XkbStateRec staterec;     #endif /*KEEP_XKB_LOCK_STATUS*/    /* ignore CapsLock */    modifiers = event->xkey.state & ValidModMask;    for (i=0; i<WKBD_LAST; i++) {	if (wKeyBindings[i].keycode==0) 	    continue;		if (wKeyBindings[i].keycode==event->xkey.keycode	    && (/*wKeyBindings[i].modifier==0 		||*/ wKeyBindings[i].modifier==modifiers)) {	    command = i;	    break;	}    }        if (command < 0) {#ifdef LITE	{ #if 0	}#endif#else	if (!wRootMenuPerformShortcut(event)) {#endif	    static int dontLoop = 0;	    	    if (dontLoop > 10) {		wwarning("problem with key event processing code");		return;	    }	    dontLoop++;	    /* if the focused window is an internal window, try redispatching	     * the event to the managed window, as it can be a WINGs window */	    if (wwin && wwin->flags.internal_window		&& wwin->client_leader!=None) {		/* client_leader contains the WINGs toplevel */		event->xany.window = wwin->client_leader;		WMHandleEvent(event);	    }	    dontLoop--;	}	return;    }#define ISMAPPED(w) ((w) && !(w)->flags.miniaturized && ((w)->flags.mapped || (w)->flags.shaded))#define ISFOCUSED(w) ((w) && (w)->flags.focused)    switch (command) {#ifndef LITE     case WKBD_ROOTMENU:	OpenRootMenu(scr, event->xkey.x_root, event->xkey.y_root, True);	break;     case WKBD_WINDOWLIST:	OpenSwitchMenu(scr, event->xkey.x_root, event->xkey.y_root, True);	break;#endif /* !LITE */     case WKBD_WINDOWMENU:	if (ISMAPPED(wwin) && ISFOCUSED(wwin))	    OpenWindowMenu(wwin, wwin->frame_x, 			   wwin->frame_y+wwin->frame->top_width, True);	break;     case WKBD_MINIATURIZE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin) 	    && !WFLAGP(wwin, no_miniaturizable)) {	    CloseWindowMenu(scr);	    	    if (wwin->protocols.MINIATURIZE_WINDOW)	      	wClientSendProtocol(wwin, _XA_GNUSTEP_WM_MINIATURIZE_WINDOW,				    event->xbutton.time);	    else {		wIconifyWindow(wwin);	    }	}	break;     case WKBD_HIDE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin)) {	    WApplication *wapp = wApplicationOf(wwin->main_window);	    CloseWindowMenu(scr);	    	    if (wapp && !WFLAGP(wapp->main_window_desc, no_appicon)) {		wHideApplication(wapp);	    }	}	break;     case WKBD_MAXIMIZE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_resizable)) {	    CloseWindowMenu(scr);	    	    if (wwin->flags.maximized) {		wUnmaximizeWindow(wwin);	    } else {		wMaximizeWindow(wwin, MAX_VERTICAL|MAX_HORIZONTAL);	    }	}	break;     case WKBD_VMAXIMIZE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_resizable)) {	    CloseWindowMenu(scr);	    	    if (wwin->flags.maximized) {		wUnmaximizeWindow(wwin);	    } else {		wMaximizeWindow(wwin, MAX_VERTICAL);	    }	}	break;     case WKBD_RAISE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin)) {	    CloseWindowMenu(scr);	    	    wRaiseFrame(wwin->frame->core);	}	break;     case WKBD_LOWER:	if (ISMAPPED(wwin) && ISFOCUSED(wwin)) {	    CloseWindowMenu(scr);	    wLowerFrame(wwin->frame->core);	}	break;     case WKBD_RAISELOWER:	/* raise or lower the window under the pointer, not the	 * focused one 	 */	wwin = windowUnderPointer(scr);	if (wwin)	    wRaiseLowerFrame(wwin->frame->core);	break;     case WKBD_SHADE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_shadeable)) {	    if (wwin->flags.shaded)		wUnshadeWindow(wwin);	    else		wShadeWindow(wwin);	}	break;     case WKBD_MOVERESIZE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin)) {	    CloseWindowMenu(scr);	    	    wKeyboardMoveResizeWindow(wwin);	}	break;     case WKBD_CLOSE:	if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_closable)) {	    CloseWindowMenu(scr);	    if (wwin->protocols.DELETE_WINDOW)	      wClientSendProtocol(wwin, _XA_WM_DELETE_WINDOW,				  event->xkey.time);	}	break;    case WKBD_SELECT:	if (ISMAPPED(wwin) && ISFOCUSED(wwin)) {	    wSelectWindow(wwin, !wwin->flags.selected);	}        break;     case WKBD_FOCUSNEXT:#ifdef WEENDOZE_CYCLE	if (wPreferences.windoze_cycling) {	    doWindozeCycle(wwin, event, True);	} else#endif /* WEENDOZE_CYCLE */	{	    wwin = NextFocusWindow(scr);	    if (wwin != NULL) {		wSetFocusTo(scr, wwin);		if (wPreferences.circ_raise)		    wRaiseFrame(wwin->frame->core);	    }	}	break;     case WKBD_FOCUSPREV:#ifdef WEENDOZE_CYCLE	if (wPreferences.windoze_cycling) {	    doWindozeCycle(wwin, event, False);	} else #endif /* WEENDOZE_CYCLE */	{	    wwin = PrevFocusWindow(scr);	    if (wwin != NULL) {		wSetFocusTo(scr, wwin);		if (wPreferences.circ_raise)		    wRaiseFrame(wwin->frame->core);	    }	}	break;#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)#define GOTOWORKS(wk)	case WKBD_WORKSPACE##wk:\			i = (scr->current_workspace/10)*10 + wk - 1;\			if (wPreferences.ws_advance || i<scr->workspace_count)\			    wWorkspaceChange(scr, i);\			break#else#define GOTOWORKS(wk)	case WKBD_WORKSPACE/**/wk:\			i = (scr->current_workspace/10)*10 + wk - 1;\			if (wPreferences.ws_advance || i<scr->workspace_count)\			    wWorkspaceChange(scr, i);\			break#endif    GOTOWORKS(1);    GOTOWORKS(2);    GOTOWORKS(3);    GOTOWORKS(4);    GOTOWORKS(5);    GOTOWORKS(6);    GOTOWORKS(7);    GOTOWORKS(8);    GOTOWORKS(9);    GOTOWORKS(10);#undef GOTOWORKS     case WKBD_NEXTWORKSPACE:	wWorkspaceRelativeChange(scr, 1);	break;     case WKBD_PREVWORKSPACE:	wWorkspaceRelativeChange(scr, -1);	break;     case WKBD_WINDOW1:     case WKBD_WINDOW2:     case WKBD_WINDOW3:     case WKBD_WINDOW4:#ifdef EXTEND_WINDOWSHORTCUT     case WKBD_WINDOW5:     case WKBD_WINDOW6:     case WKBD_WINDOW7:     case WKBD_WINDOW8:     case WKBD_WINDOW9:     case WKBD_WINDOW10:#endif#define INITBAG(bag)  if (bag) WMEmptyBag(bag); else bag = WMCreateBag(4)	index = command-WKBD_WINDOW1;	        if (scr->shortcutSelectedWindows[index]) {            WMBag *list = scr->shortcutSelectedWindows[index];            int cw;	    int i;            wUnselectWindows(scr);            if (scr->shortcutWindow[index])                wMakeWindowVisible(scr->shortcutWindow[index]);            cw = scr->current_workspace;            for (i = 0; i < WMGetBagItemCount(list); i++) {		WWindow *wwin = WMGetFromBag(list, i);                wWindowChangeWorkspace(wwin, cw);                wMakeWindowVisible(wwin);                wSelectWindow(wwin, True);            }        } else if (scr->shortcutWindow[index]){            wMakeWindowVisible(scr->shortcutWindow[index]);        } else if (wwin && ISMAPPED(wwin) && ISFOCUSED(wwin)) {            scr->shortcutWindow[index] = wwin;            if (wwin->flags.selected && scr->selected_windows) {                WMBag *bag;		int i;                bag = scr->selected_windows;		INITBAG(scr->shortcutSelectedWindows[index]);		for (i = 0; i < WMGetBagItemCount(bag); i++) {		    WWindow *tmp = WMGetFromBag(bag, i);		                        WMPutInBag(scr->shortcutSelectedWindows[index], tmp);                }            }            wSelectWindow(wwin, !wwin->flags.selected);            XFlush(dpy);            wusleep(3000);            wSelectWindow(wwin, !wwin->flags.selected);            XFlush(dpy);        } else if (WMGetBagItemCount(scr->selected_windows)) {            if (wwin->flags.selected && scr->selected_windows) {                WMBag *bag;		int i;                bag = scr->selected_windows;                INITBAG(scr->shortcutSelectedWindows[index]);		for (i = 0; i < WMGetBagItemCount(bag); i++) {		    WWindow *tmp = WMGetFromBag(bag, i);                    WMPutInBag(scr->shortcutSelectedWindows[index],  tmp);                }            }        }#undef INITBAG        break;     case WKBD_NEXTWSLAYER:     case WKBD_PREVWSLAYER:	{	    int row, column;	    	    row = scr->current_workspace/10;	    column = scr->current_workspace%10;	    	    if (command==WKBD_NEXTWSLAYER) {		if ((row+1)*10 < scr->workspace_count)		    wWorkspaceChange(scr, column+(row+1)*10);	    } else {		if (row > 0)		    wWorkspaceChange(scr, column+(row-1)*10);	    }	}	break;    case WKBD_CLIPLOWER:        if (!wPreferences.flags.noclip)            wDockLower(scr->workspaces[scr->current_workspace]->clip);        break;     case WKBD_CLIPRAISE:        if (!wPreferences.flags.noclip)            wDockRaise(scr->workspaces[scr->current_workspace]->clip);        break;     case WKBD_CLIPRAISELOWER:        if (!wPreferences.flags.noclip)            wDockRaiseLower(scr->workspaces[scr->current_workspace]->clip);        break;#ifdef KEEP_XKB_LOCK_STATUS     case WKBD_TOGGLE:        if(wPreferences.modelock) {            /*toggle*/            wwin = scr->focused_window;            if (wwin && wwin->flags.mapped                && wwin->frame->workspace == wwin->screen_ptr->current_workspace                && !wwin->flags.miniaturized && !wwin->flags.hidden) {                XkbGetState(dpy,XkbUseCoreKbd,&staterec);                wwin->frame->languagemode = wwin->frame->last_languagemode;                wwin->frame->last_languagemode = staterec.group;                XkbLockGroup(dpy,XkbUseCoreKbd, wwin->frame->languagemode);                                             }        }        break;#endif /* KEEP_XKB_LOCK_STATUS */    }}