Closed mcdurdin closed 2 years ago
Test specification and instructions
TEST_BASELINE_WEB: PASSED The OSK seems to work fine, but there is a catch. I don't know what "script error" would entail, but as far as the usage of the OSK is concerned, nothing stops me from using the keyboards.
The OSK doesn't show keycaps in capital letters when Caps key is active.
On Touch devices, everything works without any issue, but on iPad: the characters on keycaps are kinda a little too small.
TEST_BASELINE_ANDROID: FAILED?
https://keymanapp.slack.com/files/U6Q7Y6XTM/F02QMS0KDQT/screen_recording_20211214-155720_keyman.mp4
TEST_BASELINE_IPHONE: PASSED?
Note also that the "Get Started" page doesn't show up even though it's on in the settings.
TEST_BASELINE_IPAD: PASSED No obvious error is found.
- Make sure no script errors are encountered
To check for script errors when testing KeymanWeb, open the Developer Console (F12 on Chrome/Windows) -- script errors are shown in red and can be located by clicking the button in the top right of the Developer Console.
- System: no obvious issue found, but a glitch found in the rapid touch where the preview key stops showing after some time. https://keymanapp.slack.com/files/U6Q7Y6XTM/F02QMS0KDQT/screen_recording_20211214-155720_keyman.mp4
This video no longer appears available?
- [TEST_BASELINE_ANDROID] In-app: longpress keys are not working in simulator, but OK in a physical device.
This may not be related to this change; can we do a screenshare test together on this?
@keymanapp-test-bot retest SUITE_BASELINE TEST_BASELINE_ANDROID
- System: no obvious issue found, but a glitch found in the rapid touch where the preview key stops showing after some time. https://keymanapp.slack.com/files/U6Q7Y6XTM/F02QMS0KDQT/screen_recording_20211214-155720_keyman.mp4
This video no longer appears available?
OK, but longpress doesn't work on emulator. Nothing like this is seen on a physical device.
OK
The key preview may disable during a speed tapping. See the screenshot recording in the comment right above.
One of the basic usage of the keyboard doesn't work as expected. Long press keys are not responsive; the subkeys do not pop up as expected on Android 10 simulator API 29. Note that this doesn't happen on the physical device.
Working OK.
Each key is working OK, but those keys with longpresses on the simulator. On the physical device however, this doesn't happen.
Each key is working OK, but those keys with longpresses. On the physical device however, this doesn't happen.
The test is not quite practical, but it does appear that the preview went off and on amid typing.
Nothing weird observed.
Working OK, but the weird thing is the double tap seem unnatural to the touch. You don't hear the two taps, just one is heard. :/
Each key is working OK including longpresses.
Not only that the double tap is unnatural to the touch, it doesn't enable caps layer at all. Double tap the Shift key and start typing SS gives you Ss instead.
No physical device within reach right now.
Nothing weird observed.
Working OK, but the weird thing is the double tap seem unnatural to the touch. You don't hear the two taps, just one is heard. :/
Each key is working OK including longpresses.
Not only that the double tap is unnatural to the touch, it doesn't enable caps layer at all. Double tap the Shift key and start typing SS gives you Ss instead.
No physical device within reach right now.
Nothing weird observed.
Working OK.
Each key is working OK including longpresses.
OK
No physical device within reach right now.
Failing test feedback:
As I have now captured the three failure cases as separate issues, I will go ahead and merge this PR, with the caveat that these issues must be resolved before release.
Changes in this pull request will be available for download in Keyman version 15.0.180-alpha
How to enable CAPS LOCK with double tap in Keyboard?
I have tried in iOS 15.0.188-alpha with EUROSIL no sign of caps lock with double tap on shift key.
I tested full_caps_3620_3621.zip with iOS 15.0.188-alpha
CAPS lock turns off, after a key stroke CAPS lock should stay in that state until turned off if not there is not difference between CAPS lock and shift layer.
@MakaraSok or @bharanidharanj, are you able to replicate the issues that @MayuraVerma has experienced? Can you work with Mayura to build a reproducible test case so we can resolve this before release?
I have tried in iOS 15.0.188-alpha with EUROSIL
The SIL Eurolatin keyboard has not yet been updated to support Caps Lock 😄
I have tried in iOS 15.0.188-alpha with EUROSIL
The SIL Eurolatin keyboard has not yet been updated to support Caps Lock 😄
Yes, I realized it later. since then I tested full_caps_3620_3621.zip with iOS 15.0.188-alpha
Capslock works. But I am thinking we are leaving it to the keyboard developer to choose the next layer after output in CAPS layer, default should be it should remain in CAPS layer. Once we enter CAPS layer, only why to get out of CAPS layer should be release the CAPS lock. This is how it works in hardware, we should mimic the same in software keyboard also.
I have tried in iOS 15.0.188-alpha with EUROSIL
The SIL Eurolatin keyboard has not yet been updated to support Caps Lock 😄
My earlier assumption was, web/ios/android picks up the NCAPS state from kmn. looks like we need to rewrite it mobile version.
My earlier assumption was, web/ios/android picks up the NCAPS state from kmn.
Yeah, unfortunately given how the touch and physical keyboards diverge, we could not find a safe way to do this automatically. My preference is always to give the control to the keyboard designer, in any case -- but the trade-off is that we don't get this kind of behaviour "for free".
Once we enter CAPS layer, only why to get out of CAPS layer should be release the CAPS lock.
There are two ways, in our design, that the Caps Lock layer is released on touch:
So if you are seeing behaviour that does not match those conditions, that is definitely a bug. And if you can give repro steps, that will help us squash the bug!
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 duringKeyEvent
construction. The remaining changes relate to the multi-tap gesture.Minor changes:
constructNullKeyEvent
toKeyEvent
in order to make it more accessible to other classes.PendingGesture
interface.Note:
User Testing
SUITE_BASELINE: Test that nothing has changed in existing keyboards
SUITE_CAPS: Test that the new Caps Lock layer controls work correctly