logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

mousekey.h (5859B)


  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. #ifndef MOUSEKEY_OVERLAP_MOVE_DELTA
  163. # define MOUSEKEY_OVERLAP_MOVE_DELTA MOUSEKEY_MOVE_DELTA
  164. #endif
  165. #ifndef MOUSEKEY_OVERLAP_WHEEL_DELTA
  166. # define MOUSEKEY_OVERLAP_WHEEL_DELTA MOUSEKEY_WHEEL_DELTA
  167. #endif
  168. #ifndef MOUSEKEY_OVERLAP_INTERVAL
  169. # define MOUSEKEY_OVERLAP_INTERVAL MOUSEKEY_INTERVAL
  170. #endif
  171. #ifdef __cplusplus
  172. extern "C" {
  173. #endif
  174. extern uint8_t mk_delay;
  175. extern uint8_t mk_interval;
  176. extern uint8_t mk_max_speed;
  177. extern uint8_t mk_time_to_max;
  178. extern uint8_t mk_wheel_max_speed;
  179. extern uint8_t mk_wheel_time_to_max;
  180. void mousekey_task(void);
  181. void mousekey_on(uint8_t code);
  182. void mousekey_off(uint8_t code);
  183. void mousekey_clear(void);
  184. void mousekey_send(void);
  185. report_mouse_t mousekey_get_report(void);
  186. bool should_mousekey_report_send(report_mouse_t *mouse_report);
  187. #ifdef __cplusplus
  188. }
  189. #endif