Preferences

"in the guts of several curses implementations there's an evil little select() call which is trying to work out if you meant "cursor down 1 line" or the four seperate characters ESC, [, 1, A by doing millisecond-precise timings."

If anyone is curious how to do that (useful if you want your terminal application to handle escape key presses for example), this is the basics of it:

    tcgetattr(master_controlling_tty, &term_settings);
    cfmakeraw(&term_settings);  /* set raw mode */
    term_settings.c_cc[VMIN] = 1;  /* minimum of 1 character per read */
    term_settings.c_cc[VTIME] = 1; /* 1 decisecond timeout for read */

    tcsetattr(master_controlling_tty, TCSANOW, &term_settings); /* write changes back to the tty */
Then if a read on your tty only returns the escape character, you know it was the escape key and not arrow keys or whatever.. unless there is some decent lag.. ;)

It's fairly simple to do, but certainly hackish.


This item has no comments currently.