On 10/10/2013 11:56 AM, Alejandro wrote:

> catched a single character, a single keydown

The following program is based on the following newsgroup post:


http://forum.dlang.org/post/[email protected]

The program prints character codes in hex until it sees Ctrl-D:

import std.stdio : writef, writeln;
import std.c.stdio;
import std.c.linux.termios;

/* The declaration of cfmakeraw, which is missing from standard D modules. */
extern(C) void cfmakeraw(termios *termios_p);

void main()
{
    /* Saving the existing state of tty. */
    termios oldState;
    tcgetattr(1, &oldState);

    /* Ensuring that it will be restored upon exit. */
    scope (exit) tcsetattr(1, TCSADRAIN, &oldState);

    /* Make a new state and set it to raw mode. */
    termios  newState;
    tcgetattr(1, &newState);
    cfmakeraw(&newState);

    /* Use the new state in this terminal. */
    tcsetattr(1, TCSADRAIN, &newState);

    /*
     * We are ready to read characters in this raw mode...
     */

    /* This is Ctrl-D, the EOF character under Linux. */
    enum endOfFile = '\4';

    for (char c; c != endOfFile; ) {
        c = cast(char)fgetc(stdin);
        writef("%02x ", c);
    }

    writeln();
}

> my bad English

Please don't say that. :) Thank you very much for communicating in English.

Ali

Reply via email to