Get single keystroke?

Sean Eskapp hotmail at microsoft.com
Mon Mar 21 15:25:55 PDT 2011


== Quote from Andrej Mitrovic (andrej.mitrovich at gmail.com)'s article
> I believe I've found you a solution:
> import std.c.stdio;
> import std.c.linux.termios;
> extern(C) void cfmakeraw(termios *termios_p);
> void main() {
> termios  ostate;                 /* saved tty state */
> termios  nstate;                 /* values for editor mode */
>     // Open stdin in raw mode
>     /* Adjust output channel        */
> tcgetattr(1, &ostate);                       /* save old state */
> tcgetattr(1, &nstate);                       /* get base of new
state */
> cfmakeraw(&nstate);
> tcsetattr(1, TCSADRAIN, &nstate);      /* set mode */
>    // Read characters in raw mode
> writefln("The key hit is %s", cast(char)fgetc(stdin));
>     // Close
> tcsetattr(1, TCSADRAIN, &ostate);       // return to original mode
> }
> I've tested this under Ubuntu and DMD 2.052 and it works.

Great, thanks!


More information about the Digitalmars-d-learn mailing list