INF: Reading F11 and F12 Keys on Extended Keyboard

ID Number: Q30370

5.00 5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a

MS-DOS | OS/2

Summary:

The following program allows you to read the F11 and F12 keys on an

extended keyboard. The key to this process is to call _bios_keybrd()

with the service argument 0x10. This allows an extended keyboard read.

This program will sit in an infinite loop until F11 or F12 is pressed.

Note that the C run-time library functions getch() or getche() will

not be able to read in the extended function keys even after the

change above has been made.

More Information:

Sample Code

-----------

/* Compile options needed: none

*/

#include <bios.h>

#include <stdio.h>

#define _EXTKEYREAD 0x10

#define MASK 0xFF00

#define ZMASK 0x00FF

main()

{

unsigned value, nextval;

while(1)

{

value = _bios_keybrd(_EXTKEYREAD);

nextval = value;

if ((value & ZMASK) == 0) /* Check low order byte for zero.*/

/* If zero, then we have extended key.*/

{

if((nextval & MASK) == 0x8500) /* Buffer code = 8500h for F11 */

printf("F11 key pushed\n");

if((nextval & MASK) == 0x8600) /* Buffer code = 8600 for F12 */

printf("F12 key pushed\n");

}

else

printf("not an extended key\n");

}

}

Additional reference words: 5.00 5.10 6.00 6.00a 6.00ax 7.00