]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_getch.3x.html
ncurses 6.0 - patch 20150926
[ncurses.git] / doc / html / man / curs_getch.3x.html
index 70553d2ef6dc5757ac799b7fa085f8fa17c78fc2..1df5dd04f0b12e5ca3879ce56fc97a376b80706f 100644 (file)
@@ -1,7 +1,7 @@
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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.39 2014/05/24 20:16:31 tom Exp @
+  * @Id: curs_getch.3x,v 1.43 2015/09/19 22:25:05 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
@@ -39,8 +39,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_getch 3x</H1>
-<HR>
+<H1 class="no-header">curs_getch 3x</H1>
 <PRE>
 <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>                                           <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
 
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win);</EM>
+       <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <EM>ch</EM><STRONG>);</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>
+<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
        fied since the last call to  <STRONG>wrefresh</STRONG>,  <STRONG>wrefresh</STRONG>  will  be
        called before another character is read.
 
+
+</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>
        experience a delay between the time a user presses the es-
        cape key and the escape is returned to the program.
 
+
+</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-Function-Keys">Function Keys</a></H3><PRE>
-       The following function keys, defined in <STRONG>&lt;curses.h&gt;</STRONG>,  might
-       be  returned  by  <STRONG>getch</STRONG>  if <STRONG>keypad</STRONG> has been enabled.  Note
-       that not all of these are  necessarily  supported  on  any
-       particular terminal.
+<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.
 
             <EM>Name</EM>            <EM>Key</EM> <EM>name</EM>
             -------------------------------------------------
             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
-
             KEY_NEXT        Next object key
             KEY_OPEN        Open key
             KEY_OPTIONS     Options key
 
        Keypad is arranged like this:
 
-
                          +-----+------+-------+
                          | <STRONG>A1</STRONG>  |  <STRONG>up</STRONG>  |  <STRONG>A3</STRONG>   |
                          +-----+------+-------+
                          +-----+------+-------+
                          | <STRONG>C1</STRONG>  | <STRONG>down</STRONG> |  <STRONG>C3</STRONG>   |
                          +-----+------+-------+
-       The <STRONG>has_key</STRONG> routine takes a key value from the above list,
-       and returns TRUE or FALSE according to whether the current
-       terminal type recognizes a key with that value.  Note that
-       a  few  values  do  not  correspond  to  a real key, e.g.,
-       <STRONG>KEY_RESIZE</STRONG> and <STRONG>KEY_MOUSE</STRONG>.  See <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> for more de-
-       tails  about  <STRONG>KEY_RESIZE</STRONG>, and <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> for a discus-
-       sion of <STRONG>KEY_MOUSE</STRONG>.
+       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>).
+           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>).  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>
+       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.
+
+       The library also supports these extensions:
+
+          <STRONG>define_key</STRONG>
+               defines a key-code for a  given  string  (see  <STRONG>de-</STRONG>
+               <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG>).
+
+          <STRONG>key_defined</STRONG>
+               checks  if there is a key-code defined for a given
+               string (see <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>).
 
 
 </PRE>
        up to one second while the keypad code looks for a follow-
        ing function-key sequence.
 
-       Note that some keys may be the same as commonly used  con-
-       trol keys, e.g., <STRONG>KEY_ENTER</STRONG> versus control/M, <STRONG>KEY_BACKSPACE</STRONG>
-       versus control/H.  Some curses implementations may  differ
-       according  to  whether  they treat these control keys spe-
-       cially (and ignore the terminfo), or use the terminfo def-
-       initions.   <STRONG>Ncurses</STRONG>  uses  the terminfo definition.  If it
-       says  that  <STRONG>KEY_ENTER</STRONG>  is  control/M,  <STRONG>getch</STRONG>  will  return
-       <STRONG>KEY_ENTER</STRONG> when you press control/M.
+       Some keys may be the same as commonly used  control  keys,
+       e.g.,  <STRONG>KEY_ENTER</STRONG>  versus  control/M,  <STRONG>KEY_BACKSPACE</STRONG> versus
+       control/H.  Some curses implementations may differ accord-
+       ing  to  whether  they  treat these control keys specially
+       (and ignore the terminfo), or  use  the  terminfo  defini-
+       tions.   <STRONG>Ncurses</STRONG> uses the terminfo definition.  If it says
+       that <STRONG>KEY_ENTER</STRONG> is control/M, <STRONG>getch</STRONG> will  return  <STRONG>KEY_ENTER</STRONG>
+       when you press control/M.
 
        Generally,  <STRONG>KEY_ENTER</STRONG> denotes the character(s) sent by the
        <EM>Enter</EM> key on the numeric keypad:
        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
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-Function-Keys">Function Keys</a></li>
+<li><a href="#h3-Reading-characters">Reading characters</a></li>
+<li><a href="#h3-Keypad-mode">Keypad mode</a></li>
+<li><a href="#h3-Ungetting-characters">Ungetting characters</a></li>
+<li><a href="#h3-Predefined-key-codes">Predefined key-codes</a></li>
+<li><a href="#h3-Testing-key-codes">Testing key-codes</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>