MXC-A36-Demo/Demo/lv_user_code/hal/hal_key_handle.h

116 lines
3.6 KiB
C

#ifndef __HAL_KEY_HANDLE_H__
#define __HAL_KEY_HANDLE_H__
typedef struct _key_event_msg_t {
uint32_t key_code;
uint8_t key_type;
}key_event_msg_t;
//key state
#define HOME_KEY_BIT 0x08
#define ENTER_KEY_BIT 0x10
#define UP_KEY_BIT 0x20
#define DOWN_KEY_BIT 0x40
#define END_KEY_BIT 0x80
#define HOME_ENTER_BIT HOME_KEY_BIT|ENTER_KEY_BIT
#define HOME_UP_BIT HOME_KEY_BIT|UP_KEY_BIT
#define HOME_DOWN_BIT HOME_KEY_BIT|DOWN_KEY_BIT
#define HOME_END_BIT HOME_KEY_BIT|END_KEY_BIT
#define ENTER_UP_BIT ENTER_KEY_BIT|UP_KEY_BIT
#define ENTER_DOWN_BIT ENTER_KEY_BIT|DOWN_KEY_BIT
#define ENTER_END_BIT ENTER_KEY_BIT|END_KEY_BIT
#define UP_DOWN_BIT UP_KEY_BIT|DOWN_KEY_BIT
#define UP_END_BIT UP_KEY_BIT|END_KEY_BIT
#define DOWN_END_BIT DOWN_KEY_BIT|END_KEY_BIT
#define SHORT_KEY_BIT 0x01
#define MULTI_KEY_BIT 0x02
#define LONG_KEY_BIT 0x04
//keycode
#define KEY_CODE_HOME HOME_KEY_BIT|SHORT_KEY_BIT //0000 1001 0x09
#define KEY_CODE_ENTER ENTER_KEY_BIT|SHORT_KEY_BIT //0001 0001 0x11
#define KEY_CODE_UP UP_KEY_BIT|SHORT_KEY_BIT //0010 0001 0x21
#define KEY_CODE_DOWN DOWN_KEY_BIT|SHORT_KEY_BIT //0100 0001 0x41
#define KEY_CODE_END END_KEY_BIT|SHORT_KEY_BIT //1000 0001 0x81
#define KEY_CODE_2HOME HOME_KEY_BIT|MULTI_KEY_BIT
#define KEY_CODE_2ENTER ENTER_KEY_BIT|MULTI_KEY_BIT
#define KEY_CODE_2UP UP_KEY_BIT|MULTI_KEY_BIT
#define KEY_CODE_2DOWN DOWN_KEY_BIT|MULTI_KEY_BIT
#define KEY_CODE_2END END_KEY_BIT|MULTI_KEY_BIT
#define KEY_CODE_LONG_HOME HOME_KEY_BIT|LONG_KEY_BIT
#define KEY_CODE_LONG_ENTER ENTER_KEY_BIT|LONG_KEY_BIT
#define KEY_CODE_LONG_UP UP_KEY_BIT|LONG_KEY_BIT
#define KEY_CODE_LONG_DOWN DOWN_KEY_BIT|LONG_KEY_BIT
#define KEY_CODE_LONG_END END_KEY_BIT|LONG_KEY_BIT
#define KEY_CODE_COMB_HOME_ENTER ((LV_KEY_HOME|LV_KEY_ENTER)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_HOME_UP ((LV_KEY_HOME|LV_KEY_PREV)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_HOME_DOWN ((LV_KEY_HOME|LV_KEY_NEXT)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_HOME_END ((LV_KEY_HOME|LV_KEY_END)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_ENTER_UP ((LV_KEY_ENTER|LV_KEY_PREV)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_ENTER_DOWN ((LV_KEY_ENTER|LV_KEY_NEXT)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_ENTER_END ((LV_KEY_ENTER|LV_KEY_END)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_UP_DOWN ((LV_KEY_PREV|LV_KEY_NEXT)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_UP_END ((LV_KEY_PREV|LV_KEY_END)|SHORT_KEY_BIT)
#define KEY_CODE_COMB_DOWN_END ((LV_KEY_NEXT|LV_KEY_END)|SHORT_KEY_BIT)
#define KEY_CODE_LONG_COMB_HOME_ENTER ((LV_KEY_HOME|LV_KEY_ENTER)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_HOME_UP ((LV_KEY_HOME|LV_KEY_PREV)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_HOME_DOWN ((LV_KEY_HOME|LV_KEY_NEXT)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_HOME_END ((LV_KEY_HOME|LV_KEY_END)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_ENTER_UP ((LV_KEY_ENTER|LV_KEY_PREV)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_ENTER_DOWN ((LV_KEY_ENTER|LV_KEY_NEXT)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_ENTER_END ((LV_KEY_ENTER|LV_KEY_END)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_UP_DOWN ((LV_KEY_PREV|LV_KEY_NEXT)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_UP_END ((LV_KEY_PREV|LV_KEY_END)|LONG_KEY_BIT)
#define KEY_CODE_LONG_COMB_DOWN_END ((LV_KEY_NEXT|LV_KEY_END)|LONG_KEY_BIT)
#define KEY_CODE_NONE 0
//keyevent
typedef enum {
KEY_EVENT_NONE,
KEY_EVENT_PRESSED,
KEY_EVENT_DOUBLE_PRESSED,
KEY_EVENT_LONG_PRESSED,
KEY_EVENT_COMB_PRESSED,
KEY_EVENT_MAX
}e_key_event_type;
extern uint16_t get_lv_key_task_id(void);
extern uint8_t get_keycode_type_bit();
extern uint8_t get_keycode();
extern void reset_keycode();
#endif