🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#52306
Author: piecia aka dracorp
Date: Thu, 06 Oct 2011 17:00
73 lines
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