"AnyEvent::TermKey" - terminal key input using "libtermkey" with "AnyEvent"
Contents
Constructor
$aetk=AnyEvent::TermKey->new(%args)
This function returns a new instance of a "AnyEvent::TermKey" 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.
on_key => CODE
CODE reference to the key-event handling callback. Will be passed an instance of a
"Term::TermKey::Key" structure:
$on_key->( $key )
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.
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.
Methods
$tk=$aetk->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=$aetk->get_flags$aetk->set_flags($flags)$canonflags=$aetk->get_canonflags$aetk->set_canonflags($canonflags)$msec=$aetk->get_waittime$aetk->set_waittime($msec)$str=$aetk->get_keyname($sym)$sym=$aetk->keyname2sym($keyname)($ev,$button,$line,$col)=$aetk->interpret_mouse($key)$str=$aetk->format_key($key,$format)$key=$aetk->parse_key($str,$format)$key=$aetk->parse_key_at_pos($str,$format)$cmp=$aetk->keycmp($key1,$key2)
These methods all proxy to the "Term::TermKey" object, and allow transparent use of the
"AnyEvent::TermKey" 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.
Name
"AnyEvent::TermKey" - terminal key input using "libtermkey" with "AnyEvent"
Synopsis
use AnyEvent::TermKey qw( FORMAT_VIM KEYMOD_CTRL );
use AnyEvent;
my $cv = AnyEvent->condvar;
my $aetk = AnyEvent::TermKey->new(
term => \*STDIN,
on_key => sub {
my ( $key ) = @_;
print "Got key: ".$key->termkey->format_key( $key, FORMAT_VIM )."\n";
$cv->send if $key->type_is_unicode and
$key->utf8 eq "C" and
$key->modifiers & KEYMOD_CTRL;
},
);
$cv->recv;
