Help with creating a "basic" emoji picker using existing functionality


I am trying to create a “basic” emoji picker with 317 emojis, as a bid for improving acceptance and use among the intended audience. My implementation would spread the emojis across nine layers, and allow access to any of the supported emojis with a maximum of three taps.

This is how I imagine it to work. The default laters would have an “emoji” Special button, that would take the user to the EMOJI_0 layer:

There the user would have access to 28 popular emojis, plus eight special buttons that would take the user to eight additional emoji layers (layers 1 - 8):

Layers 1 - 8 would also have a special button to go back to the EMOJI_0 layer:

I have some questions.

  1. When I was adding characters with diacritics on the touch layout, I realized that in the Layout tab I would have to add an output rule for every key that contained a character with a diacritic. For example, for “ŕ”,
    + [U_0155] > U+0155 c ŕ
    I imagine I would have to do the same for all the emojis? REGEX helped me create all these rules from the Touch Layout sourcecode, but I wonder if there is an easier way?

The rest are compiling issues.

  1. error KM0205A: Key "S_EMOJI_PICKER" on "phone", layer "default" has an invalid identifier. and
    error KM0205A: Key "L_1" on "phone", layer "EMOJI_0" has an invalid identifier.
    I looked around for information on rules for naming Special keys for layers but I couldn’t find the page that talks about it. What are the rules for naming Special keys?

  2. warn KM02093: Layer "EMOJI_0" on platform "phone" is missing the required key(s) 'K_ENTER'.
    This message seems to state that I must have an enter key on every layer? Is that right? I see there is the Enter key in this example: Emoji picker for keyboard . I wonder, what would the reason for this be?

  3. error KM02059: Touch layout file D:\[user]\Keyman Developer\Projects\[project_name]\source\[project_name].keyman-touch-layout is not valid
    Is this just a way of saying that the build failed? Is that different from the next, last line, info KM05007: [project_name].kmn failed to build.?

Here is my project folder. I am using the file format for Keyman Developer 17.0.305 (beta):

I am also open to any other feedback about this feature I am working on.

Thanks so much for any help!

1 & 2: Valid identifiers start with K_ (and link to the logic for those keys in the .kmn file), T_ (and need rules in the .kmn file to generate, U_ (which will output the corresponding U+xxxx character, without needing a rule in the .kmn file).

You should be able to use U_0155 or U_xxxxx to produce your “ŕ” or emoji without any rule in the .kmn file. U_xxxx_yyyy will output two Unicode characters U+xxxx and U+yyyy.

See Keys, Virtual Keys and Virtual Character Keys for more information on identifiers.

4: I would guess that the touch layout was invalid (due to invalid identifier names) and therefore could not be built.