(mcview__get_nroff_real_len): immediately return 0 if viewer is not in nroff mode..
[midnight-commander.git] / lib / tty / tty.h
blobea2f968852670f094de7f4a628c34f116a49072b
2 /** \file tty.h
3 * \brief Header: %interface to the terminal controlling library
5 * This file is the %interface to the terminal controlling library:
6 * slang or ncurses. It provides an additional layer of abstraction
7 * above the "real" libraries to keep the number of ifdefs in the other
8 * files small.
9 */
11 #ifndef MC__TTY_H
12 #define MC__TTY_H
14 #include "lib/global.h" /* include <glib.h> */
16 #ifdef HAVE_SLANG
17 #include "tty-slang.h"
18 #else
19 #include "tty-ncurses.h"
20 #endif
22 /*** typedefs(not structures) and defined constants **********************************************/
24 #define KEY_KP_ADD 4001
25 #define KEY_KP_SUBTRACT 4002
26 #define KEY_KP_MULTIPLY 4003
28 /*** enums ***************************************************************************************/
30 typedef enum
32 /* single lines */
33 MC_TTY_FRM_VERT,
34 MC_TTY_FRM_HORIZ,
35 MC_TTY_FRM_LEFTTOP,
36 MC_TTY_FRM_RIGHTTOP,
37 MC_TTY_FRM_LEFTBOTTOM,
38 MC_TTY_FRM_RIGHTBOTTOM,
39 MC_TTY_FRM_TOPMIDDLE,
40 MC_TTY_FRM_BOTTOMMIDDLE,
41 MC_TTY_FRM_LEFTMIDDLE,
42 MC_TTY_FRM_RIGHTMIDDLE,
43 MC_TTY_FRM_CROSS,
45 /* double lines */
46 MC_TTY_FRM_DVERT,
47 MC_TTY_FRM_DHORIZ,
48 MC_TTY_FRM_DLEFTTOP,
49 MC_TTY_FRM_DRIGHTTOP,
50 MC_TTY_FRM_DLEFTBOTTOM,
51 MC_TTY_FRM_DRIGHTBOTTOM,
52 MC_TTY_FRM_DTOPMIDDLE,
53 MC_TTY_FRM_DBOTTOMMIDDLE,
54 MC_TTY_FRM_DLEFTMIDDLE,
55 MC_TTY_FRM_DRIGHTMIDDLE,
57 MC_TTY_FRM_MAX
58 } mc_tty_frm_t;
60 /*** structures declarations (and typedefs of structures)*****************************************/
62 /*** global variables defined in .c file *********************************************************/
64 extern int mc_tty_frm[];
66 extern char *tty_tgetstr (const char *name);
68 /* {{{ Input }}} */
70 extern int reset_hp_softkeys;
72 /*** declarations of public functions ************************************************************/
74 extern void tty_beep (void);
76 /* {{{ Input }}} */
78 extern void tty_init (gboolean slow, gboolean ugly_lines);
79 extern void tty_shutdown (void);
81 extern gboolean tty_is_slow (void);
83 extern void tty_start_interrupt_key (void);
84 extern void tty_enable_interrupt_key (void);
85 extern void tty_disable_interrupt_key (void);
86 extern gboolean tty_got_interrupt (void);
88 extern void tty_reset_prog_mode (void);
89 extern void tty_reset_shell_mode (void);
91 extern void tty_raw_mode (void);
92 extern void tty_noraw_mode (void);
94 extern void tty_noecho (void);
95 extern int tty_flush_input (void);
97 extern void tty_keypad (gboolean set);
98 extern void tty_nodelay (gboolean set);
99 extern int tty_baudrate (void);
101 extern int tty_lowlevel_getch (void);
103 /* {{{ Output }}} */
106 The output functions do not check themselves for screen overflows,
107 so make sure that you never write more than what fits on the screen.
108 While SLang provides such a feature, ncurses does not.
111 extern int tty_reset_screen (void);
112 extern void tty_touch_screen (void);
114 extern void tty_gotoyx (int y, int x);
115 extern void tty_getyx (int *py, int *px);
117 extern void tty_set_alt_charset (gboolean alt_charset);
119 extern void tty_display_8bit (gboolean what);
120 extern void tty_print_char (int c);
121 extern void tty_print_alt_char (int c, gboolean single);
122 extern void tty_print_anychar (int c);
123 extern void tty_print_string (const char *s);
124 extern void tty_printf (const char *s, ...);
126 extern void tty_print_one_vline (gboolean single);
127 extern void tty_print_one_hline (gboolean single);
128 extern void tty_draw_hline (int y, int x, int ch, int len);
129 extern void tty_draw_vline (int y, int x, int ch, int len);
130 extern void tty_draw_box (int y, int x, int rows, int cols, gboolean single);
131 extern void tty_fill_region (int y, int x, int rows, int cols, unsigned char ch);
133 extern int tty_resize (int fd);
134 extern void tty_refresh (void);
135 extern void tty_setup_sigwinch (void (*handler) (int));
136 extern void tty_low_level_change_screen_size (void);
139 extern int mc_tty_normalize_lines_char (const char *);
141 /*** inline functions ****************************************************************************/
142 #endif /* MC_TTY_H */