summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Win32/Console.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Win32/Console.pm')
-rw-r--r--Master/tlpkg/tlperl/lib/Win32/Console.pm1463
1 files changed, 0 insertions, 1463 deletions
diff --git a/Master/tlpkg/tlperl/lib/Win32/Console.pm b/Master/tlpkg/tlperl/lib/Win32/Console.pm
deleted file mode 100644
index 2e41c2a83d5..00000000000
--- a/Master/tlpkg/tlperl/lib/Win32/Console.pm
+++ /dev/null
@@ -1,1463 +0,0 @@
-#######################################################################
-#
-# Win32::Console - Win32 Console and Character Mode Functions
-#
-#######################################################################
-
-package Win32::Console;
-
-require Exporter;
-require DynaLoader;
-
-$VERSION = "0.10";
-
-@ISA= qw( Exporter DynaLoader );
-@EXPORT = qw(
- BACKGROUND_BLUE
- BACKGROUND_GREEN
- BACKGROUND_INTENSITY
- BACKGROUND_RED
- CAPSLOCK_ON
- CONSOLE_TEXTMODE_BUFFER
- CTRL_BREAK_EVENT
- CTRL_C_EVENT
- ENABLE_ECHO_INPUT
- ENABLE_LINE_INPUT
- ENABLE_MOUSE_INPUT
- ENABLE_PROCESSED_INPUT
- ENABLE_PROCESSED_OUTPUT
- ENABLE_WINDOW_INPUT
- ENABLE_WRAP_AT_EOL_OUTPUT
- ENHANCED_KEY
- FILE_SHARE_READ
- FILE_SHARE_WRITE
- FOREGROUND_BLUE
- FOREGROUND_GREEN
- FOREGROUND_INTENSITY
- FOREGROUND_RED
- LEFT_ALT_PRESSED
- LEFT_CTRL_PRESSED
- NUMLOCK_ON
- GENERIC_READ
- GENERIC_WRITE
- RIGHT_ALT_PRESSED
- RIGHT_CTRL_PRESSED
- SCROLLLOCK_ON
- SHIFT_PRESSED
- STD_INPUT_HANDLE
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
- $FG_BLACK
- $FG_GRAY
- $FG_BLUE
- $FG_LIGHTBLUE
- $FG_RED
- $FG_LIGHTRED
- $FG_GREEN
- $FG_LIGHTGREEN
- $FG_MAGENTA
- $FG_LIGHTMAGENTA
- $FG_CYAN
- $FG_LIGHTCYAN
- $FG_BROWN
- $FG_YELLOW
- $FG_LIGHTGRAY
- $FG_WHITE
- $BG_BLACK
- $BG_GRAY
- $BG_BLUE
- $BG_LIGHTBLUE
- $BG_RED
- $BG_LIGHTRED
- $BG_GREEN
- $BG_LIGHTGREEN
- $BG_MAGENTA
- $BG_LIGHTMAGENTA
- $BG_CYAN
- $BG_LIGHTCYAN
- $BG_BROWN
- $BG_YELLOW
- $BG_LIGHTGRAY
- $BG_WHITE
- $ATTR_NORMAL
- $ATTR_INVERSE
- @CONSOLE_COLORS
-);
-
-
-#######################################################################
-# This AUTOLOAD is used to 'autoload' constants from the constant()
-# XS function. If a constant is not found then control is passed
-# to the AUTOLOAD in AutoLoader.
-#
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- #reset $! to zero to reset any current errors.
- local $! = 0;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
-# if ($! =~ /Invalid/) {
-# $AutoLoader::AUTOLOAD = $AUTOLOAD;
-# goto &AutoLoader::AUTOLOAD;
-# } else {
- ($pack, $file, $line) = caller; undef $pack;
- die "Symbol Win32::Console::$constname not defined, used at $file line $line.";
-# }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-
-# %HandlerRoutineStack = ();
-# $HandlerRoutineRegistered = 0;
-
-#######################################################################
-# PUBLIC METHODS
-#
-
-#========
-sub new {
-#========
- my($class, $param1, $param2) = @_;
-
- my $self = {};
-
- if (defined($param1)
- and ($param1 == constant("STD_INPUT_HANDLE", 0)
- or $param1 == constant("STD_OUTPUT_HANDLE", 0)
- or $param1 == constant("STD_ERROR_HANDLE", 0)))
- {
- $self->{'handle'} = _GetStdHandle($param1);
- }
- else {
- $param1 = constant("GENERIC_READ", 0) | constant("GENERIC_WRITE", 0) unless $param1;
- $param2 = constant("FILE_SHARE_READ", 0) | constant("FILE_SHARE_WRITE", 0) unless $param2;
- $self->{'handle'} = _CreateConsoleScreenBuffer($param1, $param2,
- constant("CONSOLE_TEXTMODE_BUFFER", 0));
- }
- bless $self, $class;
- return $self;
-}
-
-#============
-sub Display {
-#============
- my($self) = @_;
- return undef unless ref($self);
- return _SetConsoleActiveScreenBuffer($self->{'handle'});
-}
-
-#===========
-sub Select {
-#===========
- my($self, $type) = @_;
- return undef unless ref($self);
- return _SetStdHandle($type, $self->{'handle'});
-}
-
-#===========
-sub SetIcon {
-#===========
- my($self, $icon) = @_;
- $icon = $self unless ref($self);
- return _SetConsoleIcon($icon);
-}
-
-#==========
-sub Title {
-#==========
- my($self, $title) = @_;
- $title = $self unless ref($self);
-
- if (defined($title)) {
- return _SetConsoleTitle($title);
- }
- else {
- return _GetConsoleTitle();
- }
-}
-
-#==============
-sub WriteChar {
-#==============
- my($self, $text, $col, $row) = @_;
- return undef unless ref($self);
- return _WriteConsoleOutputCharacter($self->{'handle'},$text,$col,$row);
-}
-
-#=============
-sub ReadChar {
-#=============
- my($self, $size, $col, $row) = @_;
- return undef unless ref($self);
-
- my $buffer = (" " x $size);
- if (_ReadConsoleOutputCharacter($self->{'handle'}, $buffer, $size, $col, $row)) {
- return $buffer;
- }
- else {
- return undef;
- }
-}
-
-#==============
-sub WriteAttr {
-#==============
- my($self, $attr, $col, $row) = @_;
- return undef unless ref($self);
- return _WriteConsoleOutputAttribute($self->{'handle'}, $attr, $col, $row);
-}
-
-#=============
-sub ReadAttr {
-#=============
- my($self, $size, $col, $row) = @_;
- return undef unless ref($self);
- return _ReadConsoleOutputAttribute($self->{'handle'}, $size, $col, $row);
-}
-
-#==========
-sub Write {
-#==========
- my($self,$string) = @_;
- return undef unless ref($self);
- return _WriteConsole($self->{'handle'}, $string);
-}
-
-#=============
-sub ReadRect {
-#=============
- my($self, $left, $top, $right, $bottom) = @_;
- return undef unless ref($self);
-
- my $col = $right - $left + 1;
- my $row = $bottom - $top + 1;
-
- my $buffer = (" " x ($col*$row*4));
- if (_ReadConsoleOutput($self->{'handle'}, $buffer,
- $col, $row, 0, 0,
- $left, $top, $right, $bottom))
- {
- return $buffer;
- }
- else {
- return undef;
- }
-}
-
-#==============
-sub WriteRect {
-#==============
- my($self, $buffer, $left, $top, $right, $bottom) = @_;
- return undef unless ref($self);
-
- my $col = $right - $left + 1;
- my $row = $bottom - $top + 1;
-
- return _WriteConsoleOutput($self->{'handle'}, $buffer,
- $col, $row, 0, 0,
- $left, $top, $right, $bottom);
-}
-
-#===========
-sub Scroll {
-#===========
- my($self, $left1, $top1, $right1, $bottom1,
- $col, $row, $char, $attr,
- $left2, $top2, $right2, $bottom2) = @_;
- return undef unless ref($self);
-
- return _ScrollConsoleScreenBuffer($self->{'handle'},
- $left1, $top1, $right1, $bottom1,
- $col, $row, $char, $attr,
- $left2, $top2, $right2, $bottom2);
-}
-
-#==============
-sub MaxWindow {
-#==============
- my($self, $flag) = @_;
- return undef unless ref($self);
-
- if (not defined($flag)) {
- my @info = _GetConsoleScreenBufferInfo($self->{'handle'});
- return $info[9], $info[10];
- }
- else {
- return _GetLargestConsoleWindowSize($self->{'handle'});
- }
-}
-
-#=========
-sub Info {
-#=========
- my($self) = @_;
- return undef unless ref($self);
- return _GetConsoleScreenBufferInfo($self->{'handle'});
-}
-
-#===========
-sub Window {
-#===========
- my($self, $flag, $left, $top, $right, $bottom) = @_;
- return undef unless ref($self);
-
- if (not defined($flag)) {
- my @info = _GetConsoleScreenBufferInfo($self->{'handle'});
- return $info[5], $info[6], $info[7], $info[8];
- }
- else {
- return _SetConsoleWindowInfo($self->{'handle'}, $flag, $left, $top, $right, $bottom);
- }
-}
-
-#==============
-sub GetEvents {
-#==============
- my($self) = @_;
- return undef unless ref($self);
- return _GetNumberOfConsoleInputEvents($self->{'handle'});
-}
-
-#==========
-sub Flush {
-#==========
- my($self) = @_;
- return undef unless ref($self);
- return _FlushConsoleInputBuffer($self->{'handle'});
-}
-
-#==============
-sub InputChar {
-#==============
- my($self, $number) = @_;
- return undef unless ref($self);
-
- $number = 1 unless defined($number);
-
- my $buffer = (" " x $number);
- if (_ReadConsole($self->{'handle'}, $buffer, $number) == $number) {
- return $buffer;
- }
- else {
- return undef;
- }
-}
-
-#==========
-sub Input {
-#==========
- my($self) = @_;
- return undef unless ref($self);
- return _ReadConsoleInput($self->{'handle'});
-}
-
-#==============
-sub PeekInput {
-#==============
- my($self) = @_;
- return undef unless ref($self);
- return _PeekConsoleInput($self->{'handle'});
-}
-
-#===============
-sub WriteInput {
-#===============
- my($self) = shift;
- return undef unless ref($self);
- return _WriteConsoleInput($self->{'handle'}, @_);
-}
-
-#=========
-sub Mode {
-#=========
- my($self, $mode) = @_;
- return undef unless ref($self);
- if (defined($mode)) {
- return _SetConsoleMode($self->{'handle'}, $mode);
- }
- else {
- return _GetConsoleMode($self->{'handle'});
- }
-}
-
-#========
-sub Cls {
-#========
- my($self, $attr) = @_;
- return undef unless ref($self);
-
- $attr = $ATTR_NORMAL unless defined($attr);
-
- my ($x, $y) = $self->Size();
- my($left, $top, $right ,$bottom) = $self->Window();
- my $vx = $right - $left;
- my $vy = $bottom - $top;
- $self->FillChar(" ", $x*$y, 0, 0);
- $self->FillAttr($attr, $x*$y, 0, 0);
- $self->Cursor(0, 0);
- $self->Window(1, 0, 0, $vx, $vy);
-}
-
-#=========
-sub Attr {
-#=========
- my($self, $attr) = @_;
- return undef unless ref($self);
-
- if (not defined($attr)) {
- return (_GetConsoleScreenBufferInfo($self->{'handle'}))[4];
- }
- else {
- return _SetConsoleTextAttribute($self->{'handle'}, $attr);
- }
-}
-
-#===========
-sub Cursor {
-#===========
- my($self, $col, $row, $size, $visi) = @_;
- return undef unless ref($self);
-
- my $curr_row = 0;
- my $curr_col = 0;
- my $curr_size = 0;
- my $curr_visi = 0;
- my $return = 0;
- my $discard = 0;
-
-
- if (defined($col)) {
- $row = -1 if not defined($row);
- if ($col == -1 or $row == -1) {
- ($discard, $discard, $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col=$curr_col if $col==-1;
- $row=$curr_row if $row==-1;
- }
- $return += _SetConsoleCursorPosition($self->{'handle'}, $col, $row);
- if (defined($size) and defined($visi)) {
- if ($size == -1 or $visi == -1) {
- ($curr_size, $curr_visi) = _GetConsoleCursorInfo($self->{'handle'});
- $size = $curr_size if $size == -1;
- $visi = $curr_visi if $visi == -1;
- }
- $size = 1 if $size < 1;
- $size = 99 if $size > 99;
- $return += _SetConsoleCursorInfo($self->{'handle'}, $size, $visi);
- }
- return $return;
- }
- else {
- ($discard, $discard, $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- ($curr_size, $curr_visi) = _GetConsoleCursorInfo($self->{'handle'});
- return ($curr_col, $curr_row, $curr_size, $curr_visi);
- }
-}
-
-#=========
-sub Size {
-#=========
- my($self, $col, $row) = @_;
- return undef unless ref($self);
-
- if (not defined($col)) {
- ($col, $row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- return ($col, $row);
- }
- else {
- $row = -1 if not defined($row);
- if ($col == -1 or $row == -1) {
- ($curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col=$curr_col if $col==-1;
- $row=$curr_row if $row==-1;
- }
- return _SetConsoleScreenBufferSize($self->{'handle'}, $col, $row);
- }
-}
-
-#=============
-sub FillAttr {
-#=============
- my($self, $attr, $number, $col, $row) = @_;
- return undef unless ref($self);
-
- $number = 1 unless $number;
-
- if (!defined($col) or !defined($row) or $col == -1 or $row == -1) {
- ($discard, $discard,
- $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col = $curr_col if !defined($col) or $col == -1;
- $row = $curr_row if !defined($row) or $row == -1;
- }
- return _FillConsoleOutputAttribute($self->{'handle'}, $attr, $number, $col, $row);
-}
-
-#=============
-sub FillChar {
-#=============
- my($self, $char, $number, $col, $row) = @_;
- return undef unless ref($self);
-
- if (!defined($col) or !defined($row) or $col == -1 or $row == -1) {
- ($discard, $discard,
- $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'});
- $col = $curr_col if !defined($col) or $col == -1;
- $row = $curr_row if !defined($row) or $row == -1;
- }
- return _FillConsoleOutputCharacter($self->{'handle'}, $char, $number, $col, $row);
-}
-
-#============
-sub InputCP {
-#============
- my($self, $codepage) = @_;
- $codepage = $self if (defined($self) and ref($self) ne "Win32::Console");
- if (defined($codepage)) {
- return _SetConsoleCP($codepage);
- }
- else {
- return _GetConsoleCP();
- }
-}
-
-#=============
-sub OutputCP {
-#=============
- my($self, $codepage) = @_;
- $codepage = $self if (defined($self) and ref($self) ne "Win32::Console");
- if (defined($codepage)) {
- return _SetConsoleOutputCP($codepage);
- }
- else {
- return _GetConsoleOutputCP();
- }
-}
-
-#======================
-sub GenerateCtrlEvent {
-#======================
- my($self, $type, $pid) = @_;
- $type = constant("CTRL_C_EVENT", 0) unless defined($type);
- $pid = 0 unless defined($pid);
- return _GenerateConsoleCtrlEvent($type, $pid);
-}
-
-#===================
-#sub SetCtrlHandler {
-#===================
-# my($name, $add) = @_;
-# $add = 1 unless defined($add);
-# my @nor = keys(%HandlerRoutineStack);
-# if ($add == 0) {
-# foreach $key (@nor) {
-# delete $HandlerRoutineStack{$key}, last if $HandlerRoutineStack{$key}==$name;
-# }
-# $HandlerRoutineRegistered--;
-# } else {
-# if ($#nor == -1) {
-# my $r = _SetConsoleCtrlHandler();
-# if (!$r) {
-# print "WARNING: SetConsoleCtrlHandler failed...\n";
-# }
-# }
-# $HandlerRoutineRegistered++;
-# $HandlerRoutineStack{$HandlerRoutineRegistered} = $name;
-# }
-#}
-
-#===================
-sub get_Win32_IPC_HANDLE { # So Win32::IPC can wait on a console handle
-#===================
- $_[0]->{'handle'};
-}
-
-########################################################################
-# PRIVATE METHODS
-#
-
-#================
-#sub CtrlHandler {
-#================
-# my($ctrltype) = @_;
-# my $routine;
-# my $result = 0;
-# CALLEM: foreach $routine (sort { $b <=> $a } keys %HandlerRoutineStack) {
-# #print "CtrlHandler: calling $HandlerRoutineStack{$routine}($ctrltype)\n";
-# $result = &{"main::".$HandlerRoutineStack{$routine}}($ctrltype);
-# last CALLEM if $result;
-# }
-# return $result;
-#}
-
-#============
-sub DESTROY {
-#============
- my($self) = @_;
- _CloseHandle($self->{'handle'});
-}
-
-#######################################################################
-# dynamically load in the Console.pll module.
-#
-
-bootstrap Win32::Console;
-
-#######################################################################
-# ADDITIONAL CONSTANTS EXPORTED IN THE MAIN NAMESPACE
-#
-
-$FG_BLACK = 0;
-$FG_GRAY = constant("FOREGROUND_INTENSITY",0);
-$FG_BLUE = constant("FOREGROUND_BLUE",0);
-$FG_LIGHTBLUE = constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_RED = constant("FOREGROUND_RED",0);
-$FG_LIGHTRED = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_GREEN = constant("FOREGROUND_GREEN",0);
-$FG_LIGHTGREEN = constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_MAGENTA = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_BLUE",0);
-$FG_LIGHTMAGENTA = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_CYAN = constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0);
-$FG_LIGHTCYAN = constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_BROWN = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0);
-$FG_YELLOW = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_INTENSITY",0);
-$FG_LIGHTGRAY = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0);
-$FG_WHITE = constant("FOREGROUND_RED",0)|
- constant("FOREGROUND_GREEN",0)|
- constant("FOREGROUND_BLUE",0)|
- constant("FOREGROUND_INTENSITY",0);
-
-$BG_BLACK = 0;
-$BG_GRAY = constant("BACKGROUND_INTENSITY",0);
-$BG_BLUE = constant("BACKGROUND_BLUE",0);
-$BG_LIGHTBLUE = constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_RED = constant("BACKGROUND_RED",0);
-$BG_LIGHTRED = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_GREEN = constant("BACKGROUND_GREEN",0);
-$BG_LIGHTGREEN = constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_MAGENTA = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_BLUE",0);
-$BG_LIGHTMAGENTA = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_CYAN = constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0);
-$BG_LIGHTCYAN = constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_BROWN = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0);
-$BG_YELLOW = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_INTENSITY",0);
-$BG_LIGHTGRAY = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0);
-$BG_WHITE = constant("BACKGROUND_RED",0)|
- constant("BACKGROUND_GREEN",0)|
- constant("BACKGROUND_BLUE",0)|
- constant("BACKGROUND_INTENSITY",0);
-
-$ATTR_NORMAL = $FG_LIGHTGRAY|$BG_BLACK;
-$ATTR_INVERSE = $FG_BLACK|$BG_LIGHTGRAY;
-
-for my $fg ($FG_BLACK, $FG_GRAY, $FG_BLUE, $FG_GREEN,
- $FG_CYAN, $FG_RED, $FG_MAGENTA, $FG_BROWN,
- $FG_LIGHTBLUE, $FG_LIGHTGREEN, $FG_LIGHTCYAN,
- $FG_LIGHTRED, $FG_LIGHTMAGENTA, $FG_YELLOW,
- $FG_LIGHTGRAY, $FG_WHITE)
-{
- for my $bg ($BG_BLACK, $BG_GRAY, $BG_BLUE, $BG_GREEN,
- $BG_CYAN, $BG_RED, $BG_MAGENTA, $BG_BROWN,
- $BG_LIGHTBLUE, $BG_LIGHTGREEN, $BG_LIGHTCYAN,
- $BG_LIGHTRED, $BG_LIGHTMAGENTA, $BG_YELLOW,
- $BG_LIGHTGRAY, $BG_WHITE)
- {
- push(@CONSOLE_COLORS, $fg|$bg);
- }
-}
-
-# Preloaded methods go here.
-
-#Currently Autoloading is not implemented in Perl for win32
-# Autoload methods go after __END__, and are processed by the autosplit program.
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32::Console - Win32 Console and Character Mode Functions
-
-
-=head1 DESCRIPTION
-
-This module implements the Win32 console and character mode
-functions. They give you full control on the console input and output,
-including: support of off-screen console buffers (eg. multiple screen
-pages)
-
-=over
-
-=item *
-
-reading and writing of characters, attributes and whole portions of
-the screen
-
-=item *
-
-complete processing of keyboard and mouse events
-
-=item *
-
-some very funny additional features :)
-
-=back
-
-Those functions should also make possible a port of the Unix's curses
-library; if there is anyone interested (and/or willing to contribute)
-to this project, e-mail me. Thank you.
-
-
-=head1 REFERENCE
-
-
-=head2 Methods
-
-=over
-
-=item Alloc
-
-Allocates a new console for the process. Returns C<undef> on errors, a
-nonzero value on success. A process cannot be associated with more
-than one console, so this method will fail if there is already an
-allocated console. Use Free to detach the process from the console,
-and then call Alloc to create a new console. See also: C<Free>
-
-Example:
-
- $CONSOLE->Alloc();
-
-=item Attr [attr]
-
-Gets or sets the current console attribute. This attribute is used by
-the Write method.
-
-Example:
-
- $attr = $CONSOLE->Attr();
- $CONSOLE->Attr($FG_YELLOW | $BG_BLUE);
-
-=item Close
-
-Closes a shortcut object. Note that it is not "strictly" required to
-close the objects you created, since the Win32::Shortcut objects are
-automatically closed when the program ends (or when you somehow
-destroy such an object).
-
-Example:
-
- $LINK->Close();
-
-=item Cls [attr]
-
-Clear the console, with the specified I<attr> if given, or using
-ATTR_NORMAL otherwise.
-
-Example:
-
- $CONSOLE->Cls();
- $CONSOLE->Cls($FG_WHITE | $BG_GREEN);
-
-=item Cursor [x, y, size, visible]
-
-Gets or sets cursor position and appearance. Returns C<undef> on
-errors, or a 4-element list containing: I<x>, I<y>, I<size>,
-I<visible>. I<x> and I<y> are the current cursor position; ...
-
-Example:
-
- ($x, $y, $size, $visible) = $CONSOLE->Cursor();
-
- # Get position only
- ($x, $y) = $CONSOLE->Cursor();
-
- $CONSOLE->Cursor(40, 13, 50, 1);
-
- # Set position only
- $CONSOLE->Cursor(40, 13);
-
- # Set size and visibility without affecting position
- $CONSOLE->Cursor(-1, -1, 50, 1);
-
-=item Display
-
-Displays the specified console on the screen. Returns C<undef> on errors,
-a nonzero value on success.
-
-Example:
-
- $CONSOLE->Display();
-
-=item FillAttr [attribute, number, col, row]
-
-Fills the specified number of consecutive attributes, beginning at
-I<col>, I<row>, with the value specified in I<attribute>. Returns the
-number of attributes filled, or C<undef> on errors. See also:
-C<FillChar>.
-
-Example:
-
- $CONSOLE->FillAttr($FG_BLACK | $BG_BLACK, 80*25, 0, 0);
-
-=item FillChar char, number, col, row
-
-Fills the specified number of consecutive characters, beginning at
-I<col>, I<row>, with the character specified in I<char>. Returns the
-number of characters filled, or C<undef> on errors. See also:
-C<FillAttr>.
-
-Example:
-
- $CONSOLE->FillChar("X", 80*25, 0, 0);
-
-=item Flush
-
-Flushes the console input buffer. All the events in the buffer are
-discarded. Returns C<undef> on errors, a nonzero value on success.
-
-Example:
-
- $CONSOLE->Flush();
-
-=item Free
-
-Detaches the process from the console. Returns C<undef> on errors, a
-nonzero value on success. See also: C<Alloc>.
-
-Example:
-
- $CONSOLE->Free();
-
-=item GenerateCtrlEvent [type, processgroup]
-
-Sends a break signal of the specified I<type> to the specified
-I<processgroup>. I<type> can be one of the following constants:
-
- CTRL_BREAK_EVENT
- CTRL_C_EVENT
-
-they signal, respectively, the pressing of Control + Break and of
-Control + C; if not specified, it defaults to CTRL_C_EVENT.
-I<processgroup> is the pid of a process sharing the same console. If
-omitted, it defaults to 0 (the current process), which is also the
-only meaningful value that you can pass to this function. Returns
-C<undef> on errors, a nonzero value on success.
-
-Example:
-
- # break this script now
- $CONSOLE->GenerateCtrlEvent();
-
-=item GetEvents
-
-Returns the number of unread input events in the console's input
-buffer, or C<undef> on errors. See also: C<Input>, C<InputChar>,
-C<PeekInput>, C<WriteInput>.
-
-Example:
-
- $events = $CONSOLE->GetEvents();
-
-=item Info
-
-Returns an array of informations about the console (or C<undef> on
-errors), which contains:
-
-=over
-
-=item *
-
-columns (X size) of the console buffer.
-
-=item *
-
-rows (Y size) of the console buffer.
-
-=item *
-
-current column (X position) of the cursor.
-
-=item *
-
-current row (Y position) of the cursor.
-
-=item *
-
-current attribute used for C<Write>.
-
-=item *
-
-left column (X of the starting point) of the current console window.
-
-=item *
-
-top row (Y of the starting point) of the current console window.
-
-=item *
-
-right column (X of the final point) of the current console window.
-
-=item *
-
-bottom row (Y of the final point) of the current console window.
-
-=item *
-
-maximum number of columns for the console window, given the current
-buffer size, font and the screen size.
-
-=item *
-
-maximum number of rows for the console window, given the current
-buffer size, font and the screen size.
-
-=back
-
-See also: C<Attr>, C<Cursor>, C<Size>, C<Window>, C<MaxWindow>.
-
-Example:
-
- @info = $CONSOLE->Info();
- print "Cursor at $info[3], $info[4].\n";
-
-=item Input
-
-Reads an event from the input buffer. Returns a list of values, which
-depending on the event's nature are:
-
-=over
-
-=item keyboard event
-
-The list will contain:
-
-=over
-
-=item *
-
-event type: 1 for keyboard
-
-=item *
-
-key down: TRUE if the key is being pressed, FALSE if the key is being released
-
-=item *
-
-repeat count: the number of times the key is being held down
-
-=item *
-
-virtual keycode: the virtual key code of the key
-
-=item *
-
-virtual scancode: the virtual scan code of the key
-
-=item *
-
-char: the ASCII code of the character (if the key is a character key, 0 otherwise)
-
-=item *
-
-control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
-
-=back
-
-=item mouse event
-
-The list will contain:
-
-=over
-
-=item *
-
-event type: 2 for mouse
-
-=item *
-
-mouse pos. X: X coordinate (column) of the mouse location
-
-=item *
-
-mouse pos. Y: Y coordinate (row) of the mouse location
-
-=item *
-
-button state: the mouse button(s) which are pressed
-
-=item *
-
-control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
-
-=item *
-
-event flags: the type of the mouse event
-
-=back
-
-=back
-
-This method will return C<undef> on errors. Note that the events
-returned are depending on the input C<Mode> of the console; for example,
-mouse events are not intercepted unless ENABLE_MOUSE_INPUT is
-specified. See also: C<GetEvents>, C<InputChar>, C<Mode>,
-C<PeekInput>, C<WriteInput>.
-
-Example:
-
- @event = $CONSOLE->Input();
-
-=item InputChar number
-
-Reads and returns I<number> characters from the console input buffer,
-or C<undef> on errors. See also: C<Input>, C<Mode>.
-
-Example:
-
- $key = $CONSOLE->InputChar(1);
-
-=item InputCP [codepage]
-
-Gets or sets the input code page used by the console. Note that this
-doesn't apply to a console object, but to the standard input
-console. This attribute is used by the Write method. See also:
-C<OutputCP>.
-
-Example:
-
- $codepage = $CONSOLE->InputCP();
- $CONSOLE->InputCP(437);
-
- # you may want to use the non-instanciated form to avoid confuzion :)
- $codepage = Win32::Console::InputCP();
- Win32::Console::InputCP(437);
-
-=item MaxWindow
-
-Returns the size of the largest possible console window, based on the
-current font and the size of the display. The result is C<undef> on
-errors, otherwise a 2-element list containing col, row.
-
-Example:
-
- ($maxCol, $maxRow) = $CONSOLE->MaxWindow();
-
-=item Mode [flags]
-
-Gets or sets the input or output mode of a console. I<flags> can be a
-combination of the following constants:
-
- ENABLE_LINE_INPUT
- ENABLE_ECHO_INPUT
- ENABLE_PROCESSED_INPUT
- ENABLE_WINDOW_INPUT
- ENABLE_MOUSE_INPUT
- ENABLE_PROCESSED_OUTPUT
- ENABLE_WRAP_AT_EOL_OUTPUT
-
-For more informations on the meaning of those flags, please refer to
-the L<"Microsoft's Documentation">.
-
-Example:
-
- $mode = $CONSOLE->Mode();
- $CONSOLE->Mode(ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);
-
-=item MouseButtons
-
-Returns the number of the buttons on your mouse, or C<undef> on errors.
-
-Example:
-
- print "Your mouse has ", $CONSOLE->MouseButtons(), " buttons.\n";
-
-=item new Win32::Console standard_handle
-
-=item new Win32::Console [accessmode, sharemode]
-
-Creates a new console object. The first form creates a handle to a
-standard channel, I<standard_handle> can be one of the following:
-
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
- STD_INPUT_HANDLE
-
-The second form, instead, creates a console screen buffer in memory,
-which you can access for reading and writing as a normal console, and
-then redirect on the standard output (the screen) with C<Display>. In
-this case, you can specify one or both of the following values for
-I<accessmode>:
-
- GENERIC_READ
- GENERIC_WRITE
-
-which are the permissions you will have on the created buffer, and one
-or both of the following values for I<sharemode>:
-
- FILE_SHARE_READ
- FILE_SHARE_WRITE
-
-which affect the way the console can be shared. If you don't specify
-any of those parameters, all 4 flags will be used.
-
-Example:
-
- $STDOUT = new Win32::Console(STD_OUTPUT_HANDLE);
- $STDERR = new Win32::Console(STD_ERROR_HANDLE);
- $STDIN = new Win32::Console(STD_INPUT_HANDLE);
-
- $BUFFER = new Win32::Console();
- $BUFFER = new Win32::Console(GENERIC_READ | GENERIC_WRITE);
-
-=item OutputCP [codepage]
-
-Gets or sets the output code page used by the console. Note that this
-doesn't apply to a console object, but to the standard output console.
-See also: C<InputCP>.
-
-Example:
-
- $codepage = $CONSOLE->OutputCP();
- $CONSOLE->OutputCP(437);
-
- # you may want to use the non-instanciated form to avoid confuzion :)
- $codepage = Win32::Console::OutputCP();
- Win32::Console::OutputCP(437);
-
-=item PeekInput
-
-Does exactly the same as C<Input>, except that the event read is not
-removed from the input buffer. See also: C<GetEvents>, C<Input>,
-C<InputChar>, C<Mode>, C<WriteInput>.
-
-Example:
-
- @event = $CONSOLE->PeekInput();
-
-=item ReadAttr [number, col, row]
-
-Reads the specified I<number> of consecutive attributes, beginning at
-I<col>, I<row>, from the console. Returns the attributes read (a
-variable containing one character for each attribute), or C<undef> on
-errors. You can then pass the returned variable to C<WriteAttr> to
-restore the saved attributes on screen. See also: C<ReadChar>,
-C<ReadRect>.
-
-Example:
-
- $colors = $CONSOLE->ReadAttr(80*25, 0, 0);
-
-=item ReadChar [number, col, row]
-
-Reads the specified I<number> of consecutive characters, beginning at
-I<col>, I<row>, from the console. Returns a string containing the
-characters read, or C<undef> on errors. You can then pass the
-returned variable to C<WriteChar> to restore the saved characters on
-screen. See also: C<ReadAttr>, C<ReadRect>.
-
-Example:
-
- $chars = $CONSOLE->ReadChar(80*25, 0, 0);
-
-=item ReadRect left, top, right, bottom
-
-Reads the content (characters and attributes) of the rectangle
-specified by I<left>, I<top>, I<right>, I<bottom> from the console.
-Returns a string containing the rectangle read, or C<undef> on errors.
-You can then pass the returned variable to C<WriteRect> to restore the
-saved rectangle on screen (or on another console). See also:
-C<ReadAttr>, C<ReadChar>.
-
-Example:
-
- $rect = $CONSOLE->ReadRect(0, 0, 80, 25);
-
-=item Scroll left, top, right, bottom, col, row, char, attr,
- [cleft, ctop, cright, cbottom]
-
-Moves a block of data in a console buffer; the block is identified by
-I<left>, I<top>, I<right>, I<bottom>, while I<row>, I<col> identify
-the new location of the block. The cells left empty as a result of
-the move are filled with the character I<char> and attribute I<attr>.
-Optionally you can specify a clipping region with I<cleft>, I<ctop>,
-I<cright>, I<cbottom>, so that the content of the console outside this
-rectangle are unchanged. Returns C<undef> on errors, a nonzero value
-on success.
-
-Example:
-
- # scrolls the screen 10 lines down, filling with black spaces
- $CONSOLE->Scroll(0, 0, 80, 25, 0, 10, " ", $FG_BLACK | $BG_BLACK);
-
-=item Select standard_handle
-
-Redirects a standard handle to the specified console.
-I<standard_handle> can have one of the following values:
-
- STD_INPUT_HANDLE
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
-
-Returns C<undef> on errors, a nonzero value on success.
-
-Example:
-
- $CONSOLE->Select(STD_OUTPUT_HANDLE);
-
-=item SetIcon icon_file
-
-Sets the icon in the title bar of the current console window.
-
-Example:
-
- $CONSOLE->SetIcon("C:/My/Path/To/Custom.ico");
-
-=item Size [col, row]
-
-Gets or sets the console buffer size.
-
-Example:
-
- ($x, $y) = $CONSOLE->Size();
- $CONSOLE->Size(80, 25);
-
-=item Title [title]
-
-Gets or sets the title of the current console window.
-
-Example:
-
- $title = $CONSOLE->Title();
- $CONSOLE->Title("This is a title");
-
-=item Window [flag, left, top, right, bottom]
-
-Gets or sets the current console window size. If called without
-arguments, returns a 4-element list containing the current window
-coordinates in the form of I<left>, I<top>, I<right>, I<bottom>. To
-set the window size, you have to specify an additional I<flag>
-parameter: if it is 0 (zero), coordinates are considered relative to
-the current coordinates; if it is non-zero, coordinates are absolute.
-
-Example:
-
- ($left, $top, $right, $bottom) = $CONSOLE->Window();
- $CONSOLE->Window(1, 0, 0, 80, 50);
-
-=item Write string
-
-Writes I<string> on the console, using the current attribute, that you
-can set with C<Attr>, and advancing the cursor as needed. This isn't
-so different from Perl's "print" statement. Returns the number of
-characters written or C<undef> on errors. See also: C<WriteAttr>,
-C<WriteChar>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->Write("Hello, world!");
-
-=item WriteAttr attrs, col, row
-
-Writes the attributes in the string I<attrs>, beginning at I<col>,
-I<row>, without affecting the characters that are on screen. The
-string attrs can be the result of a C<ReadAttr> function, or you can
-build your own attribute string; in this case, keep in mind that every
-attribute is treated as a character, not a number (see example).
-Returns the number of attributes written or C<undef> on errors. See
-also: C<Write>, C<WriteChar>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->WriteAttr($attrs, 0, 0);
-
- # note the use of chr()...
- $attrs = chr($FG_BLACK | $BG_WHITE) x 80;
- $CONSOLE->WriteAttr($attrs, 0, 0);
-
-=item WriteChar chars, col, row
-
-Writes the characters in the string I<attr>, beginning at I<col>, I<row>,
-without affecting the attributes that are on screen. The string I<chars>
-can be the result of a C<ReadChar> function, or a normal string. Returns
-the number of characters written or C<undef> on errors. See also:
-C<Write>, C<WriteAttr>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->WriteChar("Hello, worlds!", 0, 0);
-
-=item WriteInput (event)
-
-Pushes data in the console input buffer. I<(event)> is a list of values,
-for more information see C<Input>. The string chars can be the result of
-a C<ReadChar> function, or a normal string. Returns the number of
-characters written or C<undef> on errors. See also: C<Write>,
-C<WriteAttr>, C<WriteRect>.
-
-Example:
-
- $CONSOLE->WriteInput(@event);
-
-=item WriteRect rect, left, top, right, bottom
-
-Writes a rectangle of characters and attributes (contained in I<rect>)
-on the console at the coordinates specified by I<left>, I<top>,
-I<right>, I<bottom>. I<rect> can be the result of a C<ReadRect>
-function. Returns C<undef> on errors, otherwise a 4-element list
-containing the coordinates of the affected rectangle, in the format
-I<left>, I<top>, I<right>, I<bottom>. See also: C<Write>,
-C<WriteAttr>, C<WriteChar>.
-
-Example:
-
- $CONSOLE->WriteRect($rect, 0, 0, 80, 25);
-
-=back
-
-
-=head2 Constants
-
-The following constants are exported in the main namespace of your
-script using Win32::Console:
-
- BACKGROUND_BLUE
- BACKGROUND_GREEN
- BACKGROUND_INTENSITY
- BACKGROUND_RED
- CAPSLOCK_ON
- CONSOLE_TEXTMODE_BUFFER
- ENABLE_ECHO_INPUT
- ENABLE_LINE_INPUT
- ENABLE_MOUSE_INPUT
- ENABLE_PROCESSED_INPUT
- ENABLE_PROCESSED_OUTPUT
- ENABLE_WINDOW_INPUT
- ENABLE_WRAP_AT_EOL_OUTPUT
- ENHANCED_KEY
- FILE_SHARE_READ
- FILE_SHARE_WRITE
- FOREGROUND_BLUE
- FOREGROUND_GREEN
- FOREGROUND_INTENSITY
- FOREGROUND_RED
- LEFT_ALT_PRESSED
- LEFT_CTRL_PRESSED
- NUMLOCK_ON
- GENERIC_READ
- GENERIC_WRITE
- RIGHT_ALT_PRESSED
- RIGHT_CTRL_PRESSED
- SCROLLLOCK_ON
- SHIFT_PRESSED
- STD_INPUT_HANDLE
- STD_OUTPUT_HANDLE
- STD_ERROR_HANDLE
-
-Additionally, the following variables can be used:
-
- $FG_BLACK
- $FG_GRAY
- $FG_BLUE
- $FG_LIGHTBLUE
- $FG_RED
- $FG_LIGHTRED
- $FG_GREEN
- $FG_LIGHTGREEN
- $FG_MAGENTA
- $FG_LIGHTMAGENTA
- $FG_CYAN
- $FG_LIGHTCYAN
- $FG_BROWN
- $FG_YELLOW
- $FG_LIGHTGRAY
- $FG_WHITE
-
- $BG_BLACK
- $BG_GRAY
- $BG_BLUE
- $BG_LIGHTBLUE
- $BG_RED
- $BG_LIGHTRED
- $BG_GREEN
- $BG_LIGHTGREEN
- $BG_MAGENTA
- $BG_LIGHTMAGENTA
- $BG_CYAN
- $BG_LIGHTCYAN
- $BG_BROWN
- $BG_YELLOW
- $BG_LIGHTGRAY
- $BG_WHITE
-
- $ATTR_NORMAL
- $ATTR_INVERSE
-
-ATTR_NORMAL is set to gray foreground on black background (DOS's
-standard colors).
-
-
-=head2 Microsoft's Documentation
-
-Documentation for the Win32 Console and Character mode Functions can
-be found on Microsoft's site at this URL:
-
-http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar.htm
-
-A reference of the available functions is at:
-
-http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar_34.htm
-
-
-=head1 AUTHOR
-
-Aldo Calpini <a.calpini@romagiubileo.it>
-
-=head1 CREDITS
-
-Thanks to: Jesse Dougherty, Dave Roth, ActiveWare, and the
-Perl-Win32-Users community.
-
-=head1 DISCLAIMER
-
-This program is FREE; you can redistribute, modify, disassemble, or
-even reverse engineer this software at your will. Keep in mind,
-however, that NOTHING IS GUARANTEED to work and everything you do is
-AT YOUR OWN RISK - I will not take responsibility for any damage, loss
-of money and/or health that may arise from the use of this program!
-
-This is distributed under the terms of Larry Wall's Artistic License.