[A89] Re: OSDequeue
[Prev][Next][Index][Thread]
[A89] Re: OSDequeue
-------------------
>
> How do you implement this and save the key press to a variable,
every
> time I do it the thing won't work!
>
>
>
>
OSdequeue for keyboard reading is very simple.
#include <system.h>
#include <kbd.h>
short int getKey(short int wait) {
unsigned short int key = 0;
short int done = 0;
void *kbq = kbd_queue();
while (!done) {
if (!wait || !OSdequeue(&key,kbq)) {
done = 1;
}
}
return (signed short int)key;
}
It's sometimes a good idea to cast it to a signed int to avoid
warnings between signed and unsigned comparisons, which you will often
get when comparing the KEY macros, like arrow keys KEY_LEFT.
So, if you want to use that function...
void _main(void) {
short int key;
key = getKey(1);
}
This will wait until a key is available and return the signed
keypress, stored in the variable key local to the _main() function.
OSdequeue() will not work if you have disabled interrupts or
redirected auto-int 1. If you did this, you will have to use low-level
keyboard reading...
Hope this helps...
John David Ratliff
jdratlif@cs.indiana.edu
Follow-Ups:
References: