diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -870,31 +870,32 @@ static PyObject * PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) { int x, y; - int rtn; + int ct; + wint_t rtn; switch (PyTuple_Size(args)) { case 0: Py_BEGIN_ALLOW_THREADS - rtn = wgetch(self->win); + ct = wget_wch(self->win, &rtn); Py_END_ALLOW_THREADS break; case 2: if (!PyArg_ParseTuple(args,"ii;y,x",&y,&x)) return NULL; Py_BEGIN_ALLOW_THREADS - rtn = mvwgetch(self->win,y,x); + ct = mvwget_wch(self->win,y,x,&rtn); Py_END_ALLOW_THREADS break; default: PyErr_SetString(PyExc_TypeError, "getkey requires 0 or 2 arguments"); return NULL; } - if (rtn == ERR) { - /* getch() returns ERR in nodelay mode */ + if (ct == ERR) { + /* get_wch() returns ERR in nodelay mode */ PyErr_SetString(PyCursesError, "no input"); return NULL; - } else if (rtn<=255) { - return Py_BuildValue("C", rtn); + } else if (rtn <= 255) { + return PyUnicode_FromOrdinal(rtn); } else { const char *knp; #if defined(__NetBSD__) @@ -935,7 +936,7 @@ PyCursesWindow_Get_WCh(PyCursesWindowObj PyErr_SetString(PyCursesError, "no input"); return NULL; } - return PyLong_FromLong(rtn); + return PyUnicode_FromOrdinal(rtn); } static PyObject *