ReadKey.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef _ReadKey_H
  2. #define _ReadKey_H
  3. #include <stdbool.h>
  4. #define baseTime 10 //KeyValueChange()调用的基准时间
  5. typedef struct{
  6. bool enReleaseKey; //使能弹起有效功能
  7. bool enDoubleKey; //使能双击有效功能
  8. bool enLongKey; //使能长按有效功能
  9. bool enCyclicKey; //使能按下有效,周期性触发功能
  10. bool stReleaseKey; //弹起状态
  11. bool stDoubleKey; //双击状态
  12. bool stLongKey; //长按状态
  13. bool stCyclicKey; //按下有效,周期性触发功能状态
  14. bool isDown; //按键按下=true,按键弹起=false
  15. unsigned int downTime; //按键按下时间
  16. unsigned int upTime; //按键弹起时间
  17. unsigned char oldValue; //上一次按键
  18. unsigned char newValue; //当前按键
  19. }KeyParam_ts;
  20. typedef struct{
  21. bool haveKey; //产生了新按键
  22. unsigned char value; //按键键值
  23. }KeyParamExt_ts;
  24. /**
  25. * --------按键功能转换
  26. * @since 2018-7-25
  27. * @Param1 PreKeyValue:需要转换实现功能的按键键值
  28. * @Addition
  29. * 可以产生长按有效,弹起有效,长按循环有效,双击有效功能
  30. * 长按有效,长按循环有效,双击有效功能响应时间受该函数的调用
  31. * 基准时间有关,本例基准时间为10ms,请知悉!
  32. * @Return
  33. * KeyParamExt_ts:haveKey=true才可以处理按键,value取得键值
  34. */
  35. KeyParamExt_ts *KeyValueChange(unsigned char PreKeyValue);
  36. /**
  37. * --------使能双击有效功能
  38. * @since 2018-7-25
  39. * @Param1 void
  40. * @Addition Keys.upTime:基准时间10ms
  41. * 使用方法见.c文件头
  42. * @Return
  43. *
  44. */
  45. void EnableDoubleKey(void);
  46. bool getDoubleKeySt(void);
  47. void clearDoubleKey(void);
  48. /**
  49. * --------使能长按有效功能,单次有效
  50. * @since 2018-7-25
  51. * @Param1 void
  52. * @Addition Keys.downTime:基准时间10ms
  53. * 使用方法见.c文件头
  54. * @Return
  55. *
  56. */
  57. void EnableLongKey(unsigned int Xms);
  58. bool getLongKeySt(void);
  59. void clearLongKey(void);
  60. /**
  61. * --------使能循环长按有效功能,循环有效
  62. * @since 2018-7-25
  63. * @Param1 void
  64. * @Addition Keys.downTime:基准时间10ms
  65. * 使用方法见.c文件头
  66. * @Return
  67. *
  68. */
  69. void EnableCyclicKey(unsigned int Xms);
  70. bool getCyclicKeySt(void);
  71. void clearCyclicKey(void);
  72. /**
  73. * --------使能弹起有效功能
  74. * @since 2018-7-25
  75. * @Param1 void
  76. * @Addition
  77. * 使用方法见.c文件头
  78. * @Return
  79. *
  80. */
  81. void EnableReleaseKey(void);
  82. bool getReleaseKeySt(void);
  83. void clearReleaseKey(void);
  84. #endif