ReadKey.h 2.2 KB

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