diff --git a/Doc/library/msvcrt.rst b/Doc/library/msvcrt.rst
index d43bb4c..9fa49da 100644
--- a/Doc/library/msvcrt.rst
+++ b/Doc/library/msvcrt.rst
@@ -16,6 +16,10 @@
 Further documentation on these functions can be found in the Platform API
 documentation.
 
+The module implements both the normal and wide char variants of the console I/O
+api. The normal API deals only with ASCII characters and is of limited use
+for internationalized applications. The wide char API should be used where 
+ever possible
 
 .. _msvcrt-files:
 
@@ -94,6 +98,13 @@
    return the keycode.  The :kbd:`Control-C` keypress cannot be read with this
    function.
 
+   
+.. function:: getwch()
+
+   Wide char variant of `func:getch`, returns unicode.
+   
+   ..versionadded:: 2.6
+   
 
 .. function:: getche()
 
@@ -101,16 +112,37 @@
    printable character.
 
 
+.. function:: getwche()
+
+   Wide char variant of `func:getche`, returns unicode.
+   
+   ..versionadded:: 2.6
+
+
 .. function:: putch(char)
 
    Print the character *char* to the console without buffering.
 
+   
+.. function:: putwch(unicode_char)
+
+   Wide char variant of `func:putch`, accepts unicode.
+   
+   ..versionadded:: 2.6
+   
 
 .. function:: ungetch(char)
 
    Cause the character *char* to be "pushed back" into the console buffer; it will
    be the next character read by :func:`getch` or :func:`getche`.
 
+   
+.. function:: ungetwch(unicode_char)
+
+   Wide char variant of `func:ungetch`, accepts unicode.
+   
+   ..versionadded:: 2.6
+
 
 .. _msvcrt-other:
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 4db5c3d..c086be9 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -877,6 +877,9 @@
 Extension Modules
 -----------------
 
+- Added wide char functions to msvcrt module: getwch, getwche, putwch and
+  ungetwch. The functions accept or return unicode.
+
 - os.access now returns True on Windows for any existing directory.
 
 - Added warnpy3k function to the warnings module.
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index 3311bd7..982c458 100755
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -144,6 +144,22 @@
 }
 
 static PyObject *
+msvcrt_getwch(PyObject *self, PyObject *args)
+{
+	Py_UNICODE ch;
+	Py_UNICODE u[1];
+
+	if (!PyArg_ParseTuple(args, ":getwch"))
+		return NULL;
+
+	Py_BEGIN_ALLOW_THREADS
+	ch = _getwch();
+	Py_END_ALLOW_THREADS
+	u[0] = ch;
+	return PyUnicode_FromUnicode(u, 1);
+}
+
+static PyObject *
 msvcrt_getche(PyObject *self, PyObject *args)
 {
 	int ch;
@@ -160,6 +176,22 @@
 }
 
 static PyObject *
+msvcrt_getwche(PyObject *self, PyObject *args)
+{
+	Py_UNICODE ch;
+	Py_UNICODE s[1];
+
+	if (!PyArg_ParseTuple(args, ":getwche"))
+		return NULL;
+
+	Py_BEGIN_ALLOW_THREADS
+	ch = _getwche();
+	Py_END_ALLOW_THREADS
+	s[0] = ch;
+	return PyUnicode_FromUnicode(s, 1);
+}
+
+static PyObject *
 msvcrt_putch(PyObject *self, PyObject *args)
 {
 	char ch;
@@ -172,6 +204,25 @@
 	return Py_None;
 }
 
+
+static PyObject *
+msvcrt_putwch(PyObject *self, PyObject *args)
+{
+	Py_UNICODE *ch;
+	int size;
+
+	if (!PyArg_ParseTuple(args, "u#:putwch", &ch, &size))
+		return NULL;
+
+	if (size == 1)
+		_putwch(*ch);
+		Py_RETURN_NONE;
+	else {
+		PyErr_SetString(PyExc_ValueError,
+			"Expected unicode of length 1");
+	}
+}
+
 static PyObject *
 msvcrt_ungetch(PyObject *self, PyObject *args)
 {
@@ -186,6 +237,19 @@
 	return Py_None;
 }
 
+static PyObject *
+msvcrt_ungetwch(PyObject *self, PyObject *args)
+{
+	Py_UNICODE ch;
+
+	if (!PyArg_ParseTuple(args, "u:ungetwch", &ch))
+		return NULL;
+
+	if (_ungetch(ch) == EOF)
+		return PyErr_SetFromErrno(PyExc_IOError);
+	Py_INCREF(Py_None);
+	return Py_None;
+}
 
 static void
 insertint(PyObject *d, char *name, int value)
@@ -214,6 +278,11 @@
 	{"getche",		msvcrt_getche, METH_VARARGS},
 	{"putch",		msvcrt_putch, METH_VARARGS},
 	{"ungetch",		msvcrt_ungetch, METH_VARARGS},
+	{"getwch",		msvcrt_getwch, METH_VARARGS},
+	{"getwche",		msvcrt_getwche, METH_VARARGS},
+	{"putwch",		msvcrt_putwch, METH_VARARGS},
+	{"ungetwch",		msvcrt_ungetwch, METH_VARARGS},
+
 	{NULL,			NULL}
 };
 
