From: Mathias F. <M.F...@sc...> - 2011-02-23 15:57:55
|
Hi, On Tuesday 22 February 2011, Andy Koppe wrote: > The answer is: it doesn't. Line editing and the interpretation of all > the other termios flags are implemented on the slave side of the > pseudo terminal device. On Linux, that's done in the kernel; in MSYS, > it's done in the DLL. Mintty never looks at any of that, apart from > when it first creates the shell process, where it sets a few termios > flags. After that, it just processes whatever comes in via read()s > from the master side of the pty device, including any escape > sequences. Remember it's emulating a terminal that would have been > connected to the host via a plain ol' serial cable. Hmm, so, if the client application does not need to switch off canonical mode in mintty and consequently the client stuffs together line editing in its own msys.dll, I expect that I can read every keypress on the named pipe that is used for stdin. Which means that I expect the following small test program: ----------------------------------------------------- #include <windows.h> #include <io.h> #include <fcntl.h> #include <stdio.h> int main() { for (;;) { DWORD count; char c; ReadFile(_get_osfhandle(_fileno(stdin)), &c, 1, &count, NULL); fprintf(stderr, "\nt = %d, '%c'\n", clock(), c); fflush(stderr); } return 17; } -------------------------------------------------------- to return from the ReadFile (which is the most low level win32 call on the input pipe to rule out msvcrt input buffering) and execute the fprintf just past the next key stroke. So appart from output buffering, that might delay appearing that on the screen, I expect the clock() values to be different if I type a word with huge time delays between the successive character that I type. But, I get all keystrokes with the same clock value once I have hit the return button. So, how is my test program different from what bash does when started from mintty? > Here's a good article explaining this stuff: > > http://www.linusakesson.net/programming/tty/index.php That is great. I did not know that this terminal stuff dates back *this* long! And sorry, if the answer to the above question is already there. I could not find that so far. Thanks! Mathias -- Dr. Mathias Fröhlich, science + computing ag, Software Solutions Hagellocher Weg 71-75, D-72070 Tuebingen, Germany Phone: +49 7071 9457-268, Fax: +49 7071 9457-511 -- Vorstand/Board of Management: Dr. Bernd Finkbeiner, Dr. Roland Niemeier, Dr. Arno Steitz, Dr. Ingrid Zech Vorsitzender des Aufsichtsrats/ Chairman of the Supervisory Board: Michel Lepert Sitz/Registered Office: Tuebingen Registergericht/Registration Court: Stuttgart Registernummer/Commercial Register No.: HRB 382196 |