Emit a beep or bell. This is done immediately.
Clears the screen. This doesn't take effect until the show function is called.
If the terminal supports color, this returns the the number of colors.
Disable all mouse handling/capture.
Enable mouse mode. This can cause terminals/emulators to behave differently -- for example affecting the ability to scroll or use copy/paste.
Enable typical mouse features. This enables tracking, but leaves drag events disabled. Enabling mouse drag will impair use of copy-paste at the OS level, which many users tend to find frustrating.
Enable backeted paste mode mode. Bracketed paste mode will pasted content in a single event, and is therefore distinguishable from individually typed characters.
Fill the entire screen with the given content and style. Content is not drawn until the show() or sync() functions are called.
Fill the entire screen with the given content, but preserve the style.
It would be nice to know if a given key is supported by a terminal. Note that this is best-effort, and some terminals may present the ability to support a key, without actually having such a physical key and some combinations may be suppressed by the emulator or the environment the emulator runs in.
Do we have a mouse? This may be overly optimitistic for some terminals, but it is a good first guess.
Support $ operation in indices.
Retrive the contents for a given address. This is taken from the backing draw buffer, and won't necessarily reflect what is displayed to the user until show is called.
Convenience for indexing
Set the content for for a given location. This won't necessarily take effect until the show function is called.
Convenience for indexing.
If start was called without a Tid to send to, then events are delivered into a queue that can be polled via this API. This function is thread safe.
Receive events, withotu a timeout. This only works if start was called without a tid.
Applications should call this in response to receiving a resize event. (This can't be done automatically to avoid thread safety issues.)
Attempt to resize the terminal. YMMV.
Set the default style used when clearning the screen, etc.
Show content on the screen, doing so efficiently.
Show the cursor at its current location.
Move the cursor to the given location, and show it using the appropriate style.
Obtain the terminal window size. The x, y represent the number of columns and rows. The highest valid address will be coord.x-1, coord.y-1.
Start should be called to start processing. Once this begins, events (see event.d) will be delivered to the caller via std.concurrency.send(). Additioanlly, this may change terminal settings to put the input stream into raw mode, etc.
Stop is called to stop processing on teh screen. The terminal settings will be restored, and the screen may be cleared. Input events will no longer be delivered. This should be called when the program is exited, or if suspending (to run a subshell process interactively for example).
Update the screen, writing every cell. This should be done to repair screen damage, for example.