-
-
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
fix(mac): make modifiers operational in OSK #12556
Conversation
User Test ResultsTest specification and instructions ✅ SUITE_OSK_MODIFIERS: test varying outputs for different modifiers8 tests in 2 groups PASSED
Test Artifacts
|
Test ResultsI tested this issue with the attached "Keyman 18.0.126-alpha-local" build on the macOS Sonoma 14.5 and Big Sur 11.0.1. I am sharing my observation. SUITE_OSK_MODIFIERS: test varying outputs for different modifiersGROUP_VENTURA: test with macOS VenturaInstalled "Keyman 18.0.126-alpha-local" build on the macOS Big Sur 11.0.1. I had confirmation from the developer to test this PR in the Big Sur because I did not have the macOS Ventura. Installed the Khmer Angkor keyboard
GROUP_SONOMA: test with macOS SonomaInstalled "Keyman 18.0.126-alpha-local" build on the macOS Sonoma 14.5. Installed the Khmer Angkor keyboard.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code changes look good.
I had a test of the OSK on my mac, and a few things I think should happen (some of which may be addressed in #12565?):
- Pressing any modifier key on the hardware keyboard should reset all the OSK-selected modifier keys. This is the behaviour we settled on in Keyman for Windows, and it seems to be the most reliable option. (Testing right now, I am not sure if that is happening on Windows?)
- Closing the OSK should reset the modifier state to default
- The modifier state on the OSK should affect the hardware keys typed. Right now they seem completely independent.
@@ -17,6 +17,9 @@ | |||
#include <Carbon/Carbon.h> | |||
#import "KMELogs.h" | |||
|
|||
const int64_t OSK_EVENT_FLAG = 0x8000000000000000; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How was this flag selected?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am copying the modifier flags into the lower 32 bits and saving the upper 32 bits to mark this as our custom user data. Since it defaults to zero otherwise, I am just setting the upper-most bit of the upper 32, and I can use the other 31 bits in the future if I need to pass any other info from the OSK through to the event tap.
One more, holding Option+Shift on the hardware keyboard shows either Alt or Shift layer, not Alt+Shift layer (e.g. test on Khmer Angkor). It seems to work correctly when clicking the keys on the OSK |
I think we should document these and your other suggestion either in an issue or, probably better, as part of a Monday design meeting -- especially if it should be consistent across platforms. I didn't really try to design for these scenarios as I was just focusing on the one issue, and the correct interaction between the OSK and the physical keyboard is not intuitive to me. If we discuss in a group, we may come with some other edge cases that you haven't covered yet. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
OK, let's follow up on the other issues separately. Will you track them?
Changes in this pull request will be available for download in Keyman version 18.0.131-alpha |
With different layers active in the OSK, clicking on a key should produce the character represented on the key to be output.
Fixes #6578
User Testing
SUITE_OSK_MODIFIERS: test varying outputs for different modifiers
GROUP_VENTURA: test with macOS Ventura
GROUP_SONOMA: test with macOS Sonoma
TEST_OSK_BASE_LAYER: Khmer Angkor uses only RALT rules
ស
ស
សៃ
-
᧭