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;
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.
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 )