Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TICKIT_TERM(7)	       Miscellaneous Information Manual		TICKIT_TERM(7)

NAME
       TickitTerm - abstraction	of an interactive terminal

SYNOPSIS
       #include	<tickit.h>

       typedef struct TickitTerm;

DESCRIPTION
       A  TickitTerm instance represents an interactive	user terminal. It pro-
       vides functions to draw content to the terminal,	and  to	 accept	 input
       and  other events from it. It supports a	variety	of modes of operation;
       allowing	both synchronous and asynchronous filehandle IO,  and  working
       abstractly via byte buffers.

FUNCTIONS
       A  new TickitTerm instance is created using the tickit_term_build(3). A
       terminal	instance stores	a reference count to make it easier for	appli-
       cations to manage the lifetime of terminals. A new terminal starts with
       reference count of one, and it can be adjusted using tickit_term_ref(3)
       and tickit_term_unref(3). When the count	reaches	zero the  instance  is
       destroyed.

       The  tickit_term_open_stdio(3) function offers a	convenient shortcut to
       creating	a new instance set up to represent the standard	input and out-
       put streams of the process.

       Once  built  the	 terminal  startup  actions  are  performed,  and  the
       tickit_term_await_started_msec(3)  function  can	 be used to wait until
       this  is	 complete.  A	running	  instance   can   be	paused	 using
       tickit_term_pause(3) and	resumed	using tickit_term_resume(3). It	can be
       stopped	entirely ahead of application termination by tickit_term_tear-
       down(3).

       It supports UTF-8 if enabled; either by detection of  a	UTF-8  locale,
       explicitly by calling tickit_term_set_utf8(3).

       The  size of the	terminal can be	queried	using tickit_term_get_size(3),
       or forced to a given size by tickit_term_set_size(3). If	 the  applica-
       tion is aware that the size of a	terminal represented by	a tty(7) file-
       handle  has  changed (for example due to	receipt	of a SIGWINCH signal),
       it can call tickit_term_refresh_size(3) to update it. The type  of  the
       terminal	 is  set  at  construction time	but can	be queried later using
       tickit_term_get_termtype(3).

OUTPUT
       A terminal instance can be used for outputting drawing and  other  com-
       mands.	  For	 drawing,    the    functions	 tickit_term_print(3),
       tickit_term_goto(3),  tickit_term_move(3),   tickit_term_scrollrect(3),
       tickit_term_chpen(3),  tickit_term_setpen(3),  tickit_term_clear(3) and
       tickit_term_erasech(3) can be used. Additionally	for setting modes, the
       function	tickit_term_setctl_int(3) can be used. If an output buffer  is
       defined	it will	need to	be flushed when	drawing	is complete by calling
       tickit_term_flush(3).

INPUT
       Input via a filehandle can be received either synchronously by  calling
       tickit_term_input_wait_msec(3),	  or	asynchronously	  by   calling
       tickit_term_input_readable(3)	 and	 tickit_term_input_check_time-
       out_msec(3).  Any of these functions may	cause one or more events to be
       raised by invoking event	handler	functions.

EVENTS
       A terminal instance stores a list of event handlers. Each event handler
       is associated with one event type and stores a function pointer,	and an
       arbitrary pointer containing user data. Event handlers may be installed
       using  tickit_term_bind_event(3)	 and  removed  using   tickit_term_un-
       bind_event_id(3).

       Fake  events can	be artificially	injected into the event	handler	chain,
       as if  they  had	 been  received	 from  the  controlling	 terminal,  by
       tickit_term_emit_key(3)	and  tickit_term_emit_mouse(3).	 These	may be
       useful for testing,  event  capture-and-replay,	or  other  specialised
       cases.

       The event types recognised are:

       TICKIT_TERM_ON_DESTROY
	      The terminal instance is being destroyed.

       TICKIT_TERM_ON_RESIZE
	      The  terminal  has  been resized.	info will point	to a structure
	      defined as:

	      typedef struct {
		  int lines;
		  int cols;
	      }	TickitResizeEventInfo;

       TICKIT_TERM_ON_KEY
	      A	key has	been pressed on	the keyboard. info  will  point	 to  a
	      structure	defined	as:

	      typedef struct {
		  TickitKeyEventType type;
		  int mod;
		  const	char *str;
	      }	TickitKeyEventInfo;

	      type  is	an  enumeration	 that  gives  the specific type	of key
	      event.

	      TICKIT_KEYEV_KEY
		     a cursor control, arrow key, or function key. i.e.	any of
		     the keys that don't directly produce text.

	      TICKIT_KEYEV_TEXT
		     regular Unicode characters.

       str will	contain	the name of the	special	 key,  including  any  applied
       modifiers, or a UTF-8 string of the Unicode character.

       mod  will  contain  a  bitmask  of TICKIT_MOD_SHIFT, TICKIT_MOD_ALT and
       TICKIT_MOD_CTRL.

       This event only runs until a bound function returns a true value;  this
       prevents	later handler functions	from observing it.

       TICKIT_TERM_ON_MOUSE
	      A	 mouse	button	has been pressed or released, the mouse	cursor
	      moved while dragging a button, or	the wheel has  been  scrolled.
	      info will	point to a structure defined as:

	      typedef struct {
		  TickitMouseEventType type;
		  int button;
		  int mod;
		  int line;
		  int col;
	      }	TickitMouseEventInfo;

	      type  is	an  enumeration	 that gives the	specific type of mouse
	      event.

	      TICKIT_MOUSEEV_PRESS
		     A mouse button has	been pressed.

	      TICKIT_MOUSEEV_DRAG
		     The mouse has been	moved while a  button  is  being  held
		     down.

	      TICKIT_MOUSEEV_RELEASE
		     A mouse button has	been released.

	      TICKIT_MOUSEEV_WHEEL
		     The wheel has been	rolled.

       button	gives	the   button  index  for  button  events,  or  one  of
       TICKIT_MOUSEWHEEL_UP, TICKIT_MOUSEWHEEL_DOWN, TICKIT_MOUSEWHEEL_LEFT or
       TICKIT_MOUSEWHEEL_RIGHT for wheel events.

       line and	col give the position of the mouse cursor for this event.

       mod will	contain	a  bitmask  of	TICKIT_MOD_SHIFT,  TICKIT_MOD_ALT  and
       TICKIT_MOD_CTRL.

       This  event only	runs until a bound function returns a true value; this
       prevents	later handler functions	from observing it.

CONTROLS
       A terminal instance has a number	of runtime-configuration  control  op-
       tions   that   affect   its   behaviour.	  These	  can	be  set	 using
       tickit_term_setctl_int(3) and  tickit_term_setctl_str(3),  and  queried
       using  tickit_term_getctl_int(3).  The  individual controls have	human-
       readable	string names that can be  obtained  by	tickit_termctl_name(3)
       and searched by name using tickit_termctl_lookup(3). The	type of	a con-
       trol option can be queried using	tickit_termctl_type(3).

       The  options are	given in an enumeration	called TickitTermCtl. The fol-
       lowing control values are recognised:

       TICKIT_TERMCTL_ALTSCREEN	(bool)
	      The value	is a boolean indicating	whether	the terminal alternate
	      buffer mode should be enabled. When enabled, a temporary	buffer
	      is  used	for  drawing,  preserving the original contents	of the
	      screen. This mode	is usually used	by full-screen applications to
	      preserve the shell's scrollback state.

       TICKIT_TERMCTL_COLORS (int, read-only)
	      The value	indicates how many colors are available. This value is
	      read-only; it can	be requested but not set.

	      On terminfo-driven terminals this	will likely be 8, 16, or  256.
	      On  xterm-like  terminals	this will be 16,777,216	(i.e. 1	<< 24)
	      if the driver detects that the  terminal	supports  24-bit  RGB8
	      ("true-color") palettes, or 256 if not.

       TICKIT_TERMCTL_CURSORBLINK (bool)
	      The value	is a boolean indicating	whether	the terminal text cur-
	      sor  should  blink.  When	 disabled, the cursor will appear in a
	      steady state, if visible.	When enabled, the cursor  will	appear
	      blinking,	 if  visible.  If the cursor is	invisible, this	should
	      not have any effect.

       TICKIT_TERMCTL_CURSORSHAPE (int)
	      The value	is an integer from the	TickitCursorShape  enumeration
	      indicating what shape the	terminal's text	cursor should be. Val-
	      ues are:

	      TICKIT_CURSORSHAPE_BLOCK
		     A solid block filling the entire cell.

	      TICKIT_CURSORSHAPE_UNDER
		     An	underline below	the character.

	      TICKIT_CURSORSHAPE_LEFT_BAR
		     A vertical	bar to the left	of the character.

	      Note  that not all terminals support setting this	option,	nor to
	      all of the possible values.

       TICKIT_TERMCTL_CURSORVIS	(bool)
	      The value	is a boolean indicating	whether	the terminal text cur-
	      sor should be visible. When disabled the cursor position is  not
	      visible.	Typically applications will hide the cursor while per-
	      forming redrawing	operations so as not to	show a flickering  ef-
	      fect as the cursor moves,	and show it again when drawing is com-
	      plete.

       TICKIT_TERMCTL_ICON_TEXT	(str)
	      The  value  is a string for the terminal to use as its minimised
	      icon text.

       TICKIT_TERMCTL_ICONTITLE_TEXT (str)
	      The value	is a string for	the terminal to	use as	its  minimised
	      icon text	and main window	title.

       TICKIT_TERMCTL_KEYPAD_APP (bool)
	      The  value  is a boolean controlling the terminal's keypad mode.
	      When enabled, the	terminal is in	keypad	application  mode;  in
	      this  mode  the  numerical  keypad will send different sequences
	      that can be detected as distinct from regular ASCII  text.  When
	      disabled,	the keypad will	send normal text.

       TICKIT_TERMCTL_MOUSE (int)
	      The value	is an integer from the TickitTermMouseMode enumeration
	      indicating what mouse events should be sent. Values are:

	      BTICKIT_TERM_MOUSEMODE_CLICK
		     Report button press and release events.

	      TICKIT_TERM_MOUSEMODE_DRAG
		     Report  button  press  and	 release  events, and movement
		     while a button is held.

	      TICKIT_TERM_MOUSEMODE_MOVE
		     Report all	button press, release and motion  events  even
		     with no buttons held.

	      TICKIT_TERM_MOUSEMODE_OFF
		     Report nothing.

       TICKIT_TERMCTL_TITLE_TEXT (str)
	      The value	is a string for	the terminal to	use as its main	window
	      title.

SEE ALSO
       tickit(7), tickit_renderbuffer(7)

								TICKIT_TERM(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tickit_term&sektion=7&manpath=FreeBSD+Ports+15.0>

home | help