The following predicates form a simple access mechanism to the Unix
termcap library to provide terminal independent I/O for screen
terminals. These predicates are only available on Unix machines. The
SWI-Prolog Windows consoles accepts the ANSI escape sequences.
- tty_get_capability(+Name,
+Type, -Result)
-
Get the capability named Name from the termcap library. See
termcap(5) for the capability names. Type specifies the type
of the expected result, and is one of
string
, number
or
bool
. String results are returned as an atom, number result
as an integer and bool results as the atom on
or off
.
If an option cannot be found this predicate fails silently. The results
are only computed once. Successive queries on the same capability are
fast.
- tty_goto(+X,
+Y)
-
Goto position (X, Y) on the screen. Note that the
predicates
line_count/2
and line_position/2
will not have a well defined behaviour while using this predicate.
- tty_put(+Atom,
+Lines)
-
Put an atom via the termcap library function tputs(). This function
decodes padding information in the strings returned by tty_get_capability/3
and should be used to output these strings. Lines is the
number of lines affected by the operation, or 1 if not applicable (as in
almost all cases).
- set_tty(-OldStream,
+NewStream)
-
Set the output stream, used by tty_put/2
and tty_goto/2
to a specific stream. Default is user_output.
- tty_size(-Rows,
-Columns)
-
Determine the size of the terminal. Platforms:
- Unix
-
If the system provides ioctl calls for this, these are used and tty_size/2
properly reflects the actual size after a user resize of the window. As
a fallback, the system uses
tty_get_capability/3
using
li
and co
capabilities. In this case the
reported size reflects the size at the first call and is not updated
after a user-initiated resize of the terminal.
- Windows
-
Getting the size of the terminal is provided for plwin.exe. The
requested value reflects the current size. For the multi-threaded
version the console that is associated with the
user_input
stream is used.