.\"***************************************************************************
-.\" Copyright 2018-2022,2023 Thomas E. Dickey *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey *
.\" Copyright 1998-2010,2017 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\"
.\" Author: Thomas E. Dickey 1997
.\"
-.\" $Id: define_key.3x,v 1.27 2023/09/16 23:37:03 tom Exp $
-.TH define_key 3X 2023-09-16 "ncurses 6.4" "Library calls"
+.\" $Id: define_key.3x,v 1.50 2024/07/27 19:43:41 tom Exp $
+.TH define_key 3X 2024-07-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.
.SH NAME
\fB\%define_key\fP \-
-define a \fIcurses\fR keycode
+define a \fIcurses\fP function key code
.SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint define_key(const char *\fIdefinition\fB, int \fIkeycode\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint define_key(const char * \fIdefinition\fP, int \fIkey-code\fP);
+.fi
.SH DESCRIPTION
-This is an extension to the curses library.
-It permits an application to define keycodes with their corresponding control
-strings, so that the ncurses library will interpret them just as it would
-the predefined codes in the terminfo database.
+The
+.B \%define_key
+.I \%ncurses
+extension permits a
+.I curses
+application to
+.I bind
+a string
+.I definition
+to the function key
+.I key-code
+returned by \fB\%wgetch\fP(3X)
+(wide-character API users:
+\fB\%wget_wch\fP(3X))
+when \fB\%keypad\fP(3X) is enabled in a window and a function key is
+pressed.
+.I \%ncurses
+interprets such a binding as it does those in the
+.I \%term\%info
+database entry for the terminal type.
.PP
-If the given string is null, any existing definition for the keycode is
-removed.
-Similarly, if the given keycode is negative or zero, any existing string
-for the given definition is removed.
+A
+.I definition
+of
+.B NULL
+removes any existing binding from
+.IR key-code "."
+Similarly,
+a non-positive
+.I key-code
+removes an existing binding for
+.IR definition ","
+if any.
.SH RETURN VALUE
-The keycode must be greater than zero, and the string non-null,
-otherwise \fBERR\fP is returned.
-\fBERR\fP may also be returned if there is insufficient memory to allocate the
-data to store the definition.
-If no error is detected, \fBOK\fP is returned.
+.B \%define_key
+returns
+.B ERR
+if
+.bP
+.I definition
+is
+.B NULL
+and
+.I key-code
+is nonpositive,
+or
+.bP
+insufficient memory is available to bind
+.I definition
+to
+.IR key-code "."
+.PP
+Otherwise,
+.B \%define_key
+returns
+.BR OK "."
+.SH EXTENSIONS
+.B \%define_key
+is an
+.I \%ncurses
+extension.
.SH PORTABILITY
-These routines are specific to ncurses.
-They were not supported on
-Version 7, BSD or System V implementations.
-It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
+.PP
+NetBSD
+.I curses
+since 2.0 (2004) supports
+.IR \%define_key "."
+.SH AUTHORS
+Thomas Dickey
.SH SEE ALSO
-\fBkeyok\fP(3X),
-\fBkey_defined\fP(3X).
-.SH AUTHOR
-Thomas Dickey.
+\fB\%curses\fP(3X),
+\fB\%keybound\fP(3X),
+\fB\%keyok\fP(3X),
+\fB\%key_defined\fP(3X),
+\fB\%terminfo\fP(5)