-
-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
spec(web,developer): multitap and flick for touch keyboards 🐵 #5029
Comments
Most of the KeymanWeb-side infrastructure for multi-tap is implemented in #5989, as a generalized solution with a specialized case for Shift -> Caps in 15.0. Developer-side infrastructure is needed, plus a more detailed discussion of how to handle multitap and rollback (while we could use the transcriptions feature, it is not entirely clear to me that this is the most appropriate way to solve this):
|
Is it possible to enable double tap gesture for all keys in version 15? |
This is part of a broader specification for Caps Lock support on touch devices. Development of this touches multiple components; each component will be implemented in a separate PR, referencing this issue.
This feature has emerged from the
caps
layer feature and is now treated separately for implementation.Related features
shift
layer #3621: spec: Start of text/sentence selects shift layerIntroduction
A
caps
layer, if present, will be accessible by double-tapping the Shift key. We won't add a longpress to Shift because in future we might want to use this for multitouch approach (e.g. hold Shift, press X with another finger to give a capital X and return to default). (Also, double-tap is standard Caps-lock UX)The double-tap will be defined by a new attribute for keys, called
multiTap
. This will be an array similar to the subkeys array. Although the key cap won't be initially meaningful, we will store it in case we want to use it for visual feedback in a future version (e.g. a brief popup).multitap
property.)C5029.1 File Formats: .keyman-touch-layout changes
Changes to the file format and the JSON schema are required.
multiTap
property to the key object. This will be an array in the same format as the existingsk
longpress property.We will not require specific key codes for multitap. A recommended pattern would be
T_2X_A
,T_3X_A
for a double tap and a triple tap on an 'A' key.flick
object to the key object. This will be an object with cardinal directionsn
,e
,s
,w
and intercardinal directionsne
,se
,sw
,nw
as properties of the object. Each of those properties will be a key in the same format as the keys in thesk
array. (Note: LDML has aflick
property so we may need to implement this in order to complete the LDML implementation.)Backward compatibility
Touch layout files that contain these features will be backwardly compatible with earlier versions of Keyman, with a graceful degradation of functionality.
multiTap
property will be ignored by older versions of KeymanWeb.C5029.2 Changes to Developer IDE
multiTap
property as a new section similar to the longpress interface.multiTap
properties in its keyboard view. (For longpress this is currently a slash on top right of the key; something similar but differentiated is needed for multitap).flick
property again as a new section similar to the longpress interface.flick
properties in its keyboard view.C5029.3 KeymanWeb enhancements
multiTap
property.Caps Lock Interaction: double-tapping Shift will switch to the
caps
layer.The time between the two taps should be less than 300ms to be treated as a double tap. If the time between taps is longer than that, the second tap should trigger a normal key interaction. Any other interaction after the first tap will cancel the double-tap state.
Subsequent taps in a multi-tap sequence will never trigger a longpress or a flick.
Required: KeymanWeb will need to use the transcriptions feature to roll back previous outputs in the multitap sequence. Layer changes will not be rolled back, just output.
Optional: We will need an API in web to change the default double-tap time, accessible from Android, iOS and web apps.
Optional: KeymanWeb needs to support the
flick
property and gesture.C5029.4: Android and iOS changes
Related Issues and discussions
The text was updated successfully, but these errors were encountered: