## 6.15.3 Constants

The `curses` module defines the following data members:

`ERR`
  Some curses routines that return an integer, such as `getch()`, return `ERR` upon failure.

`OK`
  Some curses routines that return an integer, such as `napms()`, return `OK` upon success.

`version`
  A string representing the current version of the module. Also available as `__version__`.

Several constants are available to specify character cell attributes:

Attribute | Meaning
--- | ---
`A_ALTCHARSET` | Alternate character set mode.
`A_BLINK` | Blink mode.
`A_BOLD` | Bold mode.
`A_DIM` | Dim mode.
`A_NORMAL` | Normal attribute.
`A_STANDOUT` | Standout mode.
`A_UNDERLINE` | Underline mode.

Keys are referred to by integer constants with names starting with "`KEY_`". The exact keycaps available are system dependent.

Key constant | Key
--- | ---
`KEY_MIN` | Minimum key value
`KEY_BREAK` | Break key (unreliable)
`KEY_DOWN` | Down-arrow
`KEY_UP` | Up-arrow
`KEY_LEFT` | Left-arrow
`KEY_RIGHT` | Right-arrow
`KEY_HOME` | Home key (upward+left arrow)
`KEY_BACKSPACE` | Backspace (unreliable)
`KEY_F0` | Function keys. Up to 64 function keys are supported.
`KEY_Fn` | Value of function key n
`KEY_DL` | Delete line
`KEY_IL` | Insert line
`KEY_DC` | Delete character
`KEY_IC` | Insert char or enter insert mode
`KEY_EIC` | Exit insert char mode
`KEY_CLEAR` | Clear screen
`KEY_EOS` | Clear to end of screen
`KEY_EOL` | Clear to end of line
`KEY_SF` | Scroll 1 line forward
`KEY_SR` | Scroll 1 line backward (reverse)
`KEY_NPAGE` | Next page
`KEY_PPAGE` | Previous page
`KEY_STAB` | Set tab
`KEY_CTAB` | Clear tab
`KEY_CATAB` | Clear all tabs
`KEY_ENTER` | Enter or send (unreliable)
`KEY_SRESET` | Soft (partial) reset (unreliable)
`KEY_RESET` | Reset or hard reset (unreliable)
`KEY_PRINT` | Print
`KEY_LL` | Home down or bottom (lower left)
`KEY_A1` | Upper left of keypad
`KEY_A3` | Upper right of keypad
`KEY_B2` | Center of keypad
`KEY_C1` | Lower left of keypad
`KEY_C3` | Lower right of keypad
`KEY_BTAB` | Back tab
`KEY_BEG` | Beg (beginning)
`KEY_CANCEL` | Cancel
`KEY_CLOSE` | Close
`KEY_COMMAND` | Cmd (command)
`KEY_COPY` | Copy
`KEY_CREATE` | Create
`KEY_END` | End
`KEY_EXIT` | Exit
`KEY_FIND` | Find
`KEY_HELP` | Help
`KEY_MARK` | Mark
`KEY_MESSAGE` | Message
`KEY_MOVE` | Move
`KEY_NEXT` | Next
`KEY_OPEN` | Open
`KEY_OPTIONS` | Options
`KEY_PREVIOUS` | Prev (previous)
`KEY_REDO` | Redo
`KEY_REFERENCE` | Ref (reference)
`KEY_REFRESH` | Refresh
`KEY_REPLACE` | Replace
`KEY_RESTART` | Restart
`KEY_RESUME` | Resume
`KEY_SAVE` | Save
`KEY_SBEG` | Shifted Beg (beginning)
`KEY_SCANCEL` | Shifted Cancel
`KEY_SCOMMAND` | Shifted Command
`KEY_SCOPY` | Shifted Copy
`KEY_SCREATE` | Shifted Create
`KEY_SDC` | Shifted Delete char
`KEY_SDL` | Shifted Delete line
`KEY_SELECT` | Select
`KEY_SEND` | Shifted End
`KEY_SEOL` | Shifted Clear line
`KEY_SEXIT` | Shifted Dxit
`KEY_SFIND` | Shifted Find
`KEY_SHELP` | Shifted Help
`KEY_SHOME` | Shifted Home
`KEY_SIC` | Shifted Input
`KEY_SLEFT` | Shifted Left arrow
`KEY_SMESSAGE` | Shifted Message
`KEY_SMOVE` | Shifted Move
`KEY_SNEXT` | Shifted Next
`KEY_SOPTIONS` | Shifted Options
`KEY_SPREVIOUS` | Shifted Prev
`KEY_SPRINT` | Shifted Print
`KEY_SREDO` | Shifted Redo
`KEY_SREPLACE` | Shifted Replace
`KEY_SRIGHT` | Shifted Right arrow
`KEY_SRSUME` | Shifted Resume
`KEY_SSAVE` | Shifted Save
`KEY_SSUSPEND` | Shifted Suspend
`KEY_SUNDO` | Shifted Undo
`KEY_SUSPEND` | Suspend
`KEY_UNDO` | Undo
`KEY_MOUSE` | Mouse event has occurred
`KEY_RESIZE` | Terminal resize event
`KEY_MAX` | Maximum key value

On VT100s and their software emulations, such as X terminal emulators, there are normally at least four function keys (`KEY_F1`, `KEY_F2`, `KEY_F3`, `KEY_F4`) available, and the arrow keys mapped to `KEY_UP`, `KEY_DOWN`, `KEY_LEFT` and `KEY_RIGHT` in the obvious way. If your machine has a PC keyboard, it is safe to expect arrow keys and twelve function keys (older PC keyboards may have only ten function keys); also, the following keypad mappings are standard:

Keycap | Constant
--- | ---
`Insert` | KEY_IC
`Delete` | KEY_DC
`Home` | KEY_HOME
`End` | KEY_END
`Page Up` | KEY_NPAGE
`Page Down` | KEY_PPAGE

The following table lists characters from the alternate character set. These are inherited from the VT100 terminal, and will generally be available on software emulations such as X terminals. When there is no graphic available, curses falls back on a crude printable ASCII approximation. Note: These are available only after `initscr()` has been called.

ACS code | Meaning
--- | ---
`ACS_BBSS` | alternate name for upper right corner
`ACS_BLOCK` | solid square block
`ACS_BOARD` | board of squares
`ACS_BSBS` | alternate name for horizontal line
`ACS_BSSB` | alternate name for upper left corner
`ACS_BSSS` | alternate name for top tee
`ACS_BTEE` | bottom tee
`ACS_BULLET` | bullet
`ACS_CKBOARD` | checker board (stipple)
`ACS_DARROW` | arrow pointing down
`ACS_DEGREE` | degree symbol
`ACS_DIAMOND` | diamond
`ACS_GEQUAL` | greater-than-or-equal-to
`ACS_HLINE` | horizontal line
`ACS_LANTERN` | lantern symbol
`ACS_LARROW` | left arrow
`ACS_LEQUAL` | less-than-or-equal-to
`ACS_LLCORNER` | lower left-hand corner
`ACS_LRCORNER` | lower right-hand corner
`ACS_LTEE` | left tee
`ACS_NEQUAL` | not-equal sign
`ACS_PI` | letter pi
`ACS_PLMINUS` | plus-or-minus sign
`ACS_PLUS` | big plus sign
`ACS_RARROW` | right arrow
`ACS_RTEE` | right tee
`ACS_S1` | scan line 1
`ACS_S3` | scan line 3
`ACS_S7` | scan line 7
`ACS_S9` | scan line 9
`ACS_SBBS` | alternate name for lower right corner
`ACS_SBSB` | alternate name for vertical line
`ACS_SBSS` | alternate name for right tee
`ACS_SSBB` | alternate name for lower left corner
`ACS_SSBS` | alternate name for bottom tee
`ACS_SSSB` | alternate name for left tee
`ACS_SSSS` | alternate name for crossover or big plus
`ACS_STERLING` | pound sterling
`ACS_TTEE` | top tee
`ACS_UARROW` | up arrow
`ACS_ULCORNER` | upper left corner
`ACS_URCORNER` | upper right corner
`ACS_VLINE` | vertical line

The following table lists the predefined colors:

Constant | Color
--- | ---
`COLOR_BLACK` | Black
`COLOR_BLUE` | Blue
`COLOR_CYAN` | Cyan (light greenish blue)
`COLOR_GREEN` | Green
`COLOR_MAGENTA` | Magenta (purplish red)
`COLOR_RED` | Red
`COLOR_WHITE` | White
`COLOR_YELLOW` | Yellow