Thread View: pl.comp.lang.perl
1 messages
1 total messages
Started by piecia aka dracorp
Thu, 06 Oct 2011 17:00
Jak przesłać 'dowolny klawisz' do komendy
Author: piecia aka dracorp
Date: Thu, 06 Oct 2011 17:00
Date: Thu, 06 Oct 2011 17:00
73 lines
2762 bytes
2762 bytes
Witam
Obudowuję polecenie udp-sender (http://udpcast.linux.lu/) za pomocą
interfejsu Curses:UI.
Nie wiem za bardzo jak obejść gdy program czeka na wciśnięcie dowolnego
klawisza aby wysłać dane.
Chciałbym aby naciśnięcie 'dowolnego klawisza' odbywała się przez
naciśnięcie odpowiedniego przycisku i żeby program 'nie reagował' na
wciskane klawisze klawiatury.
Co do drugiego to udp-sender ma opcję --nokbd ale wówczas po stronie
klienta, czyli udp-receiver musiałbym wciskać klawisz a wolałbym to
zrobić po stronie serwera.
Poniżej wystarczający fragment do testowania. Jakby ktoś mógł mnie
nakierować co przeczytać, bo aktualnie nie wiem z której strony się do
tego zabrać.
#v+
#!/usr/bin/perl
use strict;
use warnings;
use Curses::UI;
my $cui = new Curses::UI(
-clear_on_exit => 1,
);
my $window = $cui->add(
'window','Window',
-padtop => 1,
);
my $viewer = $window->add(
'viewer','TextViewer',
-border => 1,
-height => $window->height - 10,
);
my $button = $window->add(
'button','Buttonbox',
-y => -1,
-x => 1,
-buttons => [
{
-label => 'Prepare',
-onpress => \&execute,
-shortcut => 'p',
-value => 'prepare',
},
{
-label => 'Send',
-onpress => \&execute,
-shortcut => 's',
-value => 'send',
}
]
);
sub execute {
my $this = shift;
my $value = $this->get;
for($value){
if(/prepare/){
my $command = "udp-sender --file file 2>&1 |";
open(IN,$command);
while( defined( my $line = <IN>) ){
chomp($line);
$viewer->text($viewer->text.$line."\n");
$viewer->draw;
}
}elsif(/send/){
#wyślij dane
}
}
}
$cui->set_binding(sub{exit},"\cq");
$cui->mainloop;
#v-
--
piecia aka dracorp
pisz na: piotr kropka rogoza at wp kropka eu
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads