On 10/27/2016 04:07 AM, Terry Reedy wrote: > As I and others have said, those keyboard functions are not available on > text terminals. I predict that keyboard functions that so not work on > all systems will never become built-ins. But some are available with an > import.
Sure you can't get a keyboard scancode when you're in terminal. But you can get "keystrokes" as it were, without having to read an entire line from standard in. I use editors and programs all the time which are interactive (they don't buffer keyboard input into lines) in the terminal. vim, nano, pico, mc, etc. Is this not what BartC is talking about? A way of reading in "keystrokes" in a terminal. Whether this is coming from a canned file via a pipe or a real keyboard and screen attached to a TTY doesn't really matter. There are implementations of curses for the Windows console, but I doubt they are supported by the python curses module. But at least curses provides a means of doing this for programmers in a unix environment. For mostly nostalgic reasons I play around with the FreeBASIC compiler and it tries to faithfully emulate the old key input that BASICs of yore did. Such as inkey$ (which returns nothing if no keystroke is available). It runs more or less as advertised in a terminal window on Linux, or the console on Windows. They even go so far as to emulate the old MS-DOS keycodes for things like arrow keys so that old code can still run faithfully. I think this is the sort of thing BartC would like to see in Python. It's certainly possible, even on terminals, but unlikely to happen for reasons that have been well-stated already by others. > Python optionally comes with a sophisticated keyboard api. The PSF > (python.org) CPython builds for Windows and Mac include that API. On > Windows, so is the required tcl/tk build. The premise of the subject > line, that Python does not include 'non-blocking keyboard input > functions', is not true. I would think curses would provide the needed functionality without tkinter or an X server. It's limited in that only key combinations that have control code representation can be detected, but you can definitely use arrow keys, function keys, etc. And I've seen curses interactive games so I know they can be read without blocking the whole program. -- https://mail.python.org/mailman/listinfo/python-list