diff --git a/applications/system/hid_app/views/hid_mouse.c b/applications/system/hid_app/views/hid_mouse.c index 1f662d4aa..5e2dab476 100644 --- a/applications/system/hid_app/views/hid_mouse.c +++ b/applications/system/hid_app/views/hid_mouse.c @@ -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;