picocalc_BIOS/Core/Inc/keyboard.h
JackCarterSmith 1b288f72cc
Some fix
- Missalign PMIC IRQ flag
- Incorrect batt led
2025-05-05 21:36:42 +02:00

93 lines
2.1 KiB
C

#include "stm32f1xx_hal.h"
#include "main.h"
#ifndef KEYBOARD_H_
#define KEYBOARD_H_
#ifdef __cplusplus
extern "C" {
#endif
enum key_state {
KEY_STATE_IDLE = 0,
KEY_STATE_PRESSED,
KEY_STATE_HOLD,
KEY_STATE_RELEASED,
};
#define NUM_OF_COLS 8
#define NUM_OF_ROWS 7
#define KEY_LIST_SIZE 10
#define KEY_POLL_TIME 16 // in ms, scanning freq
#define KEY_HOLD_TIME 300 // in ms, delay before switching to "rapid-trigger" mode
#define KEY_REPEAT_TIME 100 // in ms, delay between each triggers in "rapid-trigger" mode
#define KEY_JOY_UP 0x01
#define KEY_JOY_DOWN 0x02
#define KEY_JOY_LEFT 0x03
#define KEY_JOY_RIGHT 0x04
#define KEY_JOY_CENTER 0x05
#define KEY_BTN_LEFT1 0x06
#define KEY_BTN_RIGHT1 0x07
#define KEY_BACKSPACE 0x08
#define KEY_TAB 0x09
#define KEY_ENTER 0x0A
// 0x0D - CARRIAGE RETURN
#define KEY_BTN_LEFT2 0x11
#define KEY_BTN_RIGHT2 0x12
#define KEY_MOD_ALT 0xA1
#define KEY_MOD_SHL 0xA2
#define KEY_MOD_SHR 0xA3
#define KEY_MOD_SYM 0xA4
#define KEY_MOD_CTRL 0xA5
#define KEY_ESC 0xB1
#define KEY_UP 0xb5
#define KEY_DOWN 0xb6
#define KEY_LEFT 0xb4
#define KEY_RIGHT 0xb7
#define KEY_BREAK 0xd0 // == KEY_PAUSE
#define KEY_INSERT 0xD1
#define KEY_HOME 0xD2
#define KEY_DEL 0xD4
#define KEY_END 0xD5
#define KEY_PAGE_UP 0xd6
#define KEY_PAGE_DOWN 0xd7
#define KEY_CAPS_LOCK 0xC1
#define KEY_F1 0x81
#define KEY_F2 0x82
#define KEY_F3 0x83
#define KEY_F4 0x84
#define KEY_F5 0x85
#define KEY_F6 0x86
#define KEY_F7 0x87
#define KEY_F8 0x88
#define KEY_F9 0x89
#define KEY_F10 0x90
typedef void (*key_callback)(char, enum key_state);
typedef void (*lock_callback)(uint8_t, uint8_t);
void keyboard_set_key_callback(key_callback callback);
void keyboard_set_lock_callback(lock_callback callback);
uint8_t keyboard_get_capslock(void);
uint8_t keyboard_get_numlock(void);
void keyboard_process(void);
#ifdef __cplusplus
}
#endif
#endif /* KEYBOARD_H_ */