--- src/command.c.orig Thu Sep 6 18:38:07 2001 +++ src/command.c Wed Mar 22 21:09:34 2006 @@ -477,6 +477,16 @@ get_pty(void) ptydev = ttydev = _getpty(&fd, O_RDWR | O_NDELAY, 0622, 0); if (ptydev == NULL) goto Failed; +#elif defined (__OpenBSD__) + int sfd; + static char tty_name[16]; + + ptydev = ttydev = tty_name; + + if (openpty(&fd, &sfd, tty_name, NULL, NULL) < 0) + goto Failed; + close(sfd); + #elif defined (__svr4__) || defined(__CYGWIN32__) || defined(__lnx21__) { extern char *ptsname(); @@ -759,6 +769,9 @@ debug_ttymode(ttymode_t * ttymode) # ifdef VLNEXT FOO(VLNEXT, "VLNEXT"); # endif +# ifdef VSTATUS + FOO(VSTATUS, "VSTATUS"); +# endif fprintf(stderr, "\n\n"); # undef FOO # endif /* HAVE_TERMIOS_H */ @@ -799,6 +812,9 @@ get_ttymode(ttymode_t * tio) # ifdef VLNEXT tio->c_cc[VLNEXT] = CLNEXT; # endif +# ifdef VSTATUS + tio->c_cc[VSTATUS] = CSTATUS; +# endif } tio->c_cc[VEOF] = CEOF; tio->c_cc[VEOL] = VDISABLE; @@ -2148,11 +2164,23 @@ process_x_event(XEvent * ev) static int bypass_keystate = 0; int reportmode; static int csrO = 0; /* Hops - csr offset in thumb/slider */ +#ifdef ZH + int k_status; + char kbuf[256]; +#endif /* to give proper Scroll behaviour */ switch (ev->type) { case KeyPress: - lookup_key(ev); +#ifdef ZH + k_status = send_key(Xdisplay, TermWin.parent, &ev->xkey, kbuf); + if (!k_status) + lookup_key(ev); + else if (kbuf[0]) + tt_write(kbuf, strlen(kbuf)); +#else + lookup_key(ev); +#endif break; case ClientMessage: @@ -2217,6 +2245,9 @@ process_x_event(XEvent * ev) case FocusIn: if (!TermWin.focus) { +#ifdef ZH + send_FocusIn(Xdisplay, TermWin.parent); +#endif TermWin.focus = 1; #ifdef OFF_FOCUS_FADING if( rs_fade != NULL )