- break;
- case 'c':
- if ((w = getwin()) != 0)
- c_close(w);
- break;
- case 'C':
- c_close((struct ww *)0);
- break;
- case 'w':
- c_window();
- break;
- case 'm':
- if ((w = getwin()) != 0)
- c_move(w);
- break;
- case 'S':
- c_show();
- break;
- case 'L':
- c_list();
- break;
- case ':':
- c_colon();
- break;
- case 'h':
- (void) wwwrite(selwin, "\b", 1);
- break;
- case 'j':
- (void) wwwrite(selwin, "\n", 1);
- break;
- case 'k':
- (void) wwwrite(selwin, "\033A", 2);
- break;
- case 'l':
- (void) wwwrite(selwin, "\033C", 2);
- break;
- case CTRL(e):
- wwscroll(selwin, 1);
- break;
- case CTRL(y):
- wwscroll(selwin, -1);
- break;
- case CTRL(d):
- wwscroll(selwin, selwin->ww_w.nr / 2);
- break;
- case CTRL(u):
- wwscroll(selwin, - selwin->ww_w.nr / 2);
- break;
- case CTRL(f):
- wwscroll(selwin, selwin->ww_w.nr);
- break;
- case CTRL(b):
- wwscroll(selwin, - selwin->ww_w.nr);
- break;
- case CTRL(s):
- (void) write(selwin->ww_pty,
- &wwwintty.ww_tchars.t_stopc, 1);
- break;
- case CTRL(q):
- (void) write(selwin->ww_pty,
- &wwwintty.ww_tchars.t_startc, 1);
- break;
- case CTRL(l):
- wwredraw();
- break;
- case '?':
- c_help();
- break;
- case CTRL([):
- goto out;
- case CTRL(z):
- wwsuspend();
- break;
- case 'q':
- c_quit();
- if (quit)
- goto out;
- break;
- /* undocumented commands */
- case 's':
- c_stat();
- break;
- case 't':
- c_time(RUSAGE_SELF);
- break;
- case 'T':
- c_time(RUSAGE_CHILDREN);
- break;
- /* debugging commands */
- case 'M':
- if (!debug)
- goto badcmd;
- wwdumpsmap();
- break;
- case 'V':
- if (!debug)
- goto badcmd;
- if ((w = getwin()) != 0)
- wwdumpnvis(w);
- break;
- case 'D':
- if (!debug)
- goto badcmd;
- if ((w = getwin()) != 0)
- wwdumpcov(w);
- break;
- case 'W':
- if (!debug)
- goto badcmd;
- if ((w = getwin()) != 0)
- wwdumpwin(w);
- break;
- default:
- badcmd:
- if (c == escapec) {
- (void) write(selwin->ww_pty, &escapec, 1);
- goto out;
+ if (checkproc(selwin) >= 0)
+ incmd = 0;
+ break;
+ case '%':
+ if ((w = getwin()) != 0)
+ setselwin(w);
+ break;
+ case 'c':
+ if ((w = getwin()) != 0)
+ c_close(w);
+ break;
+ case 'C':
+ c_close((struct ww *)0);
+ break;
+ case 'w':
+ c_window();
+ break;
+ case 'm':
+ if ((w = getwin()) != 0)
+ c_move(w);
+ break;
+ case 'S':
+ c_show();
+ break;
+ case 'L':
+ c_list();
+ break;
+ case ':':
+ c_colon();
+ break;
+ case 'h':
+ (void) wwwrite(selwin, "\b", 1);
+ break;
+ case 'j':
+ (void) wwwrite(selwin, "\n", 1);
+ break;
+ case 'k':
+ (void) wwwrite(selwin, "\033A", 2);
+ break;
+ case 'l':
+ (void) wwwrite(selwin, "\033C", 2);
+ break;
+ case CTRL(e):
+ wwscroll(selwin, 1);
+ break;
+ case CTRL(y):
+ wwscroll(selwin, -1);
+ break;
+ case CTRL(d):
+ wwscroll(selwin, selwin->ww_w.nr / 2);
+ break;
+ case CTRL(u):
+ wwscroll(selwin, - selwin->ww_w.nr / 2);
+ break;
+ case CTRL(f):
+ wwscroll(selwin, selwin->ww_w.nr);
+ break;
+ case CTRL(b):
+ wwscroll(selwin, - selwin->ww_w.nr);
+ break;
+ case CTRL(s):
+ (void) write(selwin->ww_pty,
+ &wwwintty.ww_tchars.t_stopc, 1);
+ break;
+ case CTRL(q):
+ (void) write(selwin->ww_pty,
+ &wwwintty.ww_tchars.t_startc, 1);
+ break;
+ case CTRL(l):
+ wwredraw();
+ break;
+ case '?':
+ c_help();
+ break;
+ case CTRL([):
+ if (checkproc(selwin) >= 0)
+ incmd = 0;
+ break;
+ case CTRL(z):
+ wwsuspend();
+ break;
+ case 'q':
+ c_quit();
+ break;
+ /* undocumented commands */
+ case 's':
+ c_stat();
+ break;
+ case 't':
+ c_time(RUSAGE_SELF);
+ break;
+ case 'T':
+ c_time(RUSAGE_CHILDREN);
+ break;
+ /* debugging commands */
+ case 'M':
+ if (!debug)
+ goto badcmd;
+ wwdumpsmap();
+ break;
+ case 'V':
+ if (!debug)
+ goto badcmd;
+ if ((w = getwin()) != 0)
+ wwdumpnvis(w);
+ break;
+ case 'D':
+ if (!debug)
+ goto badcmd;
+ if ((w = getwin()) != 0)
+ wwdumpcov(w);
+ break;
+ case 'W':
+ if (!debug)
+ goto badcmd;
+ if ((w = getwin()) != 0)
+ wwdumpwin(w);
+ break;
+ default:
+ badcmd:
+ if (c == escapec) {
+ if (checkproc(selwin) >= 0) {
+ (void) write(selwin->ww_pty,
+ &escapec, 1);
+ incmd = 0;
+ }
+ } else {
+ if (!terse)
+ wwbell();
+ error("Type ? for help.");
+ }