diff options
Diffstat (limited to 'common/mousekey.c')
| -rw-r--r-- | common/mousekey.c | 95 |
1 files changed, 47 insertions, 48 deletions
diff --git a/common/mousekey.c b/common/mousekey.c index 4b1fe1740..353890a16 100644 --- a/common/mousekey.c +++ b/common/mousekey.c | |||
| @@ -25,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 25 | #include "mousekey.h" | 25 | #include "mousekey.h" |
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | static report_mouse_t report; | ||
| 29 | 28 | ||
| 30 | static uint8_t mousekey_repeat = 0; | 29 | static uint8_t mousekey_repeat = 0; |
| 31 | 30 | ||
| @@ -115,89 +114,89 @@ void mousekey_task(void) | |||
| 115 | if (timer_elapsed(last_timer) < (mousekey_repeat ? mk_interval : mk_delay*10)) | 114 | if (timer_elapsed(last_timer) < (mousekey_repeat ? mk_interval : mk_delay*10)) |
| 116 | return; | 115 | return; |
| 117 | 116 | ||
| 118 | if (report.x == 0 && report.y == 0 && report.v == 0 && report.h == 0) | 117 | if (mouse_report.x == 0 && mouse_report.y == 0 && mouse_report.v == 0 && mouse_report.h == 0) |
| 119 | return; | 118 | return; |
| 120 | 119 | ||
| 121 | if (mousekey_repeat != UINT8_MAX) | 120 | if (mousekey_repeat != UINT8_MAX) |
| 122 | mousekey_repeat++; | 121 | mousekey_repeat++; |
| 123 | 122 | ||
| 124 | 123 | ||
| 125 | if (report.x > 0) report.x = move_unit(); | 124 | if (mouse_report.x > 0) mouse_report.x = move_unit(); |
| 126 | if (report.x < 0) report.x = move_unit() * -1; | 125 | if (mouse_report.x < 0) mouse_report.x = move_unit() * -1; |
| 127 | if (report.y > 0) report.y = move_unit(); | 126 | if (mouse_report.y > 0) mouse_report.y = move_unit(); |
| 128 | if (report.y < 0) report.y = move_unit() * -1; | 127 | if (mouse_report.y < 0) mouse_report.y = move_unit() * -1; |
| 129 | 128 | ||
| 130 | if (report.x && report.y) { | 129 | if (mouse_report.x && mouse_report.y) { |
| 131 | report.x *= 0.7; | 130 | mouse_report.x *= 0.7; |
| 132 | report.y *= 0.7; | 131 | mouse_report.y *= 0.7; |
| 133 | } | 132 | } |
| 134 | 133 | ||
| 135 | if (report.v > 0) report.v = wheel_unit(); | 134 | if (mouse_report.v > 0) mouse_report.v = wheel_unit(); |
| 136 | if (report.v < 0) report.v = wheel_unit() * -1; | 135 | if (mouse_report.v < 0) mouse_report.v = wheel_unit() * -1; |
| 137 | if (report.h > 0) report.h = wheel_unit(); | 136 | if (mouse_report.h > 0) mouse_report.h = wheel_unit(); |
| 138 | if (report.h < 0) report.h = wheel_unit() * -1; | 137 | if (mouse_report.h < 0) mouse_report.h = wheel_unit() * -1; |
| 139 | 138 | ||
| 140 | mousekey_send(); | 139 | mousekey_send(); |
| 141 | } | 140 | } |
| 142 | 141 | ||
| 143 | void mousekey_on(uint8_t code) | 142 | void mousekey_on(uint8_t code) |
| 144 | { | 143 | { |
| 145 | if (code == KC_MS_UP) report.y = MOUSEKEY_MOVE_DELTA * -1; | 144 | if (code == KC_MS_UP) mouse_report.y = MOUSEKEY_MOVE_DELTA * -1; |
| 146 | else if (code == KC_MS_DOWN) report.y = MOUSEKEY_MOVE_DELTA; | 145 | else if (code == KC_MS_DOWN) mouse_report.y = MOUSEKEY_MOVE_DELTA; |
| 147 | else if (code == KC_MS_LEFT) report.x = MOUSEKEY_MOVE_DELTA * -1; | 146 | else if (code == KC_MS_LEFT) mouse_report.x = MOUSEKEY_MOVE_DELTA * -1; |
| 148 | else if (code == KC_MS_RIGHT) report.x = MOUSEKEY_MOVE_DELTA; | 147 | else if (code == KC_MS_RIGHT) mouse_report.x = MOUSEKEY_MOVE_DELTA; |
| 149 | else if (code == KC_MS_WH_UP) report.v = MOUSEKEY_WHEEL_DELTA; | 148 | else if (code == KC_MS_WH_UP) mouse_report.v = MOUSEKEY_WHEEL_DELTA; |
| 150 | else if (code == KC_MS_WH_DOWN) report.v = MOUSEKEY_WHEEL_DELTA * -1; | 149 | else if (code == KC_MS_WH_DOWN) mouse_report.v = MOUSEKEY_WHEEL_DELTA * -1; |
| 151 | else if (code == KC_MS_WH_LEFT) report.h = MOUSEKEY_WHEEL_DELTA * -1; | 150 | else if (code == KC_MS_WH_LEFT) mouse_report.h = MOUSEKEY_WHEEL_DELTA * -1; |
| 152 | else if (code == KC_MS_WH_RIGHT) report.h = MOUSEKEY_WHEEL_DELTA; | 151 | else if (code == KC_MS_WH_RIGHT) mouse_report.h = MOUSEKEY_WHEEL_DELTA; |
| 153 | else if (code == KC_MS_BTN1) report.buttons |= MOUSE_BTN1; | 152 | else if (code == KC_MS_BTN1) mouse_report.buttons |= MOUSE_BTN1; |
| 154 | else if (code == KC_MS_BTN2) report.buttons |= MOUSE_BTN2; | 153 | else if (code == KC_MS_BTN2) mouse_report.buttons |= MOUSE_BTN2; |
| 155 | else if (code == KC_MS_BTN3) report.buttons |= MOUSE_BTN3; | 154 | else if (code == KC_MS_BTN3) mouse_report.buttons |= MOUSE_BTN3; |
| 156 | else if (code == KC_MS_BTN4) report.buttons |= MOUSE_BTN4; | 155 | else if (code == KC_MS_BTN4) mouse_report.buttons |= MOUSE_BTN4; |
| 157 | else if (code == KC_MS_BTN5) report.buttons |= MOUSE_BTN5; | 156 | else if (code == KC_MS_BTN5) mouse_report.buttons |= MOUSE_BTN5; |
| 158 | } | 157 | } |
| 159 | 158 | ||
| 160 | void mousekey_off(uint8_t code) | 159 | void mousekey_off(uint8_t code) |
| 161 | { | 160 | { |
| 162 | if (code == KC_MS_UP && report.y < 0) report.y = 0; | 161 | if (code == KC_MS_UP && mouse_report.y < 0) mouse_report.y = 0; |
| 163 | else if (code == KC_MS_DOWN && report.y > 0) report.y = 0; | 162 | else if (code == KC_MS_DOWN && mouse_report.y > 0) mouse_report.y = 0; |
| 164 | else if (code == KC_MS_LEFT && report.x < 0) report.x = 0; | 163 | else if (code == KC_MS_LEFT && mouse_report.x < 0) mouse_report.x = 0; |
| 165 | else if (code == KC_MS_RIGHT && report.x > 0) report.x = 0; | 164 | else if (code == KC_MS_RIGHT && mouse_report.x > 0) mouse_report.x = 0; |
| 166 | else if (code == KC_MS_WH_UP && report.v > 0) report.v = 0; | 165 | else if (code == KC_MS_WH_UP && mouse_report.v > 0) mouse_report.v = 0; |
| 167 | else if (code == KC_MS_WH_DOWN && report.v < 0) report.v = 0; | 166 | else if (code == KC_MS_WH_DOWN && mouse_report.v < 0) mouse_report.v = 0; |
| 168 | else if (code == KC_MS_WH_LEFT && report.h < 0) report.h = 0; | 167 | else if (code == KC_MS_WH_LEFT && mouse_report.h < 0) mouse_report.h = 0; |
| 169 | else if (code == KC_MS_WH_RIGHT && report.h > 0) report.h = 0; | 168 | else if (code == KC_MS_WH_RIGHT && mouse_report.h > 0) mouse_report.h = 0; |
| 170 | else if (code == KC_MS_BTN1) report.buttons &= ~MOUSE_BTN1; | 169 | else if (code == KC_MS_BTN1) mouse_report.buttons &= ~MOUSE_BTN1; |
| 171 | else if (code == KC_MS_BTN2) report.buttons &= ~MOUSE_BTN2; | 170 | else if (code == KC_MS_BTN2) mouse_report.buttons &= ~MOUSE_BTN2; |
| 172 | else if (code == KC_MS_BTN3) report.buttons &= ~MOUSE_BTN3; | 171 | else if (code == KC_MS_BTN3) mouse_report.buttons &= ~MOUSE_BTN3; |
| 173 | else if (code == KC_MS_BTN4) report.buttons &= ~MOUSE_BTN4; | 172 | else if (code == KC_MS_BTN4) mouse_report.buttons &= ~MOUSE_BTN4; |
| 174 | else if (code == KC_MS_BTN5) report.buttons &= ~MOUSE_BTN5; | 173 | else if (code == KC_MS_BTN5) mouse_report.buttons &= ~MOUSE_BTN5; |
| 175 | 174 | ||
| 176 | if (report.x == 0 && report.y == 0 && report.v == 0 && report.h == 0) | 175 | if (mouse_report.x == 0 && mouse_report.y == 0 && mouse_report.v == 0 && mouse_report.h == 0) |
| 177 | mousekey_repeat = 0; | 176 | mousekey_repeat = 0; |
| 178 | } | 177 | } |
| 179 | 178 | ||
| 180 | void mousekey_send(void) | 179 | void mousekey_send(void) |
| 181 | { | 180 | { |
| 182 | mousekey_debug(); | 181 | mousekey_debug(); |
| 183 | host_mouse_send(&report); | 182 | host_mouse_send(&mouse_report); |
| 184 | last_timer = timer_read(); | 183 | last_timer = timer_read(); |
| 185 | } | 184 | } |
| 186 | 185 | ||
| 187 | void mousekey_clear(void) | 186 | void mousekey_clear(void) |
| 188 | { | 187 | { |
| 189 | report = (report_mouse_t){}; | 188 | mouse_report = (report_mouse_t){}; |
| 190 | } | 189 | } |
| 191 | 190 | ||
| 192 | static void mousekey_debug(void) | 191 | static void mousekey_debug(void) |
| 193 | { | 192 | { |
| 194 | if (!debug_mouse) return; | 193 | if (!debug_mouse) return; |
| 195 | print("mousekey [btn|x y v h]rep: ["); | 194 | print("mousekey [btn|x y v h]rep: ["); |
| 196 | phex(report.buttons); print("|"); | 195 | phex(mouse_report.buttons); print("|"); |
| 197 | phex(report.x); print(" "); | 196 | phex(mouse_report.x); print(" "); |
| 198 | phex(report.y); print(" "); | 197 | phex(mouse_report.y); print(" "); |
| 199 | phex(report.v); print(" "); | 198 | phex(mouse_report.v); print(" "); |
| 200 | phex(report.h); print("]"); | 199 | phex(mouse_report.h); print("]"); |
| 201 | phex(mousekey_repeat); | 200 | phex(mousekey_repeat); |
| 202 | print("\n"); | 201 | print("\n"); |
| 203 | } | 202 | } |
