Combining characters on keykap, combining wrong with dotted circle

I have a keyboard with dotted circle + combining diacritics as keys. The diacritics input just fine, but on the keyboard itself (when testing in the web browser), the diacritics are all shifted one character to the right. E.g.

◌́◌ becomes ◌◌́
◌́ becomes ◌ ́

This issue doesn’t happen with normal letters, e.g. áa, á

This is with a mobile touch layout, virtual device (iPhone or Pixel) both have this issue.

Welcome to the community! Is this your own keyboard or if it’s in the repo, can you tell us which one? It actually looks like a font issue and not a keyboard issue, but I’d need more details for which keyboard and which base character you want the combining mark on.

Hi, this is my own keyboard that I’m developing. The ◌́◌ has no problem displaying in my browser otherwise.

Maybe you could show us the rule producing this, or perhaps dm the source of your keyboard in a zip file. You may have to upload it to google drive or dropbox and just send me the link.
One of your examples above has a space between the dotted circle and the combining mark. Also, I’m unable to tell if you actually are adding 25CC or if you are just using it as a holder, so viewing the rules would help.


I’m using the dotted circles as placeholders on the keycaps, but the intended behavior (which works fine) is that only the accents actually get input. The issue is that on the keycaps, accents are one character right of where they should be (this should be [◌́◌] [◌◌̀] [◌̀◌]) - the characters are in the right order* in my keyboard layout, and they display just fine in Keyman Developer, but not when testing the compiled keyboard in my browser.

[◌́◌]: U+25CC U+0301 U+25CC
[◌◌̀]: U+25CC U+25CC U+0300
[◌̀◌]: U+25CC U+0300 U+25CC

This is a real challenge! We have a solution coming in Keyman 17, because it’s something that’s come up for many keyboards. Basically, some operating systems insert a dotted circle (U+25CC) for unattached diacritics, but others don’t. To complicate things, if you use a dotted circle as a base for diacritics, some operating systems will honour that, but others will insert another dotted circle, just as you are seeing.

The solution coming in Keyman 17 is the &displayMap system store, which makes diacritic display consistent across all platforms.

It does involve constructing a custom font for the on screen keyboard, and that is something we can help with if you need. Learn more.

1 Like