Reading F11 and F12 Keys on Extended Keyboard

Last reviewed: July 17, 1997
Article ID: Q30370
5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a | 1.00 1.50
MS-DOS                      | OS/2            | WINDOWS
kbprg kbcode

The information in this article applies to:

  • The C Run-time (CRT), included with:

        - Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, and 6.0ax
        - Microsoft C for OS/2, versions 5.1, 6.0, and 6.0a
        - Microsoft C/C++ for MS-DOS, version 7.0
        - Microsoft Visual C++ for Windows, versions 1.0 and 1.5
    

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 = 8600h for F12
*/
         printf("F12 key pushed\n");
    }
  else
    printf("not an extended key\n");

  }
}


Additional reference words: kbinf 1.00 1.50 5.10 6.00 6.00a 6.00ax 7.00
KBCategory: kbprg kbcode
KBSubcategory: CRTIss
Keywords : kb16bitonly


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: July 17, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.