Here’s a minimal keyboard test case that works on the web browser as expected but not in the Windows KeyMan app:
store(&NAME) 'test'
store(&TARGETS) 'any windows macosx linux web iphone ipad androidphone androidtablet mobile desktop tablet'
store(smallCapsOn) '0'
store(SmallCapsRef) "abcdefghijklmnoprstuvwy"
store(SmallCaps) U+1D00 U+0299 U+1D04 U+1D05 U+1D07 U+A730 U+0262 U+029C U+026A U+1D0A U+1D0B U+029F U+1D0D U+0274 U+1D0F U+1D18 U+0280 U+A731 U+1D1B U+1D1C U+1D20 U+1D21 U+26A U+1D0A U+1D0B U+029F U+1D0D U+0274 U+1D0F U+1D18 U+1D1A U+0280 U+A731 U+1D1B U+1D1C U+1D20 U+1D21 U+028F
begin Unicode > use(main)
group(main) using keys
if(smallCapsOn='1') '^' + any(SmallCapsRef) > index(SmallCaps,3) '^'
if(smallCapsOn='1') '^=' + '=' > nul set(smallCapsOn='0')
if(smallCapsOn!='1') '=' + '=' > '^' set(smallCapsOn='1')
c Test. Type aaa==aaa==aaa==aaa aaa==
c Should end up with: aaaᴀᴀᴀaaaᴀᴀᴀ aaa^
c Works on Web tester but not on Windows 15.0.268
It’s supposed to trigger a kind of ‘small caps’ mode with a double press of = key and then turn it off with the same, but while the rule if(smallCapsOn) gets triggered, the set(smallCapsOn) doesn’t happen. Everything works as intended on the web version which is why I think there may be a bug or else something I’m overlooking.
Any help gratefully received. And let me know if you can’t reproduce it.
I was thinking I could try older versions of Keyman and the Mac version to see how it behaves.
I made a keyboard project based on your .kmn file above. xyz.zip (4.5 KB)
When I test in the Keyman Developer web tester with the sequence you list
aaa==aaa==aaa==aaa aaa==
I get
aaaᴀᴀᴀaaaᴀᴀᴀ^ aaa==
and it seems at that point that the smallCapsOn flag is set, but the rules don’t produce small caps because there’s a space after the ^.
store(&NAME) 'test'
store(&TARGETS) 'any windows macosx linux web iphone ipad androidphone androidtablet mobile desktop tablet'
store(bFlag) '0'
begin Unicode > use(main)
group(main) using keys
if(bFlag='1')+'z'> '***'
if(bFlag!='1')'='+'='> set(bFlag='1') beep
c Test. Type: a==z==a==z
c Should get: a***==a==***
c Does that on Web tester but on Windows 15.0.268 gives: azaz (with 2 beeps when == typed)
I can reproduce this here, yes. It looks like this is a bug in the Keyman Core for Windows integration that we added in Keyman 15. @ross (our Windows dev) is away this week but will take a look next week when he returns. (I would take a look but currently in Germany working on another project so won’t have an opportunity until I return to Australia in a week and a half.)
Thanks for the quick work. It seems to work fine now, though I seem to be hitting quite a different problem (keyboard not working when English is selected as the language) that I’ll write in another thread.