fixed ^K handling
[spider.git] / perl / console.pl
index 29817564533c95cd37b243435c683c13c06409ab..977285dad1e1db43d60f215a7ee7d67c38c3c906 100755 (executable)
@@ -186,7 +186,7 @@ sub rec_stdin
                        } else {
                                beep();
                        }
-               } elsif ($r eq KEY_PPAGE || $r eq "\026") {
+               } elsif ($r eq KEY_PPAGE || $r eq "\032") {
                        if ($spos > 0) {
                                $spos -= $pages;
                                $spos = 0 if $spos < 0;
@@ -194,7 +194,7 @@ sub rec_stdin
                        } else {
                                beep();
                        }
-               } elsif ($r eq KEY_NPAGE || $r eq "\032") {
+               } elsif ($r eq KEY_NPAGE || $r eq "\026") {
                        if ($spos < @shistory - 1) {
                                $spos += $pages;
                                $spos = @shistory if $spos > @shistory;
@@ -216,6 +216,8 @@ sub rec_stdin
                        }
                } elsif ($r eq KEY_HOME || $r eq "\001") {
                        $pos = 0;
+               } elsif ($r eq KEY_END || $r eq "\005") {
+                       $pos = $lth;
                } elsif ($r eq KEY_BACKSPACE || $r eq "\010") {
                        if ($pos > 0) {
                                my $a = substr($inbuf, 0, $pos-1);
@@ -253,8 +255,8 @@ sub rec_stdin
                        $scr->touchwin();
                        $scr->refresh();
                } elsif ($r eq "\013") {
-                       $inbuf = "";
-                       $pos = $lth = 0;
+                       $inbuf = substr($inbuf, 0, $pos);
+                       $lth = length $inbuf;
                } else {
                        beep();
                }