Skip to content

Commit 9619b6e

Browse files
committed
adapt to high report rate
1 parent 57469b2 commit 9619b6e

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

input/callbacks.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import socket
22
import threading
33
import time
4+
import queue
45

5-
from queue import Queue
66
from typing import Callable
77
from pynput import mouse, keyboard
88
from scrcpy_client import key_scancode_map
@@ -111,7 +111,7 @@ def keyboard_release_callback(k: keyboard.Key | keyboard.KeyCode, is_redirecting
111111
send_data(mouse_init.serialize())
112112
last_mouse_point: tuple[int, int] | None = None
113113
mouse_button_state = MouseButtonStateStore()
114-
movement_queue: Queue[tuple[int, int]] = Queue(maxsize=5)
114+
movement_queue: queue.Queue[tuple[int, int]] = queue.Queue(maxsize=5)
115115
wakeup_counter = 0
116116

117117
def mouse_movement_sender():
@@ -187,7 +187,8 @@ def compute_mouse_pointer_diff(cur_x: int, cur_y: int) -> tuple[int, int] | None
187187
speed = (diff_x ** 2 + diff_y ** 2) ** 0.5
188188
speed_factor = get_config().mouse_speed
189189
# check speed to prevent divide-by-zero error
190-
adjusted_scale = 1 if speed == 0 else min(1, speed_factor / (speed ** 0.5))
190+
min_scale = max(1, speed_factor / 2.5)
191+
adjusted_scale = 1 if speed == 0 else min(min_scale, speed_factor / (speed ** 0.6))
191192
diff_x = int(diff_x * adjusted_scale)
192193
diff_y = int(diff_y * adjusted_scale)
193194
return diff_x, diff_y
@@ -204,7 +205,8 @@ def mouse_move_callback(cur_x: int, cur_y: int, is_redirecting: bool) -> Callbac
204205
return None
205206
res = compute_mouse_pointer_diff(cur_x, cur_y)
206207
if res is None: return None
207-
movement_queue.put(res)
208+
try: movement_queue.put(res, block=False)
209+
except queue.Full: movement_queue.get() # if the queue is full, remove the oldest element
208210

209211
def mouse_click_callback(_cur_x: int, _cur_y: int, button: mouse.Button, pressed: bool, is_redirecting: bool) -> CallbackResult:
210212
nonlocal last_mouse_point

ui/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ def mount_speed_section():
7373
font=smaller_font)
7474
speed_slider = ctk.CTkSlider(
7575
master=speed_slider_frame,
76-
from_=1, to=5,
76+
from_=1, to=6,
7777
variable=speed_var,
78-
number_of_steps=10)
78+
number_of_steps=25)
7979
speed_frame.pack(fill="x", pady=(20, 0))
8080
speed_label.pack(fill="x", padx=20)
8181
info_label.pack(fill="x", padx=20)

0 commit comments

Comments
 (0)