matrix_keyboard.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef _MATRIX_KEYBOARD_H_
  2. #define _MATRIX_KEYBOARD_H_
  3. #include "typedef.h"
  4. //左/右CTL,在/右ALT,在/右SHIFT,左/右WIN键盘
  5. #define S_KEY(x) (x|(0x1<<8))
  6. #define _KEY_FN 0xff
  7. #define ROW_MAX 8
  8. #define COL_MAX 20
  9. enum {
  10. MATRIX_KEY_UP = 0,
  11. MATRIX_KEY_SHORT,
  12. MATRIX_KEY_LONG,
  13. MATRIX_KEY_HOLD,
  14. };
  15. typedef struct _matrix_key_st {
  16. u32 press_cnt;
  17. u8 last_st;
  18. u8 filter_cnt;
  19. u8 filter_value;
  20. u8 click_cnt;
  21. } matrix_key_st;
  22. typedef struct _matrix_key_param {
  23. u32 *row_pin_list; //row线IO口列表
  24. u32 *col_pin_list; //col线IO口列表
  25. u8 row_num; //row线数
  26. u8 col_num; //col线数
  27. } matrix_key_param;
  28. // int matrix_key_init(matrix_key_param *param);
  29. // void ex_mcu_enter_powerdown(void);
  30. // void ex_mcu_enter_poweroff(void);
  31. // void ex_mcu_exit_powerdown(u32 gpio);
  32. //------------------------按键宏接口---------------------------------//
  33. #if TCFG_EX_MCU_ENABLE
  34. void ex_mcu_enter_powerdown();
  35. void ex_mcu_exit_powerdown(u32 gpio);
  36. void ex_mcu_enter_poweroff();
  37. void ex_mcu_full_key_map(u8 row, u8 col, u8 st);
  38. void ex_mcu_matrix_key_set_io_state(u8 state, u32 *io_table, u8 len);
  39. void ex_mcu_matrix_key_scan();
  40. void ex_mcu_matrix_key_wakeup_timeout_handler(void *arg);
  41. void ex_mcu_matrix_key_wakeup_keep();
  42. void ex_mcu_matrix_key_wakeup(u8 idx, u32 gpio);
  43. int ex_mcu_matrix_key_init(matrix_key_param *param);
  44. #define EX_MCU_ENTER_POWERDOWN() ex_mcu_enter_powerdown()
  45. #define EX_MCU_EXIT_POWERDOWN(a) ex_mcu_exit_powerdown(a)
  46. #define EX_MCU_ENTER_POWEROFF() ex_mcu_enter_poweroff()
  47. #define FULL_KEY_MAP(a, b, c) ex_mcu_full_key_map(a, b, c)
  48. #define MATRIX_KEY_SET_IO_STATE(a, b, c) ex_mcu_matrix_key_set_io_state(a, b, c)
  49. #define MATRIX_KEY_SCAN() ex_mcu_matrix_key_scan()
  50. #define MATRIX_KEY_WAKEUP_TIMEOUT_HANDLER(a) ex_mcu_matrix_key_wakeup_timeout_handler(a)
  51. #define MATRIX_KEY_WAKEUP_KEEP() ex_mcu_matrix_key_wakeup_keep()
  52. #define MATRIX_KEY_WAKEUP(a, b) ex_mcu_matrix_key_wakeup(a, b)
  53. #define MATRIX_KEY_INIT(a) ex_mcu_matrix_key_init(a)
  54. #else
  55. void full_key_map(u8 row, u8 col, u8 st);
  56. void matrix_key_set_io_state(u8 state, u32 *io_table, u8 len);
  57. void matrix_key_scan();
  58. void matrix_key_wakeup_timeout_handler(void *arg);
  59. void matrix_key_wakeup_keep();
  60. void matrix_key_wakeup(u8 idx, u32 gpio);
  61. int matrix_key_init(matrix_key_param *param);
  62. #define EX_MCU_ENTER_POWERDOWN()
  63. #define EX_MCU_EXIT_POWERDOWN(a)
  64. #define EX_MCU_ENTER_POWEROFF()
  65. #define FULL_KEY_MAP(a, b, c) full_key_map(a, b, c)
  66. #define MATRIX_KEY_SET_IO_STATE(a, b, c) matrix_key_set_io_state(a, b, c)
  67. #define MATRIX_KEY_SCAN() matrix_key_scan()
  68. #define MATRIX_KEY_WAKEUP_TIMEOUT_HANDLER(a) matrix_key_wakeup_timeout_handler(a)
  69. #define MATRIX_KEY_WAKEUP_KEEP() matrix_key_wakeup_keep()
  70. #define MATRIX_KEY_WAKEUP(a, b) matrix_key_wakeup(a, b)
  71. #define MATRIX_KEY_INIT(a) matrix_key_init(a)
  72. #endif
  73. #endif