Skip to content
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

fix(core): reset on frame keys 🙀 #11172

Merged
merged 27 commits into from
Apr 26, 2024
Merged

Conversation

srl295
Copy link
Member

@srl295 srl295 commented Apr 4, 2024

  • Move context reset out of kmx and into the core
  • use the context reset table
  • reinstate tests in ldml that test for reset
  • improve ldml test suite to support multiple steps in the 'embedded' test format

Fixes #10955
Fixes #10227

User Testing

Using Windows 10 or Windows 11.
Install the keyman build from this PR.

Use the Text Editor linked in this PR under test artifacts. or if on Windows 10 you can use Notepad.

SUITE_KMX_PROCESSOR_NON_COMPLIANT:

For these tests make sure the application used on the operating system is a non-compliant. A app that is not able to give the context to Keyman.

GROUP_WIN_10: TextEditor

GROUP_WIN_11: TextEditor

GROUP_MAC: Chrome Browser

GROUP_LINUX: Chrome Brower (https://www.editpad.org/)

Install SIL Euro Latin

TEST_CONTROL_1

  1. Press `
  2. press e
    Expected result:
    è

TEST_FRAME_KEY_RESET_MARKERS

This tests the markers are lost

  1. Press `
  2. Press -> right arrow
  3. Press e
    Expected result:
    `e

TEST_FRAME_KEY_RESET_NOMARKERS

  1. Press 1 / /
  2. Press -> right arrow
  3. Press 2
    Expected result:
    1//2

TEST_SCROLLLOCK_KEY_NO_RESET

Do not reset for scroll lock

  1. Press `
  2. Press scroll lock for Windows and Linux. For MacOS Press fn
  3. Press e
    Expected Result:
    è

SUITE_KMX_PROCESSOR_COMPLIANT:

For these tests make sure the application used on the operating system is compliant. That is Keyman can request the context from the application.

GROUP_WIN_10: WordPad

GROUP_WIN_11: Wordpad

GROUP_MAC: TextEdit

GROUP_LINUX: gedit

Install SIL Euro Latin

TEST_CONTROL_1

  1. Press `
  2. press e
    Expected result:
    è

TEST_FRAME_KEY_RESET_MARKERS

This tests the markers are lost

  1. Press `
  2. Press -> right arrow
  3. Press e
    Expected result:
    `e

TEST_FRAME_KEY_RESET_NOMARKERS

  1. Press 1 / /
  2. Press -> right arrow
  3. Press 2
    Expected result:
    ½

TEST_SCROLLLOCK_KEY_NO_RESET

Do not reset for scroll lock

  1. Press `
  2. Press scroll lock for Windows and Linux. For MacOS Press fn
  3. Press e
    Expected Result:
    è

SUITE_LDML_PROCESSOR_NON_COMPLIANT:

LDML keyboard

GROUP_WIN_10: TextEditor

GROUP_WIN_11: TextEditor

GROUP_MAC: Chrome Browser

GROUP_LINUX: Chrome Brower

Install contextreset.zip ldml keyboard

TEST_CONTROL_1

  1. Press ^
  2. Press e
    Expected result:
    ê

This was previously failing

TEST_FRAME_KEY_RESET_MARKERS

  1. Press ^
  2. Press -> right arrow
  3. Press e
    Expected result:
    e

TEST_FRAME_KEY_RESET_NO_MARKERS

  1. Press a
  2. Press -> right arrow
  3. Press Shift + 8
    Expected result:
    a*

TEST_FRAME_SCROLL_LOCK_NO_RESET

  1. Press ^
  2. Press scroll lock for Windows and Linux. For MacOS Press fn
  3. Press e
    Expected result:
    ê

TEST_MODIFIER_TAP_NO_RESET

Do not reset for modifier tap

  1. Press ^
  2. Press and Release ctrl
  3. Press e
    Expected result:
    ê

SUITE_LDML_PROCESSOR_COMPLIANT:

LDML keyboard

GROUP_WIN_10: WordPad

GROUP_WIN_11: WordPad

GROUP_MAC: TextEdit

GROUP_LINUX: gedit

Install
contextreset.zip ldml keyboard

TEST_CONTROL_1

  1. Press ^
  2. Press e
    Expected result:
    ê

This was previously failing

TEST_FRAME_KEY_RESET_MARKERS

  1. Press ^
  2. Press -> right arrow
  3. Press e
    Expected result:
    e

TEST_FRAME_KEY_RESET_NO_MARKERS

  1. Press a
  2. Press -> right arrow
  3. Press Shift + 8
    Expected result:
    Star

TEST_FRAME_SCROLL_LOCK_NO_RESET

  1. Press ^
  2. Press scroll lock for Windows and Linux. For MacOS Press fn
  3. Press e
    Expected result:
    ê

TEST_MODIFIER_TAP_NO_RESET

Do not reset for modifier tap

  1. Press ^
  2. Press and Release ctrl
  3. Press e
    Expected result:
    ê

- update ldml test with an exception for k_102_keytest
@keymanapp-test-bot keymanapp-test-bot bot added the user-test-missing User tests have not yet been defined for the PR label Apr 4, 2024
@keymanapp-test-bot
Copy link

keymanapp-test-bot bot commented Apr 4, 2024

User Test Results

Test specification and instructions

🟩 SUITE_KMX_PROCESSOR_NON_COMPLIANT:

  • 🟩 GROUP_WIN_10: TextEditor

    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta-test-11172) on Windows 10 OS in TextEdit (64-ƀit) and here is my observation: 1. Pressed '. 2. Pressed e key and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ' key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key. Verified that it showed the expected output.
    • 🟩 TEST_SCROLLLOCK_KEY_NO_RESET (SKIPPED): VM issues works on two different developers' machines
  • 🟩 GROUP_WIN_11: TextEditor

    • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the Notepad app. 2. Pressed ' key. 3. Pressed scroll lock ON. 3. Pressed e key. Noticed that it produces the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ' key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened "EC Test App" text editor. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key. Verified that it showed the expected output. (notes)
    • 🟩 TEST_SCROLLLOCK_KEY_NO_RESET (SKIPPED): VM issues works on two different developers' machines
  • ✅ GROUP_MAC: Chrome Browser

    4 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta-test-11172) on macOS Sonoma and here is my observation: 1.Installed sil_eurolatin Keyboard. 2. Opened Chrome browser. 3. Pressed '. 4. Pressed the e key and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ' key. 2. Pressed right arrow then pressed e key. and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key and verified that it showed the expected output.
    • TEST_SCROLLLOCK_KEY_NO_RESET (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on macOS Sonoma and here is my observation: 1. Opened the Chrome browser app. 2. Pressed ` key. 3. Pressed scroll lock ON. 3. Pressed e key. Verified that it showing the correct output.
  • ✅ GROUP_LINUX: Chrome Brower (https://www.editpad.org/)

    4 tests PASSED
    • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Ubuntu 22.04 Jammy Jelly Linux (VM) and here is my observation: 1. Opened "https://editpad.org" site in the chromium browser. 2. Switched to sil_eurolatin Keyboard. 3. Pressed ` key. 4. Pressed e key. Verified that it is showing the expected output. (notes)
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed '. 2. Pressed right arrow key. 3. Pressed e and verified that it showed correct output. (notes)
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1//. 2. Pressed right arrow key. 3. Pressed 2 key and verified that it showed the expected output. (notes)
    • TEST_SCROLLLOCK_KEY_NO_RESET (PASSED): 1. Opened the Chromium browser app. 2. Pressed ` key. 3. Pressed scroll lock ON. 3. Pressed e key. Verified that it showing the correct output.

🟩 SUITE_KMX_PROCESSOR_COMPLIANT:

  • ✅ GROUP_WIN_10: WordPad

    4 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta-test-11172) on Windows 10 OS in Wordpad and here is my observation: 1. Pressed ' key. 2. Pressed e key and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ' key. Pressed the right arrow. Then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1// key. 2. Pressed the right arrow. Then, pressed 2 key. Veriried that it showed the expected output.
    • TEST_SCROLLLOCK_KEY_NO_RESET (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 10 OS and here is my observation: 1.Opened the WordPad. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key. Verified that it showed the expected output.
  • 🟩 GROUP_WIN_11: Wordpad

    • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the WordPad app. 2. Pressed ' key. 3. Pressed scroll lock ON. 3. Pressed e key. Noticed that it produces the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ' key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key. Verified that the it is showing the correct output.
    • 🟩 TEST_SCROLLLOCK_KEY_NO_RESET (SKIPPED): VM issues works on two different developers' machines
  • ✅ GROUP_MAC: TextEdit

    4 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta-test-11172) on macOS Sonoma and here is my observation: 1. Opened TexEdit app. Pressed ' key. 2. Pressed e key and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ' key. Pressed the right arrow. Then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1// key. 2. Pressed the right arrow. Then, pressed 2 key. Verified that it showed the expected output.
    • TEST_SCROLLLOCK_KEY_NO_RESET (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on macOS Sonoma and here is my observation: 1. Opened the TextEdit app. 2. Pressed ` key. 3. Pressed scroll lock ON. 3. Pressed e key. Verified that it showing the correct output.
  • ✅ GROUP_LINUX: gedit

    4 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta (package version 17.0.307-1~PR-11172-2732.1+mantic1)) on Ubuntu Mantic Linux OS (VM) and here is my observation: 1. Installed SIL_EuroLatin keyboard. 2. Opened gedit. 3. Pressed ' key. 4. Pressed e and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Ubuntu 22.04 Jammy Jelly Linux (VM) and here is my observation: 1.Opened the TextEditor. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): 1. Pressed 1//. 2. Pressed right arrow key. 3. Pressed 2 key and verified that it showed the expected output.
    • TEST_SCROLLLOCK_KEY_NO_RESET (PASSED): 1. Pressed ' key. 2. Pressed scroll lock key. 3. Pressed e and verified it showed the correct output. (notes)

🟩 SUITE_LDML_PROCESSOR_NON_COMPLIANT:

  • 🟩 GROUP_WIN_10: TextEditor

    • TEST_CONTROL_1 (PASSED): 1. Installed Contextreset keyboard. 2. Opened TexEditor (64-bit) app. 3. Pressed ^. 4. Pressed the e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^ key. 2. Pressed right arrow key. 3. Pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): 1. Pressed a. 2. Pressed right arrow. 3. Pressed Shift+8 keys. Verified that it showed the expected output.
    • 🟩 TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 10 OS and here is my observation: 1. Opened the Notepad. Pressed ^ key. 2. Pressed and Release ctrl key. 3. Pressed e key. Verified that it showed the expected output ê.
  • 🟩 GROUP_WIN_11: TextEditor

    • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the Notepad app. 2. Switched to ContextReset Keyboard. Pressed ^ key. 3. Pressed e key. Verified that it is showing the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^ key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened "EC Test App" text editor. 1. Pressed a. 2. Pressed right arrow. 3. Pressed Shift+8 keys. Verified that it showed the expected output. (notes)
    • 🟩 TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result. (notes)
  • 🟩 GROUP_MAC: Chrome Browser

    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta-test-11172) on macOS Sonoma and here is my observation: 1. Installed English (ContextReset) keyboard. 2. Opened Chrome browser. 3. Clicked the Search bar. Pressed ' key. 4. Pressed e and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed '. 2. Pressed right arrow key. 3. Pressed e and verified that it showed correct output.
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): 11. Pressed a. 2. Pressed right arrow. 3. Pressed Shift+8 keys. Verified that it showed the expected output.
    • 🟩 TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Opened Chrome browser. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result.
  • ✅ GROUP_LINUX: Chrome Brower

    5 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta (package version 17.0.307-1~PR-11172-2732.1+mantic1) on Ubuntu Mantic Linux OS (VM) and here is my observation: 1. Installed English (ContextReset) keyboard. 2. Opened Chrome browser. 3. Clicked the Search bar. Pressed ' key. 4. Pressed e and verified that it showed the expected output. (notes)
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed '. 2. Pressed right arrow key. 3. Pressed e and verified that it showed correct output. (notes)
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): 1. Pressed a. 2. Pressed right arrow key. 3. Pressed shift+8 key and verified that it showed the expected output. (notes)
    • TEST_FRAME_SCROLL_LOCK_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed scroll lock key. 3. Pressed e and verified that it showed the correct output. (notes)
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Ubuntu 22.04 Jammy Jelly Linux OS (VM) and here is my observation: 1.Opened the Chromium browser app. Pressed ^ key. 2. Pressed and Release ctrl key. 3. Pressed e key. Verified that it showed the expected output ê.

🟩 SUITE_LDML_PROCESSOR_COMPLIANT:

  • 🟩 GROUP_WIN_10: WordPad

    • TEST_CONTROL_1 (PASSED): 1. Installed Contextreset keyboard. 2. Opened TexEditor (64-bit) app. 3. Pressed ^. 4. Pressed the e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^ key. 2. Pressed right arrow key. 3. Pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 10 OS and here is my observation: 1. Opened the WordPad app. 2. Switched to ContextReset Keyboard. 3. Pressed a key followed by a right arrow key. 4. Pressed Shift+8 key. Verified that it is showing the correct output.
    • 🟩 TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result. (notes)
  • 🟩 GROUP_WIN_11: WordPad

    • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the WordPad app. 2. Switched to ContextReset Keyboard. Pressed ^ key. 3. Pressed e key. Verified that it is showing the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^ key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): 1. Pressed a key followed by a right arrow key. 2. Pressed Shift+8 key. Noticed that it is showing the wrong output.
    • 🟩 TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result. (notes)
  • ✅ GROUP_MAC: TextEdit

    5 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta-test-11172) on macOS Sonoma and here is my observation: 1. Installed English (ContextReset) keyboard. 2. Opened TexEdit app. 3. Pressed ' key. 4. Pressed e and verified that it showed the expected output. (notes)
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^. 2. Pressed right arrow key. 3. Pressed e and verified that it showed correct output. (notes)
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on macOS Sonoma and here is my observation: 1. Opened the TextEdit app. 2. Switched to ContextReset Keyboard. 3. Pressed a key followed by a right arrow key. 4. Pressed Shift+8 key. Verified that it is showing the correct output.
    • TEST_FRAME_SCROLL_LOCK_NO_RESET (PASSED): 1. Opened the TextEdit app. 2. Pressed ^ key. 3. Pressed scroll lock ON. 3. Pressed e key. Verified that it is showing the expected result.
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Opened the TextEdit app. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result. (notes)
  • ✅ GROUP_LINUX: gedit

    5 tests PASSED
    • TEST_CONTROL_1 (PASSED): Tested with the attached PR build (Keyman 17.0.307-beta (package version 17.0.307-1~PR-11172-2732.1+mantic1) on Ubuntu Mantic Linux OS (VM) and here is my observation: 1. Installed English (ContextReset) keyboard. 2. Opened gedit. 3. Pressed ' key. 4. Pressed e and verified that it showed the expected output.
    • TEST_FRAME_KEY_RESET_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on uBUNTU 22.04 Jammy Jelly Linux OS (VM) and here is my observation: 1. Opened TextEditor app. Pressed ^ key. 2. Pressed Scroll lock key. 3. Pressed e key. Verified that it showed the expected output ê.
    • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): 1. Pressed a. 2. Pressed right arrow. 3. Pressed Shift+8 keys. Verified that it showed the expected output.
    • TEST_FRAME_SCROLL_LOCK_NO_RESET (PASSED): 1. Pressed ' key. 2. Pressed scroll lock key. 3. Pressed e and verified that it showed the correct output. (notes)
    • TEST_MODIFIER_TAP_NO_RESET (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Ubuntu 22.04 Jammy Jelly Linux OS (VM) and here is my observation: 1.Opened TextEditor app. Pressed ^ key. 2. Pressed and Release ctrl key. 3. Pressed e key. Verified that it showed the expected output ê.

Test Artifacts

@keymanapp-test-bot keymanapp-test-bot bot added this to the B17S5 milestone Apr 4, 2024
@srl295 srl295 changed the base branch from master to beta April 4, 2024 22:13
@srl295 srl295 marked this pull request as draft April 4, 2024 22:13
@keymanapp-test-bot keymanapp-test-bot bot removed the user-test-missing User tests have not yet been defined for the PR label Apr 4, 2024
@srl295 srl295 self-assigned this Apr 4, 2024
@srl295 srl295 changed the title Fix/core/10955 reset on frame fix(core): reset on frame keys 🙀 Apr 4, 2024
@srl295 srl295 changed the base branch from beta to chore/core/11112-lone-surrogate April 4, 2024 22:14
core/src/km_vkey_to_contextreset.hpp Outdated Show resolved Hide resolved
core/src/state.hpp Outdated Show resolved Hide resolved
core/src/km_core_state_api.cpp Outdated Show resolved Hide resolved
core/src/km_core_state_api.cpp Outdated Show resolved Hide resolved
core/src/state.hpp Outdated Show resolved Hide resolved
@mcdurdin mcdurdin added fix core/ Keyman Core labels Apr 4, 2024
@mcdurdin
Copy link
Member

mcdurdin commented Apr 4, 2024

For #10955

This should be fixing that issue, right? in which case "fixes ..." rather than "for ..." (and don't forget to link in the Development right hand panel in GH)

keymanapp-test-bot skip

I think we can usefully have user tests for this to verify that outcome is as we expect on each platform. Need to spec with non-compliant apps, a test for pressing specific frame key and another test for non-frame keys, with a keyboard rule that depends on preceding context. With sil_euro_latin, type ' ... frame key | non frame key ... e, and for non-frame key it should combine, with frame key it shouldn't. We could use e.g. Insert as a non-frame key, and e.g. Escape as a frame key, if using an app such as Notepad where those keys won't have any other effect.

In fact may need to have tests with compliant apps as well, to verify markers are dropped when frame keys are pressed. Needs thinking through a bit but I think this is critical given this is fundamental to how Keyman works.

@srl295
Copy link
Member Author

srl295 commented Apr 5, 2024

For #10955

This should be fixing that issue, right? in which case "fixes ..." rather than "for ..." (and don't forget to link in the Development right hand panel in GH)

I usually update that once it actually fixes.

keymanapp-test-bot skip

I think we can usefully have user tests for this to verify that outcome is as we expect on each platform. Need to spec with non-compliant apps, a test for pressing specific frame key and another test for non-frame keys, with a keyboard rule that depends on preceding context. With sil_euro_latin, type ' ... frame key | non frame key ... e, and for non-frame key it should combine, with frame key it shouldn't. We could use e.g. Insert as a non-frame key, and e.g. Escape as a frame key, if using an app such as Notepad where those keys won't have any other effect.

Good point. I have never done a user test so far. So I'm just used to skip.

In fact may need to have tests with compliant apps as well, to verify markers are dropped when frame keys are pressed. Needs thinking through a bit but I think this is critical given this is fundamental to how Keyman works.

Makes sense

@bharanidharanj
Copy link

Test Results

SUITE_LDML_PROCESSOR_NON_COMPLIANT:

GROUP_WIN_11: TextEditor

  • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the Notepad app. 2. Switched to ContextReset Keyboard. Pressed ^ key. 3. Pressed e key. Verified that it is showing the expected output.

  • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^ key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.

  • TEST_FRAME_KEY_RESET_NO_MARKERS (FAILED): 1. Pressed a key followed by a right arrow key. 2. Pressed Shift+8 key. Noticed that the it is showing the wrong output.

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (FAILED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the Notepad app. 2. Pressed ^ key. 3. Pressed scroll lock ON. 3. Pressed e key. Noticed that it is showing the wrong output.

  • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result.

@srl295
Copy link
Member Author

srl295 commented Apr 24, 2024

@keymanapp-test-bot retest SUITE_KMX_PROCESSOR_NON_COMPLIANT GROUP_WIN_10 TEST_SCROLLLOCK_KEY_NO_RESET GROUP_WIN_10 TEST_SCROLLLOCK_KEY_NO_RESET SUITE_LDML_PROCESSOR_NON_COMPLIANT GROUP_WIN_10 TEST_FRAME_SCROLL_LOCK_NO_RESET SUITE_LDML_PROCESSOR_COMPLIANT GROUP_WIN_10 TEST_FRAME_KEY_RESET_NO_MARKERS TEST_FRAME_SCROLL_LOCK_NO_RESET

@bharanidharanj
Copy link

SUITE_LDML_PROCESSOR_COMPLIANT:

GROUP_WIN_11: WordPad

  • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the WordPad app. 2. Switched to ContextReset Keyboard. Pressed ^ key. 3. Pressed e key. Verified that it is showing the expected output.

  • TEST_FRAME_KEY_RESET_MARKERS (PASSED): 1. Pressed ^ key. 2. Pressed right arrow then pressed e key. Verified that it showed the expected output.

  • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): 1. Pressed a key followed by a right arrow key. 2. Pressed Shift+8 key. Noticed that it is showing the wrong output.

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (FAILED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened the WordPad app. 2. Pressed ^ key. 3. Pressed scroll lock ON. 3. Pressed e key. Noticed that it is showing the wrong output.

  • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result.

@bharanidharanj
Copy link

bharanidharanj commented Apr 24, 2024

SUITE_LDML_PROCESSOR_COMPLIANT:

GROUP_WIN_10: WordPad

  • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 10 OS and here is my observation: 1. Opened the WordPad app. 2. Switched to ContextReset Keyboard. 3. Pressed a key followed by a right arrow key. 4. Pressed Shift+8 key. Verified that it is showing the correct output.

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (FAILED): 1. Opened the WordPad app. 2. Pressed ^ key. 3. Pressed scroll lock ON. 3. Pressed e key. Noticed that it is showing the wrong output.

  • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result.

@srl295
Copy link
Member Author

srl295 commented Apr 25, 2024

@keymanapp-test-bot retest SUITE_LDML_PROCESSOR_NON_COMPLIANT GROUP_WIN_11 TEST_FRAME_KEY_RESET_NOMARKERS

@srl295
Copy link
Member Author

srl295 commented Apr 25, 2024

@keymanapp-test-bot retest SUITE_LDML_PROCESSOR_NON_COMPLIANT GROUP_WIN_11 TEST_FRAME_KEY_RESET_NOMARKERS

@bharanidharanj I forgot this one which was still on the wrong editor. Otherwise I think the only issue is the scroll lock key.

PR broken due to only partly accepting review comments - sorry, fixed.

@srl295
Copy link
Member Author

srl295 commented Apr 26, 2024

@rc-swag same, if you get it sorted out please go ahead and merge

@rc-swag
Copy link
Contributor

rc-swag commented Apr 26, 2024

@keymanapp-test-bot retest SUITE_KMX_PROCESSOR_NON_COMPLIANT GROUP_WIN_11 TEST_FRAME_KEY_RESET_NOMARKERS

@rc-swag
Copy link
Contributor

rc-swag commented Apr 26, 2024

@keymanapp-test-bot retest SUITE_KMX_PROCESSOR_NON_COMPLIANT GROUP_LINUX TEST_CONTROL_1 SUITE_LDML_PROCESSOR_NON_COMPLIANT GROUP_WIN_11 TEST_FRAME_KEY_RESET_NO_MARKERS

@rc-swag
Copy link
Contributor

rc-swag commented Apr 26, 2024

@keymanapp-test-bot retest SUITE_KMX_PROCESSOR_NON_COMPLIANT GROUP_WIN_11 TEST_SCROLLLOCK_KEY_NO_RESET SUITE_KMX_PROCESSOR_COMPLIANT GROUP_WIN_11 TEST_SCROLLLOCK_KEY_NO_RESET SUITE_LDML_PROCESSOR_NON_COMPLIANT GROUP_WIN_11 TEST_FRAME_SCROLL_LOCK_NO_RESET
SUITE_LDML_PROCESSOR_COMPLIANT GROUP_WIN_11 TEST_FRAME_SCROLL_LOCK_NO_RESET

@rc-swag
Copy link
Contributor

rc-swag commented Apr 26, 2024

@keymanapp-test-bot retest SUITE_LDML_PROCESSOR_COMPLIANT GROUP_WIN_10 TEST_FRAME_SCROLL_LOCK_NO_RESET SUITE_LDML_PROCESSOR_COMPLIANT GROUP_WIN_11 TEST_FRAME_SCROLL_LOCK_NO_RESET

@rc-swag
Copy link
Contributor

rc-swag commented Apr 26, 2024

Test Results

SUITE_KMX_PROCESSOR_NON_COMPLIANT:

GROUP_WIN_10: TextEditor

  • TEST_SCROLLLOCK_KEY_NO_RESET (SKIPPED): VM issues works on two different developers' machines

GROUP_WIN_11: TextEditor

  • TEST_SCROLLLOCK_KEY_NO_RESET (SKIPPED): VM issues works on two different developers' machines

SUITE_KMX_PROCESSOR_COMPLIANT:

GROUP_WIN_11: Wordpad

  • TEST_SCROLLLOCK_KEY_NO_RESET (SKIPPED): VM issues works on two different developers' machines

SUITE_LDML_PROCESSOR_NON_COMPLIANT:

GROUP_WIN_10: TextEditor

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines

GROUP_WIN_11: TextEditor

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines

GROUP_MAC: Chrome Browser

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines

SUITE_LDML_PROCESSOR_COMPLIANT:

GROUP_WIN_10: WordPad

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines

GROUP_WIN_11: WordPad

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (SKIPPED): VM issues works on two different developers' machines

@bharanidharanj
Copy link

Test Results

SUITE_KMX_PROCESSOR_NON_COMPLIANT:

GROUP_LINUX: Chrome Brower (https://www.editpad.org/)

  • TEST_CONTROL_1 (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Ubuntu 22.04 Jammy Jelly Linux (VM) and here is my observation: 1. Opened "https://editpad.org" site in the chromium browser. 2. Switched to sil_eurolatin Keyboard. 3. Pressed ` key. 4. Pressed e key. Verified that it is showing the expected output.

@bharanidharanj
Copy link

Test Results

SUITE_KMX_PROCESSOR_NON_COMPLIANT:

GROUP_WIN_11: TextEditor

  • TEST_FRAME_KEY_RESET_NOMARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened "EC Test App" text editor. Pressed 1 key followed by //. 2. Pressed right arrow then pressed 2 key. Verified that it showed the expected output.

@bharanidharanj
Copy link

Test Results

SUITE_LDML_PROCESSOR_NON_COMPLIANT:

GROUP_WIN_11: TextEditor

  • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on Windows 11 OS (VM) and here is my observation: 1. Opened "EC Test App" text editor. 1. Pressed a. 2. Pressed right arrow. 3. Pressed Shift+8 keys. Verified that it showed the expected output.

@bharanidharanj
Copy link

Test Results

SUITE_LDML_PROCESSOR_NON_COMPLIANT:

GROUP_MAC: Chrome Browser

  • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Opened Chrome browser. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result.

SUITE_LDML_PROCESSOR_COMPLIANT:

GROUP_MAC: TextEdit

  • TEST_FRAME_KEY_RESET_NO_MARKERS (PASSED): Retested with the updated PR build (Keyman 17.0.311-beta-test-11172) on macOS Sonoma and here is my observation: 1. Opened the TextEdit app. 2. Switched to ContextReset Keyboard. 3. Pressed a key followed by a right arrow key. 4. Pressed Shift+8 key. Verified that it is showing the correct output.

  • TEST_FRAME_SCROLL_LOCK_NO_RESET (PASSED): 1. Opened the TextEdit app. 2. Pressed ^ key. 3. Pressed scroll lock ON. 3. Pressed e key. Verified that it is showing the expected result.

  • TEST_MODIFIER_TAP_NO_RESET (PASSED): 1. Opened the TextEdit app. Pressed ^ key. 2. Pressed then released Ctrl key. 3. Pressed e key. Verified that it is showing the expected result.

@keymanapp-test-bot keymanapp-test-bot bot removed the user-test-required User tests have not been completed label Apr 26, 2024
@mcdurdin mcdurdin merged commit a5765d0 into beta Apr 26, 2024
17 checks passed
@mcdurdin mcdurdin deleted the fix/core/10955-reset-on-frame branch April 26, 2024 08:35
@keyman-server
Copy link
Collaborator

Changes in this pull request will be available for download in Keyman version 17.0.315-beta

@mcdurdin
Copy link
Member

Looks like we forgot to test this in the Keyman Developer debugger -- #11486!

mcdurdin added a commit that referenced this pull request May 21, 2024
The output from Keyman Core changed in #11172 to emit a
`KM_CORE_IT_INVALIDATE_CONTEXT` action when a frame key is pressed, but
the debugger was not catering for this scenario, causing an assertion
failure.

Fixes: #11486
Fixes: KEYMAN-DEVELOPER-1Y4
mcdurdin added a commit that referenced this pull request May 21, 2024
The output from Keyman Core changed in #11172 to emit a
`KM_CORE_IT_INVALIDATE_CONTEXT` action when a frame key is pressed, but
the debugger was not catering for this scenario, causing an assertion
failure.

Fixes: #11486
Fixes: KEYMAN-DEVELOPER-1Y4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment