mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 03:00:06 +02:00
Click stability: 32 logical pixels by default, not 8
8 is about 0.2 degrees on a 3.4 m wide 3440-pixel screen 2 m away, so a trigger press turned into a drag unless the hand was very still. 32 (about 0.9 degrees) felt much better in the headset (2026-10-03). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
53a1836dbb
commit
de25633f87
2 files changed
+7
-5
No files matched your search
@@ -1,6 +1,6 @@
|
|||||||
# Controller desktop click stability
|
# Controller desktop click stability
|
||||||
|
|
||||||
Trigger presses reach KDE immediately, but controller motion within 8 logical
|
Trigger presses reach KDE immediately, but controller motion within 32 logical
|
||||||
pixels of the press stays at that position until release. Releasing without a motion outside this
|
pixels of the press stays at that position until release. Releasing without a motion outside this
|
||||||
zone delivers the click at the original position, even if the hand moved during
|
zone delivers the click at the original position, even if the hand moved during
|
||||||
release. Moving outside the zone begins a normal drag immediately; returning to
|
release. Moving outside the zone begins a normal drag immediately; returning to
|
||||||
@@ -13,11 +13,11 @@ floating-app title-bar carrying are unaffected. Multi-button gestures keep their
|
|||||||
existing behavior. A motion onto another desktop monitor starts a drag;
|
existing behavior. A motion onto another desktop monitor starts a drag;
|
||||||
cross-monitor motion is not stabilized.
|
cross-monitor motion is not stabilized.
|
||||||
|
|
||||||
CLI (runtime preferences, reset to 8 on desktop restart):
|
CLI (runtime preferences, reset to 32 on desktop restart):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
input/ft-clickctl status
|
input/ft-clickctl status
|
||||||
input/ft-clickctl threshold 8
|
input/ft-clickctl threshold 32
|
||||||
input/ft-clickctl threshold 0 # disable without a restart
|
input/ft-clickctl threshold 0 # disable without a restart
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -29,6 +29,6 @@ This is a separate contribution from desktop mouse/controller ownership. Its
|
|||||||
hardware validation must check small controls, intentional text selection,
|
hardware validation must check small controls, intentional text selection,
|
||||||
long presses, cross-monitor dragging and simultaneous mouse use. The existing
|
long presses, cross-monitor dragging and simultaneous mouse use. The existing
|
||||||
renderer laser remains tracked; this change stabilizes desktop input rather
|
renderer laser remains tracked; this change stabilizes desktop input rather
|
||||||
than smoothing the visual laser. Default threshold is a starting point to test.
|
than smoothing the visual laser. The default was 8 at first. That's about 0.2° on a 3.4 m wide 3440-pixel screen 2 m away, and clicking took a very still hand, so it's 32 (about 0.9°) since 2026-10-03.
|
||||||
|
|
||||||
Run `scripts/test-controller-click.sh` for the isolated gesture-state tests.
|
Run `scripts/test-controller-click.sh` for the isolated gesture-state tests.
|
||||||
@@ -795,7 +795,9 @@ static bool setup_dmabuf(struct server *s) {
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
struct server s = {0};
|
struct server s = {0};
|
||||||
s.controller_click.threshold = 8;
|
// About 0.9 degrees on a 3.4 m wide 3440-pixel screen 2 m away; 8 (the first default,
|
||||||
|
// about 0.2 degrees) needed a very still hand to click (headset test 2026-10-03).
|
||||||
|
s.controller_click.threshold = 32;
|
||||||
for (int i = 0; i < MAX_SCREENS; ++i) s.scale[i] = 1;
|
for (int i = 0; i < MAX_SCREENS; ++i) s.scale[i] = 1;
|
||||||
s.kb_screen = -1;
|
s.kb_screen = -1;
|
||||||
s.rate[FT_FOCUSED] = 0, s.rate[FT_IN_VIEW] = 15, s.rate[FT_HIDDEN] = 1;
|
s.rate[FT_FOCUSED] = 0, s.rate[FT_IN_VIEW] = 15, s.rate[FT_HIDDEN] = 1;
|
||||||
|
|||||||
Reference in new issue
Block a user