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 functools
from typing import Tuple
from typing import Dict
from typing import Set
from typing import Callable
@ -159,10 +158,22 @@ class HidApi:
(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])
]
squash = valid_bool(event.get("squash", False))
except Exception:
return
for delta_xy in deltas:
handler(*delta_xy)
if squash:
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});
__sent_pos = pos;
}
} else if (__relative_deltas) {
} else if (__relative_deltas.length) {
tools.debug("Mouse: relative:", __relative_deltas);
__sendEvent("mouse_relative", {"delta": __relative_deltas});
__sendEvent("mouse_relative", {"delta": __relative_deltas, "squash": true});
__relative_deltas = [];
}
};