home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_ste.zip / Curses.pm next >
Text File  |  1996-12-12  |  17KB  |  570 lines

  1. package Curses;
  2.  
  3. use Carp;
  4. require Exporter;
  5. require DynaLoader;
  6. @ISA = qw(Exporter DynaLoader);
  7.  
  8. bootstrap Curses;
  9.  
  10. ###
  11. ## Version consistency check
  12. #
  13. $VERSION    = 1.01;
  14. $XS_VERSION = eval { XS_VERSION() };
  15. $XS_VERSION = "pre 1.01" if $@;
  16.  
  17. if ($VERSION ne $XS_VERSION) {
  18.     croak "Curses.pm version [$VERSION] does not match C code [$XS_VERSION]";
  19. }
  20.  
  21. tie $LINES,  Curses::Vars, 1;
  22. tie $COLS,   Curses::Vars, 2;
  23. tie $stdscr, Curses::Vars, 3;
  24. tie $curscr, Curses::Vars, 4;
  25.  
  26. # mostly taken from mbeattie's NCurses stuff
  27. sub new
  28. {
  29.   my($obj,$nl,$nc,$by,$bx) = (@_, 0, 0, 0, 0);
  30.  
  31.   unless ($_initscr)    { initscr(); $_initscr++; }
  32.   if ($obj eq 'Curses') { return newwin($nl, $nc, $by, $bx); }
  33.   else                  { return subwin($obj, $nl, $nc, $by, $bx); }
  34. }
  35.  
  36. sub AUTOLOAD
  37. {
  38.     my($name, $val);
  39.  
  40.     ($name = $AUTOLOAD) =~ s/.*:://;
  41.     croak "Curses does not support the curses constant '$name', used"
  42.     unless $_al{$name};
  43.  
  44.     $val = constant($name, $_al{$name});
  45.     eval "sub $AUTOLOAD { $val }";
  46.     goto &$AUTOLOAD;
  47. }
  48.  
  49. sub _unimpl
  50. {
  51.     croak "Curses does not support the curses function '$_[0]', used";
  52. }
  53.  
  54. sub tstp     { _unimpl('tstp');      }
  55. sub scanw    { _unimpl('scanw');     }
  56. sub _putchar { _unimpl('_putchar');  }
  57. sub fullname { _unimpl('fullname');  }
  58.  
  59. # printw and friends are apparently popular enough that people want
  60. # them around.  I'm including versions written by:
  61. # emf@addams.att.com (Ed Freedenburg)
  62.  
  63. sub printw { addstr(sprintf(shift(@_),@_)); }
  64. # sub printw   { _unimpl('printw');    }
  65.  
  66. @EXPORT = qw(
  67. &tstp &printw &scanw &_putchar &fullname
  68.  
  69. stdscr curscr LINES COLS $LINES $COLS KEY_F
  70.  
  71. addch addchnstr addchstr addnstr addstr attroff attron attrset
  72. baudrate beep bkgd bkgdset border box can_change_color cbreak clear
  73. clearok clrtobot clrtoeol color_content COLOR_PAIR copywin delch
  74. deleteln delwin derwin doupdate echo echochar endwin erase erasechar
  75. flash flushinp flusok getattrs getbegyx getbkgd getcap getch getmaxyx
  76. getnstr getparyx getstr gettmode getyx halfdelay has_colors has_ic
  77. has_il hline idcok idlok immedok inch inchnstr inchstr init_color
  78. init_pair initscr innstr insch insdelln insertln insnstr insstr instr
  79. intrflush is_linetouched is_wintouched isendwin keyname keypad
  80. killchar leaveok longname meta move mvcur mvwin newpad newwin nl
  81. nocbreak nodelay noecho nonl noqiflush noraw notimeout noutrefresh
  82. overlay overwrite pair_content PAIR_NUMBER pechochar pnoutrefresh
  83. prefresh qiflush raw refresh resetty savetty scrl scroll scrollok
  84. setscrreg setterm slk_clear slk_init slk_label slk_noutrefresh
  85. slk_refresh slk_restore slk_set slk_touch standend standout
  86. start_color subpad subwin syncok timeout touchline touchln
  87. touchoverlap touchwin typeahead unctrl ungetch vline
  88. );
  89.  
  90. @_CONSTANTS = qw(
  91. OK ERR
  92.  
  93. ACS_BLOCK ACS_BOARD ACS_BTEE ACS_BULLET ACS_CKBOARD ACS_DARROW
  94. ACS_DEGREE ACS_DIAMOND ACS_HLINE ACS_LANTERN ACS_LARROW ACS_LLCORNER
  95. ACS_LRCORNER ACS_LTEE ACS_PLMINUS ACS_PLUS ACS_RARROW ACS_RTEE ACS_S1
  96. ACS_S9 ACS_TTEE ACS_UARROW ACS_ULCORNER ACS_URCORNER ACS_VLINE
  97.  
  98. A_ALTCHARSET A_ATTRIBUTES A_BLINK A_BOLD A_CHARTEXT A_COLOR A_DIM
  99. A_INVIS A_NORMAL A_PROTECT A_REVERSE A_STANDOUT A_UNDERLINE
  100.  
  101. COLOR_BLACK COLOR_BLUE COLOR_CYAN COLOR_GREEN COLOR_MAGENTA COLOR_RED
  102. COLOR_WHITE COLOR_YELLOW
  103.  
  104. KEY_A1 KEY_A3 KEY_B2 KEY_BACKSPACE KEY_BEG KEY_BREAK KEY_BTAB KEY_C1
  105. KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMAND KEY_COPY
  106. KEY_CREATE KEY_CTAB KEY_DC KEY_DL KEY_DOWN KEY_EIC KEY_END KEY_ENTER
  107. KEY_EOL KEY_EOS KEY_EXIT KEY_F0 KEY_FIND KEY_HELP KEY_HOME KEY_IC
  108. KEY_IL KEY_LEFT KEY_LL KEY_MARK KEY_MAX KEY_MESSAGE KEY_MIN KEY_MOVE
  109. KEY_NEXT KEY_NPAGE KEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS
  110. KEY_PRINT KEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESET
  111. KEY_RESTART KEY_RESUME KEY_RIGHT KEY_SAVE KEY_SBEG KEY_SCANCEL
  112. KEY_SCOMMAND KEY_SCOPY KEY_SCREATE KEY_SDC KEY_SDL KEY_SELECT KEY_SEND
  113. KEY_SEOL KEY_SEXIT KEY_SF KEY_SFIND KEY_SHELP KEY_SHOME KEY_SIC
  114. KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS
  115. KEY_SPRINT KEY_SR KEY_SREDO KEY_SREPLACE KEY_SRESET KEY_SRIGHT
  116. KEY_SRSUME KEY_SSAVE KEY_SSUSPEND KEY_STAB KEY_SUNDO KEY_SUSPEND
  117. KEY_UNDO KEY_UP
  118. );
  119.  
  120. sub KEY_F { return $_[0] + KEY_F0(); }
  121.  
  122. push(@EXPORT, @_CONSTANTS);
  123. for (@_CONSTANTS) { $_al{$_} = ++$_i; }
  124.  
  125. # require 'assert.pl';
  126. # assert('@_CONSTANTS == 139');
  127.  
  128. if ($OldCurses)
  129. {
  130.     @_OLD = qw(
  131.     $ttytype $Def_term $My_term
  132.     &wprintw &mvprintw &wmvprintw &wscanw &mvscanw &mvwscanw
  133.  
  134.     waddch mvaddch mvwaddch waddchnstr mvaddchnstr mvwaddchnstr waddchstr
  135.     mvaddchstr mvwaddchstr waddnstr mvaddnstr mvwaddnstr waddstr mvaddstr
  136.     mvwaddstr wattroff wattron wattrset wbkgd wbkgdset wborder wclear
  137.     wclrtobot wclrtoeol wdelch mvdelch mvwdelch wdeleteln wechochar werase
  138.     wgetch mvgetch mvwgetch wgetnstr mvgetnstr mvwgetnstr wgetstr mvgetstr
  139.     mvwgetstr whline winch mvinch mvwinch winchnstr mvinchnstr mvwinchnstr
  140.     winchstr mvinchstr mvwinchstr winnstr mvinnstr mvwinnstr winsch
  141.     mvinsch mvwinsch winsdelln winsertln winsnstr mvinsnstr mvwinsnstr
  142.     winsstr mvinsstr mvwinsstr winstr mvinstr mvwinstr wmove wnoutrefresh
  143.     wrefresh wscrl wsetscrreg wstandend wstandout wtimeout wtouchln wvline
  144.     );
  145.  
  146.     push(@EXPORT, @_OLD);
  147.     for (@_OLD)
  148.     {
  149.     next if /^[\$&]/;
  150.     /^(?:mv)?(?:w)?(.*)/;
  151.     eval "sub $_ { $1(\@_); }";
  152.     }
  153.  
  154. # see commentary under `printw()'
  155. #    sub wprintw  { _unimpl('wprintw');   }
  156. #    sub mvprintw { _unimpl('mvprintw');  }
  157. #    sub mvwprintw{ _unimpl('mvwprintw'); }
  158.  
  159.     eval <<EOS;
  160. sub wprintw   { addstr(shift(@_),sprintf(shift(@_),@_)); }
  161. sub mvprintw  { addstr(shift(@_),shift(@_),sprintf(shift(@_),@_)); }
  162. sub mvwprintw { addstr(shift(@_),shift(@_),shift(@_),sprintf(shift(@_),@_)); }
  163.     sub wscanw   { _unimpl('wscanw');    }
  164.     sub mvscanw  { _unimpl('mvscanw');   }
  165.     sub mvwscanw { _unimpl('mvwscanw');  }
  166. EOS
  167.     tie $ttytype,  Curses::Vars, 5;
  168.     tie $Def_term, Curses::Vars, 6;
  169.     tie $My_term,  Curses::Vars, 7;
  170. }
  171.  
  172. 1;
  173.  
  174. __END__
  175.  
  176. =head1 NAME
  177.  
  178. Curses - terminal screen handling and optimization
  179.  
  180. =head1 SYNOPSIS
  181.  
  182.     use Curses;
  183.  
  184.     initscr;
  185.     ...
  186.     endwin;
  187.  
  188. =head1 DESCRIPTION
  189.  
  190. C<Curses> is the interface between Perl and your system's curses(3)
  191. library.  For descriptions on the usage of a given function, variable,
  192. or constant, consult your system's documentation, as such information
  193. invariably varies (:-) between different curses(3) libraries and
  194. operating systems.  This document describes the interface itself, and
  195. assumes that you already know how your system's curses(3) library
  196. works.
  197.  
  198. =head2 Unified Functions
  199.  
  200. Many curses(3) functions have variants starting with the prefixes
  201. I<w->, I<mv->, and/or I<wmv->.  These variants differ only in the
  202. explicit addition of a window, or by the addition of two coordinates
  203. that are used to move the cursor first.  For example, C<addch()> has
  204. three other variants: C<waddch()>, C<mvaddch()>, and C<mvwaddch()>.
  205. The variants aren't very interesting; in fact, we could roll all of
  206. the variants into original function by allowing a variable number
  207. of arguments and analyzing the argument list for which variant the
  208. user wanted to call.
  209.  
  210. Unfortunately, curses(3) predates varargs(3), so in C we were stuck
  211. with all the variants.  However, C<Curses> is a Perl interface, so we
  212. are free to "unify" these variants into one function.  The section
  213. L<"Supported Functions"> below lists all curses(3) function supported
  214. by C<Curses>, along with a column listing if it is I<unified>.  If
  215. so, it takes a varying number of arguments as follows:
  216.  
  217. =over 4
  218.  
  219. C<function( [win], [y, x], args );>
  220.  
  221. I<win> is an optional window argument, defaulting to C<stdscr> if not
  222. specified.
  223.  
  224. I<y, x> is an optional coordinate pair used to move the cursor,
  225. defaulting to no move if not specified.
  226.  
  227. I<args> are the required arguments of the function.  These are the
  228. arguments you would specify if you were just calling the base function
  229. and not any of the variants.
  230.  
  231. =back
  232.  
  233. This makes the variants obsolete, since their functionality has been
  234. merged into a single function, so C<Curses> does not define them by
  235. default.  You can still get them if you want, by setting the
  236. variable C<$Curses::OldCurses> to a non-zero value before using the
  237. C<Curses> package.  See L<"Perl 4.X C<cursperl> Compatibility">
  238. for an example of this.
  239.  
  240. =head2 Objects
  241.  
  242. Objects are supported.  Example:
  243.  
  244.     $win = new Curses;
  245.     $win->addstr(10, 10, 'foo');
  246.     $win->refresh;
  247.     ...
  248.  
  249. Any function that has been marked as I<unified> (see
  250. L<"Supported Functions"> below and L<"Unified Functions"> above)
  251. can be called as a method for a Curses object. 
  252.  
  253. Do not use C<initscr()> if using objects, as the first call to get
  254. a C<new Curses> will do it for you.
  255.  
  256. =head1 COMPATIBILITY
  257.  
  258. =head2 Perl 4.X C<cursperl> Compatibility
  259.  
  260. C<Curses> has been written to take advantage of the new features of
  261. Perl.  I felt it better to provide an improved curses programming
  262. environment rather than to be 100% compatible.  However, many old
  263. C<curseperl> applications will probably still work by starting the
  264. script with:
  265.  
  266.     BEGIN { $Curses::OldCurses = 1; }
  267.     use Curses;
  268.  
  269. Any old application that still does not work should print an
  270. understandable error message explaining the problem.
  271.  
  272. Some functions and variables are not supported by C<Curses>, even with
  273. the C<BEGIN> line.  They are listed under
  274. L<"curses(3) items not supported by Curses">.
  275.  
  276. The variables C<$stdscr> and C<$curscr> are also available as
  277. functions C<stdscr> and C<curscr>.  This is because of a Perl bug.
  278. See the L<BUGS> section for details.
  279.  
  280. =head2 Incompatibilities with previous versions of C<Curses>
  281.  
  282. In previous versions of this software, some Perl functions took a
  283. different set of parameters than their C counterparts.  This is no
  284. longer true.  You should now use C<getstr($str)> and C<getyx($y, $x)>
  285. instead of C<$str = getstr()> and C<($y, $x) = getyx()>.
  286.  
  287. =head2 Incompatibilities with other Perl programs
  288.  
  289.     menu.pl, v3.0 and v3.1
  290.     There were various interaction problems between these two
  291.     releases and Curses.  Please upgrade to the latest version
  292.     (v3.3 as of 3/16/96).
  293.  
  294. =head1 DIAGNOSTICS
  295.  
  296. =over 4
  297.  
  298. =item * Curses function '%s' called with too %s arguments at ...
  299.  
  300. You have called a C<Curses> function with a wrong number of
  301. arguments.
  302.  
  303. =item * argument %d to Curses function '%s' is not a Curses window at ...
  304. =item * argument is not a Curses window at ...
  305.  
  306. The window argument you gave to the function wasn't really a window.
  307.  
  308. This probably means that you didn't give the right arguments to a
  309. I<unified> function.  See the DESCRIPTION section on L<Unified
  310. Functions> for more information.
  311.  
  312. =item * Curses function '%s' is not defined by your vendor at ...
  313.  
  314. You have a C<Curses> function in your code that your system's curses(3)
  315. library doesn't define.
  316.  
  317. =item * Curses constant '%s' is not defined by your vendor at ...
  318.  
  319. You have a C<Curses> constant in your code that your system's curses(3)
  320. library doesn't define.
  321.  
  322. =item * Curses does not support the curses function '%s', used at ...
  323.  
  324. You have a curses(3) function in your code that the C<Curses> module
  325. doesn't support.
  326.  
  327. =item * Curses does not support the curses variable '%s', used at ...
  328.  
  329. You have a curses(3) variable in your code that the C<Curses> module
  330. doesn't support.
  331.  
  332. =item * Curses does not support the curses constant '%s', used at ...
  333.  
  334. You have a bareword in your code that is trying to be interpreted as
  335. a C<Curses> constant, but C<Curses> doesn't know anything about it.
  336.  
  337. =item * Curses::Vars::FETCH called with bad index at ...
  338. =item * Curses::Vars::STORE called with bad index at ...
  339.  
  340. You've been playing with the C<tie> interface to the C<Curses>
  341. variables.  Don't do that.  :-)
  342.  
  343. =item * Anything else
  344.  
  345. Check out the F<perldiag> man page to see if the error is in there.
  346.  
  347. =back
  348.  
  349. =head1 BUGS
  350.  
  351. If you use the variables C<$stdscr> and C<$curscr> instead of their
  352. functional counterparts (C<stdscr> and C<curscr>), you might run into
  353. a bug in Perl where the "magic" isn't called early enough.  This is
  354. manifested by the C<Curses> package telling you C<$stdscr> isn't a
  355. window.  One workaround is to put a line like C<$stdscr = $stdscr>
  356. near the front of your program.
  357.  
  358. Probably many more.
  359.  
  360. =head1 AUTHOR
  361.  
  362. William Setzer <William_Setzer@ncsu.edu>
  363.  
  364. =head1 SYNOPSIS OF PERL CURSES SUPPORT
  365.  
  366. =head2 Supported Functions
  367.  
  368.     Supported     Unified?        Supported via $OldCurses[*]
  369.     ---------     --------        ------------------------
  370.     addch        Yes        waddch mvaddch mvwaddch
  371.     addchnstr    Yes        waddchnstr mvaddchnstr mvwaddchnstr
  372.     addchstr    Yes        waddchstr mvaddchstr mvwaddchstr
  373.     addnstr        Yes        waddnstr mvaddnstr mvwaddnstr
  374.     addstr        Yes        waddstr mvaddstr mvwaddstr
  375.     attroff        Yes        wattroff
  376.     attron        Yes        wattron
  377.     attrset        Yes        wattrset
  378.     baudrate    No
  379.     beep        No
  380.     bkgd        Yes        wbkgd
  381.     bkgdset        Yes        wbkgdset
  382.     border        Yes        wborder
  383.     box        Yes
  384.     can_change_color No
  385.     cbreak        No
  386.     clear        Yes        wclear
  387.     clearok        Yes
  388.     clrtobot    Yes        wclrtobot
  389.     clrtoeol    Yes        wclrtoeol
  390.     color_content    No
  391.     COLOR_PAIR    No
  392.     copywin        No
  393.     delch        Yes        wdelch mvdelch mvwdelch
  394.     deleteln    Yes        wdeleteln
  395.     delwin        Yes
  396.     derwin        Yes
  397.     doupdate    No
  398.     echo        No
  399.     echochar    Yes        wechochar
  400.     endwin        No
  401.     erase        Yes        werase
  402.     erasechar    No
  403.     flash        No
  404.     flushinp    No
  405.     flusok        Yes
  406.     getattrs    Yes
  407.     getbegyx    Yes
  408.     getbkgd        Yes
  409.     getcap        No
  410.     getch        Yes        wgetch mvgetch mvwgetch
  411.     getmaxyx    Yes
  412.     getnstr        Yes        wgetnstr mvgetnstr mvwgetnstr
  413.     getparyx    Yes
  414.     getstr        Yes        wgetstr mvgetstr mvwgetstr
  415.     gettmode    No
  416.     getyx        Yes
  417.     halfdelay    No
  418.     has_colors    No
  419.     has_ic        No
  420.     has_il        No
  421.     hline        Yes        whline
  422.     idcok        Yes
  423.     idlok        Yes
  424.     immedok        Yes
  425.     inch        Yes        winch mvinch mvwinch
  426.     inchnstr    Yes        winchnstr mvinchnstr mvwinchnstr
  427.     inchstr        Yes        winchstr mvinchstr mvwinchstr
  428.     init_color    No
  429.     init_pair    No
  430.     initscr        No
  431.     innstr        Yes        winnstr mvinnstr mvwinnstr
  432.     insch        Yes        winsch mvinsch mvwinsch
  433.     insdelln    Yes        winsdelln
  434.     insertln    Yes        winsertln
  435.     insnstr        Yes        winsnstr mvinsnstr mvwinsnstr
  436.     insstr        Yes        winsstr mvinsstr mvwinsstr
  437.     instr        Yes        winstr mvinstr mvwinstr
  438.     intrflush    Yes
  439.     is_linetouched    Yes
  440.     is_wintouched    Yes
  441.     isendwin    No
  442.     keyname        No
  443.     keypad        Yes
  444.     killchar    No
  445.     leaveok        Yes
  446.     longname    No
  447.     meta        Yes
  448.     move        Yes        wmove
  449.     mvcur        No
  450.     mvwin        Yes
  451.     newpad        No
  452.     newwin        No
  453.     nl        No
  454.     nocbreak    No
  455.     nodelay        Yes
  456.     noecho        No
  457.     nonl        No
  458.     noqiflush    No
  459.     noraw        No
  460.     notimeout    Yes
  461.     noutrefresh    Yes        wnoutrefresh
  462.     overlay        No
  463.     overwrite    No
  464.     pair_content    No
  465.     PAIR_NUMBER    No
  466.     pechochar    No
  467.     pnoutrefresh    No
  468.     prefresh    No
  469.     qiflush        No
  470.     raw        No
  471.     refresh        Yes        wrefresh
  472.     resetty        No
  473.     savetty        No
  474.     scrl        Yes        wscrl
  475.     scroll        Yes
  476.     scrollok    Yes
  477.     setscrreg    Yes        wsetscrreg
  478.     setterm        No
  479.     slk_clear    No
  480.     slk_init    No
  481.     slk_label    No
  482.     slk_noutrefresh    No
  483.     slk_refresh    No
  484.     slk_restore    No
  485.     slk_set        No
  486.     slk_touch    No
  487.     standend    Yes        wstandend
  488.     standout    Yes        wstandout
  489.     start_color    No
  490.     subpad        No
  491.     subwin        Yes
  492.     syncok        Yes
  493.     timeout        Yes        wtimeout
  494.     touchline    Yes
  495.     touchln        Yes        wtouchln
  496.     touchoverlap    No
  497.     touchwin    Yes
  498.     typeahead    No
  499.     unctrl        No
  500.     ungetch        No
  501.     vline        Yes        wvline
  502.     
  503. [*] To use any functions in this column, the variable
  504. C<$Curses::OldCurses> must be set to a non-zero value before using the
  505. C<Curses> package.  See L<"Perl 4.X cursperl Compatibility"> for an
  506. example of this.
  507.  
  508. =head2 Supported Variables
  509.     
  510.     LINES        COLS        stdscr[*]    curscr[*]
  511.     
  512. =head2 Supported Constants
  513.     
  514.     OK        ERR
  515.     
  516.     ACS_BLOCK    ACS_BOARD    ACS_BTEE    ACS_BULLET
  517.     ACS_CKBOARD    ACS_DARROW    ACS_DEGREE    ACS_DIAMOND
  518.     ACS_HLINE    ACS_LANTERN    ACS_LARROW    ACS_LLCORNER
  519.     ACS_LRCORNER    ACS_LTEE    ACS_PLMINUS    ACS_PLUS
  520.     ACS_RARROW    ACS_RTEE    ACS_S1        ACS_S9
  521.     ACS_TTEE    ACS_UARROW    ACS_ULCORNER    ACS_URCORNER
  522.     ACS_VLINE
  523.     
  524.     A_ALTCHARSET    A_ATTRIBUTES    A_BLINK        A_BOLD
  525.     A_CHARTEXT    A_COLOR        A_DIM        A_INVIS
  526.     A_NORMAL    A_PROTECT    A_REVERSE    A_STANDOUT
  527.     A_UNDERLINE
  528.     
  529.     COLOR_BLACK    COLOR_BLUE    COLOR_CYAN    COLOR_GREEN
  530.     COLOR_MAGENTA    COLOR_RED    COLOR_WHITE    COLOR_YELLOW
  531.     
  532.     KEY_A1        KEY_A3        KEY_B2        KEY_BACKSPACE
  533.     KEY_BEG        KEY_BREAK    KEY_BTAB    KEY_C1
  534.     KEY_C3        KEY_CANCEL    KEY_CATAB    KEY_CLEAR
  535.     KEY_CLOSE    KEY_COMMAND    KEY_COPY    KEY_CREATE
  536.     KEY_CTAB    KEY_DC        KEY_DL        KEY_DOWN
  537.     KEY_EIC        KEY_END        KEY_ENTER    KEY_EOL
  538.     KEY_EOS        KEY_EXIT    KEY_F0        KEY_FIND
  539.     KEY_HELP    KEY_HOME    KEY_IC        KEY_IL
  540.     KEY_LEFT    KEY_LL        KEY_MARK    KEY_MAX
  541.     KEY_MESSAGE    KEY_MIN        KEY_MOVE    KEY_NEXT
  542.     KEY_NPAGE    KEY_OPEN    KEY_OPTIONS    KEY_PPAGE
  543.     KEY_PREVIOUS    KEY_PRINT    KEY_REDO    KEY_REFERENCE
  544.     KEY_REFRESH    KEY_REPLACE    KEY_RESET    KEY_RESTART
  545.     KEY_RESUME    KEY_RIGHT    KEY_SAVE    KEY_SBEG
  546.     KEY_SCANCEL    KEY_SCOMMAND    KEY_SCOPY    KEY_SCREATE
  547.     KEY_SDC        KEY_SDL        KEY_SELECT    KEY_SEND
  548.     KEY_SEOL    KEY_SEXIT    KEY_SF        KEY_SFIND
  549.     KEY_SHELP    KEY_SHOME    KEY_SIC        KEY_SLEFT
  550.     KEY_SMESSAGE    KEY_SMOVE    KEY_SNEXT    KEY_SOPTIONS
  551.     KEY_SPREVIOUS    KEY_SPRINT    KEY_SR        KEY_SREDO
  552.     KEY_SREPLACE    KEY_SRESET    KEY_SRIGHT    KEY_SRSUME
  553.     KEY_SSAVE    KEY_SSUSPEND    KEY_STAB    KEY_SUNDO
  554.     KEY_SUSPEND    KEY_UNDO    KEY_UP
  555.     
  556. =head2 curses(3) items not supported by C<Curses>
  557.     
  558.     Functions
  559.     ---------
  560.     tstp printw wprintw mvprintw mvwprintw scanw wscanw mvscanw mvwscanw
  561.     _putchar fullname
  562.     
  563.     Variables
  564.     ---------
  565.     ttytype Def_term My_term
  566.  
  567. [*] stdscr and curscr are also available via the Perl functions C<stdscr>
  568. and C<curscr>.  See L<"Perl 4.X cursperl Compatibility"> for more
  569. information.
  570.