[A89] Re: _rowread()
[Prev][Next][Index][Thread]
[A89] Re: _rowread()
Scott Noveck wrote:
> > is the _rowread() function the only way to get keyboard input if auto int
> 1
> > is disabled?
>
> Yes
>
> > can someone please give me
> > an explanation of how to properly use _rowread()?
>
> Look at the TIGCC docs for kbd.h. Scroll down toward the bottom and you'll
> see a pair of tables (you want the big ones that say Column on top, not the
> small ones with arrow keycodes).
>
> Now, say you're looking for a certain key (I'll use the 89's Enter as an
> example) -- you want to input the "mask out" that key's bit in the "row".
> That means that you want a word (two bytes) in which every bit BUT the bit
> for that row is set. Just use this formula to get that, where x is the
> number of the row bit corresponding to that key (2 for 89's Enter):
>
> ~((short)(1<<x)
>
> after calling _rowread() with this input, you'll get back a byte. This byte
> has 8 bits, each of which corresponds to the number of a key's "column"
> within that "row". 89's Enter is in row zero, so you want to check if bit
> zero of the output is set. To do this, mask out all the other bits. You'll
> want a binary AND of the output with (1<<x), where x here is the column.
>
> In summary, use this formula:
>
> _rowread(~((short)(1<<r)))&(1<<c)
>
> where r and c are the row and column of the key you're looking for in that
> table. It'll return true if they key is down, false if it is up.
>
> -Scott
How do you disable Auto Int 1 and fill in with a dummy handler so I can still
use gray scale?
Follow-Ups:
References: