Skip to content

feat(web): the gesture-recognition engine 🐵#6842

Merged
jahorton merged 173 commits intofeature-gesturesfrom
feat/web/gesture-recognizer-main
Sep 19, 2022
Merged

feat(web): the gesture-recognition engine 🐵#6842
jahorton merged 173 commits intofeature-gesturesfrom
feat/web/gesture-recognizer-main

Conversation

@jahorton
Copy link
Contributor

@jahorton jahorton commented Jun 24, 2022

This feature branch is devoted toward development of a module to facilitate #5029 in addition to our existing OSK gestures.

By developing an isolated module for gesture support, we'll be able to demo and test gesture behavior outside of KeymanWeb. One of my design goals with this is actually to enable gesture unit tests by recording tracked input sequence data. This may be achieved by keeping the core logic headless and replicating recorded input sequences in a headless environment.

This branch should not be merged into master until the new module is sufficiently ready and has been integrated into KeymanWeb properly. Until then, it should live as a feature branch.


Phase 1: the base GestureRecognizer

This section will be devoted to establishing the interface for the basic infrastructure needed to properly support gestures given the constraints needed by KeymanWeb and ensuring that future work on this module will be testable independently of Web.

Goals:

  • a host page that can replicate the needs of a touch-platform OSK, including screen edge limitations, etc.
    • Such a page will be quite useful for demoing gesture behavior without the need to worry about how it will affect Web.
  • Either the same page or an extended page that allows recording of inputs received, for use in unit-test development (much like web/tools/recorder's role for KeymanWeb's engine tests)
  • The ability to support tracking of multiple touchpoints.

PRs for this phase:

Phase 2: the GestureSegmenter

This section will be devoted to analyzing raw input-event data and mapping those time-based input sequences to gesture "segments" - small-scale gesture components that will serve as "building blocks" for complex gesture types, their differentiation, and state modeling.

Phase 3: the GestureSynthesizer

Once the "building block" logic is sound and stable, we may then use those components to construct the complex gestures needed by KeymanWeb's OSK and the internal state machine(s) needed for differentiation, detection, recognition, cancellation, and resolution.

  • TBD.

Phase 4: Keyman Engine for Web integration

Once the module is ready to go, we need to integrate it with our Web engine's OSK.

Related Issues


For this initial PR, the focus is on:

  • establishing baseline infrastructure for this module
  • ensuring that CI builds verify that the module builds properly
  • copying over the relevant base classes from KeymanWeb as a starting point, without unnecessary changes.

As the actual TypeScript code here is unchanged from KeymanWeb, outside of a few blocks being commented out due to external references, do not feel a need to consider it during the review process.

@keymanapp-test-bot skip

@jahorton jahorton added this to the 16.0 milestone Jun 24, 2022
@keymanapp-test-bot
Copy link

keymanapp-test-bot bot commented Jun 24, 2022

User Test Results

Test specification and instructions

User tests are not required

Test Artifacts

@jahorton jahorton force-pushed the feat/web/gesture-recognizer-main branch from 4ddfbdf to e03e5ab Compare June 27, 2022 04:46
jahorton and others added 22 commits July 29, 2022 11:18
Co-authored-by: Marc Durdin <marc@durdin.net>
…t-testing

feat(web): Gesture Recognizer input sequence recorder 🐵
…t-testing-2

feat(web): Gesture Recognizer unit testing 🐵
@jahorton jahorton requested a review from sgschantz as a code owner September 19, 2022 05:50
@mcdurdin mcdurdin changed the base branch from master to feature-gestures September 19, 2022 07:08
@jahorton jahorton mentioned this pull request Sep 19, 2022
1 task
@jahorton
Copy link
Contributor Author

Now that we're moving this to a more "proper" feature branch, it's time 'merge' this and let the already-merged stuff sit in its new home.

@jahorton jahorton merged commit ebb11f3 into feature-gestures Sep 19, 2022
@jahorton jahorton deleted the feat/web/gesture-recognizer-main branch September 19, 2022 07:14
@mcdurdin mcdurdin modified the milestones: 16.0, A16S11 Oct 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

common/web/ common/ epic A long lived branch, home for a new feature, usually will have child PRs based on it feat web/engine/ web/

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants