.keyboard_info 2.0 Specification
This file is generated by the compiler and provides metadata for a keyboard. It is a JSON file, with the following members. The .keyboard_info file will be used primarily by Keyman Cloud Services. During CI deployment, it will be built from the source package and keyboard metadata, and pushed with the compiled resources to the download store.
KeyboardInfo Object
-
idstring, the same as the name of the folder, lower case. In the release/ folder, this name must be a valid Javascript identifier, and follow the rules in the Keyboard Cloud Repository documentation.Example:
"id": "fv_blackfoot"Generation: from folder name.
-
namestring, the human readable name of the keyboard. This will usually differ from the id.Generation: from .kmp info, package name. If a .kmp is not included, it is sourced from the .js with a regular expression.
-
authorNamestring, the name of the authorGeneration: from .kmp info
-
authorEmailstring, the email address of the authorGeneration: from .kmp info
-
descriptionstring, a textual description of the keyboard. This may contain some minimal HTML (p, b, i, u, span, a, ul, ol, li, br, hr, h1-h4 tags).Generation: from .kmp info
-
licensestring, the possible values for license vary by location in the repository:- release/ and experimental/ keyboards must be
"mit". - legacy/ keyboards will be
"freeware","shareware"or"commercial".
Generation: from LICENSE.md
- release/ and experimental/ keyboards must be
-
languagesobject; an object with its member names being BCP 47 codes and values being KeyboardLanguageInfo objects.
Generation: From .kmp info.
-
lastModifiedDatestring, the last time the keyboard was modified, in RFC3339, UTCYYYY-MM-DDThh:mm:ss[.nnn]ZGeneration: the time that the .keyboard_info file is generated
-
packageFilenamestring, filename of the .kmp file that will be distributed, e.g."khmer_angkor.kmp".Generation: always
_id_.kmp. -
packageFileSizenumber, size in bytes of the .kmp file that will be distributed.Generation: From .kmp.
-
jsFilenamestring, filename of the .js file that will be distributed, e.g."gff_amh.js".Generation: always
_id_.js. -
jsFileSizenumber, size in bytes of the .js file that will be distributed.Generation: From .js.
-
isRTLboolean, true if the .js keyboard should be right-to-left.Generation: From .kmx, .js.
-
encodingsarray, of up to 2strings,"unicode"and/or"ansi".Generation: from .kmx, .js.
-
packageIncludesarray, ofstrings. Metadata used mostly by legacy keyboards. This flags whether a package includes:"fonts"- one or more fonts"documentation"- documentation, in PDF, RTF or HTML format, excluding welcome.htm and readme"visualKeyboard"- a KVK file"welcome"- a welcome.htm file
Generation: from .kmp
-
versionstring, the file version of the keyboard / package.Generation: from .kmp, .js. If no version number is present in the compiled file, assumes
"1.0" -
minKeymanVersionstring. The minimum version of Keyman that can read this keyboard. If present, must be a two part version string, starting from"6.0"and up. Note: for versions below 10.0, this value is used in KeymanWeb, but the version mapping is based on Keyman Desktop version numbers. For versions 10.0 and above, all platforms have a synchronized version number. See KeymanWeb Versioning for more detail.Generation: from .kmp, .js.
-
helpLinkstring. If present, the link to this keyboard's help page on help.keyman.com.Generation: if id/source/help/id.php exists.
-
platformSupportA [KeyboardPlatformInfo] object.
Generation: from .kmp
-
sourcePathstring, the relative path of the keyboard in the /keymanapp/keyboards GitHub repository, starting withrelease/,experimental/orlegacy/.Generation: from path in repository.
-
relatedobject, with each property an id of a keyboard and corresponding value is a KeyboardRelatedInfo.
Generation: from .kmp
-
deprecatedboolean, true if the keyboard has been deprecated.Generation: Always generated from related keyboards, currently only visible on api.keyman.com/search.
KeyboardLanguageInfo Object
-
font[KeyboardFontInfo] object containing information about a recommended display font for use with text produced by the keyboard.
Generation: This will be generated automatically from the .kmp file.
-
oskFont[KeyboardFontInfo] object containing information about a recommended font for use with the on screen keyboard. If not present, uses
font. If both are not present, then Keyman uses the default system font.Generation: This will be generated automatically from the .kmp file.
-
examplesArray of [KeyboardExampleInfo] objects containing sample text that the user can type to give them an idea of how to start to use the keyboard. This replaces
examplefield from version 1.0, and is less restrictive in its set of allowed key identifiers.Generation: This will be generated automatically from the .kmp file.
-
displayNamestring, a descriptive name of the language to display to users in the format: language (script, region). If the BCP 47 code does not contain script or region subtags, only the language name is displayed.Example:
"displayName": "Central Atlas Tamazight (Tifinagh, Morocco)"Generation: This will be generated automatically from the BCP 47 code.
-
languageNamestring, the name of the language subtag in the BCP 47 code.Example:
"languageName": "Central Atlas Tamazight"Generation: This will be generated automatically from the BCP 47 code.
-
scriptNamestring, the name of the script subtag in the BCP 47 code.Example:
"scriptName": "Tifinagh"Generation: This will be generated automatically from the BCP 47 code.
-
regionNamestring, the name of the region subtag in the BCP 47 code.Example:
"regionName": "Morocco"Generation: This will be generated automatically from the BCP 47 code.
KeyboardPlatformInfo Object
-
windows,macos,desktopWeb,ios,android,mobileWeb,linuxmembersstring, for all members: one of"dictionary","full","basic", or"none". If member is missing,"none"."dictionary": keyboard includes dictionary, e.g. IME or suggestion/autocompletion support."full": keyboard is designed and optimised for the platform, and works well with it."basic": keyboard compiles for the platform but has not been optimised for it (e.g. a Windows keyboard compiled to web, with no touch-specific support, will still work on a touch platform but will have a desktop-shaped touch keyboard with too many keys on it)."none": keyboard does not work on the platform
KeyboardFontInfo Object
-
familystring, family name of the font; can be used by Keyman Engine to locate an already installed font of the same name. -
sourcestring[], 1 or more filenames, relative to .keyboard_info file.
KeyboardExampleInfo Object
-
keysstring, a list of keystrokes to type to produce a short sample text using this keyboard, space-separated. Modifiers indicated with "+". Spacebar with "space". Plus key with "plus". This is not intended to give a full description of the keyboard but rather a simple example that introduces the user to the way the keyboard works. -
textstring, the result of the keystrokes typed, i.e. a Unicode string. -
notestring, a text note that helps to explain the example to the user.
KeyboardRelatedInfo Object
-
deprecatesboolean, if true, then this keyboard is intended to deprecate another keyboard with the parent member name, and Keyman will upgrade it to this keyboard if found, ignoring version numbers. -
deprecatedByboolean, if true, then this keyboard has been deprecated by the keyboard referred to. This member will be returned only from queries to api.keyman.com.
Schema
A validating schema for the object is online at https://api.keyman.com/schemas/keyboard_info.schema.json.
Generation
The kmc compiler generates the .keyboard_info file from the package and keyboard metadata, into the build/ folder.
Examples
The following is a reasonably comprehensive example .keyboard_info file for a Tibetan keyboard.
{
"id" : "tibetan_unicode_direct_input",
"name" : "Tibetan Unicode Direct Input",
"description" : "Tibetan Unicode Direct Input is designed to type all Tibetan characters and stacks directly. You get a Tibetan character every time you press a key, without having to use the Alt key or complex transliteration combinations. The keyboard types in a phonetic style based on the English (QWERTY) layout.\r\n\r\nThis keyboard also features special menus for Tibetan symbols and lets you type Latin and Cyrillic letters. ",
"jsFilename" : "tibetan_unicode_direct_input-1.1.js",
"packageFilename" : "tibetan_unicode_direct_input.kmp",
"authorEmail" : "linguasoft@surfeu.at",
"platformSupport" : {
"desktopWeb" : "full",
"ios" : "basic",
"android" : "basic"
},
"minKeymanVersion" : "7.0",
"packageIncludes" : [
"fonts",
"documentation",
"visualKeyboard",
"welcome"
],
"version" : "1.1",
"license" : "mit",
"languages" : {
"adi" : {
"font" : {
"family" : "TibetanWeb",
"source" : ["DDC_Uchen.ttf"]
},
"oskFont" : {
"family" : "TibetanWebOsk",
"source" : [
"DDC_Uchen.ttf",
"ddc_uchen-webfont.svg#ddc_uchenregular"
]
}
},
"bod" : {
"font" : {
"family" : "TibetanWeb",
"source" : ["DDC_Uchen.ttf"]
},
"oskFont" : {
"family" : "TibetanWebOsk",
"source" : [
"DDC_Uchen.ttf",
"ddc_uchen-webfont.svg#ddc_uchenregular"
]
},
"examples" : [{
"keys" : "b o d space s K d",
"text" : "\u0F56\u0F7C\u0F51\u0F0B\u0F66\u0F90\u0F51",
"note" : "Name of language"
}]
}
},
"lastModifiedDate" : "2015-02-16T07:34:55Z",
"encodings" : [
"unicode"
],
"related" : {
"tibetan unicode direct input" : {
"deprecates" : true
}
}
}


