mcu_ab568x/app/platform/bsp/bsp_key.h
2025-05-30 18:03:10 +08:00

174 lines
6.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _BSP_KEY_H
#define _BSP_KEY_H
typedef u8 size_msg_t; //定义MSG的SIZE
#define KEY_SCAN_TIMES 6 //按键防抖的扫描次数
#define KEY_UP_TIMES 6 //抬键防抖的扫描次数
#define KEY_LONG_TIMES 150 //长按键的次数
#define KEY_HOLD_TIMES 35 //连按的频率次数
#define KEY_LONG_HOLD_TIMES (KEY_LONG_TIMES + KEY_HOLD_TIMES)
#define KEY_SHORT 0x00
#define KEY_SHORT_UP 0x10
#define KEY_LONG 0x20
#define KEY_LONG_UP 0x30
#define KEY_HOLD 0x40
#define KEY_LHOLD 0x50
#define KEY_DOUBLE 0x60 //2击
#define KEY_THREE 0x70 //3击
#define KEY_SHORT_UP_DELAY 0x80 //短按延时抬起
#define KEY_TYPE_MASK 0xF0
#define KEY_USAGE_MASK 0x0F
//CTP Message, 范围: 0xA0 ~ 0xAF
#define MSG_CTP_TOUCH 0xA0 //接触
#define MSG_CTP_CLICK 0xA1 //单击
#define MSG_CTP_SHORT_LEFT 0xA2 //短划
#define MSG_CTP_SHORT_UP 0xA3
#define MSG_CTP_SHORT_RIGHT 0xA4
#define MSG_CTP_SHORT_DOWN 0xA5
#define MSG_CTP_LONG 0xA6 //长划
#define MSG_CTP_LONG_LEFT 0xA7
#define MSG_CTP_LONG_UP 0xA8
#define MSG_CTP_LONG_RIGHT 0xA9
#define MSG_CTP_LONG_DOWN 0xAA
#define MSG_CTP_LONG_LIFT 0xAB //长按抬起
#define MSG_CTP_COVER 0xAC
//编码器
#define MSG_QDEC_FORWARD 0xBF
#define MSG_QDEC_BACKWARD 0xBE
//Event Message, 范围0xC0 ~ 0xFF
#define MSG_SYS_1S 0xff
#define MSG_SYS_500MS 0xfe
#define EVT_SD_INSERT 0xfd
#define EVT_SD_REMOVE 0xfc
#define EVT_SD1_INSERT 0xfb
#define EVT_SD1_REMOVE 0xfa
#define EVT_UDISK_INSERT 0xf9
#define EVT_UDISK_REMOVE 0xf8
#define EVT_PC_INSERT 0xf7
#define EVT_PC_REMOVE 0xf6
#define EVT_HFP_SET_VOL 0xf5
#define EVT_A2DP_SET_VOL 0xf4
#define EVT_A2DP_MUSIC_PLAY 0xf3
#define EVT_A2DP_MUSIC_STOP 0xf2
#define EVT_BT_SCAN_START 0xf1
#define EVT_ONLINE_SET_EQ 0xf0
#define EVT_KEY_2_UNMUTE 0xef
#define EVT_BT_SET_LANG_ID 0xee
#define EVT_BT_SET_EQ 0xed
#define EVT_ECHO_LEVEL 0xec
#define EVT_MIC_VOL 0xeb
#define EVT_MUSIC_VOL 0xea
#define EVT_UDE_SET_VOL 0xe9
#define EVT_CALL_NUMBER_UPDATE 0xe8
#define EVT_POPUP 0xe7
#define EVT_READY_EXCHANGE_MTU 0xe6
#define EVT_BT_CONNECT_ONCE 0xe5
#define EVT_ID3_TITLE_UPDATE 0xe4
#define EVT_ID3_ARTIST_UPDATE 0xe3
#define EVT_SENSOR_PALMING 0xe2 //翻腕息屏
//普通按键定义可以支持短按长按双击等。范围0 ~ 0xf
#define NO_KEY 0x00
#define KEY_1 0x01
#define KEY_2 0x02
#define KEY_3 0x03
#define KEY_4 0x04
#define KEY_5 0x05
#define KEY_6 0x06
#define KEY_7 0x07
#define KEY_8 0x08
#define KEY_BACK KEY_1
#define KEY_LEFT KEY_2
#define KEY_RIGHT KEY_3
#define KEY_VOL_UP KEY_4
#define KEY_VOL_DOWN KEY_5
#define KEY_NEXT KEY_6
#define KEY_PREV KEY_7
#define KEY_MODE KEY_8
#define K_BACK (KEY_BACK | KEY_SHORT)
#define KU_BACK (KEY_BACK | KEY_SHORT_UP)
#define KU_DELAY_BACK (KEY_BACK | KEY_SHORT_UP_DELAY)
#define KL_BACK (KEY_BACK | KEY_LONG)
#define KLU_BACK (KEY_BACK | KEY_LONG_UP)
#define KH_BACK (KEY_BACK | KEY_HOLD)
#define KD_BACK (KEY_BACK | KEY_DOUBLE)
#define KTH_BACK (KEY_BACK | KEY_THREE)
#define KLH_BACK (KEY_BACK | KEY_LHOLD)
#define K_LEFT (KEY_LEFT | KEY_SHORT)
#define KU_LEFT (KEY_LEFT | KEY_SHORT_UP)
#define KU_DELAY_LEFT (KEY_LEFT | KEY_SHORT_UP_DELAY)
#define KL_LEFT (KEY_LEFT | KEY_LONG)
#define KLU_LEFT (KEY_LEFT | KEY_LONG_UP)
#define KH_LEFT (KEY_LEFT | KEY_HOLD)
#define KD_LEFT (KEY_LEFT | KEY_DOUBLE)
#define KLH_LEFT (KEY_LEFT | KEY_LHOLD)
#define K_RIGHT (KEY_RIGHT | KEY_SHORT)
#define KU_RIGHT (KEY_RIGHT | KEY_SHORT_UP)
#define KU_DELAY_RIGHT (KEY_RIGHT | KEY_SHORT_UP_DELAY)
#define KL_RIGHT (KEY_RIGHT | KEY_LONG)
#define KLU_RIGHT (KEY_RIGHT | KEY_LONG_UP)
#define KH_RIGHT (KEY_RIGHT | KEY_HOLD)
#define KD_RIGHT (KEY_RIGHT | KEY_DOUBLE)
#define KTH_RIGHT (KEY_RIGHT | KEY_THREE)
#define KLH_RIGHT (KEY_RIGHT | KEY_LHOLD)
#define K_VOL_UP (KEY_VOL_UP | KEY_SHORT)
#define KU_VOL_UP (KEY_VOL_UP | KEY_SHORT_UP)
#define KL_VOL_UP (KEY_VOL_UP | KEY_LONG)
#define KLU_VOL_UP (KEY_VOL_UP | KEY_LONG_UP)
#define KH_VOL_UP (KEY_VOL_UP | KEY_HOLD)
#define KD_VOL_UP (KEY_VOL_UP | KEY_DOUBLE)
#define K_VOL_DOWN (KEY_VOL_DOWN | KEY_SHORT)
#define KU_VOL_DOWN (KEY_VOL_DOWN | KEY_SHORT_UP)
#define KL_VOL_DOWN (KEY_VOL_DOWN | KEY_LONG)
#define KLU_VOL_DOWN (KEY_VOL_DOWN | KEY_LONG_UP)
#define KH_VOL_DOWN (KEY_VOL_DOWN | KEY_HOLD)
#define KD_VOL_DOWN (KEY_VOL_DOWN | KEY_DOUBLE)
#define K_MODE (KEY_MODE | KEY_SHORT)
#define KU_MODE (KEY_MODE | KEY_SHORT_UP)
#define KL_MODE (KEY_MODE | KEY_LONG)
#define KLU_MODE (KEY_MODE | KEY_LONG_UP)
#define KH_MODE (KEY_MODE | KEY_HOLD)
#define KD_MODE (KEY_MODE | KEY_DOUBLE)
//按键消抖参数
typedef struct {
u16 scan_cnt;
u16 up_cnt;
u16 long_cnt;
u16 hold_cnt;
} key_shake_tbl_t;
typedef struct {
u8 adc_val;
u8 usage_id;
} adkey_tbl_t;
extern const adkey_tbl_t adkey_table[];
extern const adkey_tbl_t adkey2_table[];
extern const adkey_tbl_t pwrkey_table[6];
extern const u8 key_config_table[];
void io_key_init(void);
u8 get_iokey(void);
void key_var_init(void);
void key_init(void);
u8 bsp_key_scan(void);
u8 get_double_key_time(void);
#endif // _BSP_KEY_H