win32console 1.2.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
data/doc/Console.rdoc ADDED
@@ -0,0 +1,690 @@
1
+ #
2
+ # = NAME
3
+ #
4
+ # Win32::Console - Win32 Console and Character Mode Functions
5
+ #
6
+ #
7
+ # = DESCRIPTION
8
+ #
9
+ # This module implements the Win32 console and character mode
10
+ # functions. They give you full control on the console input and output,
11
+ # including: support of off-screen console buffers (eg. multiple screen
12
+ # pages)
13
+ #
14
+ # - reading and writing of characters, attributes and whole portions of
15
+ # the screen
16
+ #
17
+ # - complete processing of keyboard and mouse events
18
+ #
19
+ # - some very funny additional features :)
20
+ #
21
+ #
22
+ # Those functions should also make possible a port of the Unix's curses
23
+ # library; if there is anyone interested (and/or willing to contribute)
24
+ # to this project, e-mail me. Thank you.
25
+ #
26
+ #
27
+ # = REFERENCE
28
+ #
29
+ #
30
+ # == Methods
31
+ #
32
+ # - Alloc
33
+ #
34
+ # Allocates a new console for the process. Returns C<nil> on errors, a
35
+ # nonzero value on success. A process cannot be associated with more
36
+ # than one console, so this method will fail if there is already an
37
+ # allocated console. Use Free to detach the process from the console,
38
+ # and then call Alloc to create a new console. See also: C<Free>
39
+ #
40
+ # Example:
41
+ #
42
+ # Win32::Console::Alloc()
43
+ #
44
+ # - Attr [attr]
45
+ #
46
+ # Gets or sets the current console attribute. This attribute is used by
47
+ # the Write method.
48
+ #
49
+ # Example:
50
+ #
51
+ # attr = console.Attr()
52
+ # console.Attr(FG_YELLOW | BG_BLUE)
53
+ #
54
+ # - Close
55
+ #
56
+ # Closes a shortcut object. Note that it is not "strictly" required to
57
+ # close the objects you created, since the Win32::Shortcut objects are
58
+ # automatically closed when the program ends (or when you elsehow
59
+ # destroy such an object).
60
+ #
61
+ # Example:
62
+ #
63
+ # link.Close()
64
+ #
65
+ # - Cls [attr]
66
+ #
67
+ # Clear the console, with the specified I<attr> if given, or using
68
+ # ATTR_NORMAL otherwise.
69
+ #
70
+ # Example:
71
+ #
72
+ # console.Cls()
73
+ # console.Cls(FG_WHITE | BG_GREEN)
74
+ #
75
+ # - Cursor [x, y, size, visible]
76
+ #
77
+ # Gets or sets cursor position and appearance. Returns C<nil> on
78
+ # errors, or a 4-element list containing: I<x>, I<y>, I<size>,
79
+ # I<visible>. I<x> and I<y> are the current cursor position; ...
80
+ #
81
+ # Example:
82
+ #
83
+ # x, y, size, visible = console.Cursor()
84
+ #
85
+ # # Get position only
86
+ # x, y = console.Cursor()
87
+ #
88
+ # console.Cursor(40, 13, 50, 1)
89
+ #
90
+ # # Set position only
91
+ # console.Cursor(40, 13)
92
+ #
93
+ # # Set size and visibility without affecting position
94
+ # console.Cursor(-1, -1, 50, 1)
95
+ #
96
+ # - Display
97
+ #
98
+ # Displays the specified console on the screen. Returns C<nil> on errors,
99
+ # a nonzero value on success.
100
+ #
101
+ # Example:
102
+ #
103
+ # console.Display()
104
+ #
105
+ # - FillAttr [attribute, number, col, row]
106
+ #
107
+ # Fills the specified number of consecutive attributes, beginning at
108
+ # I<col>, I<row>, with the value specified in I<attribute>. Returns the
109
+ # number of attributes filled, or C<nil> on errors. See also:
110
+ # C<FillChar>.
111
+ #
112
+ # Example:
113
+ #
114
+ # console.FillAttr(FG_BLACK | BG_BLACK, 80*25, 0, 0)
115
+ #
116
+ # - FillChar char, number, col, row
117
+ #
118
+ # Fills the specified number of consecutive characters, beginning at
119
+ # I<col>, I<row>, with the character specified in I<char>. Returns the
120
+ # number of characters filled, or C<nil> on errors. See also:
121
+ # C<FillAttr>.
122
+ #
123
+ # Example:
124
+ #
125
+ # console.FillChar("X", 80*25, 0, 0)
126
+ #
127
+ # - Flush
128
+ #
129
+ # Flushes the console input buffer. All the events in the buffer are
130
+ # discarded. Returns C<nil> on errors, a nonzero value on success.
131
+ #
132
+ # Example:
133
+ #
134
+ # console.Flush()
135
+ #
136
+ # - Free
137
+ #
138
+ # Detaches the process from the console. Returns C<nil> on errors, a
139
+ # nonzero value on success. See also: C<Alloc>.
140
+ #
141
+ # Example:
142
+ #
143
+ # Win32::Console::Free()
144
+ #
145
+ # - GenerateCtrlEvent [type, processgroup]
146
+ #
147
+ # Sends a break signal of the specified I<type> to the specified
148
+ # I<processgroup>. I<type> can be one of the following constants:
149
+ #
150
+ # CTRL_BREAK_EVENT
151
+ # CTRL_C_EVENT
152
+ #
153
+ # they signal, respectively, the pressing of Control + Break and of
154
+ # Control + C; if not specified, it defaults to CTRL_C_EVENT.
155
+ # I<processgroup> is the pid of a process sharing the same console. If
156
+ # omitted, it defaults to 0 (the current process), which is also the
157
+ # only meaningful value that you can pass to this function. Returns
158
+ # C<nil> on errors, a nonzero value on success.
159
+ #
160
+ # Example:
161
+ #
162
+ # # break this script now
163
+ # Win32::Console::GenerateCtrlEvent()
164
+ #
165
+ # - GetEvents
166
+ #
167
+ # Returns the number of unread input events in the console's input
168
+ # buffer, or C<nil> on errors. See also: C<Input>, C<InputChar>,
169
+ # C<PeekInput>, C<WriteInput>.
170
+ #
171
+ # Example:
172
+ #
173
+ # events = console.GetEvents()
174
+ #
175
+ # - Info
176
+ #
177
+ # Returns an array of informations about the console (or C<nil> on
178
+ # errors), which contains:
179
+ #
180
+ # * columns (X size) of the console buffer.
181
+ #
182
+ # * rows (Y size) of the console buffer.
183
+ #
184
+ # * current column (X position) of the cursor.
185
+ #
186
+ # * current row (Y position) of the cursor.
187
+ #
188
+ # * current attribute used for C<Write>.
189
+ #
190
+ # * left column (X of the starting point) of the current console window.
191
+ #
192
+ # * top row (Y of the starting point) of the current console window.
193
+ #
194
+ # * right column (X of the final point) of the current console window.
195
+ #
196
+ # * bottom row (Y of the final point) of the current console window.
197
+ #
198
+ # * maximum number of columns for the console window, given the current
199
+ # buffer size, font and the screen size.
200
+ #
201
+ # * maximum number of rows for the console window, given the current
202
+ # buffer size, font and the screen size.
203
+ #
204
+ #
205
+ # See also: <b>Attr</b>, <b>Cursor</b>, <b>Size</b>, <b>Window</b>, <b>MaxWindow</b>.
206
+ #
207
+ # Example:
208
+ #
209
+ # info = console.Info()
210
+ # puts "Cursor at #{info[3]}, #{info[4]}."
211
+ #
212
+ # - Input
213
+ #
214
+ # Reads an event from the input buffer. Returns an array of values, which
215
+ # depending on the event's nature are:
216
+ #
217
+ # - keyboard event
218
+ #
219
+ # The array will contain:
220
+ #
221
+ # * event type: 1 for keyboard
222
+ #
223
+ # * key down: TRUE if the key is being pressed, FALSE if the key is being released
224
+ #
225
+ # * repeat count: the number of times the key is being held down
226
+ #
227
+ # * virtual keycode: the virtual key code of the key
228
+ #
229
+ # * virtual scancode: the virtual scan code of the key
230
+ #
231
+ # * char: the ASCII code of the character (if the key is a character key, 0 otherwise)
232
+ #
233
+ # * control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
234
+ #
235
+ #
236
+ # - mouse event
237
+ #
238
+ # The array will contain:
239
+ #
240
+ # * event type: 2 for mouse
241
+ #
242
+ # * mouse pos. X: X coordinate (column) of the mouse location
243
+ #
244
+ # * mouse pos. Y: Y coordinate (row) of the mouse location
245
+ #
246
+ # * button state: the mouse button(s) which are pressed
247
+ #
248
+ # * control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
249
+ #
250
+ # * event flags: the type of the mouse event
251
+ #
252
+ #
253
+ # This method will return <b>nil</b> on errors. Note that the events
254
+ # returned are depending on the input <b>Mode</b> of the console; for example,
255
+ # mouse events are not intercepted unless ENABLE_MOUSE_INPUT is
256
+ # specified. See also: <b>GetEvents</b>, <b>InputChar</b>, <b>Mode</b>,
257
+ # <b>PeekInput</b>, <b>WriteInput</b>.
258
+ #
259
+ # Example:
260
+ #
261
+ # event = console.Input()
262
+ #
263
+ # - InputChar number
264
+ #
265
+ # Reads and returns I<number> characters from the console input buffer,
266
+ # or <b>nil</b> on errors. See also: <b>Input</b>, <b>Mode</b>.
267
+ #
268
+ # Example:
269
+ #
270
+ # key = console.InputChar(1)
271
+ #
272
+ # - InputCP [codepage]
273
+ #
274
+ # Gets or sets the input code page used by the console. Note that this
275
+ # doesn't apply to a console object, but to the standard input
276
+ # console. This attribute is used by the Write method. See also:
277
+ # <b>OutputCP</b>.
278
+ #
279
+ # Example:
280
+ #
281
+ # codepage = Win32::Console::InputCP()
282
+ # Win32::Console::InputCP(437)
283
+ #
284
+ # - MaxWindow
285
+ #
286
+ # Returns the size of the largest possible console window, based on the
287
+ # current font and the size of the display. The result is <b>nil</b> on
288
+ # errors, otherwise a 2-element list containing col, row.
289
+ #
290
+ # Example:
291
+ #
292
+ # maxCol, maxRow = console.MaxWindow()
293
+ #
294
+ # - Mode [flags]
295
+ #
296
+ # Gets or sets the input or output mode of a console. I<flags> can be a
297
+ # combination of the following constants:
298
+ #
299
+ # ENABLE_LINE_INPUT
300
+ # ENABLE_ECHO_INPUT
301
+ # ENABLE_PROCESSED_INPUT
302
+ # ENABLE_WINDOW_INPUT
303
+ # ENABLE_MOUSE_INPUT
304
+ # ENABLE_PROCESSED_OUTPUT
305
+ # ENABLE_WRAP_AT_EOL_OUTPUT
306
+ #
307
+ # For more informations on the meaning of those flags, please refer to
308
+ # the L<"Microsoft's Documentation">.
309
+ #
310
+ # Example:
311
+ #
312
+ # mode = console.Mode()
313
+ # console.Mode(ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT)
314
+ #
315
+ # - MouseButtons
316
+ #
317
+ # Returns the number of the buttons on your mouse, or <b>nil</b> on errors.
318
+ #
319
+ # Example:
320
+ #
321
+ # puts "Your mouse has #{Win32::Console::MouseButtons()} buttons."
322
+ #
323
+ # - Win32::Console.new standard_handle
324
+ #
325
+ # - Win32::Console.new [accessmode, sharemode]
326
+ #
327
+ # Creates a new console object. The first form creates a handle to a
328
+ # standard channel, I<standard_handle> can be one of the following:
329
+ #
330
+ # STD_OUTPUT_HANDLE
331
+ # STD_ERROR_HANDLE
332
+ # STD_INPUT_HANDLE
333
+ #
334
+ # The second form, instead, creates a console screen buffer in memory,
335
+ # which you can access for reading and writing as a normal console, and
336
+ # then redirect on the standard output (the screen) with <b>Display</b>. In
337
+ # this case, you can specify one or both of the following values for
338
+ # I<accessmode>:
339
+ #
340
+ # GENERIC_READ
341
+ # GENERIC_WRITE
342
+ #
343
+ # which are the permissions you will have on the created buffer, and one
344
+ # or both of the following values for I<sharemode>:
345
+ #
346
+ # FILE_SHARE_READ
347
+ # FILE_SHARE_WRITE
348
+ #
349
+ # which affect the way the console can be shared. If you don't specify
350
+ # any of those parameters, all 4 flags will be used.
351
+ #
352
+ # Example:
353
+ #
354
+ # stdout = Win32::Console.new(STD_OUTPUT_HANDLE)
355
+ # stderr = Win32::Console.new(STD_ERROR_HANDLE)
356
+ # stdin = Win32::Console.new(STD_INPUT_HANDLE)
357
+ #
358
+ # buffer = Win32::Console.new()
359
+ # buffer = Win32::Console.new(GENERIC_READ | GENERIC_WRITE)
360
+ #
361
+ # - OutputCP [codepage]
362
+ #
363
+ # Gets or sets the output code page used by the console. Note that this
364
+ # doesn't apply to a console object, but to the standard output console.
365
+ # See also: <b>InputCP</b>.
366
+ #
367
+ # Example:
368
+ #
369
+ # codepage = Win32::Console::OutputCP()
370
+ # Win32::Console::OutputCP(437)
371
+ #
372
+ # - PeekInput
373
+ #
374
+ # Does exactly the same as <b>Input</b>, except that the event read is not
375
+ # removed from the input buffer. See also: <b>GetEvents</b>, <b>Input</b>,
376
+ # <b>InputChar</b>, <b>Mode</b>, <b>WriteInput</b>.
377
+ #
378
+ # Example:
379
+ #
380
+ # event = console.PeekInput()
381
+ #
382
+ # - ReadAttr [number, col, row]
383
+ #
384
+ # Reads the specified I<number> of consecutive attributes, beginning at
385
+ # I<col>, I<row>, from the console. Returns the attributes read (a
386
+ # variable containing one character for each attribute), or <b>nil</b> on
387
+ # errors. You can then pass the returned variable to <b>WriteAttr</b> to
388
+ # restore the saved attributes on screen. See also: <b>ReadChar</b>,
389
+ # <b>ReadRect</b>.
390
+ #
391
+ # Example:
392
+ #
393
+ # colors = console.ReadAttr(80*25, 0, 0)
394
+ #
395
+ # - ReadChar [number, col, row]
396
+ #
397
+ # Reads the specified I<number> of consecutive characters, beginning at
398
+ # I<col>, I<row>, from the console. Returns a string containing the
399
+ # characters read, or <b>nil</b> on errors. You can then pass the
400
+ # returned variable to <b>WriteChar</b> to restore the saved characters on
401
+ # screen. See also: <b>ReadAttr</b>, <b>ReadRect</b>.
402
+ #
403
+ # Example:
404
+ #
405
+ # chars = console.ReadChar(80*25, 0, 0)
406
+ #
407
+ # - ReadRect left, top, right, bottom
408
+ #
409
+ # Reads the content (characters and attributes) of the rectangle
410
+ # specified by I<left>, I<top>, I<right>, I<bottom> from the console.
411
+ # Returns a string containing the rectangle read, or <b>nil</b> on errors.
412
+ # You can then pass the returned variable to <b>WriteRect</b> to restore the
413
+ # saved rectangle on screen (or on another console). See also:
414
+ # <b>ReadAttr</b>, <b>ReadChar</b>.
415
+ #
416
+ # Example:
417
+ #
418
+ # rect = console.ReadRect(0, 0, 80, 25)
419
+ #
420
+ # - Scroll left, top, right, bottom, col, row, char, attr,
421
+ # [cleft, ctop, cright, cbottom]
422
+ #
423
+ # Moves a block of data in a console buffer the block is identified by
424
+ # I<left>, I<top>, I<right>, I<bottom>, while I<row>, I<col> identify
425
+ # the new location of the block. The cells left empty as a result of
426
+ # the move are filled with the character I<char> and attribute I<attr>.
427
+ # Optionally you can specify a clipping region with I<cleft>, I<ctop>,
428
+ # I<cright>, I<cbottom>, so that the content of the console outside this
429
+ # rectangle are unchanged. Returns <b>nil</b> on errors, a nonzero value
430
+ # on success.
431
+ #
432
+ # Example:
433
+ #
434
+ # # scrolls the screen 10 lines down, filling with black spaces
435
+ # console.Scroll(0, 0, 80, 25, 0, 10, " ", FG_BLACK | BG_BLACK)
436
+ #
437
+ # - Select standard_handle
438
+ #
439
+ # Redirects a standard handle to the specified console.
440
+ # I<standard_handle> can have one of the following values:
441
+ #
442
+ # STD_INPUT_HANDLE
443
+ # STD_OUTPUT_HANDLE
444
+ # STD_ERROR_HANDLE
445
+ #
446
+ # Returns <b>nil</b> on errors, a nonzero value on success.
447
+ #
448
+ # Example:
449
+ #
450
+ # console.Select(STD_OUTPUT_HANDLE)
451
+ #
452
+ # - Size [col, row]
453
+ #
454
+ # Gets or sets the console buffer size.
455
+ #
456
+ # Example:
457
+ #
458
+ # x, y = console.Size()
459
+ # console.Size(80, 25)
460
+ #
461
+ # - Title [title]
462
+ #
463
+ # Gets or sets the title bar the string of the current console window.
464
+ #
465
+ # Example:
466
+ #
467
+ # title = console.Title()
468
+ # console.Title("This is a title")
469
+ #
470
+ # - Window [flag, left, top, right, bottom]
471
+ #
472
+ # Gets or sets the current console window size. If called without
473
+ # arguments, returns a 4-element list containing the current window
474
+ # coordinates in the form of I<left>, I<top>, I<right>, I<bottom>. To
475
+ # set the window size, you have to specify an additional I<flag>
476
+ # parameter: if it is 0 (zero), coordinates are considered relative to
477
+ # the current coordinates; if it is non-zero, coordinates are absolute.
478
+ #
479
+ # Example:
480
+ #
481
+ # left, top, right, bottom = console.Window()
482
+ # console.Window(1, 0, 0, 80, 50)
483
+ #
484
+ # - Write string
485
+ #
486
+ # Writes I<string> on the console, using the current attribute, that you
487
+ # can set with <b>Attr</b>, and advancing the cursor as needed. This isn't
488
+ # so different from Perl's "print" statement. Returns the number of
489
+ # characters written or <b>nil</b> on errors. See also: <b>WriteAttr</b>,
490
+ # <b>WriteChar</b>, <b>WriteRect</b>.
491
+ #
492
+ # Example:
493
+ #
494
+ # console.Write("Hello, world!")
495
+ #
496
+ # - WriteAttr attrs, col, row
497
+ #
498
+ # Writes the attributes in the string I<attrs>, beginning at I<col>,
499
+ # I<row>, without affecting the characters that are on screen. The
500
+ # string attrs can be the result of a <b>ReadAttr</b> function, or you can
501
+ # build your own attribute string; in this case, keep in mind that every
502
+ # attribute is treated as a character, not a number (see example).
503
+ # Returns the number of attributes written or <b>nil</b> on errors. See
504
+ # also: <b>Write</b>, <b>WriteChar</b>, <b>WriteRect</b>.
505
+ #
506
+ # Example:
507
+ #
508
+ # console.WriteAttr($attrs, 0, 0)
509
+ #
510
+ # # note the use of chr()...
511
+ # attrs = (FG_BLACK | BG_WHITE).chr() * 80
512
+ # console.WriteAttr(attrs, 0, 0)
513
+ #
514
+ # - WriteChar chars, col, row
515
+ #
516
+ # Writes the characters in the string <i>attr</i>, beginning at <i>col</i>, <i>row</i>,
517
+ # without affecting the attributes that are on screen. The string <i>chars</i>
518
+ # can be the result of a <b>ReadChar</b> function, or a normal string. Returns
519
+ # the number of characters written or <b>nil</b> on errors. See also:
520
+ # <b>Write</b>, <b>WriteAttr</b>, <b>WriteRect</b>.
521
+ #
522
+ # Example:
523
+ #
524
+ # console.WriteChar("Hello, worlds!", 0, 0)
525
+ #
526
+ # - WriteInput (event)
527
+ #
528
+ # Pushes data in the console input buffer. I<(event)> is a list of values,
529
+ # for more information see <b>Input</b>. The string chars can be the result of
530
+ # a <b>ReadChar</b> function, or a normal string. Returns the number of
531
+ # characters written or <b>nil</b> on errors. See also: <b>Write</b>,
532
+ # <b>WriteAttr</b>, <b>WriteRect</b>.
533
+ #
534
+ # Example:
535
+ #
536
+ # console.WriteInput(event)
537
+ #
538
+ # - WriteRect rect, left, top, right, bottom
539
+ #
540
+ # Writes a rectangle of characters and attributes (contained in <i>rect</i>)
541
+ # on the console at the coordinates specified by <i>left</i>, <i>top</i>,
542
+ # <i>right</i>, <i>bottom</i>. <i>rect</i> can be the result of a <b>ReadRect</b>
543
+ # function. Returns <b>nil</b> on errors, otherwise a 4-element list
544
+ # containing the coordinates of the affected rectangle, in the format
545
+ # <i>left</i>, <i>top</i>, <i>right</i>, <i>bottom</i>. See also: <b>Write</b>,
546
+ # <b>WriteAttr</b>, <b>WriteChar</b>.
547
+ #
548
+ # Example:
549
+ #
550
+ # console.WriteRect(rect, 0, 0, 80, 25)
551
+ #
552
+ #
553
+ # == Constants
554
+ #
555
+ # The following constants are defined in the namespace of
556
+ # Win32::Console::Constants and are brought into the current
557
+ # namespace when the module is required:
558
+ #
559
+ # BACKGROUND_BLUE
560
+ # BACKGROUND_GREEN
561
+ # BACKGROUND_INTENSITY
562
+ # BACKGROUND_RED
563
+ # CAPSLOCK_ON
564
+ # CONSOLE_TEXTMODE_BUFFER
565
+ # ENABLE_ECHO_INPUT
566
+ # ENABLE_LINE_INPUT
567
+ # ENABLE_MOUSE_INPUT
568
+ # ENABLE_PROCESSED_INPUT
569
+ # ENABLE_PROCESSED_OUTPUT
570
+ # ENABLE_WINDOW_INPUT
571
+ # ENABLE_WRAP_AT_EOL_OUTPUT
572
+ # ENHANCED_KEY
573
+ # FILE_SHARE_READ
574
+ # FILE_SHARE_WRITE
575
+ # FOREGROUND_BLUE
576
+ # FOREGROUND_GREEN
577
+ # FOREGROUND_INTENSITY
578
+ # FOREGROUND_RED
579
+ # LEFT_ALT_PRESSED
580
+ # LEFT_CTRL_PRESSED
581
+ # NUMLOCK_ON
582
+ # GENERIC_READ
583
+ # GENERIC_WRITE
584
+ # RIGHT_ALT_PRESSED
585
+ # RIGHT_CTRL_PRESSED
586
+ # SCROLLLOCK_ON
587
+ # SHIFT_PRESSED
588
+ # STD_INPUT_HANDLE
589
+ # STD_OUTPUT_HANDLE
590
+ # STD_ERROR_HANDLE
591
+ #
592
+ # Additionally, these other constants are also added to your current
593
+ # namespace when requiring the module:
594
+ #
595
+ # FG_BLACK
596
+ # FG_BLUE
597
+ # FG_LIGHTBLUE
598
+ # FG_RED
599
+ # FG_LIGHTRED
600
+ # FG_GREEN
601
+ # FG_LIGHTGREEN
602
+ # FG_MAGENTA
603
+ # FG_LIGHTMAGENTA
604
+ # FG_CYAN
605
+ # FG_LIGHTCYAN
606
+ # FG_BROWN
607
+ # FG_YELLOW
608
+ # FG_GRAY
609
+ # FG_WHITE
610
+ #
611
+ # BG_BLACK
612
+ # BG_BLUE
613
+ # BG_LIGHTBLUE
614
+ # BG_RED
615
+ # BG_LIGHTRED
616
+ # BG_GREEN
617
+ # BG_LIGHTGREEN
618
+ # BG_MAGENTA
619
+ # BG_LIGHTMAGENTA
620
+ # BG_CYAN
621
+ # BG_LIGHTCYAN
622
+ # BG_BROWN
623
+ # BG_YELLOW
624
+ # BG_GRAY
625
+ # BG_WHITE
626
+ #
627
+ # ATTR_NORMAL
628
+ # ATTR_INVERSE
629
+ #
630
+ # ATTR_NORMAL is set to gray foreground on black background (DOS's
631
+ # standard colors).
632
+ #
633
+ #
634
+ # == Microsoft's Documentation
635
+ #
636
+ # Documentation for the Win32 Console and Character mode Functions can
637
+ # be found on Microsoft's site at this URL:
638
+ #
639
+ # http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar.htm
640
+ #
641
+ # A reference of the available functions is at:
642
+ #
643
+ # http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar_34.htm
644
+ #
645
+ #
646
+ # = VERSION HISTORY
647
+ #
648
+ # * 0.031 (24 Sep 1999)
649
+ #
650
+ # * Fixed typo in GenerateCtrlEvent().
651
+ #
652
+ # * Converted and added pod documentation (from Jan Dubois <jand@activestate.com>).
653
+ #
654
+ # * 0.03 (07 Apr 1997)
655
+ #
656
+ # * Added "GenerateCtrlEvent" method.
657
+ #
658
+ # * The PLL file now comes in 2 versions, one for Perl version 5.001
659
+ # (build 110) and one for Perl version 5.003 (build 300 and higher,
660
+ # EXCEPT 304).
661
+ #
662
+ # * added an installation program that will automatically copy the right
663
+ # version in the right place.
664
+ #
665
+ # * 0.01 (09 Feb 1997)
666
+ #
667
+ # * First public release.
668
+ #
669
+ # = AUTHORS
670
+ #
671
+ # Aldo Calpini <a.calpini@romagiubileo.it> Perl module
672
+ #
673
+ # Gonzalo Garramu�o <GGarramuno@aol.com> Ruby Port
674
+ #
675
+ # = CREDITS
676
+ #
677
+ # Thanks to: Jesse Dougherty, Dave Roth, ActiveWare, and the
678
+ # Perl-Win32-Users community.
679
+ #
680
+ #
681
+ # = DISCLAIMER
682
+ #
683
+ # This program is FREE; you can redistribute, modify, disassemble, or
684
+ # even reverse engineer this software at your will. Keep in mind,
685
+ # however, that NOTHING IS GUARANTEED to work and everything you do is
686
+ # AT YOUR OWN RISK - I will not take responsibility for any damage, loss
687
+ # of money and/or health that may arise from the use of this program!
688
+ #
689
+ # This is distributed under the terms of Larry Wall's Artistic License.
690
+ #