Working sample of how to use Keyman 11 Engine for Desktop

Hello,

I am looking for small sample showing as to how can we use the Keyman 11’s Engine for Desktop programmatically.

Is there any such sample available?

TIA

Yogi Yang

Hi Yogi,

Welcome to the community! Are you wanting to script Keyman Engine as a part of Keyman Desktop, or build your own product based on Keyman Engine? Slightly different use cases!

Scripting Keyman Engine

There is a very basic example but reasonably comprehensive documentation at: https://help.keyman.com/developer/engine/desktop/10.0/api/IKeyman/

That example is written in VBScript but the pattern is the same regardless of the language.

Keyman Configuration uses the Keyman Engine API extensively, as documented at that link; it is written in Delphi (Object Pascal), and you can see the source at https://github.com/keymanapp/keyman/tree/beta/windows/src/desktop/kmshell

Building your own product

Things are a little less clear for building your own product. We retired the Branding Pack when we released Keyman as open source, because the Branding Pack made a lot of assumptions about licensing that were no longer relevant. We have not had the resources to fully replace the functionality of the Branding Pack, thus far. However, the good news is that we do have a sample project, currently in beta (so will have further improvements and bug fixes before release) with the FirstVoices Keyboards project. You can see the source of that project and how we bundle Keyman Engine with it at: https://github.com/keymanapp/keyman/tree/beta/oem/firstvoices/windows. The majority of the work is done in src/inst/Makefile (Delphi Makefile).

Hello Marc,

Thank you for your extensive reply.

Actually I use both Delhi and VB6 for developing software.

I am primarily interested in integrating Keyman Engine in my own product. That is why I am interested in.

I check out the help which is extensive but it is hard to understand as to how to build an app using the API just by reading about each API. Actually my needs are very simple:

  1. Create keyboards in Keyman Developer and compile them.
  2. Integrate the API in my app so that I can load a particular compiled keyboard based on user selection and activate Keyman for typing.

I also need to understand as to what parts of Keyman will I have to deploy along with my app to get it functional.

TIA

Yogi Yang

Hello Marc,

Are there any possibilities of using Branding Pack of previous version and customize the app as per my need. I mean the serial number provided here: h t t p s://keyman.com/downloads/archive/?

TIA

Yogi Yang

Currently, the simplest way to use Keyman in the way you are describing is to bundle the full Keyman program and install it (a silent install can be done with -s). Using the full version of Keyman removes the need for you to maintain a custom version, which can be a hassle as requirements change over time.

Then you should actually use Windows keyboard switching to select keyboards – this way you are not limited to Keyman keyboards but can support any in Windows. Keyman keyboards will be registered as valid Windows keyboards. You would use ITfInputProcessorProfileMgr::ActivateProfile and ITfInputProcessorProfiles::ChangeCurrentLanguage to switch between registered keyboard profiles and languages.

You can use the older version of Branding Pack, but the tavultesoft.com server will not do licensing any more – it returns a valid license for any license key. So you’d need to use the ‘global’ license. As we plan to shut down the entire partners section of the (now very old) site soon, it may become difficult to maintain the Branding Pack licensing. I would not recommend starting a new project based on Branding Pack, especially as we really will find it difficult to support you, and Keyman has had many improvements and compatibility updates since 9.0.