/[cvs]/joko/Scripts/psh/lib/POE/Component/Terminal.pm
ViewVC logotype

Diff of /joko/Scripts/psh/lib/POE/Component/Terminal.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by cvsjoko, Sat Jun 15 03:45:21 2002 UTC revision 1.4 by cvsjoko, Sat Jun 15 04:28:10 2002 UTC
# Line 5  Line 5 
5  ## $Id$  ## $Id$
6  ##  ##
7  ## $Log$  ## $Log$
8    ## Revision 1.4  2002/06/15 04:28:10  cvsjoko
9    ## immediate polling, no delay
10    ##
11    ## Revision 1.3  2002/06/15 04:24:15  cvsjoko
12    ## + added modifier for running in linux or win32
13    ## + modified order of some commands in core key-polling
14    ##
15  ## Revision 1.2  2002/06/15 03:45:21  cvsjoko  ## Revision 1.2  2002/06/15 03:45:21  cvsjoko
16  ## + cvs id & log  ## + cvs id & log
17  ## + clearing inputbuffer just after getting the "enter"-key  ## + clearing inputbuffer just after getting the "enter"-key
# Line 48  my $states = { Line 55  my $states = {
55            recieveResponse => 'recieveResponse',            recieveResponse => 'recieveResponse',
56               };               };
57    
58    sub RUNNING_IN_HELL () { $^O eq 'MSWin32' }
59    
60  sub new {  sub new {
61    my $class = shift;    my $class = shift;
62    $class = ref( $class ) || $class;    $class = ref( $class ) || $class;
# Line 66  sub new { Line 75  sub new {
75    # store entries from args to object ($self)    # store entries from args to object ($self)
76    map { $self->{$_} = $args->{$_}; } keys %{$args};    map { $self->{$_} = $args->{$_}; } keys %{$args};
77    
78      if ( RUNNING_IN_HELL () ) {
79        $self->{conf}{EnterKey} = "\r";
80      } else {
81        $self->{conf}{EnterKey} = "\n";
82      }
83    
84    ## Make our session.  See $states defined up above . . .    ## Make our session.  See $states defined up above . . .
85    POE::Session->create( object_states => [ $self => $states, ], );    POE::Session->create( object_states => [ $self => $states, ], );
86    
# Line 181  sub pollForKey { Line 196  sub pollForKey {
196    my $key = ReadKey(-1);    my $key = ReadKey(-1);
197    if ($key) {    if ($key) {
198            
     $heap->{state}{KeyPressed} = 1;  
   
199      # normal key?      # normal key?
200      if ($key =~ m/[a-zA-Z? ]/) {      if ($key =~ m/[a-zA-Z? ]/) {
201        $heap->{state}{InputBuffer} .= $key;        $heap->{state}{InputBuffer} .= $key;
# Line 190  sub pollForKey { Line 203  sub pollForKey {
203      }      }
204    
205      # enter pressed?      # enter pressed?
206      if ($key eq "\r") {      if ($key eq $self->{conf}{EnterKey}) {
207        # send command        # send command
208        my $buf = $heap->{state}{InputBuffer};        my $buf = $heap->{state}{InputBuffer};
209        if ($buf) {        if ($buf) {
# Line 213  sub pollForKey { Line 226  sub pollForKey {
226        $heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1);        $heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1);
227      }      }
228    
229        # mark "KeyPressed" for next poll
230        $heap->{state}{KeyPressed} = 1;
231    
232    }    }
233    
     
234    $kernel->post($session, "pollForKey");    $kernel->post($session, "pollForKey");
235    #$kernel->delay("term_work", 0.1);    #$kernel->delay("pollForKey", 0.1);
236      #$kernel->delay("pollForKey", 0.01);
237    
238  }  }
239    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed