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 console 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
results 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).
- 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. The ioctl
is issued on the file descriptor associated with the
user_input
stream. 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 swipl-win.exe.
The requested value reflects the current size. For the multithreaded
version the console that is associated with the
user_input
stream is used.