diff options
Diffstat (limited to 'Modules/_cursesmodule.c')
-rw-r--r-- | Modules/_cursesmodule.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 7962936..1f6897a 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -1163,8 +1163,16 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) if (!PyErr_Occurred()) PyErr_SetString(PyCursesError, "no input"); return NULL; - } else if (rtn<=255) { - return Py_BuildValue("C", rtn); + } else if (rtn <= 255) { +#ifdef NCURSES_VERSION_MAJOR +#if NCURSES_VERSION_MAJOR*100+NCURSES_VERSION_MINOR <= 507 + /* Work around a bug in ncurses 5.7 and earlier */ + if (rtn < 0) { + rtn += 256; + } +#endif +#endif + return PyUnicode_FromOrdinal(rtn); } else { const char *knp = keyname(rtn); return PyUnicode_FromString((knp == NULL) ? "" : knp); |