delorie.com/djgpp/doc/libc/libc_65.html | search |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
#include <bios.h> unsigned _bios_keybrd(unsigned cmd); |
The _bios_keybrd
function uses INT 0x16 to access the keyboard
services. The cmd argument can be any of the following manifest
constants:
_KEYBRD_READ
_NKEYBRD_READ
_KEYBRD_READ
, this
command knows about keys introduced with the AT-style 101-key keyboards,
such as F11 and F12, and can distinguish between the editing
keys on the numeric pad and the grey keys of the edit pad. On the other
hand, some of the extended keys return two-byte sequences which
typically begin with the E0h
(224 decimal) prefix, so code that
uses _NKEYBRD_READ
should deal with this complexity.
_KEYBRD_READY
_NKEYBRD_READY
_KEYBRD_READY
, but recognizes extended keys such as F12,
which _KEYBRD_READY
ignores.
_KEYBRD_SHIFTSTATUS
40h:17h
in the
BIOS data area):
7654 3210 Meaning ---- ---X Right SHIFT is pressed ---- --X- Left SHIFT is pressed ---- -X-- CTRL is pressed ---- X--- ALT is pressed ---X ---- Scroll Lock locked --X- ---- Num Lock locked -X-- ---- Caps Lock locked X--- ---- Insert locked |
_NKEYBRD_SHIFTSTATUS
40h:17h
in the BIOS data area combined with the extended shift
flags from the bytes at addresses 40h:18h
and 40h:96h
):
FEDC BA98 7654 3210 Meaning ---- ---- ---- ---X Right SHIFT is pressed ---- ---- ---- --X- Left SHIFT is pressed ---- ---- ---- -X-- CTRL is pressed ---- ---- ---- X--- ALT is pressed ---- ---- ---X ---- Scroll Lock locked ---- ---- --X- ---- Num Lock locked ---- ---- -X-- ---- Caps Lock locked ---- ---- X--- ---- Insert locked ---- ---X ---- ---- Left CTRL is pressed ---- --X- ---- ---- Left ALT is pressed ---- -X-- ---- ---- Right CTRL is pressed ---- X--- ---- ---- Right ALT is pressed ---X ---- ---- ---- Scroll Lock is pressed --X- ---- ---- ---- Num Lock is pressed -X-- ---- ---- ---- Caps Lock is pressed X--- ---- ---- ---- SysReq is pressed |
Return Value
With the *_READ
and *_SHIFTSTATUS
arguments, the
_bios_keybrd
function returns the contents of the AX
register after the BIOS call. For the *_READ
arguments, this is
the combination of scan code and ASCII code for alphanumeric keys, or a
scan code and either zero or the E0h
prefix for special keys.
With the *_READY
arguments, _bios_keybrd
returns 0 if no
key is waiting in the BIOS keyboard buffer. If there is a key,
_bios_keybrd
returns the key waiting to be read (that is, the
same value as the corresponding *_READ
would return).
With the *_READ
and *_READY
arguments, the
_bios_keybrd
function returns -1 if Ctrl+BREAK has
been pressed and is the next keystroke to be read.
ANSI/ISO C | No |
POSIX | No |
while( !_bios_keybrd(_KEYBRD_READY) ) try_to_do_something(); |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
webmaster | delorie software privacy |
Copyright © 2004 | Updated Apr 2004 |