Compiling version 11 beta



I want to compile the keyman beta with some branding.

I have downloaded keyman “origin-beta” release.

I am running “make release” under src/

I am getting below error, please help


What happens when you try and run the command W:\GitHub\keyman\windows\bin\buildtools\mkver.exe from the command prompt? Do you get a similar error?


should I perform this in VS x86_64 command prompt?


Yes, that would be appropriate.



I turned off the antivirus
I am getting a different error


Can you paste the results for the commands:

type W:\GitHub\keyman\windows\src\global\delphi\general\
type W:\GitHub\keyman\resources\



One more file to check:

type W:\GitHub\keyman\windows\src\version.txt



Okay, I’m not sure why that version.txt file shows that line. Try updating it to




But I am getting a different error now! while “make build”


Looks like you are using Delphi 10.3; we are still on Delphi 10.2 and have not yet updated to 10.3 (that will happen most likely in the Keyman 12.0 timeframe). Can you get hold of version 10.2?


Hello @Marc_Keyman

that worked.

For branding build and release.
Should I use make build or release?
for release it is expecting certificates that are not test certificates.


You will need to use make release to make your own installers. You should use Authenticode code signing digital certificates, which you can purchase from a variety of vendors, such as Verisign, Thawte, etc.

Note that you will need to make significant changes to executable metadata, especially around product name and organisation name, before distributing your version of Keyman (the name “Keyman” is a registered trademark).

We have not yet completed our work on making branded versions of the open source version of Keyman, so we welcome pull requests which make it easier to rebrand and customise :slight_smile:


Sure, I will start working on it.

could you please given me couple of instructions
Are we try to creating parametric to brand name, company name, url?
should we map these parameters in UserDefines.mak?
Could you give me one example?


I will contribute towards branding.


Much of the branding for Keyman Desktop is in windows/src/desktop/kmshell/xml/localedef.dtd. We should probably be building this from a template, given it has a hard coded version number. The mkver app allows some rewriting of templates but I don’t think it currently supports embedding arbitrary strings, which it would need to for optimum support. Then you would rename localedef.dtd to and in the build run mkver to complete it, in the same way as we do for windows/src/desktop/inst/

The xsl files have references to logos and icons which would need to be parameterised in similar ways. Overrides for the defaults could be defined in UserDefines.mak, yes.

It might be best to start with small-scale pull requests that are easy to check rather than making all the changes in one PR.

The installer similarly has hard coded strings which you should override.

Keyman.exe itself has hard coded graphics for the Keyman menu and On Screen Keyboard. These would need to be parameterised. Note that the strings themselves are all in locale.xml, so you could parameterise the graphics also in locale.xml.


One of the challenges which I haven’t yet figured out is how to have differently branded versions of Keyman running without causing conflicts. This is on my agenda for a future version of Keyman.


I am working on getting most of the display font fixed via xsl’s

  1. Many places Calibri font is used. This is not available for localization. Can we add “SK_UIFontName2”, defaulted to Calibri. I will replace Calibri to this parameter. This way we retain the looks as it’s now. Unless we are OK to use Tahoma?
  2. I am not able to find the code, which dictate the fonts for this menu

------- vs --------

those blue text is picking up some "a href " class, please point to the code.
even the keyboard list as the same problem

If I can fix these, I am ready to make a small pull request to fix localization of display fonts


Any Caption that is starting with & in the system tray menu is switching to hyperlink.
Please advise

  1. We were planning to use Calibri everywhere in the app, so please feel free to update any Tahoma references to Calibri, and use SK_UIFontName as the parameter everywhere. We don’t want to use both fonts. Then you can just update SK_UIFontName on your version.
  2. The difficulty with the Noto Sans Kannada font is that it does not include a Latin script range. So Windows falls back to another font whenever a string contains letters not in Kannada block – and Keyman defaults to rendering that in blue as you can see in the menu. That menu is rendered by procedure TKeymanMenuItem.DrawItemShared(ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState; BarColor, SelColor, SelBorderColor: TColor); in windows\src\engine\keyman\KeymanMenuItem.pas:205. That further calls a function called TCleartypeDrawCharacter.DrawText. You can see how the font color is changed by TClearTypeDrawCharacter.SelectFallbackFont. You might want to update that code to change the default fallback fonts because the Code2000 font series are now pretty outdated.