NAME `Term::VTerm' - emulate a virtual terminal using libvterm EXPORTED CONSTANTS The following sets of constants are exported, with the given tag names. VALUETYPE_* (:types) Type constants for the types of `VTermValue', as returned by `get_attr_type' and `get_prop_type'. ATTR_* (:attrs) Attribute constants for pen attributes. PROP_* (:props) Property constants for terminal properties. DAMAGE_* (:damage) Size constants for `VTermScreen' damage merging. CONSTRUCTOR $vterm = Term::VTerm->new( %args ) Constructs a new `Term::VTerm' instance of the initial size given by the arguments. rows, cols => INT Gives the initial size of the terminal area. METHODS ( $rows, $cols ) = $vterm->get_size Returns the current size of the terminal area. $vterm->set_size( $rows, $cols ) Sets the new size of the terminal area. $utf8 = $vterm->get_utf8 $vterm->set_utf8( $utf8 ) Return or set UTF-8 mode on the parser. $len = $vterm->input_write( $str ) Writes the bytes of the given string into the terminal parser buffer. $len = $vterm->output_read( $buf, $maxlen ) Reads bytes from the output buffer of the terminal into the given variable, up to the maximum length requested. Returns the number of bytes actually read. $vterm->keyboard_unichar( $char, $mod ) Sends a keypress to the output buffer, encoding the given Unicode character *number* (i.e. not a string), with the optional modifier (as a bitmask of one or more of the `MOD_*' constants). $vterm->mouse_move( $row, $col, $mod ) Moves the mouse cursor to the given position, with optional modifier (as a bitmask of one or more of the `MOD_*' constants). It is OK to call this regardless of the current mouse mode; if the mode doesn't want move report events or drag events then no output will be generated. $vterm->mouse_button( $button, $is_pressed, $mod ) Performs a mouse button report event on the given button, to either press or release it, with optional modifier (as a bitmask of one or more of the `MOD_*' constants). It is OK to call this regardless of the current mouse mode; if mouse reporting is disabled then no output will be generated. $vterm->parser_set_callbacks( %cbs ) Sets the parser-layer callbacks. Takes the following named arguments: on_text => CODE $on_text->( $text ) on_control => CODE $on_control->( $ctrl ) `$ctrl' is an integer giving a C0 or C1 control byte value. on_escape => CODE $on_escape->( $str ) on_csi => CODE $on_csi->( $leader, $command, @args ) Where `$leader' may be `undef', and each element of `@args' is an ARRAY reference containing sub-arguments. Each sub-argument may be `undef'. on_osc => CODE $on_osc->( $command ) on_dcs => CODE $on_dcs->( $str ) on_resize => CODE $on_resize->( $rows, $cols ) $state = $vterm->obtain_state Returns a Term::VTerm::State object representing the terminal state layer, creating it if necessary. After calling this method, any parser callbacks will no longer work. $screen = $vterm->obtain_screen Returns a Term::VTerm::Screen object representing the terminal screen layer, creating it if necessary. After calling this method, any parser or state callbacks will no longer work. COLOR OBJECTS A `VTermColor' instance can be constructed by $color = Term::VTerm::Color->new( red => $r, green => $g, blue => $b ) A `VTermColor' instance has the following field accessors: $r = $color->red $g = $color->green $b = $color->blue The components of the colour as an integer between 0 and 255. $hex = $color->rgb_hex A 6-character string containing the three colour components, hex encoded. GLYPH INFO OBJECTS A `VTermGlyphInfo' instance has the following field accessors: @chars = $info->chars A list of Unicode character numbers. This list does not include the terminating 0. $width = $info->width The width of this glyph in screen columns. $str = $info->str A Unicode string containing the characters. POSITION OBJECTS A `VTermPos' instance can be constructed by $pos = Term::VTerm::Pos->new( row => $row, col => $col ) A `VTermPos' instance has the following field accessors: $row = $pos->row $col = $pos->col The row and column number of the position, 0-indexed. RECTANGLE OBJECTS A `VTermRect' instance can be constructed by $rect = Term::VTerm::Rect->new( start_row => ..., end_row => ..., start_col => ..., end_col => ... ) A `VTermRect' instance has the following field accessors: $row = $rect->start_row $col = $rect->start_col The row and column number of the top left corner of the rectangle. $row = $rect->end_row $col = $rect->end_col The row and column number of the cell just after the bottom right corner of the rectangle; i.e. exclusive limit. FUNCTIONS The following utility functions are also exported. $type = get_attr_type( $attr ) Returns the type of the given pen attribute. $type = get_prop_type( $prop ) Returns the type of the given terminal property. AUTHOR Paul Evans