nieters@eagle.crd.ge.com (coolbean) (02/20/91)
hi i have been RTFM'ing for long enough! time to post .... :-) the problem: i want to write a program which will tell me if a key has been pressed on the keyboard. i don't want to intercept the key or modify it, i just want to catch the "interrupt" and count it. ideally a blocking ioctl() or equivalent would be best but i can sit in a busy loop and poll until i see a key stroke, increment a counter, and continue. the platform: running on a Sun 4/490 or Sparcstation equivalent work so far: i've read kb(4M) a number of times and believe that it should be possible to tell when a keyboard is idle because it speaks of a #define IDLE 0x308 The keyboard is idle (no keys down) therefore, it should be possible to tell when it is NOT idle, right? /usr/include/sundev/kbd.h has some header comments that claim * When no physical keys are depressed, the keyboard transmits a keycode of * "IDLE" (7F hex), to indicate that. Thus, when the last key is released, * a keycode for its release is sent, then an IDLE. the following #defines are also contained in it #define IDLEKEY 0x7F /* Keyboard is idle; no keys down */ #define PRESSED 0x00 /* 0x80 bit off: key was pressed */ #define RELEASED 0x80 /* 0x80 bit on : key was released */ i've played with ioctl()'s to turn on LED's, keyclick, bell, find type of keyboard, etc. etc. etc. but i'm getting very confused with this key-press thing! if anyone has had experience doing this kind of thing, can you post a pointer to a solution?! any help is greatly appreciated. thanks in advance. --ed -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Edward Nieters INTERnet: nieters@crd.ge.com GE Corporate R&D BELLnet: (518) 387-5187 Schenectady, NY 12301