Add keyboard scan code enum

This commit is contained in:
drmortalwombat 2022-02-04 17:40:04 +01:00
parent 05d6b3d223
commit 49b5067619
2 changed files with 85 additions and 9 deletions

View File

@ -23,10 +23,12 @@ const char keyb_codes[128] = {
}; };
byte keyb_matrix[8], keyb_key; byte keyb_matrix[8];
KeyScanCode keyb_key;
static byte keyb_pmatrix[8]; static byte keyb_pmatrix[8];
bool key_pressed(char code) bool key_pressed(KeyScanCode code)
{ {
return !(keyb_matrix[code >> 3] & (1 << (code & 7))); return !(keyb_matrix[code >> 3] & (1 << (code & 7)));
} }

View File

@ -23,10 +23,83 @@
#define KEY_F6 (139) #define KEY_F6 (139)
#define KEY_F8 (140) #define KEY_F8 (140)
#define KEY_CODE_CSR_RIGHT (2) enum KeyScanCode
#define KEY_CODE_CSR_DOWN (7) {
#define KEY_CODE_LSHIFT (15) KSCAN_DEL,
#define KEY_CODE_RSHIFT (48) KSCAN_RETURN,
KSCAN_CSR_RIGHT,
KSCAN_F7,
KSCAN_F1,
KSCAN_F3,
KSCAN_F5,
KSCAN_CSR_DOWN,
KSCAN_3,
KSCAN_W,
KSCAN_A,
KSCAN_4,
KSCAN_Z,
KSCAN_S,
KSCAN_E,
KSCAN_SHIFT_LOCK,
KSCAN_5,
KSCAN_R,
KSCAN_D,
KSCAN_6,
KSCAN_C,
KSCAN_F,
KSCAN_T,
KSCAN_X,
KSCAN_7,
KSCAN_Y,
KSCAN_G,
KSCAN_8,
KSCAN_B,
KSCAN_H,
KSCAN_U,
KSCAN_V,
KSCAN_9,
KSCAN_I,
KSCAN_J,
KSCAN_0,
KSCAN_M,
KSCAN_K,
KSCAN_O,
KSCAN_N,
KSCAN_PLUS,
KSCAN_P,
KSCAN_L,
KSCAN_MINUS,
KSCAN_DOT,
KSCAN_COLON,
KSCAN_AT,
KSCAN_COMMA,
KSCAN_POUND,
KSCAN_STAR,
KSCAN_SEMICOLON,
KSCAN_HOME,
KSCAN_RSHIFT,
KSCAN_EQUAL,
KSCAN_ARROW_UP,
KSCAN_SLASH,
KSCAN_1,
KSCAN_ARROW_LEFT,
KSCAN_CONTROL,
KSCAN_2,
KSCAN_SPACE,
KSCAN_COMMODORE,
KSCAN_Q,
KSCAN_STOP,
KSCAN_QUAL_SHIFT = 0x40,
KSCAN_QUAL_DOWN = 0x80
};
// map of keyboard codes to PETSCII, first 64 without shift // map of keyboard codes to PETSCII, first 64 without shift
// second 64 with shift // second 64 with shift
@ -36,14 +109,15 @@ extern const char keyb_codes[128];
// current status of key matrix // current status of key matrix
extern byte keyb_matrix[8]; extern byte keyb_matrix[8];
// current key // current key in scan code - the top level bit KSCAN_QUAL_DOWN is
extern byte keyb_key; // used to indicate a key is pressed, so 0 is no key
extern KeyScanCode keyb_key;
// poll keyboard matrix // poll keyboard matrix
void keyb_poll(void); void keyb_poll(void);
inline bool key_pressed(char code); inline bool key_pressed(KeyScanCode code);
inline bool key_shift(void); inline bool key_shift(void);