mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-04 22:57:40 +00:00
Fixes #3620. Implements the Caps Lock layer support and the double-tap gesture on the shift key to access it. The double-tap gesture has been implemented with a view to extension to support other multi-tap gestures in the future. However, for now, it is limited to supporting the Shift key, if and only if the keyboard includes a Caps layer. The reason for this v15 limitation is that multi-tap on regular keys would involve either rewinding the previous keystroke (the first tap), or forcing keyboard developers to consider 'rota' style rules in their keyboards to support the multi-tap gestures, as we need to make sure that the first tap is accepted and processed for immediate feedback. This needs more design, to avoid unnecessary complexity in the keyboards and/or the rewinding of the keystroke (even though that is conceptually supported in Keyman Engine for Web already). Basically, we don't want to constrain the way that a keyboard author may use the multi-tap gesture by hard-coding the rewind, but neither do we want to make all multi-tap gestures needlessly complex to author. The shift key (and other modifiers, potentially in future) needs special support for multi-tap as the key that is being tapped changes with the layer change. This is currently managed through recognising `K_SHIFT` in the key id. I have tried to follow the `PendingGesture` pattern for multi-tap, and the gesture itself supports a series of taps, not just a double-tap. The maximum time to complete the tap series is 125msec * number-of-taps, so for a double-tap is 250msec. The changes to support a Caps Lock layer itself were minimal; just adding the `text.KeyboardProcessor.getStateFromLayer` function and calling it during `KeyEvent` construction. The remaining changes relate to the multi-tap gesture. Minor changes: * I moved `constructNullKeyEvent` to `KeyEvent` in order to make it more accessible to other classes. * The multi-tap gesture does not have a promise to complete, so that is now an optional member of the `PendingGesture` interface.
68 lines
4.3 KiB
HTML
68 lines
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
|
|
<!-- Set the viewport width to match iOS device widths -->
|
|
<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no" /> -->
|
|
<meta name="viewport" content="width=device-width,user-scalable=no" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
|
|
<!-- Enable IE9 Standards mode -->
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
|
|
<title>KeymanWeb Testing</title>
|
|
<style type='text/css'>
|
|
body {padding-left:20px;margin-left:12px; font-family:Tahoma,Helvetica}
|
|
h1 {color: #800;margin-left:10px;}
|
|
h2 {color: #008;margin-left:20px;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>KeymanWeb 15 Testing</h1>
|
|
<h2><a href="./unminified.html">Test unminified Keymanweb</a></h2>
|
|
<h2><a href="./unminified - manual.html">Test unminified Keymanweb in manual-attachment mode.</a></h2>
|
|
<h2><a href="./keyboard-errors/">Tests keyboard error-handling functionality</a></h2>
|
|
<h2><a href="./attachment-api/?mode=auto">Tests the new Attachment/Enablement API functionality</a><h2>
|
|
<h2><a href="./chirality/">Chirality testing/bootstrapping</a><h2>
|
|
<h2><a href="./options-with-save/">Tests option/variable store functionality</a></h2>
|
|
<h2><a href="./empty-row/">Tests OSK handling of empty rows</a></h2>
|
|
<h2><a href="./platform/">Platform testing</a></h2>
|
|
<h2><a href="./prediction-ui/">Prediction UI testing</a></h2>
|
|
<h2><a href="./prediction-mtnt/">Prediction - robust testing</a></h2>
|
|
<h2><a href="./promise-api/">Promise API testing</a></h2>
|
|
<h2><a href="./desktop-ui/">Desktop UI module testing</a></h2>
|
|
<h2><a href="./build-visual-keyboard/">Tests keyboard documentation rendering.</a></h2>
|
|
<h2><a href="./sentry-integration/">Tests Sentry error-reporting functionality</a></h2>
|
|
<h2><a href="./osk-movement/">Test page for osk setRect() and restorePosition() interaction</a></h2>
|
|
<h2><a href="./ckeditor/">Integration with CKEditor</a></h2>
|
|
<h1>Auto-attachment mode tests</h1>
|
|
<h2><a href="./issue29">Test desktop MutationObserver functionality</a></h2>
|
|
<h2><a href="./issue62">Light test for touch-based MutationObserver functionality</a></h2>
|
|
<h2><a href="./issue63">Test/stress-test touch-based MutationObserver functionality</a></h2>
|
|
<h1>Issue Testing</h1>
|
|
<h2><a href="./issue005">'Test case' for proper implementation of the removeKeyboards API function.</a></h2>
|
|
<h2><a href="./issue53">Tests layering transitions for keyboards with variable layer sizes.</a></h2>
|
|
<h2><a href="./issue103/">Tests keyboard loading with repeated requests</a></h2>
|
|
<h2><a href="./issue115/">Long-press on numeric and symbolic layer testing</a></h2>
|
|
<h2><a href="./issue116/">Next-layer processing testing</a></h2>
|
|
<h2><a href="./issue160/">Uxxxx code testing</a></h2>
|
|
<h2><a href="./issue266/index.html">Test KMW beep</a></h2>
|
|
<h2><a href="./issue271">Test page for interactions between setActiveKeyboard and the toolbar UI.</a></h2>
|
|
<h2><a href="./issue1332/index.html">Test keyboard loading with upper case TTF font</a></h2>
|
|
<h2><a href="./basic-iframe">Test page for IFrame connectivity and class prototype management.</a></h2>
|
|
<h2><a href="./mnemonic">Test page for mnemonic basic support on US English.</a></h2>
|
|
<h2><a href="./rotation-events">Test page for evaluating issues with mobile device rotation events.</a></h2>
|
|
<h2><a href="./issue382">Test page for automatic key-cap scaling.</a></h2>
|
|
<h2><a href="./issue3701">Test page for fat-finger interaction with beep feedback</a></h2>
|
|
<h2><a href="./issue5455/index.html">Test page for util.wait checking options.useAlerts</a></h2>
|
|
<h2><a href="./issue917-context-and-notany/">Test page for context() and notany() interaction</a></h2>
|
|
<h2><a href="./spacebar-text/">Test SpacebarText APIs (#949)</a></h2>
|
|
<h2><a href="./inline-osk/">Test inline OSK (#5665)</a></h2>
|
|
<h2><a href="./issue2924/">Test variable stores and predictive text (#2924)</a></h2>
|
|
<h2><a href="./scrolling/">Test scrolling of touch elements (#5313)</a></h2>
|
|
<h2><a href="./caps-lock-layer-3620/">Test Caps Lock Layer (#3620)</a></h2>
|
|
<h2><a href="./start-of-sentence-3621/">Test Start of Sentence (#3621)</a></h2>
|
|
<p><a href="../">Return to main index.</a>
|
|
</body>
|
|
</html>
|