Fix up mouse acceleration

This commit is contained in:
Willy-JL
2023-10-24 01:41:09 +01:00
parent d3e83a9182
commit 5d368f2add

View File

@@ -22,10 +22,9 @@ typedef struct {
bool left_mouse_held;
bool right_mouse_pressed;
bool connected;
uint32_t button_press_repeat_count;
uint8_t acceleration;
HidTransport transport;
} HidMouseModel;
static uint32_t button_press_repeat_count;
static void hid_mouse_draw_callback(Canvas* canvas, void* context) {
furi_assert(context);
@@ -121,11 +120,10 @@ static void hid_mouse_process(HidMouse* hid_mouse, InputEvent* event) {
hid_mouse->view,
HidMouseModel * model,
{
button_press_repeat_count =
(event->type == InputTypePress) ? 2 :
(event->type == InputTypeRelease) ? 0 :
(button_press_repeat_count > 10) ? 10 :
++button_press_repeat_count;
model->acceleration = (event->type == InputTypePress) ? 1 :
(event->type == InputTypeRelease) ? 0 :
(model->acceleration >= 20) ? 20 :
model->acceleration + 1;
if(event->key == InputKeyBack) {
if(event->type == InputTypeShort) {
@@ -158,7 +156,7 @@ static void hid_mouse_process(HidMouse* hid_mouse, InputEvent* event) {
model->right_pressed = true;
hid_hal_mouse_move(hid_mouse->hid, MOUSE_MOVE_SHORT, 0);
} else if(event->type == InputTypeRepeat) {
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
for(uint8_t i = model->acceleration; i > 1; i -= 2)
hid_hal_mouse_move(hid_mouse->hid, MOUSE_MOVE_LONG, 0);
} else if(event->type == InputTypeRelease) {
model->right_pressed = false;
@@ -168,7 +166,7 @@ static void hid_mouse_process(HidMouse* hid_mouse, InputEvent* event) {
model->left_pressed = true;
hid_hal_mouse_move(hid_mouse->hid, -MOUSE_MOVE_SHORT, 0);
} else if(event->type == InputTypeRepeat) {
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
for(uint8_t i = model->acceleration; i > 1; i -= 2)
hid_hal_mouse_move(hid_mouse->hid, -MOUSE_MOVE_LONG, 0);
} else if(event->type == InputTypeRelease) {
model->left_pressed = false;
@@ -178,7 +176,7 @@ static void hid_mouse_process(HidMouse* hid_mouse, InputEvent* event) {
model->down_pressed = true;
hid_hal_mouse_move(hid_mouse->hid, 0, MOUSE_MOVE_SHORT);
} else if(event->type == InputTypeRepeat) {
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
for(uint8_t i = model->acceleration; i > 1; i -= 2)
hid_hal_mouse_move(hid_mouse->hid, 0, MOUSE_MOVE_LONG);
} else if(event->type == InputTypeRelease) {
@@ -189,7 +187,7 @@ static void hid_mouse_process(HidMouse* hid_mouse, InputEvent* event) {
model->up_pressed = true;
hid_hal_mouse_move(hid_mouse->hid, 0, -MOUSE_MOVE_SHORT);
} else if(event->type == InputTypeRepeat) {
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
for(uint8_t i = model->acceleration; i > 1; i -= 2)
hid_hal_mouse_move(hid_mouse->hid, 0, -MOUSE_MOVE_LONG);
} else if(event->type == InputTypeRelease) {
model->up_pressed = false;