#ifndef btco_ROTE_rote_h
#define btco_ROTE_rote_h
+#ifdef USE_NCURSES
#include <ncurses.h>
+#else
+#include <stdbool.h>
+#endif
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
RoteTermPrivate *pd; /* private state data */
+ bool insert; /* insert or replace mode */
/* --- dirtiness flags: the following flags will be raised when the
* corresponding items are modified. They can only be unset by YOU
* (when, for example, you redraw the term or something) --- */
*/
void rote_vt_inject(RoteTerm *rt, const char *data, int length);
+#ifdef USE_NCURSES
/* Paints the virtual terminal screen on the given window, putting
* the top-left corner at the given position. The cur_set_attr
* function must set the curses attributes given a Rote attribute
void rote_vt_draw(RoteTerm *rt, WINDOW *win, int startrow, int startcol,
void (*cur_set_attr)(WINDOW *win, unsigned char attr));
+#endif
/* Indicates to the terminal that the given key has been pressed.
* This will cause the terminal to rote_vt_write() the appropriate
* escape sequence for that key (that is, the escape sequence
* This function does NOT free() the passed buffer */
void rote_vt_restore_snapshot(RoteTerm *rt, void *snapbuf);
+/* Returns the pseudo tty descriptor associated with the given terminal.
+ * Please don't do weird things with it (like close it for instance),
+ * or things will break
+ *
+ * This function returns -1 if the given terminal does not yet have
+ * an associated pty. A pty is only associated to a terminal when
+ * needed, e.g. on a call to rote_vt_forkpty. */
+int rote_vt_get_pty_fd(RoteTerm *rt);
+
/* Declaration of custom escape sequence callback type. See the
* rote_vt_add_es_handler function for more info */
typedef int (*rote_es_handler_t)(RoteTerm *rt, const char *es);