• C

UNIX equiv of 'kbhit()' ??

I am working with SCO Unix using gcc for my compiler. I need to know the equiv of 'kbhit()'?  thanks.
LVL 2
kellyjjAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
julio011597Connect With a Mentor Commented:
There's no equivalent to kbhit() on Unix.

To handle keybord (and cursor position, and mouse, and windows, and so on) Unix has the "curses" library:

try man curses.

HTH.
0
 
kellyjjAuthor Commented:
Do you know where I can get some source code that could show me how to do this my self? or documentation on curses lib?  I don't have the man pages.
0
 
julio011597Commented:
Hmmm... i'm afraid i don't; i've never needed curses myself, so don't know where you could get material from.

Just a few thoughts:

1. among the GNU stuff there is all to support C programming, so i guess they have man pages, too;

2. a net search for "man curses", or "man pages", or such, may also be of great help; there *is* stuff online (somewhere).

3. reject my answer, increase the points a bit (say 50), and wait for a better answer than mine; if nobody else comes in (not probable) you could anyway let me resubmit my answer, later.

Good luck.
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
kellyjjAuthor Commented:
Here you go. You at least told me that there is no equiv.  And which lib deals with it.   Thanks
0
 
macdonaldalCommented:
Kellyjj - I don't know if you have solved this problem - but I have just had to deal with it.
The solution I came up with is this - use the curses.h  lib and then use the function nodelay( stdwin, TRUE)
no you need to reset this at the end of your function and curse needs to be initialised first - If you want a good basic book on curses I suggest - "Programming with curses" by John Strang.
Alex
0
 
BichiXCommented:
Para lograrlo tienes que probar con las propiedades de la terminal...
Por default la terminal esta en modo caconico asi que la opcion es colocarla del otro modo !!!
Con esto lo lograras !!! y sin hacer uso de la libreria "ncurses.h" !!!

#include <stdio.h>
#include <string.h>
#include <termios.h>
#include <sys/time.h>

int main(){
        struct termios  tio0, tio1;
        struct timeval  tv;
        fd_set          rfds;

        /* Modo de Edicion Canonica ki */
        tcgetattr(0,&tio0);
        memcpy(&tio1,&tio0,sizeof(struct termios));
        tio1.c_lflag &= ~ICANON;
        tcsetattr(0,TCSANOW,&tio1);

        /* Es un kbhit() */
        FD_ZERO(&rfds);
        FD_SET(0,&rfds);
        tv.tv_usec      = 0;
        tv.tv_sec       = 1;
        select(1,&rfds,NULL,NULL,&tv);
        printf("%d\n",FD_ISSET(0,&rfds) ? 1:0);

        /* Modo de edicion Canonica vissza */
        tcsetattr(0,TCSANOW,&tio0);

        return( 0 );
}

Recuerda Desactivar este modo y dejarlo como estaba antes!!!
BichiX...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.