curs\_getyx(3X) Library calls curs\_getyx(3X)

# [NAME](#NAME)

**getyx**, **getparyx**, **getbegyx**, **getmaxyx** - get *curses* cursor and window coordinates

# [SYNOPSIS](#SYNOPSIS)

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

```
void getyx(WINDOW *win, int y, int x);
void getbegyx(WINDOW *win, int y, int x);
void getmaxyx(WINDOW *win, int y, int x);
```

```
void getparyx(WINDOW *win, int y, int x);
```

# [DESCRIPTION](#DESCRIPTION)

These macros obtain the cursor position and bounds information of a *curses* window *win*. **getyx** stores *win*'s cursor position in the variables *y* and *x*. **getmaxyx** stores *win*'s maximum valid line and column dimensions in *y* and *x*, respectively. Those are one more than the corresponding maximum positions. **getbegyx** similarly stores the position of *win*'s origin relative to that of the screen (for **stdscr**, these coordinates are always **0**).

If *win* is a subwindow (see [**subwin**(3X)](/man/os/ncurses/subwin.3X)), the **getparyx** macro places the coordinates of its origin relative to its parent window into *y* and *x*, and **-1** into both if it is not.

# [RETURN VALUE](#RETURN_VALUE)

No return values are defined for macros. Do not use them as the right-hand side of assignment statements.

# [NOTES](#NOTES)

All of these interfaces are implemented as macros. An “&” operator is not necessary before the variables *y* and *x*.

# [PORTABILITY](#PORTABILITY)

These macros are described in X/Open Curses Issue 4.

*ncurses* also provides functions *getbegy*, *getbegx*, *getcury*, *getcurx*, *getmaxy*, *getmaxx*, *getpary*, and *getparx* for compatibility with System V *curses* that were not standardized; see [**curs\_legacy**(3X)](/man/os/ncurses/curs_legacy.3X).

Although X/Open Curses does not address the issue, many implementations expose members of the *WINDOW* structure containing values corresponding to these macros. Do not rely on their availability; some implementations make *WINDOW* opaque (that is, they do not allow direct access to its members).

Besides the problem of opaque structures, the data stored in like-named members may not have values of the same meaning across different implementations. For example, the values of *WINDOW.\_maxx* and *WINDOW.\_maxy* in *ncurses* have long differed by one from some other implementations. The *getmaxyx* macro hides this difference.

# [HISTORY](#HISTORY)

4BSD (1980) introduced *getyx*.

SVr3 (1987) added *getbegyx* and *getmaxyx*. SVr3.1 later that year supplied *getparyx*.

# [SEE ALSO](#SEE_ALSO)

[**curses**(3X)](/man/os/ncurses/curses.3X), [**curs\_legacy**(3X)](/man/os/ncurses/curs_legacy.3X), [**curs\_opaque**(3X)](/man/os/ncurses/curs_opaque.3X)

2026-03-14 ncurses 6.6

---

Document: getmaxyx(3x) from ncurses 6.6.20261017-r0 (Chainguard OS)
Source: https://github.com/ThomasDickey/ncurses-snapshots
