Remote Mouse Acceleration. Navigation Impoved on Screens!

This commit is contained in:
Leeroy
2023-10-24 11:07:31 +11:00
parent 59e746d759
commit 9c96c75dcb
+17 -4
View File
@@ -22,8 +22,10 @@ typedef struct {
bool left_mouse_held;
bool right_mouse_pressed;
bool connected;
uint32_t button_press_repeat_count;
HidTransport transport;
} HidMouseModel;
static uint32_t button_press_repeat_count;
static void hid_mouse_draw_callback(Canvas* canvas, void* context) {
furi_assert(context);
@@ -119,6 +121,12 @@ 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;
if(event->key == InputKeyBack) {
if(event->type == InputTypeShort) {
hid_hal_mouse_press(hid_mouse->hid, HID_MOUSE_BTN_RIGHT);
@@ -150,7 +158,8 @@ 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) {
hid_hal_mouse_move(hid_mouse->hid, MOUSE_MOVE_LONG, 0);
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
hid_hal_mouse_move(hid_mouse->hid, MOUSE_MOVE_LONG, 0);
} else if(event->type == InputTypeRelease) {
model->right_pressed = false;
}
@@ -159,7 +168,8 @@ 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) {
hid_hal_mouse_move(hid_mouse->hid, -MOUSE_MOVE_LONG, 0);
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
hid_hal_mouse_move(hid_mouse->hid, -MOUSE_MOVE_LONG, 0);
} else if(event->type == InputTypeRelease) {
model->left_pressed = false;
}
@@ -168,7 +178,9 @@ 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) {
hid_hal_mouse_move(hid_mouse->hid, 0, MOUSE_MOVE_LONG);
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
hid_hal_mouse_move(hid_mouse->hid, 0, MOUSE_MOVE_LONG);
} else if(event->type == InputTypeRelease) {
model->down_pressed = false;
}
@@ -177,7 +189,8 @@ 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) {
hid_hal_mouse_move(hid_mouse->hid, 0, -MOUSE_MOVE_LONG);
for(int32_t i = model->button_press_repeat_count; i > 1; i = i - 2)
hid_hal_mouse_move(hid_mouse->hid, 0, -MOUSE_MOVE_LONG);
} else if(event->type == InputTypeRelease) {
model->up_pressed = false;
}