Hi,

>> [3] How do I get input from the kbd; getchar() echoes the char 
>> to the terminal (Something I don't want) and with extended keys, it looks 
>> ugly (^[[[A for F1 for example). 
>> >> getpasswdchar(), else curses supports non-echoeing input.
>If I am not wrong there should be some IOCTL call or whatever to disable 
>echoing.

To get unechoed & unbuffered characters without using the curses library,
you could use the termios functions:

#include <termios.h>
#include <unistd.h>

struct termios attrib; // A place to store the current terminal attributes
int fd;                  

fd = fileno(stdin);     // Get integer descriptor for stream stdin 
if (isatty(fd))         // if stdin is not a tty -(redirected I/O), you might want
to skip this
{
        tcgetattr(fd,&attrib);  // Save current attributes for terminal
        attrib.c_lflag &= ~(ECHO+ICANON);               // Turn off echo & buffering
                // Alternately you can use the cfmakeraw() function to set the tty to 
raw
mode
                // But this is not required if you just want unbuffered&unechoed chars
        tcsetattr(fd,TCSANOW,&attrib);                  // Set the new attributes
        // Do your stuff here ....getchar() will now return immediately with a
character without       // echo. You'll need to handle Backspace, newline,Del
etc by yourselves

        
        //Restore old attributes when done
        attrib |= ECHO+ICANON;
        tcsetattr(fd,TCSANOW,&attrib);
}
        
Check the man page termios(3) for more details.

Kala    
--------------------------------------------------------------------
The Linux India Mailing List Archives are now available.  Please search
the archive at http://lists.linux-india.org/ before posting your question
to avoid repetition and save bandwidth.

Reply via email to