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.

181 lines
4.8 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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. # ifndef MK_KINETIC_SPEED
  31. # define MOUSEKEY_MOVE_DELTA 8
  32. # else
  33. # define MOUSEKEY_MOVE_DELTA 5
  34. # endif
  35. # endif
  36. # ifndef MOUSEKEY_WHEEL_DELTA
  37. # define MOUSEKEY_WHEEL_DELTA 1
  38. # endif
  39. # ifndef MOUSEKEY_DELAY
  40. # ifndef MK_KINETIC_SPEED
  41. # define MOUSEKEY_DELAY 10
  42. # else
  43. # define MOUSEKEY_DELAY 5
  44. # endif
  45. # endif
  46. # ifndef MOUSEKEY_INTERVAL
  47. # ifndef MK_KINETIC_SPEED
  48. # define MOUSEKEY_INTERVAL 20
  49. # else
  50. # define MOUSEKEY_INTERVAL 10
  51. # endif
  52. # endif
  53. # ifndef MOUSEKEY_MAX_SPEED
  54. # define MOUSEKEY_MAX_SPEED 10
  55. # endif
  56. # ifndef MOUSEKEY_TIME_TO_MAX
  57. # define MOUSEKEY_TIME_TO_MAX 30
  58. # endif
  59. # ifndef MOUSEKEY_WHEEL_DELAY
  60. # define MOUSEKEY_WHEEL_DELAY 10
  61. # endif
  62. # ifndef MOUSEKEY_WHEEL_INTERVAL
  63. # define MOUSEKEY_WHEEL_INTERVAL 80
  64. # endif
  65. # ifndef MOUSEKEY_WHEEL_MAX_SPEED
  66. # define MOUSEKEY_WHEEL_MAX_SPEED 8
  67. # endif
  68. # ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
  69. # define MOUSEKEY_WHEEL_TIME_TO_MAX 40
  70. # endif
  71. # ifndef MOUSEKEY_INITIAL_SPEED
  72. # define MOUSEKEY_INITIAL_SPEED 100
  73. # endif
  74. # ifndef MOUSEKEY_BASE_SPEED
  75. # define MOUSEKEY_BASE_SPEED 1000
  76. # endif
  77. # ifndef MOUSEKEY_DECELERATED_SPEED
  78. # define MOUSEKEY_DECELERATED_SPEED 400
  79. # endif
  80. # ifndef MOUSEKEY_ACCELERATED_SPEED
  81. # define MOUSEKEY_ACCELERATED_SPEED 3000
  82. # endif
  83. # ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
  84. # define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16
  85. # endif
  86. # ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
  87. # define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32
  88. # endif
  89. # ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
  90. # define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
  91. # endif
  92. # ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
  93. # define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
  94. # endif
  95. #else /* #ifndef MK_3_SPEED */
  96. # ifndef MK_C_OFFSET_UNMOD
  97. # define MK_C_OFFSET_UNMOD 16
  98. # endif
  99. # ifndef MK_C_INTERVAL_UNMOD
  100. # define MK_C_INTERVAL_UNMOD 16
  101. # endif
  102. # ifndef MK_C_OFFSET_0
  103. # define MK_C_OFFSET_0 1
  104. # endif
  105. # ifndef MK_C_INTERVAL_0
  106. # define MK_C_INTERVAL_0 32
  107. # endif
  108. # ifndef MK_C_OFFSET_1
  109. # define MK_C_OFFSET_1 4
  110. # endif
  111. # ifndef MK_C_INTERVAL_1
  112. # define MK_C_INTERVAL_1 16
  113. # endif
  114. # ifndef MK_C_OFFSET_2
  115. # define MK_C_OFFSET_2 32
  116. # endif
  117. # ifndef MK_C_INTERVAL_2
  118. # define MK_C_INTERVAL_2 16
  119. # endif
  120. # ifndef MK_W_OFFSET_UNMOD
  121. # define MK_W_OFFSET_UNMOD 1
  122. # endif
  123. # ifndef MK_W_INTERVAL_UNMOD
  124. # define MK_W_INTERVAL_UNMOD 40
  125. # endif
  126. # ifndef MK_W_OFFSET_0
  127. # define MK_W_OFFSET_0 1
  128. # endif
  129. # ifndef MK_W_INTERVAL_0
  130. # define MK_W_INTERVAL_0 360
  131. # endif
  132. # ifndef MK_W_OFFSET_1
  133. # define MK_W_OFFSET_1 1
  134. # endif
  135. # ifndef MK_W_INTERVAL_1
  136. # define MK_W_INTERVAL_1 120
  137. # endif
  138. # ifndef MK_W_OFFSET_2
  139. # define MK_W_OFFSET_2 1
  140. # endif
  141. # ifndef MK_W_INTERVAL_2
  142. # define MK_W_INTERVAL_2 20
  143. # endif
  144. #endif /* #ifndef MK_3_SPEED */
  145. #ifdef __cplusplus
  146. extern "C" {
  147. #endif
  148. extern uint8_t mk_delay;
  149. extern uint8_t mk_interval;
  150. extern uint8_t mk_max_speed;
  151. extern uint8_t mk_time_to_max;
  152. extern uint8_t mk_wheel_max_speed;
  153. extern uint8_t mk_wheel_time_to_max;
  154. void mousekey_task(void);
  155. void mousekey_on(uint8_t code);
  156. void mousekey_off(uint8_t code);
  157. void mousekey_clear(void);
  158. void mousekey_send(void);
  159. report_mouse_t mousekey_get_report(void);
  160. bool should_mousekey_report_send(report_mouse_t *mouse_report);
  161. #ifdef __cplusplus
  162. }
  163. #endif