You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
5.4 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  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. #pragma once
  15. #include <stdint.h>
  16. #include "host.h"
  17. #ifndef MK_3_SPEED
  18. /* max value on report descriptor */
  19. # ifndef MOUSEKEY_MOVE_MAX
  20. # define MOUSEKEY_MOVE_MAX 127
  21. # elif MOUSEKEY_MOVE_MAX > 127
  22. # error MOUSEKEY_MOVE_MAX needs to be smaller than 127
  23. # endif
  24. # ifndef MOUSEKEY_WHEEL_MAX
  25. # define MOUSEKEY_WHEEL_MAX 127
  26. # elif MOUSEKEY_WHEEL_MAX > 127
  27. # error MOUSEKEY_WHEEL_MAX needs to be smaller than 127
  28. # endif
  29. # ifndef MOUSEKEY_MOVE_DELTA
  30. # if defined(MK_KINETIC_SPEED)
  31. # define MOUSEKEY_MOVE_DELTA 16
  32. # elif defined(MOUSEKEY_INERTIA)
  33. # define MOUSEKEY_MOVE_DELTA 1
  34. # else
  35. # define MOUSEKEY_MOVE_DELTA 8
  36. # endif
  37. # endif
  38. # ifndef MOUSEKEY_DELAY
  39. # if defined(MK_KINETIC_SPEED)
  40. # define MOUSEKEY_DELAY 5
  41. # elif defined(MOUSEKEY_INERTIA)
  42. # define MOUSEKEY_DELAY 150 // allow single-pixel movements before repeat activates
  43. # else
  44. # define MOUSEKEY_DELAY 10
  45. # endif
  46. # endif
  47. # ifndef MOUSEKEY_INTERVAL
  48. # if defined(MK_KINETIC_SPEED)
  49. # define MOUSEKEY_INTERVAL 10
  50. # elif defined(MOUSEKEY_INERTIA)
  51. # define MOUSEKEY_INTERVAL 16 // 60 fps
  52. # else
  53. # define MOUSEKEY_INTERVAL 20
  54. # endif
  55. # endif
  56. # ifndef MOUSEKEY_MAX_SPEED
  57. # if defined(MOUSEKEY_INERTIA)
  58. # define MOUSEKEY_MAX_SPEED 32
  59. # else
  60. # define MOUSEKEY_MAX_SPEED 10
  61. # endif
  62. # endif
  63. # ifndef MOUSEKEY_TIME_TO_MAX
  64. # if defined(MOUSEKEY_INERTIA)
  65. # define MOUSEKEY_TIME_TO_MAX 32
  66. # else
  67. # define MOUSEKEY_TIME_TO_MAX 30
  68. # endif
  69. # endif
  70. # ifndef MOUSEKEY_WHEEL_DELAY
  71. # define MOUSEKEY_WHEEL_DELAY 10
  72. # endif
  73. # ifndef MOUSEKEY_WHEEL_INTERVAL
  74. # define MOUSEKEY_WHEEL_INTERVAL 80
  75. # endif
  76. # ifndef MOUSEKEY_WHEEL_DELTA
  77. # define MOUSEKEY_WHEEL_DELTA 1
  78. # endif
  79. # ifndef MOUSEKEY_WHEEL_MAX_SPEED
  80. # define MOUSEKEY_WHEEL_MAX_SPEED 8
  81. # endif
  82. # ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
  83. # define MOUSEKEY_WHEEL_TIME_TO_MAX 40
  84. # endif
  85. # ifndef MOUSEKEY_FRICTION
  86. # define MOUSEKEY_FRICTION 24 // 0 to 255
  87. # endif
  88. # ifndef MOUSEKEY_INITIAL_SPEED
  89. # define MOUSEKEY_INITIAL_SPEED 100
  90. # endif
  91. # ifndef MOUSEKEY_BASE_SPEED
  92. # define MOUSEKEY_BASE_SPEED 5000
  93. # endif
  94. # ifndef MOUSEKEY_DECELERATED_SPEED
  95. # define MOUSEKEY_DECELERATED_SPEED 400
  96. # endif
  97. # ifndef MOUSEKEY_ACCELERATED_SPEED
  98. # define MOUSEKEY_ACCELERATED_SPEED 3000
  99. # endif
  100. # ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
  101. # define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16
  102. # endif
  103. # ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
  104. # define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32
  105. # endif
  106. # ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
  107. # define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
  108. # endif
  109. # ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
  110. # define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
  111. # endif
  112. #else /* #ifndef MK_3_SPEED */
  113. # ifndef MK_C_OFFSET_UNMOD
  114. # define MK_C_OFFSET_UNMOD 16
  115. # endif
  116. # ifndef MK_C_INTERVAL_UNMOD
  117. # define MK_C_INTERVAL_UNMOD 16
  118. # endif
  119. # ifndef MK_C_OFFSET_0
  120. # define MK_C_OFFSET_0 1
  121. # endif
  122. # ifndef MK_C_INTERVAL_0
  123. # define MK_C_INTERVAL_0 32
  124. # endif
  125. # ifndef MK_C_OFFSET_1
  126. # define MK_C_OFFSET_1 4
  127. # endif
  128. # ifndef MK_C_INTERVAL_1
  129. # define MK_C_INTERVAL_1 16
  130. # endif
  131. # ifndef MK_C_OFFSET_2
  132. # define MK_C_OFFSET_2 32
  133. # endif
  134. # ifndef MK_C_INTERVAL_2
  135. # define MK_C_INTERVAL_2 16
  136. # endif
  137. # ifndef MK_W_OFFSET_UNMOD
  138. # define MK_W_OFFSET_UNMOD 1
  139. # endif
  140. # ifndef MK_W_INTERVAL_UNMOD
  141. # define MK_W_INTERVAL_UNMOD 40
  142. # endif
  143. # ifndef MK_W_OFFSET_0
  144. # define MK_W_OFFSET_0 1
  145. # endif
  146. # ifndef MK_W_INTERVAL_0
  147. # define MK_W_INTERVAL_0 360
  148. # endif
  149. # ifndef MK_W_OFFSET_1
  150. # define MK_W_OFFSET_1 1
  151. # endif
  152. # ifndef MK_W_INTERVAL_1
  153. # define MK_W_INTERVAL_1 120
  154. # endif
  155. # ifndef MK_W_OFFSET_2
  156. # define MK_W_OFFSET_2 1
  157. # endif
  158. # ifndef MK_W_INTERVAL_2
  159. # define MK_W_INTERVAL_2 20
  160. # endif
  161. #endif /* #ifndef MK_3_SPEED */
  162. #ifdef __cplusplus
  163. extern "C" {
  164. #endif
  165. extern uint8_t mk_delay;
  166. extern uint8_t mk_interval;
  167. extern uint8_t mk_max_speed;
  168. extern uint8_t mk_time_to_max;
  169. extern uint8_t mk_wheel_max_speed;
  170. extern uint8_t mk_wheel_time_to_max;
  171. void mousekey_task(void);
  172. void mousekey_on(uint8_t code);
  173. void mousekey_off(uint8_t code);
  174. void mousekey_clear(void);
  175. void mousekey_send(void);
  176. report_mouse_t mousekey_get_report(void);
  177. bool should_mousekey_report_send(report_mouse_t *mouse_report);
  178. #ifdef __cplusplus
  179. }
  180. #endif