Applying new features to my touch keyboard

Hi everyone
I hope you’re all doing great!
I wanted to work on new features in Keyman Developer to improve my touch keyboard uploaded on this Github repository: GitHub - ibrahimasarr/tappirde-pf-2023: The newly updated Fulah keybard developed with Keyman Developer.
These features are:

  • Starting keyboard with Caps
  • Word suggestion case matches what I type (upper/lower case)
    I cannot find any tutorial for a first time user.

I also would like some help on solving these:

  • After inserting a suggested word, I have to type space twice to insert a single space to continue typing.
  • I want my keycaps to be a little taller (increase height)
  • Where to edit the Space bar caption?

Thanks in advance!
Have a good day

Ibrahima

Hi @ibrahima

@joshua_horton had updated the casing rules for the nrc.en.mtnt lexical-model in this PR

You can implement similar changes in your ibrahima_malal_sarr.fuc-latn-sn.fuc_2020.model.ts

  • Where to edit the Space bar caption?

The mobile apps default the spacebar caption to “Language Name - Keyboard Name”. The other variations for the spacebar caption are “Language Name”, “Keyboard Name”, and “Blank”.
I think you can set the keyboard name in the .kps file

1 Like

We’ve been talking about holding an online webinar to work through these features; I have not had any availability for the last few months but am slowly coming back online now. If we manage to organise something, we’ll announce it on this forum and in our social media.

1 Like

Thanks a lot @darcy and @Marc for your replies.
I sure read a lot of documentation but unfortunately when you lack a lot of background, it is difficult to understand straight away. Learning takes time…
I am a greedy learner, so I would not miss any webinar taking place on Mars. :face_with_hand_over_mouth:
@darcy yes I got it. I will just use Language Name then.
Now about the lexical model link on Github, I really don’t understand what exactly I should look at and reproduce on my keyboard code. I have quite limited understanding of keyman language.

  • What file should I look at?
  • What code? etc.
    Don’t worry if I you haven’t got time yet, it is not really urgent.

EDIT: I added the code languageUsesCasing: true to my .ts file.

Thank you all
Ibrahima

1 Like

Hi all,
I’ve been working on some documentation as I worked through configuring Caps Lock on mobile and desktop on my keyboards.
It could use some refinement, but here’s a current view of the working document:

~Matthew

3 Likes

Thanks a lot @Matthew_Lee
!
I read it throught. Actually I have a keyboard that already has a lot of features: caps lock, capital letter afer a period/question mark etc…
What I am looking to implement is:

  • Start keyboard with Caps
  • Lexical model search will match case of the word typed, isntead of all lowercase. For example if I type Hamm, I should get a capital on the suggestion list.
    Second I wanted to know what files need to be edited to include code found here for example.
    Any help or contribution to the keyboard or lexical model on Github welcome!

Regards
Ibrahima

Within your lexical model source, include the following:

  languageUsesCasing: true

(Example: https://github.com/keymanapp/lexical-models/blob/master/release/nrc/nrc.en.mtnt/source/nrc.en.mtnt.model.ts#L5)

With that enabled, if the current word starts with a capital letter, the predictions will also be capitalized; likewise for all-caps scenarios.


Automatic shifting at the start of a new sentence / after a period is keyboard-based and relies on the two special keyboard groups documented here: Casing support

1 Like

Thank you very much @joshua_horton for your help.
I actually used the languageUsesCasing: true code in my model ts file. But I still get no Caps in the suggested words when I start typing a word with uppercase. I have to double check that.
As for casing support, I understand better now after reading the sample code for English and the comments, which are very helpful.
Now I have a few questions.
1- In which file that Casing support code should be included?
2- Should I list all the keys in store(&CasedKeys) [K_A] .. [K_Z]? What do the dots in between mean?

Thanks again
Ibrahima

  1. That file would be your .kmn file, in its “Code” view.

  2. The “dots in between” mean to include all keys between [K_A] and [K_Z], based on the English alphabet. It’s a lot shorter to write than…

    store(&CasedKeys) [K_A] [K_B] [K_C] [K_D] [K_E] [K_F] [K_G] .. [K_X] [K_Y] [K_Z]
    

    … which I still cut short.

For the lexical model capitalization issue, what keyboard and model are you using? It’d help to have access to the files in order to tinker with things and determine what’s going wrong.

Edit: a colleague pointed out the links to the relevant repos were already posted. That said, I’m rather deep in feature work at the moment; I’ll be able to respond more easily and quickly if you could provide pre-compiled .kmp versions. (It’d also help to ensure that I’m not “missing something” that hasn’t yet been uploaded to the repos from your local machine.)

Thanks,
Joshua H.

Thanks a lot @joshua_horton
I uploaded the project on my Github
Any contribution welcome.

Thank you again. I have understood the casing feature. I have two “code” views, one for Touch Layout and the other for Layout. Which are you referring to? Thanks.

Layout (plain, not “touch”) is the one you’re looking for.

Using the keyboard within your pulaar_fulfulde_2023.kmp and the lexical model within your isarr.ff-latn.ful2023.model.kmp, things appear to be working as I’d expect, noting that your keyboard lacks the Casing support rules:

Above: Note that there is no pre-existing text and that the keyboard is on the default (lower-case) layer. Suggestions are all lower-cased as a result.


Above: when I used Shift to reach the uppercased layer, the predictions were all capitalized.


Above, note how a fully-capitalized word with at least two letters results in all-caps predictions.


Based on the images above, the only things missing are those Casing support rules.

If you get different results when trying to reproduce the images I’ve captured above - especially if they’re consistently different - let me know…

Hi @joshua_horton
A million thanks for you help and especially for your patience!
I have the sane results now as your pictures after installing thoat specific keyboard and lexical model.
Actually I uninstalled Keyman and all all keyboards, then reinstalled only that one. Now suggestions match capitalizing according to what I type. Which is awesome!
I haven’t included the casing support yet but will try that today. That would makey keyboard almost complete.
I will come back to let you know how it went.
Again I cannot thank you all enough for the help I am getting every day.

Cheers
Ibrahima

Hi
I managed to add the Casing support code (tweaked to suit Fula). I get a lot of errors. See beloow
pulaar_fulfulde_2023.kmn: Compiling ‘C:\Users\Ibrahima SARR\Documents\Keyman Developer\Projects\Tappirde_Pulaar_fulfulde_2023\source\pulaar_fulfulde_2023.kmn’ with debug symbols for Windows, macOS, Linux…
pulaar_fulfulde_2023.kmn (183): 208A The compiler has assigned a minimum engine version of 9.0 based on features used in this keyboard
pulaar_fulfulde_2023.kmn: Success: ‘C:\Users\Ibrahima SARR\Documents\Keyman Developer\Projects\Tappirde_Pulaar_fulfulde_2023\source\pulaar_fulfulde_2023.kmn’ was compiled successfully for Windows, macOS, Linux to ‘C:\Users\Ibrahima SARR\Documents\Keyman Developer\Projects\Tappirde_Pulaar_fulfulde_2023\build\pulaar_fulfulde_2023.kmx’.
pulaar_fulfulde_2023.kmn: Compiling ‘C:\Users\Ibrahima SARR\Documents\Keyman Developer\Projects\Tappirde_Pulaar_fulfulde_2023\source\pulaar_fulfulde_2023.kmn’ with debug symbols for iPhone, iPad, Android phone, Android tablet…
pulaar_fulfulde_2023.kmn (183): 208A The compiler has assigned a minimum engine version of 9.0 based on features used in this keyboard
pulaar_fulfulde_2023.kmn (76): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (76): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (94): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (94): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (129): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (129): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (131): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (131): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (96): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (96): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (81): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (81): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (114): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (114): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (97): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (97): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (98): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (98): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (123): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (123): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (99): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (99): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (109): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (109): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (100): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (100): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (101): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (101): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (102): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (102): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (127): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (127): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (128): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (128): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (108): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (108): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (107): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (107): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (115): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (115): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (113): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (113): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (95): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (95): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (112): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (112): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (110): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (110): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (122): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (122): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (130): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (130): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (116): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (116): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (121): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (121): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (71): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (71): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (132): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (132): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (111): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (111): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (133): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (133): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (77): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (77): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (160): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (160): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (154): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (154): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (156): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (156): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (162): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (162): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (80): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (80): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (180): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (180): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (163): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (163): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (118): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (118): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (164): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (164): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (165): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (165): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (175): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (175): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (166): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (166): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (167): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (167): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (168): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (168): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (152): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (152): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (153): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (153): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (174): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (174): Warning: 2098 Extended shift flags CAPS and NCAPS are not supported in KeymanWeb
pulaar_fulfulde_2023.kmn (174): Warning: 20A7 More than 100 warnings or errors received; suppressing further messages
pulaar_fulfulde_2023.kmn: Failure: ‘C:\Users\Ibrahima SARR\Documents\Keyman Developer\Projects\Tappirde_Pulaar_fulfulde_2023\source\pulaar_fulfulde_2023.kmn’ was not compiled successfully for iPhone, iPad, Android phone, Android tablet.

I think this behavior was added to Keyman Developer 15.0 You’ll need to add this header statement to your .kmn file:
store(&version) '15.0'

@Lorna Yes, that soved the issue.
CASING IS WORKING NOW…
I am having a separate file created named “casing.kvk”. No idea what that is!

Maybe not directly related: I get translations that are Nigerian Fulfuldde instead of Fula (quite different dialects). When were Keyman translations last updated?
Thanks

The .kvk file is the compiled version of the .kvks file. That should be in the build folder and you should include it in the .kps list of files.

I’m not sure about the lexical files for Nigerian Fulfuldde. Make sure you are only including a language tag for the Fulfulde language you are wanting to use this for. Others will likely develop lexical models for other Fulani languages.

Sorry, I was referring to the Keyman app translations. But that’s another topic I guess.
Otherwise, casing is working.
Thanks all for your help.