mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 11:31:13 +00:00
Merge 7ca6839b13
into 36c3f4deba
This commit is contained in:
commit
ce9bab35a9
@ -501,11 +501,15 @@ void mousekey_off(uint8_t code) {
|
|||||||
|
|
||||||
enum { mkspd_unmod, mkspd_0, mkspd_1, mkspd_2, mkspd_COUNT };
|
enum { mkspd_unmod, mkspd_0, mkspd_1, mkspd_2, mkspd_COUNT };
|
||||||
# ifndef MK_MOMENTARY_ACCEL
|
# ifndef MK_MOMENTARY_ACCEL
|
||||||
static uint8_t mk_speed = mkspd_1;
|
static uint8_t mk_speed = mkspd_1;
|
||||||
# else
|
# else
|
||||||
static uint8_t mk_speed = mkspd_unmod;
|
static uint8_t mk_speed = mkspd_unmod;
|
||||||
static uint8_t mkspd_DEFAULT = mkspd_unmod;
|
static uint8_t mkspd_DEFAULT = mkspd_unmod;
|
||||||
|
static uint8_t mk_speed_mask = 0;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
// WU, WD, WL, WR, U, D, L, R
|
||||||
|
static uint8_t mousekeys_pressed = 0;
|
||||||
static uint16_t last_timer_c = 0;
|
static uint16_t last_timer_c = 0;
|
||||||
static uint16_t last_timer_w = 0;
|
static uint16_t last_timer_w = 0;
|
||||||
uint16_t c_offsets[mkspd_COUNT] = {MK_C_OFFSET_UNMOD, MK_C_OFFSET_0, MK_C_OFFSET_1, MK_C_OFFSET_2};
|
uint16_t c_offsets[mkspd_COUNT] = {MK_C_OFFSET_UNMOD, MK_C_OFFSET_0, MK_C_OFFSET_1, MK_C_OFFSET_2};
|
||||||
@ -564,34 +568,53 @@ void adjust_speed(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_mouse_report(void) {
|
||||||
|
uint16_t const c_offset = c_offsets[mk_speed];
|
||||||
|
uint16_t const w_offset = w_offsets[mk_speed];
|
||||||
|
mouse_report.x = c_offset * ((mousekeys_pressed & (1 << 0) ? 1 : 0) - (mousekeys_pressed & (1 << 1) ? 1 : 0));
|
||||||
|
mouse_report.y = c_offset * ((mousekeys_pressed & (1 << 2) ? 1 : 0) - (mousekeys_pressed & (1 << 3) ? 1 : 0));
|
||||||
|
mouse_report.v = w_offset * ((mousekeys_pressed & (1 << 7) ? 1 : 0) - (mousekeys_pressed & (1 << 6) ? 1 : 0));
|
||||||
|
mouse_report.h = w_offset * ((mousekeys_pressed & (1 << 4) ? 1 : 0) - (mousekeys_pressed & (1 << 5) ? 1 : 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef MK_MOMENTARY_ACCEL
|
||||||
|
void update_mk_speed(void) {
|
||||||
|
if (mk_speed_mask & (1 << 2))
|
||||||
|
mk_speed = mkspd_2;
|
||||||
|
else if (mk_speed_mask & (1 << 1))
|
||||||
|
mk_speed = mkspd_1;
|
||||||
|
else if (mk_speed_mask & (1 << 0))
|
||||||
|
mk_speed = mkspd_0;
|
||||||
|
else
|
||||||
|
mk_speed = mkspd_DEFAULT;
|
||||||
|
update_mouse_report();
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
void mousekey_on(uint8_t code) {
|
void mousekey_on(uint8_t code) {
|
||||||
uint16_t const c_offset = c_offsets[mk_speed];
|
uint8_t const old_speed = mk_speed;
|
||||||
uint16_t const w_offset = w_offsets[mk_speed];
|
if (code >= QK_MOUSE_CURSOR_UP && code <= QK_MOUSE_CURSOR_RIGHT)
|
||||||
uint8_t const old_speed = mk_speed;
|
mousekeys_pressed |= 1 << (QK_MOUSE_CURSOR_RIGHT - code);
|
||||||
if (code == QK_MOUSE_CURSOR_UP)
|
else if (code >= QK_MOUSE_WHEEL_UP && code <= QK_MOUSE_WHEEL_RIGHT)
|
||||||
mouse_report.y = c_offset * -1;
|
mousekeys_pressed |= 1 << (QK_MOUSE_WHEEL_RIGHT - code + 4);
|
||||||
else if (code == QK_MOUSE_CURSOR_DOWN)
|
|
||||||
mouse_report.y = c_offset;
|
|
||||||
else if (code == QK_MOUSE_CURSOR_LEFT)
|
|
||||||
mouse_report.x = c_offset * -1;
|
|
||||||
else if (code == QK_MOUSE_CURSOR_RIGHT)
|
|
||||||
mouse_report.x = c_offset;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_UP)
|
|
||||||
mouse_report.v = w_offset;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_DOWN)
|
|
||||||
mouse_report.v = w_offset * -1;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_LEFT)
|
|
||||||
mouse_report.h = w_offset * -1;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_RIGHT)
|
|
||||||
mouse_report.h = w_offset;
|
|
||||||
else if (IS_MOUSEKEY_BUTTON(code))
|
else if (IS_MOUSEKEY_BUTTON(code))
|
||||||
mouse_report.buttons |= 1 << (code - QK_MOUSE_BUTTON_1);
|
mouse_report.buttons |= 1 << (code - QK_MOUSE_BUTTON_1);
|
||||||
|
# ifndef MK_MOMENTARY_ACCEL
|
||||||
else if (code == QK_MOUSE_ACCELERATION_0)
|
else if (code == QK_MOUSE_ACCELERATION_0)
|
||||||
mk_speed = mkspd_0;
|
mk_speed = mkspd_0;
|
||||||
else if (code == QK_MOUSE_ACCELERATION_1)
|
else if (code == QK_MOUSE_ACCELERATION_1)
|
||||||
mk_speed = mkspd_1;
|
mk_speed = mkspd_1;
|
||||||
else if (code == QK_MOUSE_ACCELERATION_2)
|
else if (code == QK_MOUSE_ACCELERATION_2)
|
||||||
mk_speed = mkspd_2;
|
mk_speed = mkspd_2;
|
||||||
|
# else
|
||||||
|
else if (code >= QK_MOUSE_ACCELERATION_0 && code <= QK_MOUSE_ACCELERATION_2)
|
||||||
|
mk_speed_mask |= 1 << (code - QK_MOUSE_ACCELERATION_0);
|
||||||
|
|
||||||
|
update_mk_speed();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
update_mouse_report();
|
||||||
|
|
||||||
if (mk_speed != old_speed) adjust_speed();
|
if (mk_speed != old_speed) adjust_speed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,33 +622,20 @@ void mousekey_off(uint8_t code) {
|
|||||||
# ifdef MK_MOMENTARY_ACCEL
|
# ifdef MK_MOMENTARY_ACCEL
|
||||||
uint8_t const old_speed = mk_speed;
|
uint8_t const old_speed = mk_speed;
|
||||||
# endif
|
# endif
|
||||||
if (code == QK_MOUSE_CURSOR_UP && mouse_report.y < 0)
|
if (code >= QK_MOUSE_CURSOR_UP && code <= QK_MOUSE_CURSOR_RIGHT)
|
||||||
mouse_report.y = 0;
|
mousekeys_pressed &= ~(1 << (QK_MOUSE_CURSOR_RIGHT - code));
|
||||||
else if (code == QK_MOUSE_CURSOR_DOWN && mouse_report.y > 0)
|
else if (code >= QK_MOUSE_WHEEL_UP && code <= QK_MOUSE_WHEEL_RIGHT)
|
||||||
mouse_report.y = 0;
|
mousekeys_pressed &= ~(1 << (QK_MOUSE_WHEEL_RIGHT - code + 4));
|
||||||
else if (code == QK_MOUSE_CURSOR_LEFT && mouse_report.x < 0)
|
|
||||||
mouse_report.x = 0;
|
|
||||||
else if (code == QK_MOUSE_CURSOR_RIGHT && mouse_report.x > 0)
|
|
||||||
mouse_report.x = 0;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_UP && mouse_report.v > 0)
|
|
||||||
mouse_report.v = 0;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_DOWN && mouse_report.v < 0)
|
|
||||||
mouse_report.v = 0;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_LEFT && mouse_report.h < 0)
|
|
||||||
mouse_report.h = 0;
|
|
||||||
else if (code == QK_MOUSE_WHEEL_RIGHT && mouse_report.h > 0)
|
|
||||||
mouse_report.h = 0;
|
|
||||||
else if (IS_MOUSEKEY_BUTTON(code))
|
else if (IS_MOUSEKEY_BUTTON(code))
|
||||||
mouse_report.buttons &= ~(1 << (code - QK_MOUSE_BUTTON_1));
|
mouse_report.buttons &= ~(1 << (code - QK_MOUSE_BUTTON_1));
|
||||||
# ifdef MK_MOMENTARY_ACCEL
|
# ifdef MK_MOMENTARY_ACCEL
|
||||||
else if (code == QK_MOUSE_ACCELERATION_0)
|
else if (code >= QK_MOUSE_ACCELERATION_0 && code <= QK_MOUSE_ACCELERATION_2)
|
||||||
mk_speed = mkspd_DEFAULT;
|
mk_speed_mask &= ~(1 << (code - QK_MOUSE_ACCELERATION_0));
|
||||||
else if (code == QK_MOUSE_ACCELERATION_1)
|
update_mk_speed();
|
||||||
mk_speed = mkspd_DEFAULT;
|
|
||||||
else if (code == QK_MOUSE_ACCELERATION_2)
|
|
||||||
mk_speed = mkspd_DEFAULT;
|
|
||||||
if (mk_speed != old_speed) adjust_speed();
|
if (mk_speed != old_speed) adjust_speed();
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
update_mouse_report();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* #ifndef MK_3_SPEED */
|
#endif /* #ifndef MK_3_SPEED */
|
||||||
|
Loading…
Reference in New Issue
Block a user