Watcom C BIOS key scancode list

From Thought dump
Jump to navigation Jump to search
/* BIOS key scancode list.
 *
 * **********************************************************************
 *
 *            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 *                    Version 2, December 2004
 *
 * Copyright (C) 2025 bindiff <projects@bindiff.eu>
 *
 * Everyone is permitted to copy and distribute verbatim or modified
 * copies of this license document, and changing it is allowed as long
 * as the name is changed.
 *
 *            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 *   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 *
 *  0. You just DO WHAT THE FUCK YOU WANT TO.
 *
 * **********************************************************************
 *
 * Very loosely based on a scancode list by Mircosoft:
 *   https://mircosoft.mzf.cz/texty/SEZKLAV.TXT
 *
 * This is scancode set 1. You can use the following code to get the scancode in
 * Watcom C:
 *
 *     #include <bios.h>
 *     [...]
 *
 *     int scan, ch;   -- Scan code and an ASCII char (or 0).
 *     scan = _bios_keybrd(_KEYBRD_READ);
 *     ch   = scan & 0xff;
 *     scan = scan >> 8;
 *
 * Polling/waiting for a key press:
 *
 *     for (!_bios_keybrd(_KEYBRD_READY)) ;
 */

#define K_ESC              1
#define K_F1              59
#define K_F2              60
#define K_F3              61
#define K_F4              62
#define K_F5              63
#define K_F6              64
#define K_F7              65
#define K_F8              66
#define K_F9              67
#define K_F10             68
#define K_F11             87
#define K_F12             88
#define K_SCROLL          70
#define K_TILDE           41
#define K_1                2
#define K_2                3
#define K_3                4
#define K_4                5
#define K_5                6
#define K_6                7
#define K_7                8
#define K_8                9
#define K_9               10
#define K_0               11
#define K_MINUS           12
#define K_EQUAL           13
#define K_BS              14
#define K_TAB             15
#define K_Q               16
#define K_W               17
#define K_E               18
#define K_R               19
#define K_T               20
#define K_Y               21
#define K_U               22
#define K_I               23
#define K_O               24
#define K_P               25
#define K_LBRAK           26
#define K_RBRAK           27
#define K_BKSL            43
#define K_CAPS            58
#define K_A               30
#define K_S               31
#define K_D               32
#define K_F               33
#define K_G               34
#define K_H               35
#define K_J               36
#define K_K               37
#define K_L               38
#define K_SEMI            39
#define K_APOS            40
#define K_RET             28
#define K_LSHIFT          42
#define K_Z               44
#define K_X               45
#define K_C               46
#define K_V               47
#define K_B               48
#define K_N               49
#define K_M               50
#define K_COMMA           51
#define K_PERIOD          52
#define K_SLASH           53
#define K_RSHIFT          54
#define K_LCTRL           29
#define K_LALT            56
#define K_LTGT            86
#define K_SPACE           57
#define K_INSERT          82
#define K_HOME            71
#define K_PGUP            73
#define K_DELETE          83
#define K_END             79
#define K_PGDN            81
#define K_UP              72
#define K_LEFT            75
#define K_DOWN            80
#define K_RIGHT           77