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