Index: Modules/_cursesmodule.c =================================================================== --- Modules/_cursesmodule.c (revision 73552) +++ Modules/_cursesmodule.c (working copy) @@ -868,6 +868,7 @@ { int x, y; int rtn; + const char *knp; switch (PyTuple_Size(args)) { case 0: @@ -890,14 +891,17 @@ /* getch() returns ERR in nodelay mode */ PyErr_SetString(PyCursesError, "no input"); return NULL; - } else if (rtn<=255) + } else if (rtn<=255) { return Py_BuildValue("C", rtn); - else + } else { #if defined(__NetBSD__) - return PyUnicode_FromString(unctrl(rtn)); + knp = unctrl(rtn); + return PyUnicode_FromString(knp); #else - return PyUnicode_FromString((const char *)keyname(rtn)); + knp = keyname(rtn); + return PyUnicode_FromString((knp == NULL) ? "" : knp); #endif + } } static PyObject *