An abstract class that does terminal emulation. You'll have to subclass it to make it work.
The terminal implements a subset of what xterm does and then, optionally, some special features.
Its linear mode (normal) screen buffer is infinitely long and infinitely wide. It is the responsibility of your subclass to do line wrapping, etc., for display. This i think is actually incompatible with xterm but meh.
actually maybe it *should* automatically wrap them. idk. I think GNU screen does both. FIXME decide.
Its cellular mode (alternate) screen buffer can be any size you want.
Style of the cursor
After it demands attention, call this when the attention has been received you may call it immediately to ignore the demand (the default)
Signal the UI that some attention should be given, e.g. blink the taskbar or sound the bell. The default is to ignore the demand by instantly acknowledging it - if you override this, do NOT call super().
if a binary extension is triggered, the implementing class is responsible for figuring out how it should be made to fit into the screen buffer
If you subclass this and return true, you can scroll on command without needing to redraw the entire screen; returning true here suppresses the automatic invalidation of scrolled lines (except the new one).
Send a non-character key sequence
represents one terminal cell