@@ -5776,6 +5776,77 @@ _curses_has_key_impl(PyObject *module, int key)
57765776}
57775777#endif
57785778
5779+ #if defined(NCURSES_EXT_FUNCS ) && NCURSES_EXT_FUNCS
5780+ /*[clinic input]
5781+ _curses.define_key
5782+
5783+ definition: str(accept={str, NoneType})
5784+ Escape sequence to bind, or None to remove a binding.
5785+ keycode: int
5786+ Key code to generate.
5787+ /
5788+
5789+ Define an escape sequence for a key code.
5790+
5791+ If definition is None, any existing binding for keycode is removed.
5792+ If keycode is zero or negative, the binding for definition is removed.
5793+ [clinic start generated code]*/
5794+
5795+ static PyObject *
5796+ _curses_define_key_impl (PyObject * module , const char * definition ,
5797+ int keycode )
5798+ /*[clinic end generated code: output=9dc655653bb09062 input=8db9e0d8802c709f]*/
5799+ {
5800+ PyCursesStatefulInitialised (module );
5801+
5802+ return curses_check_err (module , define_key (definition , keycode ),
5803+ "define_key" , NULL );
5804+ }
5805+
5806+ /*[clinic input]
5807+ _curses.key_defined
5808+
5809+ definition: str
5810+ Escape sequence.
5811+ /
5812+
5813+ Return the key code bound to an escape sequence.
5814+
5815+ Return 0 if no key code is bound to the escape sequence, or -1 if the
5816+ escape sequence is a prefix of another bound sequence (so ambiguous).
5817+ [clinic start generated code]*/
5818+
5819+ static PyObject *
5820+ _curses_key_defined_impl (PyObject * module , const char * definition )
5821+ /*[clinic end generated code: output=2d357e01fe277c88 input=03749d7bd79d8d2c]*/
5822+ {
5823+ PyCursesStatefulInitialised (module );
5824+
5825+ return PyLong_FromLong (key_defined (definition ));
5826+ }
5827+
5828+ /*[clinic input]
5829+ _curses.keyok
5830+
5831+ keycode: int
5832+ Key code.
5833+ enable: bool
5834+ Whether the key code is interpreted.
5835+ /
5836+
5837+ Enable or disable interpretation of an individual key code.
5838+ [clinic start generated code]*/
5839+
5840+ static PyObject *
5841+ _curses_keyok_impl (PyObject * module , int keycode , int enable )
5842+ /*[clinic end generated code: output=43eab0b4d9973e44 input=5bee51d850f481b9]*/
5843+ {
5844+ PyCursesStatefulInitialised (module );
5845+
5846+ return curses_check_err (module , keyok (keycode , enable ), "keyok" , NULL );
5847+ }
5848+ #endif
5849+
57795850/*[clinic input]
57805851_curses.init_color
57815852
@@ -7759,6 +7830,9 @@ static PyMethodDef cursesmodule_methods[] = {
77597830 _CURSES_HAS_IC_METHODDEF
77607831 _CURSES_HAS_IL_METHODDEF
77617832 _CURSES_HAS_KEY_METHODDEF
7833+ _CURSES_DEFINE_KEY_METHODDEF
7834+ _CURSES_KEY_DEFINED_METHODDEF
7835+ _CURSES_KEYOK_METHODDEF
77627836 _CURSES_HALFDELAY_METHODDEF
77637837 _CURSES_INIT_COLOR_METHODDEF
77647838 _CURSES_INIT_PAIR_METHODDEF
0 commit comments