/[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.6 by cvsjoko, Sat Jun 15 07:46:11 2002 UTC revision 1.8 by cvsjoko, Sat Jun 15 08:08:51 2002 UTC
# Line 5  Line 5 
5  ## $Id$  ## $Id$
6  ##  ##
7  ## $Log$  ## $Log$
8    ## Revision 1.8  2002/06/15 08:08:51  cvsjoko
9    ## + modifications in Term::ReadKey behaviour
10    ##
11    ## Revision 1.7  2002/06/15 07:56:40  cvsjoko
12    ## + bugfixes for win32 (additional keys)
13    ##
14  ## Revision 1.6  2002/06/15 07:46:11  cvsjoko  ## Revision 1.6  2002/06/15 07:46:11  cvsjoko
15  ## + bugfixes for linux  ## + bugfixes for linux
16  ##  ##
# Line 82  sub new { Line 88  sub new {
88    map { $self->{$_} = $args->{$_}; } keys %{$args};    map { $self->{$_} = $args->{$_}; } keys %{$args};
89    
90    if ( RUNNING_IN_HELL () ) {    if ( RUNNING_IN_HELL () ) {
91      $self->{conf}{EnterKey} = "\r";      $self->{conf}{KeyEnter} = 13;
92        $self->{conf}{KeyBackspace} = 8;
93        $self->{conf}{KeyCTRLC} = 3;
94    } else {    } else {
95      $self->{conf}{EnterKey} = "\n";      $self->{conf}{KeyEnter} = 10;
96        $self->{conf}{KeyBackspace} = 127;
97        $self->{conf}{KeyCTRLC} = 3;
98    }    }
99    
100    ## Make our session.  See $states defined up above . . .    ## Make our session.  See $states defined up above . . .
# Line 116  sub start { Line 126  sub start {
126    $heap->{state}{RequestPending} = 0;    $heap->{state}{RequestPending} = 0;
127        
128    # initially call worker-state    # initially call worker-state
129    ReadMode 4;    ReadMode 3;
130    $kernel->post($session, "pollForKey");    $kernel->post($session, "pollForKey");
131    
132    return;    return;
# Line 211  sub pollForKey { Line 221  sub pollForKey {
221  #print "key: ", ord($key), "\n";  #print "key: ", ord($key), "\n";
222            
223      # CTRL+C pressed?      # CTRL+C pressed?
224      if (ord($key) == 3) {      if (ord($key) == $self->{conf}{KeyCTRLC}) {
225        ReadMode 1;        ReadMode 0;
226        print "\n";        print "\n";
227        exit;        exit;
228      }      }
229    
230      # enter pressed?      # enter pressed?
231      if (ord($key) == 10) {      if (ord($key) == $self->{conf}{KeyEnter}) {
232    
233        # if enter was pressed while request was pending,        # if enter was pressed while request was pending,
234        # we should stop waiting for output and come back to prompt again,        # we should stop waiting for output and come back to prompt again,
# Line 244  sub pollForKey { Line 254  sub pollForKey {
254      }      }
255    
256      # backspace pressed?      # backspace pressed?
257      elsif (ord($key) == 127) {      elsif (ord($key) == $self->{conf}{KeyBackspace}) {
258        $heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1);        $heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1);
259      }      }
260    
261        # unknown key?
262        elsif (ord($key) == 0) {
263        }
264    
265      # normal key?      # normal key?
266      #elsif ($key =~ m/[a-zA-Z? ]/) {      #elsif ($key =~ m/[a-zA-Z? ]/) {
267      else {      else {
# Line 260  sub pollForKey { Line 274  sub pollForKey {
274    
275    }    }
276    
277      #$kernel->post($session, "pollForKey");
278    #$kernel->run_one_timeslice();    #$kernel->run_one_timeslice();
279    $kernel->post($session, "pollForKey");    #$kernel->post($session, "pollForKey");
280    #$kernel->yield($session, "pollForKey");    #$kernel->yield($session, "pollForKey");
281    #$kernel->delay("pollForKey", 0.1);    #$kernel->delay("pollForKey", 0.1);
282    #$kernel->delay("pollForKey", 0.01);    $kernel->delay("pollForKey", 0.001);
283    
284  }  }
285    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.8

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