]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_getch.3x.html
ncurses 6.0 - patch 20160514
[ncurses.git] / doc / html / man / curs_getch.3x.html
index 9b3bdc42ace740ac19afab4f0338722043e7e989..90d336f955c5605711e4228d2e548af1e6ddf719 100644 (file)
@@ -1,7 +1,7 @@
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2015,2016 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getch.3x,v 1.42 2015/07/21 08:44:04 tom Exp @
+  * @Id: curs_getch.3x,v 1.45 2016/05/15 01:05:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 
 
 
-</PRE>
-<H2><a name="h2-NAME">NAME</a></H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG>, <STRONG>has_key</STRONG> - get
        (or push back) characters from <STRONG>curses</STRONG> terminal keyboard
 
 
-</PRE>
-<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
 
 
-</PRE>
-<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE>
-<H3><a name="h3-Reading-characters">Reading characters</a></H3><PRE>
+</PRE><H3><a name="h3-Reading-characters">Reading characters</a></H3><PRE>
        The <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG> and <STRONG>mvwgetch</STRONG>, routines  read  a
        character  from the window.  In no-delay mode, if no input
        is waiting, the value <STRONG>ERR</STRONG> is returned.  In delay mode, the
        called before another character is read.
 
 
-</PRE>
-<H3><a name="h3-Keypad-mode">Keypad mode</a></H3><PRE>
+</PRE><H3><a name="h3-Keypad-mode">Keypad mode</a></H3><PRE>
        If  <STRONG>keypad</STRONG> is <STRONG>TRUE</STRONG>, and a function key is pressed, the to-
        ken for that function key is returned instead of  the  raw
-       characters.   Possible function keys are defined in <STRONG>&lt;curs-</STRONG>
-       <STRONG>es.h&gt;</STRONG> as macros with values outside  the  range  of  8-bit
-       characters  whose names begin with <STRONG>KEY_</STRONG>.  Thus, a variable
-       intended to hold the return value of a function  key  must
-       be of short size or larger.
+       characters:
+
+       <STRONG>o</STRONG>   The  predefined function keys are listed in <STRONG>&lt;curses.h&gt;</STRONG>
+           as macros with values outside the range of 8-bit char-
+           acters.  Their names begin with <STRONG>KEY_</STRONG>.
+
+       <STRONG>o</STRONG>   Other  (user-defined)  function  keys which may be de-
+           fined using <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> have no names, but also are
+           expected  to  have  values  outside the range of 8-bit
+           characters.
+
+       Thus, a variable intended to hold the return  value  of  a
+       function key must be of short size or larger.
 
        When a character that could be the beginning of a function
        key is received (which, on modern terminals, means an  es-
        cape key and the escape is returned to the program.
 
 
-</PRE>
-<H3><a name="h3-Ungetting-characters">Ungetting characters</a></H3><PRE>
+</PRE><H3><a name="h3-Ungetting-characters">Ungetting characters</a></H3><PRE>
        The <STRONG>ungetch</STRONG> routine places <EM>ch</EM> back onto the input queue to
        be returned by the next call to <STRONG>wgetch</STRONG>.  There is just one
        input queue for all windows.
 
 
-</PRE>
-<H3><a name="h3-Predefined-key-codes">Predefined key-codes</a></H3><PRE>
-       The following special keys, defined in <STRONG>&lt;curses.h&gt;</STRONG>, may  be
-       returned  by <STRONG>getch</STRONG> if <STRONG>keypad</STRONG> has been enabled.  Not all of
-       these are necessarily supported on any  particular  termi-
-       nal.
+</PRE><H3><a name="h3-Predefined-key-codes">Predefined key-codes</a></H3><PRE>
+       The following special keys are defined in <STRONG>&lt;curses.h&gt;</STRONG>.
+
+       <STRONG>o</STRONG>   Except for the special case <STRONG>KEY_RESIZE</STRONG>, it  is  neces-
+           sary to enable <STRONG>keypad</STRONG> for <STRONG>getch</STRONG> to return these codes.
+
+       <STRONG>o</STRONG>   Not all of these are necessarily supported on any par-
+           ticular terminal.
+
+       <STRONG>o</STRONG>   The naming convention may seem obscure, with some  ap-
+           parent  misspellings  (such  as "RSUME" for "resume").
+           The names correspond to the long  terminfo  capability
+           names  for the keys, and were defined long ago, in the
+           1980s.
 
             <EM>Name</EM>            <EM>Key</EM> <EM>name</EM>
             -------------------------------------------------
             KEY_RESET       Reset or hard reset
             KEY_PRINT       Print or copy
             KEY_LL          Home down or bottom (lower left)
+
             KEY_A1          Upper left of keypad
             KEY_A3          Upper right of keypad
             KEY_B2          Center of keypad
             KEY_FIND        Find key
             KEY_HELP        Help key
             KEY_MARK        Mark key
-
             KEY_MESSAGE     Message key
             KEY_MOUSE       Mouse event read
             KEY_MOVE        Move key
                          +-----+------+-------+
                          | <STRONG>C1</STRONG>  | <STRONG>down</STRONG> |  <STRONG>C3</STRONG>   |
                          +-----+------+-------+
-       A few of these predefined values do <EM>not</EM>  correspond  to  a
+       A  few  of  these predefined values do <EM>not</EM> correspond to a
        real key:
 
-       <STRONG>o</STRONG>   <STRONG>KEY_RESIZE</STRONG>  is  returned  when the <STRONG>SIGWINCH</STRONG> signal has
-           been detected (see <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> and <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>).
+       <STRONG>o</STRONG>   <STRONG>KEY_RESIZE</STRONG> is returned when the  <STRONG>SIGWINCH</STRONG>  signal  has
+           been  detected  (see  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> and <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>).
+           This code is returned whether or not <STRONG>keypad</STRONG>  has  been
+           enabled.
 
-       <STRONG>o</STRONG>   <STRONG>KEY_MOUSE</STRONG>   is   returned   for   mouse-events    (see
-           <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>).
+       <STRONG>o</STRONG>   <STRONG>KEY_MOUSE</STRONG>    is   returned   for   mouse-events   (see
+           <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>).  This code relies upon whether or not
+           <STRONG><A HREF="keypad.3x.html">keypad(3x)</A></STRONG> has been enabled, because (e.g., with <EM>xterm</EM>
+           mouse prototocol) ncurses must read escape  sequences,
+           just like a function key.
 
 
-</PRE>
-<H3><a name="h3-Testing-key-codes">Testing key-codes</a></H3><PRE>
+</PRE><H3><a name="h3-Testing-key-codes">Testing key-codes</a></H3><PRE>
        The  <STRONG>has_key</STRONG> routine takes a key-code value from the above
        list, and returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> according to  whether  the
        current terminal type recognizes a key with that value.
                string (see <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>).
 
 
-</PRE>
-<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All  routines  return  the integer <STRONG>ERR</STRONG> upon failure and an
        integer value other than <STRONG>ERR</STRONG> (<STRONG>OK</STRONG> in the case of ungetch())
        upon successful completion.
        outside the window, or if the window pointer is null.
 
 
-</PRE>
-<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Use of the escape key by a programmer for a single charac-
        ter  function  is discouraged, as it will cause a delay of
        up to one second while the keypad code looks for a follow-
        Ins key is usually mapped to <STRONG>KEY_IC</STRONG>.
 
 
-</PRE>
-<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  *get* functions are described in the XSI Curses stan-
        dard, Issue 4.  They  read  single-byte  characters  only.
        The  standard  specifies  that they return <STRONG>ERR</STRONG> on failure,
        mentations)  depending on whether an input timeout or non-
        blocking mode has been set.
 
+       <STRONG>KEY_MOUSE</STRONG> is mentioned in XSI Curses, along with a few re-
+       lated terminfo capabilities, but no higher-level functions
+       use the feature.  The implementation in ncurses is an  ex-
+       tension.
+
+       <STRONG>KEY_RESIZE</STRONG>  is an extension first implemented for ncurses.
+       NetBSD curses later added this extension.
+
        Programmers concerned about portability should be prepared
        for  either  of two cases: (a) signal receipt does not in-
        terrupt <STRONG>getch</STRONG>; (b) signal  receipt  interrupts  <STRONG>getch</STRONG>  and
        <STRONG>ES_VERSION</STRONG> feature macro.
 
 
-</PRE>
-<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,       <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,
        <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,   <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>,   <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,   <STRONG>re-</STRONG>
        <STRONG><A HREF="resizeterm.3x.html">sizeterm(3x)</A></STRONG>.