1ROTE - OUR OWN TERMINAL EMULATION LIBRARY 2Copyright (c) 2004 Bruno T. C. de Oliveira 3Licensed under the GNU Lesser General Public License 4See the COPYING file for more details on the license terms. 5 6[[ AUTHOR AND PROJECT HOMEPAGE ]] 7This library was written by Bruno Takahashi C. de Oliveira, a 8Computer Science student at Universidade de S�o Paulo, Brazil. 9The project home page is: 10 11 http://rote.sourceforge.net 12 13[[ OTHER PEOPLE INVOLVED IN DEVELOPING THIS LIBRARY ]] 14 15* Phil Endecott (phil_achbq_endecott@chezphil.org) 16 17[[ WHAT IS IT? ]] 18 19ROTE is a simple C library for VT102 terminal emulation. It allows the 20programmer to set up virtual 'screens' and send them data. The virtual 21screens will emulate the behavior of a VT102 terminal, interpreting 22escape sequences, control characters and such. The library supports 23ncurses as well so that you may render the virtual screen to the real 24screen when you need to. 25 26[[ MORE DETAILS ]] 27 28There are several programs that do terminal emulation, such as xterm, rxvt, 29screen and even the Linux console driver itself. However, it is not easy to 30isolate their terminal emulation logic and put it in a module that can be 31easily reused in other programs. That's where the ROTE library comes in. 32 33The goal of the ROTE library is to provide terminal emulation support 34for C/C++ applications, making it possible to write programs that display 35terminals in embedded windows within them, or even monitor the display 36produced by other programs. 37 38The ROTE library does not depend on any other library (except libc, of course), 39and ncurses support can be enabled or disabled at compile-time. With ncurses 40support compiled in, the ROTE library is able to render the virtual screens 41to the physical screen (actually any ncurses window) and can also translate 42ncurses key codes to the escape sequences the Linux console would have 43produced (and feed them into the terminal). Ncurses support is not mandatory 44however, and ROTE will work fine without it, but in that case the application 45must take care of drawing the terminal to the screen in whichever way it 46sees fit. 47 48ROTE also encapsulates the functionality needed to execute a child process 49using the virtual screen as the controlling terminal. It will handle the 50creation of the pseudo-terminal and the child process. All the application 51has to do is tell it the command to run in the terminal and call an update 52function at regular intervals to allow the terminal to update itself. 53 54 55