Help with my Sinhala Keyboard

Thank you Marc. I will try it.

Hi SIL (Lorna, Marc)

I have two issues bothering me in the keyboard for Sinhala. Would be grateful if you could help me with them.

  1. I have the following assignment to store at the header.

store(&hotkey) [CTRL SHIFT K_P]

The code compiles and after the build, it is found that the keyboard doesn’t have the toggle key. I have to assign it using the Keyman configuration.

  1. I used the following rule to write a certain character with a diacritic.

U+0D9A + [LALT K_L] > U+0D9A U+0DDF

The code compiles. But on testing it is found that the typing cursor stays between the character and the diacritic, without moving to the new position after the diacritic.
Under normal circumstances, it should be at the end of the character-diacritic combination, so that the writer can continue typing.

I would be grateful if you kindly let me know the solutions to the above two. Best regards

Hi @prabhath,

  1. The hotkey issue sounds similar to the reported issue here: bug(windows): hotkey seems to be inconsistently applied · Issue #9355 · keymanapp/keyman · GitHub. We hope to fix this in the next couple of weeks.

  2. This sounds like a problem, for sure. Can you give me some more details, including a minimal sample keyboard I can test with on my computer? We will need some details on versions as well: version of Keyman, version of Windows, which application(s) and application versions?

Hi Marc,

Thanks for your prompt reply. Regarding the second point raised by me, following are the details:

Computer used: HP Laptop 13th gen i-5 1335U 64 - bit
OS - Windows 11 Home Single Language 23H2
Keyman Developer - 16.0.145
Keyman - 16.0

I am attaching the kmn file stripped of much of the code, leaving only sufficient for the essential functionality. The problematic rule is at the end of the file. When that rule is executed, the cursor remains between the character and the diacritic, without moving to the forthcoming character position as it should.

Hope you would be able to shed some light on this please.

With best regards

simplified.kmn (1.97 KB)

Hi @prabhath,

I have downloaded simplified.kmn and tested it locally here, typing k Left Alt+l in the Keyman Developer debugger, Notepad, Wordpad, and Word. I have been unable to reproduce the issue so far. I have been testing with a recent build of 17.0 alpha, but none of the relevant code for character input has changed between 16 and 17, so far as I can recall.

A few questions and ideas:

  1. First, which application are you typing into? Is the behaviour the same if you try the built-in debugger in Keyman Developer, Notepad, Wordpad, and/or Word?
  2. Can you type, e.g. k Left Alt+l g into Notepad, and copy and paste the result in your reply?
  3. Temporarily, change the key combination[LALT K_L] to [K_COLON] and test to see if that makes a difference. It’s possible there’s something about Left Alt which is involved in the issue. Note: we don’t recommend using Left Alt or either Control key in general, because they can conflict with keyboard shortcuts used by apps – Left Alt+L is normally used to open a menu or select a button which has an L shortcut.
  4. Can you capture a screen recording of typing k Left Alt+l g (pause between each keystroke so we can see the interactions) and share it?

Hi Marc

Thank you for the reply. I will try your suggestions and get back to you. There is one thing I can say immediately. This particular rule has been added as an afterthought to more or less complicated keyboard. It has been tested only within the KM debugger, as I did each rule being added. As it didn’t work there, I didn’t build it to test in any external applications.

Will come back to you soon with fuller results.


Thanks for the feedback. It is important to know that you have at this point only seen this issue in the debugger. I look forward to hearing more soon.

Hi prabhath, I just looked at the keyboard. I’m wondering if it’s a font problem. I see the behavior you see when the default font is used. In this case it seems to be Nirmala UI. When I change the font in the debugger (right click in the debug window) and change the font to Noto Serif Sinhala it seems okay to me. Certainly the underlying character codes seem correct.

This is with Nirmala UI:

This is with Noto Serif Sinhala

Then I copied the text into Word and this is with Nirmala (where my cursor is technically at the end of the string):

This is in Word with a font called Iskoola Pota (and Noto Serif Sinhala behaves the same) where I can’t even try to position the cursor in the middle of the syllable:

I don’t know enough about Sinhala to know if this is an unusual combination or not. But, it doesn’t seem to be a problem with your rule, it seems to be font related.

I’m using Keyman Developer 16.0.145 and Windows 11.

Good catch @lorna. That looks very plausible. Can you confirm @prabhath?

I’d add that you can see the cursor position in two places in the Keyman Debugger – in the editor window, and in the character grid immediately below it. In the character grid, the cursor is shown as a green bar, and here you can see it is after a U+0020 space character, so even though it is showing overlapping the character in editor, that is just a display artifact – the actual character position of the cursor is correct.


Hi Lorna and Marc,

Lorna has got it right. The moment I changed the font, the problem disappeared. Thank you very much Lorna and Marc!



Great to hear @prabhath that it was in the end just a font display thing.

I’ll go ahead and close this topic, so if you have any other queries please feel free to start a new topic on this forum :slight_smile: