From 28185e122c3dfd45e7a5554fb8e37196006be710 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 1 Feb 2008 13:38:41 +0000 Subject: [PATCH] Add Term::ReadKey This is the result of calling the program "cpan" and issuing the command "install Term::ReadKey". Signed-off-by: Johannes Schindelin --- lib/perl5/site_perl/5.8.8/msys/Term/ReadKey.pm | 564 +++++++++++++++++++++ .../5.8.8/msys/auto/Term/ReadKey/.packlist | 5 + .../5.8.8/msys/auto/Term/ReadKey/ReadKey.bs | 0 .../5.8.8/msys/auto/Term/ReadKey/ReadKey.dll | Bin 0 -> 20480 bytes .../5.8.8/msys/auto/Term/ReadKey/autosplit.ix | 3 + .../5.8.8/msys/auto/Term/ReadKey/libReadKey.dll.a | Bin 0 -> 46670 bytes 6 files changed, 572 insertions(+) create mode 100644 lib/perl5/site_perl/5.8.8/msys/Term/ReadKey.pm create mode 100644 lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/.packlist create mode 100644 lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.bs create mode 100644 lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.dll create mode 100644 lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/autosplit.ix create mode 100644 lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/libReadKey.dll.a diff --git a/lib/perl5/site_perl/5.8.8/msys/Term/ReadKey.pm b/lib/perl5/site_perl/5.8.8/msys/Term/ReadKey.pm new file mode 100644 index 00000000..077ab5de --- /dev/null +++ b/lib/perl5/site_perl/5.8.8/msys/Term/ReadKey.pm @@ -0,0 +1,564 @@ +# +# $Id: ReadKey.pm,v 2.23 2005/01/11 21:16:31 jonathan Exp $ +# + +=head1 NAME + +Term::ReadKey - A perl module for simple terminal control + +=head1 SYNOPSIS + + use Term::ReadKey; + ReadMode 4; # Turn off controls keys + while (not defined ($key = ReadKey(-1))) { + # No key yet + } + print "Get key $key\n"; + ReadMode 0; # Reset tty mode before exiting + +=head1 DESCRIPTION + +Term::ReadKey is a compiled perl module dedicated to providing simple +control over terminal driver modes (cbreak, raw, cooked, etc.,) support for +non-blocking reads, if the architecture allows, and some generalized handy +functions for working with terminals. One of the main goals is to have the +functions as portable as possible, so you can just plug in "use +Term::ReadKey" on any architecture and have a good likelyhood of it working. + +=over 8 + +=item ReadMode MODE [, Filehandle] + +Takes an integer argument, which can currently be one of the following +values: + + 0 Restore original settings. + 1 Change to cooked mode. + 2 Change to cooked mode with echo off. + (Good for passwords) + 3 Change to cbreak mode. + 4 Change to raw mode. + 5 Change to ultra-raw mode. + (LF to CR/LF translation turned off) + + Or, you may use the synonyms: + + restore + normal + noecho + cbreak + raw + ultra-raw + +These functions are automatically applied to the STDIN handle if no +other handle is supplied. Modes 0 and 5 have some special properties +worth mentioning: not only will mode 0 restore original settings, but it +cause the next ReadMode call to save a new set of default settings. Mode +5 is similar to mode 4, except no CR/LF translation is performed, and if +possible, parity will be disabled (only if not being used by the terminal, +however. It is no different from mode 4 under Windows.) + +If you are executing another program that may be changing the terminal mode, +you will either want to say + + ReadMode 1 + system('someprogram'); + ReadMode 1; + +which resets the settings after the program has run, or: + + $somemode=1; + ReadMode 0; + system('someprogram'); + ReadMode 1; + +which records any changes the program may have made, before resetting the +mode. + +=item ReadKey MODE [, Filehandle] + +Takes an integer argument, which can currently be one of the following +values: + + 0 Perform a normal read using getc + -1 Perform a non-blocked read + >0 Perform a timed read + +(If the filehandle is not supplied, it will default to STDIN.) If there is +nothing waiting in the buffer during a non-blocked read, then undef will be +returned. Note that if the OS does not provide any known mechanism for +non-blocking reads, then a C can die with a fatal error. This +will hopefully not be common. + +If MODE is greater then zero, then ReadKey will use it as a timeout value in +seconds (fractional seconds are allowed), and won't return C until +that time expires. (Note, again, that some OS's may not support this timeout +behaviour.) If MODE is less then zero, then this is treated as a timeout +of zero, and thus will return immediately if no character is waiting. A MODE +of zero, however, will act like a normal getc. + +There are currently some limitations with this call under Windows. It may be +possible that non-blocking reads will fail when reading repeating keys from +more then one console. + +=item ReadLine MODE [, Filehandle] + +Takes an integer argument, which can currently be one of the following +values: + + 0 Perform a normal read using scalar() + -1 Perform a non-blocked read + >0 Perform a timed read + +If there is nothing waiting in the buffer during a non-blocked read, then +undef will be returned. Note that if the OS does not provide any known +mechanism for non-blocking reads, then a C can die with a fatal +error. This will hopefully not be common. Note that a non-blocking test is +only performed for the first character in the line, not the entire line. +This call will probably B do what you assume, especially with +ReadMode's higher then 1. For example, pressing Space and then Backspace +would appear to leave you where you started, but any timeouts would now +be suspended. + +This call is currently not available under Windows. + +=item GetTerminalSize [Filehandle] + +Returns either an empty array if this operation is unsupported, or a four +element array containing: the width of the terminal in characters, the +height of the terminal in character, the width in pixels, and the height in +pixels. (The pixel size will only be valid in some environments.) + +Under Windows, this function must be called with an "output" filehandle, +such as STDOUT, or a handle opened to CONOUT$. + +=item SetTerminalSize WIDTH,HEIGHT,XPIX,YPIX [, Filehandle] + +Return -1 on failure, 0 otherwise. Note that this terminal size is only for +B value, and changing the size via this mechanism will B +change the size of the screen. For example, XTerm uses a call like this when +it resizes the screen. If any of the new measurements vary from the old, the +OS will probably send a SIGWINCH signal to anything reading that tty or pty. + +This call does not work under Windows. + +=item GetSpeeds [, Filehandle] + +Returns either an empty array if the operation is unsupported, or a two +value array containing the terminal in and out speeds, in B. E.g, +an in speed of 9600 baud and an out speed of 4800 baud would be returned as +(9600,4800). Note that currently the in and out speeds will always be +identical in some OS's. No speeds are reported under Windows. + +=item GetControlChars [, Filehandle] + +Returns an array containing key/value pairs suitable for a hash. The pairs +consist of a key, the name of the control character/signal, and the value +of that character, as a single character. This call does nothing under Windows. + +Each key will be an entry from the following list: + + DISCARD + DSUSPEND + EOF + EOL + EOL2 + ERASE + ERASEWORD + INTERRUPT + KILL + MIN + QUIT + QUOTENEXT + REPRINT + START + STATUS + STOP + SUSPEND + SWITCH + TIME + +Thus, the following will always return the current interrupt character, +regardless of platform. + + %keys = GetControlChars; + $int = $keys{INTERRUPT}; + +=item SetControlChars [, Filehandle] + +Takes an array containing key/value pairs, as a hash will produce. The pairs +should consist of a key that is the name of a legal control +character/signal, and the value should be either a single character, or a +number in the range 0-255. SetControlChars will die with a runtime error if +an invalid character name is passed or there is an error changing the +settings. The list of valid names is easily available via + + %cchars = GetControlChars(); + @cnames = keys %cchars; + +This call does nothing under Windows. + +=back + +=head1 AUTHOR + +Kenneth Albanowski + +Currently maintained by Jonathan Stowe + +=cut + +package Term::ReadKey; + +$VERSION = '2.30'; + +require Exporter; +require AutoLoader; +require DynaLoader; +use Carp; + +@ISA = qw(Exporter AutoLoader DynaLoader); + +# Items to export into callers namespace by default +# (move infrequently used names to @EXPORT_OK below) + +@EXPORT = qw( + ReadKey + ReadMode + ReadLine + GetTerminalSize + SetTerminalSize + GetSpeed + GetControlChars + SetControlChars +); + +@EXPORT_OK = qw(); + +bootstrap Term::ReadKey; + +# Preloaded methods go here. Autoload methods go after __END__, and are +# processed by the autosplit program. + +# Should we use LINES and COLUMNS to try and get the terminal size? +# Change this to zero if you have systems where these are commonly +# set to erroneous values. (But if either are nero zero, they won't be +# used anyhow.) + +$UseEnv = 1; + +%modes = ( + original => 0, + restore => 0, + normal => 1, + noecho => 2, + cbreak => 3, + raw => 4, + 'ultra-raw' => 5 +); + +sub ReadMode +{ + my ($mode) = $modes{ $_[0] }; + my ($fh) = normalizehandle( ( @_ > 1 ? $_[1] : \*STDIN ) ); + if ( defined($mode) ) { SetReadMode( $mode, $fh ) } + elsif ( $_[0] =~ /^\d/ ) { SetReadMode( $_[0], $fh ) } + else { croak("Unknown terminal mode `$_[0]'"); } +} + +sub normalizehandle +{ + my ($file) = @_; + + # print "Handle = $file\n"; + if ( ref($file) ) { return $file; } # Reference is fine + + # if($file =~ /^\*/) { return $file; } # Type glob is good + if ( ref( \$file ) eq 'GLOB' ) { return $file; } # Glob is good + + # print "Caller = ",(caller(1))[0],"\n"; + return \*{ ( ( caller(1) )[0] ) . "::$file" }; +} + +sub GetTerminalSize +{ + my ($file) = normalizehandle( ( @_ > 1 ? $_[1] : \*STDOUT ) ); + my (@results) = (); + my (@fail); + + if ( &termsizeoptions() & 1 ) # VIO + { + @results = GetTermSizeVIO($file); + push( @fail, "VIOGetMode call" ); + } + elsif ( &termsizeoptions() & 2 ) # GWINSZ + { + @results = GetTermSizeGWINSZ($file); + push( @fail, "TIOCGWINSZ ioctl" ); + } + elsif ( &termsizeoptions() & 4 ) # GSIZE + { + @results = GetTermSizeGSIZE($file); + push( @fail, "TIOCGSIZE ioctl" ); + } + elsif ( &termsizeoptions() & 8 ) # WIN32 + { + @results = GetTermSizeWin32($file); + push( @fail, "Win32 GetConsoleScreenBufferInfo call" ); + } + else + { + @results = (); + } + + if ( @results < 4 and $UseEnv ) + { + my ($C) = defined( $ENV{COLUMNS} ) ? $ENV{COLUMNS} : 0; + my ($L) = defined( $ENV{LINES} ) ? $ENV{LINES} : 0; + if ( ( $C >= 2 ) and ( $L >= 2 ) ) + { + @results = ( $C + 0, $L + 0, 0, 0 ); + } + push( @fail, "COLUMNS and LINES environment variables" ); + } + + if ( @results < 4 ) + { + my ($prog) = "resize"; + + # Workaround for Solaris path sillyness + if ( -f "/usr/openwin/bin/resize" ) { + $prog = "/usr/openwin/bin/resize"; + } + + my ($resize) = scalar(`$prog 2>/dev/null`); + if ( + defined $resize + and ( $resize =~ /COLUMNS\s*=\s*(\d+)/ + or $resize =~ /setenv\s+COLUMNS\s+'?(\d+)/ ) + ) + { + $results[0] = $1; + if ( $resize =~ /LINES\s*=\s*(\d+)/ + or $resize =~ /setenv\s+LINES\s+'?(\d+)/ ) + { + $results[1] = $1; + @results[ 2, 3 ] = ( 0, 0 ); + } + else + { + @results = (); + } + } + else + { + @results = (); + } + push( @fail, "resize program" ); + } + + if ( @results < 4 ) + { + die "Unable to get Terminal Size." + . join( "", map( " The $_ didn't work.", @fail ) ); + } + + @results; +} + +if ( &blockoptions() & 1 ) # Use nodelay +{ + if ( &blockoptions() & 2 ) #poll + { + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if (defined $_[0] && $_[0] > 0) { + if ($_[0]) { + return undef if &pollfile($File,$_[0]) == 0; + } + } + if (defined $_[0] && $_[0] < 0) { + &setnodelay($File,1); + } + my ($value) = getc $File; + if (defined $_[0] && $_[0] < 0) { + &setnodelay($File,0); + } + $value; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + + if (defined $_[0] && $_[0] > 0) { + if ($_[0]) { + return undef if &pollfile($File,$_[0]) == 0; + } + } + if (defined $_[0] && $_[0] < 0) { + &setnodelay($File,1) + }; + my ($value) = scalar(<$File>); + if ( defined $_[0] && $_[0]<0 ) { + &setnodelay($File,0) + }; + $value; + } +DONE + } + elsif ( &blockoptions() & 4 ) #select + { + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0]>0) { + if($_[0]) {return undef if &selectfile($File,$_[0])==0} + } + if(defined $_[0] && $_[0]<0) {&setnodelay($File,1);} + my($value) = getc $File; + if(defined $_[0] && $_[0]<0) {&setnodelay($File,0);} + $value; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0]>0) { + if($_[0]) {return undef if &selectfile($File,$_[0])==0} + } + if(defined $_[0] && $_[0]<0) {&setnodelay($File,1)}; + my($value)=scalar(<$File>); + if(defined $_[0] && $_[0]<0) {&setnodelay($File,0)}; + $value; + } +DONE + } + else + { #nothing + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0]>0) { + # Nothing better seems to exist, so I just use time-of-day + # to timeout the read. This isn't very exact, though. + $starttime=time; + $endtime=$starttime+$_[0]; + &setnodelay($File,1); + my($value)=undef; + while(time<$endtime) { # This won't catch wraparound! + $value = getc $File; + last if defined($value); + } + &setnodelay($File,0); + return $value; + } + if(defined $_[0] && $_[0]<0) {&setnodelay($File,1);} + my($value) = getc $File; + if(defined $_[0] && $_[0]<0) {&setnodelay($File,0);} + $value; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0]>0) { + # Nothing better seems to exist, so I just use time-of-day + # to timeout the read. This isn't very exact, though. + $starttime=time; + $endtime=$starttime+$_[0]; + &setnodelay($File,1); + my($value)=undef; + while(time<$endtime) { # This won't catch wraparound! + $value = scalar(<$File>); + last if defined($value); + } + &setnodelay($File,0); + return $value; + } + if(defined $_[0] && $_[0]<0) {&setnodelay($File,1)}; + my($value)=scalar(<$File>); + if(defined $_[0] && $_[0]<0) {&setnodelay($File,0)}; + $value; + } +DONE + } +} +elsif ( &blockoptions() & 2 ) # Use poll +{ + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0] != 0) { + return undef if &pollfile($File,$_[0]) == 0 + } + getc $File; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0]!=0) { + return undef if &pollfile($File,$_[0]) == 0; + } + scalar(<$File>); + } +DONE +} +elsif ( &blockoptions() & 4 ) # Use select +{ + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0] !=0 ) { + return undef if &selectfile($File,$_[0])==0 + } + getc $File; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if(defined $_[0] && $_[0] != 0) { + return undef if &selectfile($File,$_[0]) == 0; + } + scalar(<$File>); + } +DONE +} +elsif ( &blockoptions() & 8 ) # Use Win32 +{ + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if ($_[0]) { + Win32PeekChar($File, $_[0]); + } else { + getc $File; + } + #if ($_[0]!=0) {return undef if !Win32PeekChar($File, $_[0])}; + #getc $File; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + #if ($_[0]!=0) {return undef if !Win32PeekChar($File, $_[0])}; + #scalar(<$File>); + if($_[0]) + {croak("Non-blocking ReadLine is not supported on this architecture")} + scalar(<$File>); + } +DONE +} +else +{ + eval <<'DONE'; + sub ReadKey { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if($_[0]) + {croak("Non-blocking ReadKey is not supported on this architecture")} + getc $File; + } + sub ReadLine { + my($File) = normalizehandle((@_>1?$_[1]:\*STDIN)); + if($_[0]) + {croak("Non-blocking ReadLine is not supported on this architecture")} + scalar(<$File>); + } +DONE +} + +package Term::ReadKey; # return to package ReadKey so AutoSplit is happy +1; + +__END__; diff --git a/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/.packlist b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/.packlist new file mode 100644 index 00000000..7f26f12c --- /dev/null +++ b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/.packlist @@ -0,0 +1,5 @@ +/usr/lib/perl5/site_perl/5.8.8/msys/Term/ReadKey.pm +/usr/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.bs +/usr/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.dll +/usr/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/autosplit.ix +/usr/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/libReadKey.dll.a diff --git a/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.bs b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.bs new file mode 100644 index 00000000..e69de29b diff --git a/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.dll b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/ReadKey.dll new file mode 100644 index 0000000000000000000000000000000000000000..dd5c8f68f55ad562ecabaed9c6c30ecc315f8c76 GIT binary patch literal 20480 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 literal 0 HcwPel00001 diff --git a/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/autosplit.ix b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/autosplit.ix new file mode 100644 index 00000000..1f3f099b --- /dev/null +++ b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for blib/lib/Term/ReadKey.pm +# (file acts as timestamp) +1; diff --git a/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/libReadKey.dll.a b/lib/perl5/site_perl/5.8.8/msys/auto/Term/ReadKey/libReadKey.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..6d8d648df65ae324381f042e8bba7cffa82498a5 GIT binary patch literal 46670 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