void reset_info_window_sizes (void) { terminal_get_screen_size (); display_initialize_display (screenwidth, screenheight); window_new_screen_size (screenwidth, screenheight); redisplay_after_signal (); }
static void reset_info_window_sizes (void) { terminal_goto_xy (0, 0); fflush (stdout); terminal_unprep_terminal (); terminal_get_screen_size (); terminal_prep_terminal (); display_initialize_display (screenwidth, screenheight); window_new_screen_size (screenwidth, screenheight); redisplay_after_signal (); }
/* Initialize the terminal which is known as TERMINAL_NAME. If this terminal doesn't have cursor addressability, `terminal_is_dumb_p' becomes nonzero. The variables SCREENHEIGHT and SCREENWIDTH are set to the dimensions that this terminal actually has. The variable TERMINAL_HAS_META_P becomes nonzero if this terminal supports a Meta key. Finally, the terminal screen is cleared. */ void terminal_initialize_terminal (char *terminal_name) { char *buffer; terminal_is_dumb_p = 0; if (terminal_initialize_terminal_hook) { (*terminal_initialize_terminal_hook) (terminal_name); return; } term_name = terminal_name ? terminal_name : getenv ("TERM"); if (!term_name) term_name = "dumb"; if (!term_string_buffer) term_string_buffer = xmalloc (2048); if (!term_buffer) term_buffer = xmalloc (2048); buffer = term_string_buffer; term_clrpag = term_cr = term_clreol = NULL; /* HP-UX 11.x returns 0 for OK [email protected]. */ if (tgetent (term_buffer, term_name) < 0) { terminal_is_dumb_p = 1; screenwidth = 80; screenheight = 24; term_cr = "\r"; term_up = term_dn = audible_bell = visible_bell = NULL; term_ku = term_kd = term_kl = term_kr = NULL; term_kP = term_kN = NULL; term_kh = term_ke = NULL; term_kD = NULL; return; } BC = tgetstr ("pc", &buffer); PC = BC ? *BC : 0; #if defined (HAVE_TERMIOS_H) { struct termios ti; if (tcgetattr (fileno(stdout), &ti) != -1) ospeed = cfgetospeed (&ti); else ospeed = B9600; } #else # if defined (TIOCGETP) { struct sgttyb sg; if (ioctl (fileno (stdout), TIOCGETP, &sg) != -1) ospeed = sg.sg_ospeed; else ospeed = B9600; } # else ospeed = B9600; # endif /* !TIOCGETP */ #endif term_cr = tgetstr ("cr", &buffer); term_clreol = tgetstr ("ce", &buffer); term_clrpag = tgetstr ("cl", &buffer); term_goto = tgetstr ("cm", &buffer); /* Find out about this terminal's scrolling capability. */ term_AL = tgetstr ("AL", &buffer); term_DL = tgetstr ("DL", &buffer); term_al = tgetstr ("al", &buffer); term_dl = tgetstr ("dl", &buffer); terminal_can_scroll = ((term_AL || term_al) && (term_DL || term_dl)); term_invbeg = tgetstr ("mr", &buffer); if (term_invbeg) term_invend = tgetstr ("me", &buffer); else term_invend = NULL; if (!term_cr) term_cr = "\r"; terminal_get_screen_size (); term_up = tgetstr ("up", &buffer); term_dn = tgetstr ("dn", &buffer); visible_bell = tgetstr ("vb", &buffer); terminal_has_visible_bell_p = (visible_bell != NULL); audible_bell = tgetstr ("bl", &buffer); if (!audible_bell) audible_bell = "\007"; term_begin_use = tgetstr ("ti", &buffer); term_end_use = tgetstr ("te", &buffer); term_keypad_on = tgetstr ("ks", &buffer); term_keypad_off = tgetstr ("ke", &buffer); /* Check to see if this terminal has a meta key. */ terminal_has_meta_p = (tgetflag ("km") || tgetflag ("MT")); if (terminal_has_meta_p) { term_mm = tgetstr ("mm", &buffer); } else { term_mm = NULL; } /* Attempt to find the arrow keys. */ term_ku = tgetstr ("ku", &buffer); term_kd = tgetstr ("kd", &buffer); term_kr = tgetstr ("kr", &buffer); term_kl = tgetstr ("kl", &buffer); term_kP = tgetstr ("kP", &buffer); term_kN = tgetstr ("kN", &buffer); #if defined(INFOKEY) term_kh = tgetstr ("kh", &buffer); term_ke = tgetstr ("@7", &buffer); term_ki = tgetstr ("kI", &buffer); term_kx = tgetstr ("kD", &buffer); #endif /* defined(INFOKEY) */ /* Home and end keys. */ term_kh = tgetstr ("kh", &buffer); term_ke = tgetstr ("@7", &buffer); term_kD = tgetstr ("kD", &buffer); /* If this terminal is not cursor addressable, then it is really dumb. */ if (!term_goto) terminal_is_dumb_p = 1; }