---
name: "inch"
section: "3x"
platform: "linux"
package: "ncurses"
version: "6.6-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/curs_inch/3x"
---

# inch(3x)

get a curses character from a window

Part of [curs\_inch(3x)](/curs_inch/3x.md).

## NAME

**inch**, **winch**, **mvinch**, **mvwinch** - get a *curses* character from a window

## SYNOPSIS

```
#include <curses.h>
```

**chtype inch(void);** **chtype winch(WINDOW \*** *win***);** **chtype mvinch(int** *y***, int** *x***);** **chtype mvwinch(WINDOW \*** *win***, int** *y***, int** *x***);**

## DESCRIPTION

**winch** **returns the** *curses* **character,** **including its attributes and color pair identifier,** **at the cursor position in the window** *win*. **Subsection “Video Attributes” of attron(3X) explains** **how to extract these data from a** *chtype*. **ncurses(3X) describes the variants of this function.**

## RETURN VALUE

**These functions return** **OK** **on success and** **ERR** **on failure.**

**In** *ncurses*, **they return** **ERR** **if** *win* **is** *NULL*.

**Functions prefixed with “mv” first perform cursor movement and** **fail if the position** (*y*, *x*) **is outside the window boundaries.**

## NOTES

**inch**, **mvinch**, **and** **mvwinch** **may be implemented as macros.**

**These functions do not fail if the window contains cells of** *curses* **complex characters;** **that is,** **if they contain characters with codes wider than eight bits** **(or greater than 255 as an unsigned decimal integer).** **They instead extract only the low-order eight bits of the character code** **from the cell.**

## PORTABILITY

**X/Open Curses Issue 4 describes these functions.** **It specifies no error conditions for them.**

## HISTORY

**The original** *curses* **in 4BSD (1980) defined** *winch* **as a macro accessing the** *WINDOW* **structure member representing character cell data,** **at that time a** *char*, **containing only a 7-bit ASCII character code** **and a “standout“ attribute bit,** **the only one the library supported.**

**SVr2** *curses* **(1984)** **extended this approach,** **widening the character code to eight bits** **and permitting several attributes to be combined with it** **by storing them together in a** *chtype*, **an alias of** *unsigned short*. **Because a macro was used,** **its value was not type-checked** **as a function return value could have been.** **Goodheart documented SVr3 (1987)** *winch* **as returning an** *int*. **SVr3.1's (1987)** *chtype* **became an alias of** *unsigned long*, **using 16 bits for the character code and** **widening the type in practical terms to 32 bits,** **as 64-bit Unix systems were not yet in wide use,** **and fixed-width integral types would not be standard until ISO C99.** **SVr3.2 (1988)** **added a 6-bit color pair identifier alongside the attributes.**

## SEE ALSO

**curs\_in\_wch(3X) describes comparable functions of the** *ncurses* **library in its wide-character configuration** (*ncursesw*).

**curses(3X),** **curs\_instr(3X)**
