squash relative events

This commit is contained in:
Devaev Maxim
2020-11-05 13:01:26 +03:00
parent dc3259c169
commit ae6d8258af
2 changed files with 16 additions and 5 deletions

View File

@@ -24,7 +24,6 @@ import os
import stat import stat
import functools import functools
from typing import Tuple
from typing import Dict from typing import Dict
from typing import Set from typing import Set
from typing import Callable from typing import Callable
@@ -159,10 +158,22 @@ class HidApi:
(valid_hid_mouse_delta(delta["x"]), valid_hid_mouse_delta(delta["y"])) (valid_hid_mouse_delta(delta["x"]), valid_hid_mouse_delta(delta["y"]))
for delta in (raw_delta if isinstance(raw_delta, list) else [raw_delta]) for delta in (raw_delta if isinstance(raw_delta, list) else [raw_delta])
] ]
squash = valid_bool(event.get("squash", False))
except Exception: except Exception:
return return
for delta_xy in deltas: if squash:
handler(*delta_xy) prev = (0, 0)
for cur in deltas:
if abs(prev[0] + cur[0]) > 127 or abs(prev[1] + cur[1]) > 127:
handler(*prev)
prev = cur
else:
prev = (prev[0] + cur[0], prev[1] + cur[1])
if prev[0] or prev[1]:
handler(*prev)
else:
for xy in deltas:
handler(*xy)
# ===== # =====

View File

@@ -201,9 +201,9 @@ export function Mouse(record_callback) {
__sendEvent("mouse_move", {"to": to}); __sendEvent("mouse_move", {"to": to});
__sent_pos = pos; __sent_pos = pos;
} }
} else if (__relative_deltas) { } else if (__relative_deltas.length) {
tools.debug("Mouse: relative:", __relative_deltas); tools.debug("Mouse: relative:", __relative_deltas);
__sendEvent("mouse_relative", {"delta": __relative_deltas}); __sendEvent("mouse_relative", {"delta": __relative_deltas, "squash": true});
__relative_deltas = []; __relative_deltas = [];
} }
}; };