Backspace key produces boxes before deleting characters


#1

On Windows 10, why does the keyman keyboard produce square boxes before the characters are deleted (backspace key) in MS Word? First I change to a suitable Unicode font for my language, then I typed in a character and it displays correctly but when I press backspace key, the previous character change to a square box, then I press the backspace again and the character is deleted. I tested the keyman keyboard in LibreOffice Writer (also on web browser), there is no backspace side effect, the backspace key works normally (delete previous character without the square boxes). I then created the same custom keyboard using the MS Keyboard Creator Layout application, and tested in MS Word and there’s no backspace side effect. Can anyone explain how I can fix this problem. Thank you.


#2

Can you give me some more information to help trace this issue:

  1. Which version of Keyman are you using?
  2. Which version of Word are you working with?
  3. Which keyboard layout are you using (if it’s your own, can you share some sample code that reproduces the issue)?

#3

I am using Keyman Developer 10.0 and Keyman Desktop. I am testing this in Word 2016 and 2019. This is my own keyboard layout for my language. The upload file is an image of the keyboard I am trying to implement.

Here is the source code corresponding to the keyboard image in the attachment. The boxes indicate a missing font but I have the font installed in my system.

c The Hmong Basic Keyboard is based on the Hmong Language Institute Design.
store(&TARGETS) 'windows linux web iphone androidphone desktop'
store(&COPYRIGHT) '© Yangsha Keng Kue'
store(&MESSAGE) 'Hmong Basic Keyboard'
store(&KEYBOARDVERSION) '1.0'
store(&NAME) 'Hmong Basic 2019'
store(&BITMAP) 'Hmong Basic 2019.ico'
store(&VISUALKEYBOARD) 'Hmong Basic 2019.kvks'
store(&LAYOUTFILE) 'Hmong Basic 2019.keyman-touch-layout'
begin Unicode > use(main)

group(main) using keys
+ [K_9] > '𖭙'
+ [K_8] > '𖭘'
+ [K_7] > '𖭗'
+ [K_6] > '𖭖'
+ [K_5] > '𖭕'
+ [K_4] > '𖭔'
+ [K_3] > '𖭓'
+ [K_2] > '𖭒'
+ [K_1] > '𖭑'
+ [K_0] > '𖭐'
+ [SHIFT K_Z] > '𖭀'
+ [K_QUOTE] > '𖭂'
+ [SHIFT K_Y] > '𖭁'
+ [K_J] > '𖬶'
+ [K_S] > '𖬵'
+ [K_L] > '𖬲'
+ [K_F] > '𖬰'
+ [K_M] > '𖬯'
+ [K_P] > '𖬮'
+ [K_I] > '𖬬'
+ [SHIFT K_T] > '𖬫'
+ [K_H] > '𖬪'
+ [K_Y] > '𖬩'
+ [SHIFT K_I] > '𖬨'
+ [K_K] > '𖬧'
+ [K_U] > '𖬦'
+ [SHIFT K_M] > '𖬥'
+ [K_O] > '𖬤'
+ [SHIFT K_U] > '𖬣'
+ [SHIFT K_L] > '𖬢'
+ [SHIFT K_H] > '𖬡'
+ [SHIFT K_O] > '𖬠'
+ [K_N] > '𖬟'
+ [K_D] > '𖬞'
+ [K_G] > '𖬝'
+ [SHIFT K_D] > '𖬜'
+ [SHIFT K_Q] > '𖬙'
+ [SHIFT K_R] > '𖬘'
+ [SHIFT K_K] > '𖬗'
+ [SHIFT K_J] > '𖬖'
+ [SHIFT K_C] > '𖬕'
+ [K_X] > '𖬔'
+ [K_E] > '𖬓'
+ [K_A] > '𖬒'
+ [SHIFT K_F] > '𖬑'
+ [K_R] > '𖬐'
+ [SHIFT K_B] > '𖬏'
+ [SHIFT K_S] > '𖬎'
+ [SHIFT K_E] > '𖬍'
+ [SHIFT K_G] > '𖬌'
+ [SHIFT K_N] > '𖬋'
+ [SHIFT K_X] > '𖬊'
+ [SHIFT K_A] > '𖬉'
+ [K_Q] > '𖬈'
+ [K_B] > '𖬇'
+ [K_V] > '𖬆'
+ [K_Z] > '𖬅'
+ [SHIFT K_W] > '𖬄'
+ [K_W] > '𖬃'
+ [K_T] > '𖬂'
+ [SHIFT K_V] > '𖬁'
+ [K_C] > '𖬀'

#4

Nice! What kind of help are you looking for? I’ll give you some quick feedback on a few items:

  • We don’t recommend including a year or version in the keyboard name. So, “Hmong Basic” might be acceptable, but “Hmong Basic 2019” wouldn’t be good. It’s better not to have to constantly update the keyboard name, let the copyright and version number be the clue to when it was created.
  • We don’t want spaces or uppercase in the files names. So your keyboard file should be something like:
    • hmong_basic.kmn
    • hmong_basic.ico
    • hmong_basic.kvks
    • hmong_basic.keyman-touch-layout
  • You should list the Keyman version that it works with, so maybe:
    store(&VERSION) ‘10.0’
  • Targets can be set to “any” rather than listing them all out.

I hope you will consider putting this in the github repo when you finalize the keyboard. The repo is here: https://github.com/keymanapp/keyboards and has good instructions. Feel free to ask for help.


#5

Okay, I’ve reproduced the backspace problem with Keyman 10/11 and Word 2016. I have documented this issue at https://github.com/keymanapp/keyman/issues/1600 and will be investigating it shortly. All going well, we will aim to have a fix in the stable release of Keyman 11 which is due out next week.