Re-fix Mousekey Movements (#5740)

* Re-fix Mousekey Movements

After the new movement model was instroduced, it broke diagonal momement, again.  Reapplying fix from #3147 to both old and new acceleration method.

* Make diagonal mouse report checks more readable

Co-Authored-By: drashna <drashna@live.com>
This commit is contained in:
Drashna Jaelre 2019-05-06 08:35:01 -07:00 committed by MechMerlin
parent fbc40032e7
commit 8a9c90ad78

View file

@ -114,7 +114,9 @@ void mousekey_task(void) {
/* diagonal move [1/sqrt(2)] */ /* diagonal move [1/sqrt(2)] */
if (mouse_report.x && mouse_report.y) { if (mouse_report.x && mouse_report.y) {
mouse_report.x = times_inv_sqrt2(mouse_report.x); mouse_report.x = times_inv_sqrt2(mouse_report.x);
if (mouse_report.x == 0) { mouse_report.x = 1; }
mouse_report.y = times_inv_sqrt2(mouse_report.y); mouse_report.y = times_inv_sqrt2(mouse_report.y);
if (mouse_report.y == 0) { mouse_report.y = 1; }
} }
if (mouse_report.v > 0) mouse_report.v = wheel_unit(); if (mouse_report.v > 0) mouse_report.v = wheel_unit();
if (mouse_report.v < 0) mouse_report.v = wheel_unit() * -1; if (mouse_report.v < 0) mouse_report.v = wheel_unit() * -1;
@ -232,7 +234,9 @@ void adjust_speed(void) {
// adjust for diagonals // adjust for diagonals
if (mouse_report.x && mouse_report.y) { if (mouse_report.x && mouse_report.y) {
mouse_report.x = times_inv_sqrt2(mouse_report.x); mouse_report.x = times_inv_sqrt2(mouse_report.x);
if (mouse_report.x == 0) { mouse_report.x = 1; }
mouse_report.y = times_inv_sqrt2(mouse_report.y); mouse_report.y = times_inv_sqrt2(mouse_report.y);
if (mouse_report.y == 0) { mouse_report.y = 1; }
} }
if (mouse_report.h && mouse_report.v) { if (mouse_report.h && mouse_report.v) {
mouse_report.h = times_inv_sqrt2(mouse_report.h); mouse_report.h = times_inv_sqrt2(mouse_report.h);