---
name: "curs_getyx"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/curs_getyx"
---

# curs\_getyx(3)

get curses cursor and window coordinates

## NAME

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

## 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

**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 numbers in** *y* **and** *x*, **respectively.** **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)),** **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

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

## NOTES

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

## 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).**

**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

**4BSD (1980)** **introduced** *getyx*.

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

## SEE ALSO

**curses(3X),** **curs\_legacy(3X),** **curs\_opaque(3X)**
