89 lines
2.4 KiB
C
89 lines
2.4 KiB
C
|
#ifndef CGDOOM_KBD_H
|
||
|
#define CGDOOM_KBD_H
|
||
|
|
||
|
/* CGDoom's keyboard abstraction
|
||
|
|
||
|
Instead of using libfxcg functions which only provide single-key analysis
|
||
|
(GetKey, GetKeyWait, and PRGM_GetKey mainly), CGDoom uses a simple KEYSC
|
||
|
driver adapter from gint's. The following matrix codes identify all keys on
|
||
|
the keyboard. The PC build maps a subset of them to PC keys. */
|
||
|
|
||
|
/* Copy of the keyboard state, one byte per row */
|
||
|
typedef uint8_t CGD_KeyboardState[12] __attribute__((aligned(2)));
|
||
|
|
||
|
/* Keyboard scanning function (very short), uses either the KEYSC or SDL */
|
||
|
void CGD_ScanKeyboard(CGD_KeyboardState state);
|
||
|
|
||
|
/* Default keymaps for use in UI code */
|
||
|
extern const uint16_t CGD_Keymap_CGDoom_0_3[];
|
||
|
extern const uint16_t CGD_Keymap_ThumbsOnly[];
|
||
|
extern const uint16_t CGD_Keymap_FullHands[];
|
||
|
|
||
|
/* Load a default keymap */
|
||
|
void CGD_LoadKeymap(const uint16_t *template);
|
||
|
|
||
|
|
||
|
/* Keyboard matrix codes for the keyboard driver */
|
||
|
|
||
|
#define KEYCODE_F1 0x91
|
||
|
#define KEYCODE_F2 0x92
|
||
|
#define KEYCODE_F3 0x93
|
||
|
#define KEYCODE_F4 0x94
|
||
|
#define KEYCODE_F5 0x95
|
||
|
#define KEYCODE_F6 0x96
|
||
|
|
||
|
#define KEYCODE_SHIFT 0x81
|
||
|
#define KEYCODE_OPTN 0x82
|
||
|
#define KEYCODE_VARS 0x83
|
||
|
#define KEYCODE_MENU 0x84
|
||
|
#define KEYCODE_LEFT 0x85
|
||
|
#define KEYCODE_UP 0x86
|
||
|
|
||
|
#define KEYCODE_ALPHA 0x71
|
||
|
#define KEYCODE_SQUARE 0x72
|
||
|
#define KEYCODE_POWER 0x73
|
||
|
#define KEYCODE_EXIT 0x74
|
||
|
#define KEYCODE_DOWN 0x75
|
||
|
#define KEYCODE_RIGHT 0x76
|
||
|
|
||
|
#define KEYCODE_XOT 0x61
|
||
|
#define KEYCODE_LOG 0x62
|
||
|
#define KEYCODE_LN 0x63
|
||
|
#define KEYCODE_SIN 0x64
|
||
|
#define KEYCODE_COS 0x65
|
||
|
#define KEYCODE_TAN 0x66
|
||
|
|
||
|
#define KEYCODE_FRAC 0x51
|
||
|
#define KEYCODE_FD 0x52
|
||
|
#define KEYCODE_LEFTP 0x53
|
||
|
#define KEYCODE_RIGHTP 0x54
|
||
|
#define KEYCODE_COMMA 0x55
|
||
|
#define KEYCODE_ARROW 0x56
|
||
|
|
||
|
#define KEYCODE_7 0x41
|
||
|
#define KEYCODE_8 0x42
|
||
|
#define KEYCODE_9 0x43
|
||
|
#define KEYCODE_DEL 0x44
|
||
|
|
||
|
#define KEYCODE_4 0x31
|
||
|
#define KEYCODE_5 0x32
|
||
|
#define KEYCODE_6 0x33
|
||
|
#define KEYCODE_MUL 0x34
|
||
|
#define KEYCODE_DIV 0x35
|
||
|
|
||
|
#define KEYCODE_1 0x21
|
||
|
#define KEYCODE_2 0x22
|
||
|
#define KEYCODE_3 0x23
|
||
|
#define KEYCODE_PLUS 0x24
|
||
|
#define KEYCODE_MINUS 0x25
|
||
|
|
||
|
#define KEYCODE_0 0x11
|
||
|
#define KEYCODE_DOT 0x12
|
||
|
#define KEYCODE_EXP 0x13
|
||
|
#define KEYCODE_NEG 0x14
|
||
|
#define KEYCODE_EXE 0x15
|
||
|
|
||
|
#define KEYCODE_ACON 0x07
|
||
|
|
||
|
#endif /* CGDOOM_KBD_H */
|