use warnings; use strict; use X11::Protocol; my $x = X11::Protocol->new; $x->event_handler ('queue'); $x->GrabKeyboard ($x->root, 0, 'Asynchronous', 'Asynchronous', 'CurrentTime'); my $count = 0; while ($count++ < 30) { my %event = $x->next_event; my $name = $event{'name'}; if ('KeyPress' eq $name) { ## process event print "key pressed!\n"; } } $x->UngrabKeyboard ('CurrentTime');