I am going to take you through the steps to create a shareware product in Keyman Developer 7 Beta 1.  Much of the user interface will change with Beta 2 and no doubt some of the steps will be restructured somewhat, but the concepts should remain fairly similar.

Before you start, make sure you have a keyboard, and a package with documentation and fonts.  I won’t cover any of that in this example.  I am assuming that you are familiar with Keyman Developer 6 and Keyman 6.

A few things have changed from Keyman 6 with how Keyman is distributed.  Keyman has been split into two components:

  • Keyman Engine – installed in C:Program FilesCommon FilesTavultesoftKeyman Engine 7.0
  • Keyman Desktop (formerly Keyman Standard Edition) – installed in C:Program FilesTavultesoftKeyman 7.0

The Keyman Engine includes:

  • keyman32.dll – The Keyman runtime keystroke processor
  • kmcomapi.dll – Keyman’s COM API interfaces
  • keyman.exe – The tray icon application and background program.

Keyman Desktop includes:

  • kmshell.exe – Keyman Configuration, Splash dialog and related
  • keyman.pxx – Keyman product description file
  • Help files and related files

The idea is that you can replace the files in Keyman Desktop with your own product files.  You can choose to keep the Keyman Configuration user interface, or you can replace it entirely with your own interface.  In this example we will replace the user interface entirely.

Step 1: start Keyman Developer 7 and create a new project.  Add your keyboards and packages to the project.



Don’t forget to compile your keyboards and packages.  This will generate normal .kmx and .kmp files.

Step 2: Create a branding file


Step 2.1: Create your default task bar icon for the branding file.


Step 2.2: Setup the product options.  This is where you specify the distribution model for the product

  • Shareware: You define the length of the evaluation – there is no up-front licensing cost for Keyman, and you can start selling the product immediately through the Tavultesoft online store.  The online store automatically manages the licensing for Keyman and product activation.
  • Freeware: You purchase a license to distribute Keyman with your product as freeware to all users – at no cost to them.  You cannot sell your product with this model but must make it freely available to all users.  No product activation is included in a freeware product.
  • Global: You purchase a license to distribute Keyman with your product and you have full control over how you manage the product.  Product activation is not included in this model.

In our example, we will go with a 30 day evaluation Shareware product:

There is no need to change the controller file name in this example – we will use keyman.exe which is included in the Keyman Engine.  Next, we setup the application command lines – Keyman’s COM API uses this when another application needs to activate your keyboard:

If you were using the standard Keyman Configuration user interface, you would use the following options instead:

You do not need to update any of the messages from Keyman Configuration if you are using your own user interface for the product.

Step 2.3: Design the notification icon popup menu:



Step 3: Back in the Project, add a new distribution file, and edit it:

Step 3.1: Select your custom product in the distribution licensing options page:

Step 3.2: Then, add all the files for your product to the package.  In this example, I have created a laounicode.exe .NET application that has a basic configuration dialog and splash screen.  I will cover the making of that in another blog entry – for now, you can download it from the Beta downloads site:


I have unticked the "Include Standard Keyman Files" checkbox as we are not using the Keyman Configuration user interface.

Please note: a bug in beta 1 means that you need to add the redistributable file insthelp.exe into the installer if you do not include Standard Keyman files.  insthelp.exe is available in the C:Program FilesTavultesoftKeyman DeveloperRedist folder.

Step 3.3: Fill in the install path and setup the readme and End User Licence Agreement files:

I don’t think the optional program command line works in Beta 1…

Step 3.4: Fill in all the details shown in the Info page:

Step 3.5: Create Start Menu entries, as shown below (if you were using the Keyman Configuration UI, you would use kmshell.exe):

Step 4: Finally, save your distribution file and click the Create Product button.  You will need to be online to create the product.  All going well, a .msi file will be generated in the same path as your .kpp file:

Candle and light are part of the WiX toolkit that we use for creating Windows Installer MSI files.

During this process, you will probably be asked for your tavultesoft.com login details.  Keyman Developer requires access to online services from tavultesoft.com to encrypt your keyboard and setup product activation.

I will write about some other parts of the product creation process soon:

  • Walkthrough the Tavultesoft Online product management website – product management, purchasing licenses, activating end user licenses and more.
  • Dissecting the LaoUnicode.exe .NET example

Don’t forget – if you encounter any bugs when following through this, create an issue!

Categories: Developing Keyboards

1 thought on “How to create a shareware product in Keyman Developer 7 Beta 1”

Arun Sarkar · September 6, 2007 at 4:44 am

Dear Marc,
You may also describe about the “CREATING A LICENSE & OFF LINE LICENSE” at TIKE
TITLE: Managing customer licences in the Keyman Developer CRM
URL: http://keyman.typepad.com/keyman_weblog/2007/09/managing-custom.html
BLOG NAME: Typing around the world
DATE: 09/24/2007 11:17:51 AM
I have just updated the documentation around the Keyman Developer CRM – specifically, details on how to manage your customer licence records and create new customer licences for your custom Keyman-based products. See http://tavultesoft.com/keymandev/do

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Related Posts

Developing Keyboards

Introducing the Keyman Open Source Keyboard Repository

We have many hundreds of keyboard layouts online at keyman.com that cover well over a thousand  languages. These keyboard layouts work on Windows, the web, iPhones, iPads and Android phones and tablets. However, most of Read more…


Using Keyman Engine for Android to create a system keyboard

In part 1 of this series, we looked at the steps involved in creating a basic Android app which included a Keyman in-app keyboard. In this post, we’ll work with the second sample included in Read more…