NAME
Term::TermKey::Async
- terminal key input using libtermkey
with IO::Async
SYNOPSIS
use Term::TermKey::Async qw( FORMAT_VIM KEYMOD_CTRL );
use IO::Async::Loop;
my $loop = IO::Async::Loop->new();
my $tka = Term::TermKey::Async->new(
term => \*STDIN,
on_key => sub {
my ( $self, $key ) = @_;
print "Got key: ".$self->format_key( $key, FORMAT_VIM )."\n";
$loop->loop_stop if $key->type_is_unicode and
$key->utf8 eq "C" and
$key->modifiers & KEYMOD_CTRL;
},
);
$loop->add( $tka );
$loop->loop_forever;
DESCRIPTION
This class implements an asynchronous perl wrapper around the libtermkey
library, which provides an abstract way to read keypress events in terminal-based programs. It yields structures that describe keys, rather than simply returning raw bytes as read from the TTY device.
This class is a subclass of IO::Async::Handle
, allowing it to be put in an IO::Async::Loop
object and used alongside other objects in an IO::Async
program. It internally uses an instance of Term::TermKey to access the underlying C library. For details on general operation, including the representation of keypress events as objects, see the documentation on that class.
Proxy methods exist for normal accessors of Term::TermKey
, and the usual behaviour of the getkey
or other methods is instead replaced by the on_key
event.
EVENTS
The following events are invoked, either using subclass methods or CODE references in parameters:
on_key $key
Invoked when a key press is received from the terminal. The $key
parameter will contain an instance of Term::TermKey::Key
representing the keypress event.
CONSTRUCTOR
$tka = Term::TermKey::Async->new( %args )
This function returns a new instance of a Term::TermKey::Async
object. It takes the following named arguments:
- term => IO or INT
-
Optional. File handle or POSIX file descriptor number for the file handle to use as the connection to the terminal. If not supplied
STDIN
will be used.
PARAMETERS
The following named parameters may be passed to new
or configure
:
- flags => INT
-
libtermkey
flags to pass to constructor orset_flags
. - on_key => CODE
-
CODE reference for the
on_key
event.
METHODS
$tk = $tka->termkey
Returns the Term::TermKey
object being used to access the libtermkey
library. Normally should not be required; the proxy methods should be used instead. See below.
$flags = $tka->get_flags
$tka->set_flags( $flags )
$canonflags = $tka->get_canonflags
$tka->set_canonflags( $canonflags )
$msec = $tka->get_waittime
$tka->set_waittime( $msec )
$str = $tka->get_keyname( $sym )
$sym = $tka->keyname2sym( $keyname )
( $ev, $button, $line, $col ) = $tka->interpret_mouse( $key )
$str = $tka->format_key( $key, $format )
$key = $tka->parse_key( $str, $format )
$key = $tka->parse_key_at_pos( $str, $format )
$cmp = $tka->keycmp( $key1, $key2 )
These methods all proxy to the Term::TermKey
object, and allow transparent use of the Term::TermKey::Async
object as if it was a subclass. Their arguments, behaviour and return value are therefore those provided by that class. For more detail, see the Term::TermKey documentation.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>