Get single keystroke?

Andrej Mitrovic andrej.mitrovich at gmail.com
Mon Mar 21 15:20:16 PDT 2011


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.


More information about the Digitalmars-d-learn mailing list