Copy layouts into a new project

I have created a desktop, on-screen, and touch-enabled keyboard for an LWC. I would like to copy these layouts and then edit a few keys in order to adapt it for a few different minority languages.

I can’t find any obvious way to do this. If I use the “Add Existing Keyboard” button in a new project, it adds the original file and then modifies the original. If I save a copy of the original .kmn, it doesn’t bring along the .kvks or .keyman-touch-layout files, though the copy of the .kmn is still associated with them. Those pages in the new .kmn tab are blank.

How do I copy a .kmn, .kvks, and .keyman-touch-layout from one project to another so they are still associated together but do not modify the original version?

Thanks!

There is no “obvious” way to do this currently. Sorry. My process is very manual and I use a text editor to prepare it all:

  • Copy whole folder and name the new one the new folder name foo to bar.
  • Rename every file that is named foo to bar (foo.kpj to bar.kpj, etc).
  • Edit .kpj file. Delete every file entry except the ones for the .kps and the .kmn.
    • Rename files entries in .kpj from foo.kmn to bar.kmn
    • Rename files entries in .kpj from foo.kps to bar.kps
  • Edit .kmn file. Change every reference for foo.kvks to bar.kvks, etc. Do that for the .ico file, the keyboard layout file, etc.
  • Edit .kps file. Change every reference for foo to bar.
  • Then, edit every single file to change the keyboard name and information.
  • Finally, start making changes to your keyboard.

You may not want to do Find/Replace All because you may still run into problems.

This does work and is easier than any other way I’ve found to do it. It takes me about 10 minutes to troll through the files and get it ready to start the new keyboard.

Having said this, we did just make a request to the Keyman team to look into a way to make this easier, so it’s something we might be able to look forward to in the future.

Yes. This is on my agenda. Current process is not beautiful!