# curs_get_wch

## NAME



           **get_wch** , **wget_wch** , **mvget_wch** , **mvwget_wch** , **unget_wch** - get (or push
           back) a wide character from curses terminal keyboard
    


## SYNOPSIS



           **#include <curses.h>**
    
           **int get_wch(wint_t ***_wch_**);**
           **int wget_wch(WINDOW ***_win_**, wint_t ***_wch_**);**
           **int mvget_wch(int** _y_**, int** _x_**, wint_t ***_wch_**);**
           **int mvwget_wch(WINDOW ***_win_**, int** _y_**, int** _x_**, wint_t ***_wch_**);**
    
           **int unget_wch(const wchar_t** _wch_**);**
    


## DESCRIPTION



       **wget_wch**
           The  **get_wch** , **wget_wch** , **mvget_wch** , and **mvwget_wch** functions read a
           character from the terminal associated with the current or  speci‐
           fied  window.  In no-delay mode, if no input is waiting, the value
           **ERR** is returned.  In delay mode, the program waits until the  sys‐
           tem  passes text through to the program.  Depending on the setting
           of **cbreak** , this is after one character (cbreak mode), or after the
           first newline (nocbreak mode).  In half-delay  mode,  the  program
           waits  until  the  user types a character or the specified timeout
           interval has elapsed.
    
           Unless **noecho** has been set, these routines echo the character into
           the designated window.
    
           If the window is not a pad and has been moved  or  modified  since
           the  last call to **wrefresh** , **wrefresh** will be called before another
           character is read.
    
           If **keypad** is enabled, these functions respond to the pressing of a
           function key by setting the object pointed to by _wch_ to  the  key‐
           code assigned to the function key, and returning **KEY_CODE_YES**.  If
           a  character  (such  as  escape)  that could be the beginning of a
           function key is received, curses sets a timer.  If  the  remainder
           of  the  sequence  does  arrive within the designated time, curses
           passes through the character; otherwise, curses returns the  func‐
           tion  key value.  For this reason, many terminals experience a de‐
           lay between the time a user presses the escape key  and  the  time
           the escape is returned to the program.
    
           The keycodes returned by these functions are the same as those re‐
           turned by **wgetch** :
    
           •   The predefined function keys are listed in **< curses.h> **as
               macros with values outside the range of 8-bit characters.
               Their names begin with **KEY_**.
    
           •   Other (user-defined) function keys which may be defined using
               **define_key**(3X) have no names, but also are expected to have
               values outside the range of 8-bit characters.
    
       **unget_wch**
           The **unget_wch** function pushes the wide character _wch_ back onto the
           head of the input queue, so the wide character is returned by the
           next call to **get_wch**.  The pushback of one character is guaran‐
           teed.  If the program calls **unget_wch** too many times without an
           intervening call to **get_wch** , the operation may fail.
    
           Unlike **ungetch** and **wgetch** , **unget_wch** cannot distinguish special
           characters returned by **wget_wch** from ordinary characters.  An ap‐
           plication can push special keys which it may read via **wget_wch** by
           checking for the **KEY_CODE_YES** result, and using **ungetch** for those
           special keys.
    


## NOTES



           The header file **< curses.h> **automatically includes the header file
           **< stdio.h>**.
    
           Applications should not define the escape key by itself as a sin‐
           gle-character function.
    
           When using **get_wch** , **wget_wch** , **mvget_wch** , or **mvwget_wch** , applica‐
           tions should not use **nocbreak** mode and **echo** mode at the same time.
           Depending on the state of the tty driver when each character is
           typed, the program may produce undesirable results.
    
           All functions except **wget_wch** and **unget_wch** may be macros.
    


## RETURN VALUE



           When **get_wch** , **wget_wch** , **mvget_wch** , and **mvwget_wch** functions suc‐
           cessfully report the pressing of a function key, they return
           **KEY_CODE_YES**.  When they successfully report a wide character,
           they return **OK**.  Otherwise, they return **ERR**.
    
           Upon successful completion, **unget_wch** returns **OK**.  Otherwise, the
           function returns **ERR**.
    
           Functions with a “mv” prefix first perform a cursor movement using
           **wmove** , and return an error if the position is outside the window,
           or if the window pointer is null.
    


* * *