[Python-Dev] getch() in msvcrt does not accept extended characters. (original) (raw)
Darryl Dixon esrever_otua at pythonhacker.is-a-geek.net
Tue Jul 5 23:58:07 CEST 2005
- Previous message: [Python-Dev] getch() in msvcrt does not accept extended characters.
- Next message: [Python-Dev] Weekly Python Patch/Bug Summary
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Sorry all,
It seems that the list mods have finally released a duplicate
message that I wrote last week when I wasn't subscribed to the list. Please ignore the message below if you have read the previous copy already.
D
On Thu, 2005-06-30 at 09:43 +1200, Darryl Dixon wrote: > Hi, >> I'm sorry, I don't seem to have done a very good job at explaining > the situation. I'll try again: > 'getch()' is a low-level function provided on Windows to capture a > single character of input from a user, /without echoing it to the > screen/. As far as I can tell there's no other way of doing this with > Python on Windows. The Python interface to this function is in the C > code in msvcrtmodule.c, which has a (very thin) wrapper around the raw > OS system call. Microsoft provide a way of accepting both normal ASCII > codes, and extended characters via this system call. Currently, the > Python wrapper in msvcrtmodule.c only supports the semantics of getting > the bare ASCII codes, and not the extended characters. I would strongly > suggest that it should support both. >> So, I guess in answer to the questions raised below; >> 1) I can't do it in Python code without getch() (hence the original > email) >> 2) I would argue that in fact getch() is 'broken' in its current Python > implementation, as it doesn't support what the OS implies /should/ be > supported (and, indeed, if I input an extended character in response to > a 'getch()' call, all I get back currently is an empty string). >> Hope this helps, > D >>> Fredrik wrote: > >Darryl Dixon wrote: > > > >> Microsoft support capturing extended characters via getch, but it requires making a > >> second call to getch() if one of the 'magic' returns is encountered in the first call (0x00 > >> or 0xE0). > > > >so why not do that in your python code? > > > >> The relevant chunk of code in Python that would probably need to be > >> changed to support this appears to be in msvcrtmodule.c: > > > >if you change msvcrt, you'll break all the programs that uses getch() in > >the prescribed way... > > > >
Darryl Dixon <esrever_otua at pythonhacker.is-a-geek.net>
- Previous message: [Python-Dev] getch() in msvcrt does not accept extended characters.
- Next message: [Python-Dev] Weekly Python Patch/Bug Summary
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]