mousekey.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*
  2. Copyright 2011 Jun Wako <wakojun@gmail.com>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #ifndef MOUSEKEY_H
  15. # define MOUSEKEY_H
  16. #endif
  17. #include <stdbool.h>
  18. #include "host.h"
  19. #ifndef MK_3_SPEED
  20. /* max value on report descriptor */
  21. # ifndef MOUSEKEY_MOVE_MAX
  22. # define MOUSEKEY_MOVE_MAX 127
  23. # elif MOUSEKEY_MOVE_MAX > 127
  24. # error MOUSEKEY_MOVE_MAX needs to be smaller than 127
  25. # endif
  26. # ifndef MOUSEKEY_WHEEL_MAX
  27. # define MOUSEKEY_WHEEL_MAX 127
  28. # elif MOUSEKEY_WHEEL_MAX > 127
  29. # error MOUSEKEY_WHEEL_MAX needs to be smaller than 127
  30. # endif
  31. # ifndef MOUSEKEY_MOVE_DELTA
  32. #ifndef MK_KINETIC_SPEED
  33. # define MOUSEKEY_MOVE_DELTA 5
  34. #else
  35. # define MOUSEKEY_MOVE_DELTA 25
  36. #endif
  37. # endif
  38. # ifndef MOUSEKEY_WHEEL_DELTA
  39. # define MOUSEKEY_WHEEL_DELTA 1
  40. # endif
  41. # ifndef MOUSEKEY_DELAY
  42. #ifndef MK_KINETIC_SPEED
  43. # define MOUSEKEY_DELAY 300
  44. #else
  45. # define MOUSEKEY_DELAY 8
  46. #endif
  47. # endif
  48. # ifndef MOUSEKEY_INTERVAL
  49. #ifndef MK_KINETIC_SPEED
  50. # define MOUSEKEY_INTERVAL 50
  51. #else
  52. # define MOUSEKEY_INTERVAL 8
  53. #endif
  54. # endif
  55. # ifndef MOUSEKEY_MAX_SPEED
  56. # define MOUSEKEY_MAX_SPEED 10
  57. # endif
  58. # ifndef MOUSEKEY_TIME_TO_MAX
  59. # define MOUSEKEY_TIME_TO_MAX 20
  60. # endif
  61. # ifndef MOUSEKEY_WHEEL_DELAY
  62. # define MOUSEKEY_WHEEL_DELAY 300
  63. # endif
  64. # ifndef MOUSEKEY_WHEEL_INTERVAL
  65. # define MOUSEKEY_WHEEL_INTERVAL 100
  66. # endif
  67. # ifndef MOUSEKEY_WHEEL_MAX_SPEED
  68. # define MOUSEKEY_WHEEL_MAX_SPEED 8
  69. # endif
  70. # ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
  71. # define MOUSEKEY_WHEEL_TIME_TO_MAX 40
  72. # endif
  73. #ifndef MOUSEKEY_INITIAL_SPEED
  74. #define MOUSEKEY_INITIAL_SPEED 100
  75. #endif
  76. #ifndef MOUSEKEY_BASE_SPEED
  77. #define MOUSEKEY_BASE_SPEED 1000
  78. #endif
  79. #ifndef MOUSEKEY_DECELERATED_SPEED
  80. #define MOUSEKEY_DECELERATED_SPEED 400
  81. #endif
  82. #ifndef MOUSEKEY_ACCELERATED_SPEED
  83. #define MOUSEKEY_ACCELERATED_SPEED 3000
  84. #endif
  85. #ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
  86. #define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16
  87. #endif
  88. #ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
  89. #define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32
  90. #endif
  91. #ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
  92. #define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
  93. #endif
  94. #ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
  95. #define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
  96. #endif
  97. #else /* #ifndef MK_3_SPEED */
  98. # ifndef MK_C_OFFSET_UNMOD
  99. # define MK_C_OFFSET_UNMOD 16
  100. # endif
  101. # ifndef MK_C_INTERVAL_UNMOD
  102. # define MK_C_INTERVAL_UNMOD 16
  103. # endif
  104. # ifndef MK_C_OFFSET_0
  105. # define MK_C_OFFSET_0 1
  106. # endif
  107. # ifndef MK_C_INTERVAL_0
  108. # define MK_C_INTERVAL_0 32
  109. # endif
  110. # ifndef MK_C_OFFSET_1
  111. # define MK_C_OFFSET_1 4
  112. # endif
  113. # ifndef MK_C_INTERVAL_1
  114. # define MK_C_INTERVAL_1 16
  115. # endif
  116. # ifndef MK_C_OFFSET_2
  117. # define MK_C_OFFSET_2 32
  118. # endif
  119. # ifndef MK_C_INTERVAL_2
  120. # define MK_C_INTERVAL_2 16
  121. # endif
  122. # ifndef MK_W_OFFSET_UNMOD
  123. # define MK_W_OFFSET_UNMOD 1
  124. # endif
  125. # ifndef MK_W_INTERVAL_UNMOD
  126. # define MK_W_INTERVAL_UNMOD 40
  127. # endif
  128. # ifndef MK_W_OFFSET_0
  129. # define MK_W_OFFSET_0 1
  130. # endif
  131. # ifndef MK_W_INTERVAL_0
  132. # define MK_W_INTERVAL_0 360
  133. # endif
  134. # ifndef MK_W_OFFSET_1
  135. # define MK_W_OFFSET_1 1
  136. # endif
  137. # ifndef MK_W_INTERVAL_1
  138. # define MK_W_INTERVAL_1 120
  139. # endif
  140. # ifndef MK_W_OFFSET_2
  141. # define MK_W_OFFSET_2 1
  142. # endif
  143. # ifndef MK_W_INTERVAL_2
  144. # define MK_W_INTERVAL_2 20
  145. # endif
  146. #endif /* #ifndef MK_3_SPEED */
  147. #ifdef __cplusplus
  148. extern "C" {
  149. #endif
  150. extern uint8_t mk_delay;
  151. extern uint8_t mk_interval;
  152. extern uint8_t mk_max_speed;
  153. extern uint8_t mk_time_to_max;
  154. extern uint8_t mk_wheel_max_speed;
  155. extern uint8_t mk_wheel_time_to_max;
  156. void mousekey_task(void);
  157. void mousekey_on(uint8_t code);
  158. void mousekey_off(uint8_t code);
  159. void mousekey_clear(void);
  160. void mousekey_send(void);
  161. #ifdef __cplusplus
  162. }
  163. #endif