From 34a58ca9f92bc17f73dc583f090c6ccf3b7fb63a Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Mon, 7 Apr 2025 13:31:00 +0700 Subject: [PATCH 1/2] fix(web): base key should emitted even if at reset-recentering trigger --- .../internal/gestures/keyman-keyboard-gesture-specs.md | 6 +++--- web/src/engine/osk/src/input/gestures/specsForLayout.ts | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md b/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md index c3d8955eb1..acbd3a1369 100644 --- a/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md +++ b/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md @@ -336,8 +336,8 @@ graph TD; end recenter-condition -- Yes --> flick-restart - recenter-condition -- No + input finishes --> reject - %% comment %% (should --> flick-reset-end) + recenter-condition -- No + input finishes --> flick-reset-end + %% comment %% ... could treat as a --> reject if we wanted cancellation per #10876... subgraph Stage6[" "] flick-restart --> restart-move-condition @@ -345,7 +345,7 @@ graph TD; restart-move-condition -- Yes --> flick-mid restart-move-condition -- No + input finishes --> flick-reset-end - %% comment %% ... could treat as a --> reject if we wanted a semblance of cancellation... + %% comment %% ... could treat as a --> reject if we wanted cancellation per #10876... ``` Note that the early cases from 'flick-start' that lead to 'reject' are all valid inputs for gesture types handled by previously-defined FSMs. \ No newline at end of file diff --git a/web/src/engine/osk/src/input/gestures/specsForLayout.ts b/web/src/engine/osk/src/input/gestures/specsForLayout.ts index b0de9fece2..8d1d1a0958 100644 --- a/web/src/engine/osk/src/input/gestures/specsForLayout.ts +++ b/web/src/engine/osk/src/input/gestures/specsForLayout.ts @@ -959,6 +959,13 @@ export function flickResetCenteringModel(params: FullGestureParams): GestureMode type: 'chain', next: 'flick-restart' }, + rejectionActions: { + // Only 'rejects' in this form if the path is completed before direction-locking state. + path: { + type: 'replace', + replace: 'flick-reset-end' + } + }, sustainWhenNested: true }; } From e9274d987419dca1cc56297467967beab6ac5e94 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Tue, 13 May 2025 08:41:53 +0700 Subject: [PATCH 2/2] change(web): permit flick cancellation Fixes: #10876 This change blocks key output while a flick is in a "reset" state. If the flick is in a direction-locked state, key output still results - be it the base key (if not slid far enough) or a target flick key. --- .../gestures/keyman-keyboard-gesture-specs.md | 6 ++---- .../osk/src/input/gestures/specsForLayout.ts | 18 +++--------------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md b/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md index 54f64605dc..8339b8a462 100644 --- a/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md +++ b/web/docs/internal/gestures/keyman-keyboard-gesture-specs.md @@ -336,16 +336,14 @@ graph TD; end recenter-condition -- Yes --> flick-restart - recenter-condition -- No + input finishes --> flick-reset-end - %% comment %% ... could treat as a --> reject if we wanted cancellation per #10876... + recenter-condition -- No + input finishes --> reject subgraph Stage6[" "] flick-restart --> restart-move-condition end restart-move-condition -- Yes --> flick-mid - restart-move-condition -- No + input finishes --> flick-reset-end - %% comment %% ... could treat as a --> reject if we wanted cancellation per #10876... + restart-move-condition -- No + input finishes --> reject ``` Note that the early cases from 'flick-start' that lead to 'reject' are all valid inputs for gesture types handled by previously-defined FSMs. \ No newline at end of file diff --git a/web/src/engine/osk/src/input/gestures/specsForLayout.ts b/web/src/engine/osk/src/input/gestures/specsForLayout.ts index 7237ee14b2..1982596590 100644 --- a/web/src/engine/osk/src/input/gestures/specsForLayout.ts +++ b/web/src/engine/osk/src/input/gestures/specsForLayout.ts @@ -865,14 +865,9 @@ export function flickRestartModel(params: FullGestureParams): GestureModel