refactor(windows): move windows Engine help in-repo

Relates-to: #12347
This commit is contained in:
Marc Durdin 2024-10-31 10:17:54 +07:00
parent ed1c106c2e
commit 81673c6319
208 changed files with 5122 additions and 1 deletions

View file

@ -93,6 +93,7 @@ function upload_keyman_help {
windows)
# Note: `/windows/src/desktop/help/build.sh web` must be run first
upload windows/bin/help/md/desktop products/windows/$VERSION_RELEASE
upload windows/help/engine developer/engine/windows/$VERSION_RELEASE
;;
developer)
# Note: `/developer/build.sh api` must be run first - covers both uploads

View file

@ -0,0 +1,18 @@
---
title: IKeyman::Apply Method
---
## Introduction
The `IKeyman::Apply` method applies the changes which have been made
through the current API instantiation to the Keyman Engine. If
[`IKeyman::AutoApply`](AutoApply) is set to `False`, `Apply` must be
called after making changes through the Keyman API. The documentation
for each method that makes changes documents whether or not `Apply`
needs to be called.
## Specification
``` clike
void Apply(void)
```

View file

@ -0,0 +1,21 @@
---
title: IKeyman::AutoApply Property
---
## Introduction
The `IKeyman::AutoApply` property determines if the API will apply
changes automatically to the Keyman Engine after each change is made.
Some changes are applied immediately, such as installing a keyboard
layout. However other changes will not be applied unless the
[`Apply`](Apply) method is called, or unless `AutoApply` is set to
`True`. The documentation for each method that makes changes documents
whether or not `Apply` needs to be called.
`AutoApply` defaults to `True`.
## Specification
``` clike
bool AutoApply
```

View file

@ -0,0 +1,16 @@
---
title: IKeyman::Control Property
---
## Introduction
The `IKeyman::Control` property returns the Keyman
[`IKeymanControl`](../IKeymanControl) interface which provides methods
to control various aspects of the Keyman process and user interface
interactions.
## Specification
``` clike
readonly IKeymanControl* Control
```

View file

@ -0,0 +1,18 @@
---
title: IKeyman::Errors Property
---
## Introduction
The `IKeyman::Errors` property returns the Keyman
[`IKeymanErrors`](../IKeymanErrors) interface which provides a list of
errors encountered by the Keyman API, for example when installing a
keyboard or package. When the Keyman API raises an exception, e.g. when
trying to install a corrupt package file, there may be additional
details available in the `Errors` collection.
## Specification
``` clike
readonly IKeymanErrors* Errors
```

View file

@ -0,0 +1,17 @@
---
title: IKeyman::Hotkeys Property
---
## Introduction
The `IKeyman::Hotkeys` property returns the Keyman
[`IKeymanHotkeys`](../IKeymanHotkeys) interface which provides a list of
configured user interface hotkeys. Hotkeys for activating a specific
keyboard layout are not listed here; these are visible under the
[`IKeymanLanguage::Hotkey`](../IKeymanLanguage/Hotkey) property.
## Specification
``` clike
readonly IKeymanHotkeys* Hotkeys
```

View file

@ -0,0 +1,15 @@
---
title: IKeyman::Keyboards Property
---
## Introduction
The `IKeyman::Keyboards` property returns the Keyman
[`IKeymanKeyboardsInstalled`](../IKeymanKeyboardsInstalled) interface
which provides a list of installed Keyman keyboards.
## Specification
``` clike
readonly IKeymanKeyboardsInstalled* Keyboards
```

View file

@ -0,0 +1,15 @@
---
title: IKeyman::Languages Property
---
## Introduction
The `IKeyman::Languages` property returns the Keyman
[`IKeymanLanguages`](../IKeymanLanguages) interface which provides a
list of all currently available Windows languages and input methods.
## Specification
``` clike
readonly IKeymanLanguages* Languages
```

View file

@ -0,0 +1,15 @@
---
title: IKeyman::Options Property
---
## Introduction
The `IKeyman::Options` property returns the Keyman
[`IKeymanOptions`](../IKeymanOptions) interface which provides a list of
configuration settings and values in Keyman Engine for Windows.
## Specification
``` clike
readonly IKeymanOptions* Options
```

View file

@ -0,0 +1,15 @@
---
title: IKeyman::Packages Property
---
## Introduction
The `IKeyman::Packages` property returns the Keyman
[`IKeymanPackagesInstalled`](../IKeymanPackagesInstalled) interface
which provides a list of installed Keyman keyboard packages.
## Specification
``` clike
readonly IKeymanPackagesInstalled* Packages
```

View file

@ -0,0 +1,19 @@
---
title: IKeyman::Refresh Method
---
## Introduction
When the `CoKeyman` object is instantiated, the Keyman API takes a
snapshot of the installed keyboards and various settings in Keyman
Engine. The `IKeyman::Refresh` method refreshes this snapshot with the
current Keyman and system configuration. After `Refresh` is called, any
references to interfaces held by the API consumer must be discarded, as
the API implementation releases them and creates new instances, even if
the object in question has had no changes.
## Specification
``` clike
void Refresh(void)
```

View file

@ -0,0 +1,15 @@
---
title: IKeyman::SystemInfo Property
---
## Introduction
The `IKeyman::SystemInfo` property returns the Keyman
[`IKeymanSystemInfo`](../IKeymanSystemInfo) interface which describes
the current system configuration.
## Specification
``` clike
readonly IKeymanSystemInfo* SystemInfo
```

View file

@ -0,0 +1,92 @@
---
title: IKeyman Interface
---
## Introduction
The `IKeyman` interface is the top-level interface for the Keyman Engine
for Windows API. The `IKeyman` interface can be instantiated with the
`CoKeyman` coclass; it will also be returned from a call to
`CreateObject("kmcomapi.Keyman")`.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeyman`**
## Properties
[`AutoApply`](AutoApply)
: Determines whether settings changes are applied to Keyman Engine
automatically as they are made.
[`Control`](Control) <span class="readonly">read only</span>
: Returns an [`IKeymanControl`](../IKeymanControl) interface that
provides methods for controlling the Keyman process and user
interface.
[`Errors`](Errors) <span class="readonly">read only</span>
: Returns an [`IKeymanErrors`](../IKeymanErrors) interface that lists
errors that the API incurred when undertaking various processes.
[`Hotkeys`](Hotkeys) <span class="readonly">read only</span>
: Returns an [`IKeymanHotkeys`](../IKeymanHotkeys) interface that
lists all of the configured interface hotkeys.
[`Keyboards`](Keyboards) <span class="readonly">read only</span>
: Returns an
[`IKeymanKeyboardsInstalled`](../IKeymanKeyboardsInstalled)
interface that lists all of the currently installed Keyman
keyboards.
[`Languages`](Languages) <span class="readonly">read only</span>
: Returns an [`IKeymanLanguages`](../IKeymanLanguages) interface that
lists all of the currently avilable Windows languages and input
methods.
[`Options`](Options) <span class="readonly">read only</span>
: Returns an [`IKeymanOptions`](../IKeymanOptions) interface that
lists all of the configuration settings and values for Keyman
Engine.
[`Packages`](Packages) <span class="readonly">read only</span>
: Returns an [`IKeymanPackagesInstalled`](../IKeymanPackagesInstalled)
interface that lists all of the currently installed Keyman packages.
[`SystemInfo`](SystemInfo) <span class="readonly">read only</span>
: Returns an [`IKeymanSystemInfo`](../IKeymanSystemInfo) interface
that describes the current system configuration.
## Methods
[`Apply()`](Apply)
: Apply all settings changes to Keyman Engine.
[`Refresh()`](Refresh)
: Refresh the snapshot of keyboards and settings which is captured
when the object is instantiated.
## Examples
### VBScript
This example can be saved with a .vbs extension to run through Windows
Scripting. This is similar to the uninstall script that Keyman Desktop
generates for packages which have a Start Menu Uninstall entry.
``` basic
dim kmcom, package
Set kmcom = CreateObject("keymanapi.Keyman")
n = kmcom.Packages.IndexOf("SamplePackage")
if n >= 0 then
Set package = kmcom.Packages(n)
if msgbox("Uninstall package "+package.Description+"?", vbOKCancel, "Keyman Desktop") = vbOK then
package.Uninstall(True)
end if
else
msgbox "The package SamplePackage could not be found."
end if
```

View file

@ -0,0 +1,28 @@
---
title: IKeymanBCP47Canonicalization::GetCanonicalTag Method
---
## Introduction
The `IKeymanBCP47Canonicalization::GetCanonicalTag` method returns a
canonical tag according to data from [SIL
langtags.json](https://github.com/silnrsi/langtags). The method will
convert ISO639-3 language tags, ISO639-1 language tags, remove
suppressed script tags, and append a default region if one is not
present.
**Note:** This tag may not always be identical to a Windows canonical
tag. A region subtag may be present in the canonical tag which may later
be removed by Windows, if Windows believes the language is used in only
one region.
## Specification
``` clike
string GetCanonicalTag(string Tag)
```
## Parameters
`Tag`
: The BCP 47 tag to canonicalize.

View file

@ -0,0 +1,26 @@
---
title: IKeymanBCP47Canonicalization Interface
---
## Introduction
The `IKeymanBCP47Canonicalization` interface adds functions for
canonicalizing BCP 47 tags.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanBCP47Canonicalization`**
## Methods
[`GetCanonicalTag()`](GetCanonicalTag)
: Finds a canonical tag according to data from SIL langtags.json.
## History
Added in Keyman Engine for Windows 14.0.

View file

@ -0,0 +1,14 @@
---
title: IKeymanCollection::Count Property
---
## Introduction
The `IKeymanCollection::Count` property returns the number of elements
in the collection.
## Specification
``` clike
readonly long Count
```

View file

@ -0,0 +1,21 @@
---
title: IKeymanCollection::Refresh() Method
---
## Introduction
The `IKeymanCollection::Refresh()` method refreshes the collection. All
existing elements in the collection are invalidated, even if nothing has
changed.
Generally, it is better to call the top-level
[`IKeyman::Refresh`](../IKeyman/Refresh) as that will ensure that the
Keyman API snapshot is internally consistent. See
[`IKeyman::Refresh`](../IKeyman/Refresh) for more information on Keyman
API snapshots.
## Specification
``` clike
void Refresh(void)
```

View file

@ -0,0 +1,17 @@
---
title: IKeymanCollection::_NewEnum() Method
---
## Introduction
The `IKeymanCollection::_NewEnum()` method instantiates an enumerator
for the collection. This is required for COM enumeration of the
collection. Generally, languages provide a method of iterating over a
collection that uses `_NewEnum()` internally, and you will not be
required to call this directly.
## Specification
``` clike
IUnknown* _NewEnum(void)
```

View file

@ -0,0 +1,61 @@
---
title: IKeymanCollection Interface
---
## Introduction
The `IKeymanCollection` interface is the base interface for all
collections in Keyman Engine for Windows API. The `Items[]` property is
implemented in sub-interfaces.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanCollection`**
> >
> > > [`IKeymanErrors`](../IKeymanErrors)
> > > [`IKeymanHotkeys`](../IKeymanHotkeys)
> > > [`IKeymanKeyboardLanguages`](../IKeymanKeyboardLanguages)
> > >
> > > > [`IKeymanKeyboardLanguagesFile`](../IKeymanKeyboardLanguagesFile)
> > > > [`IKeymanKeyboardLanguagesInstalled`](../IKeymanKeyboardLanguagesInstalled)
> > > >
> > > > > [`IKeymanKeyboardLanguagesInstalled2`](../IKeymanKeyboardLanguagesInstalled2)
> > >
> > > [`IKeymanKeyboardOptions`](../IKeymanKeyboardOptions)
> > > [`IKeymanKeyboards`](../IKeymanKeyboards)
> > >
> > > > [`IKeymanKeyboardsInstalled`](../IKeymanKeyboardsInstalled)
> > > >
> > > > > [`IKeymanKeyboardsInstalled2`](../IKeymanKeyboardsInstalled2)
> > > >
> > > > [`IKeymanPackageContentKeyboards`](../IKeymanPackageContentKeyboards)
> > >
> > > [`IKeymanLanguages`](../IKeymanLanguages)
> > > [`IKeymanOptions`](../IKeymanOptions)
> > > [`IKeymanPackageContentFiles`](../IKeymanPackageContentFiles)
> > > [`IKeymanPackageContentFonts`](../IKeymanPackageContentFonts)
> > > [`IKeymanPackagesInstalled`](../IKeymanPackagesInstalled)
> > >
> > > > [`IKeymanPackagesInstalled2`](../IKeymanPackagesInstalled2)
## Properties
[`Count`](Count) <span class="readonly">read only</span>
: Returns the number of items in the collection.
## Methods
[`_NewEnum()`](_NewEnum)
: Instantiates an enumerator for the collection. This is required for
COM enumeration of the collection.
<!-- -->
[`Refresh()`](Refresh)
: Refreshes the collection from the current Keyman Engine
configuration.

View file

@ -0,0 +1,17 @@
---
title: IKeymanControl::ActiveLanguage Property
---
## Introduction
The `IKeymanControl::ActiveLanguage` property sets or returns the last
active [`IKeymanLanguage`](../IKeymanLanguage) for the current thread.
This is a convenience wrapper for the Windows
`ITfInputProcessorProfileMgr::ActivateProfile` method.
## Specification
``` clike
IKeymanLanguage* ActiveLanguage
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::IsConfigurationOpen() Method
---
## Introduction
The `IKeymanControl::IsConfigurationOpen()` method returns `True` if
Keyman Configuration is currently running.
## Specification
``` clike
bool IsConfigurationOpen(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::IsKeymanRunning() Method
---
## Introduction
The `IKeymanControl::IsKeymanRunning()` method returns `True` if Keyman
Engine is currently running.
## Specification
``` clike
bool IsKeymanRunning(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::IsOnlineUpdateCheckOpen() Method
---
## Introduction
The `IKeymanControl::IsOnlineUpdateCheckOpen()` method returns `True` if
the Keyman Desktop online update check tool is currently running.
## Specification
``` clike
bool IsOnlineUpdateCheckOpen(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::IsTextEditorOpen() Method
---
## Introduction
The `IKeymanControl::IsTextEditorOpen()` method returns `True` if the
Keyman Desktop text editor is currently running.
## Specification
``` clike
bool IsTextEditorOpen(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::IsVisualKeyboardOpen() Method
---
## Introduction
The `IKeymanControl::IsVisualKeyboardOpen()` method returns `True` if
the on screen keyboard is running.
## Specification
``` clike
bool IsVisualKeyboardOpen(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::LastActiveWindow Property
---
## Introduction
The `IKeymanControl::LastActiveWindow` property returns the last active
window handle, excluding Keyman windows such as the On Screen Keyboard.
## Specification
``` clike
readonly long LastActiveWindow
```

View file

@ -0,0 +1,15 @@
---
title: IKeymanControl::LastFocusWindow Property
---
## Introduction
The `IKeymanControl::LastFocusWindow` property returns the last focused
window handle, irrespective of process, excluding Keyman windows such as
the On Screen Keyboard.
## Specification
``` clike
readonly long LastFocusWindow
```

View file

@ -0,0 +1,16 @@
---
title: IKeymanControl::OpenConfiguration() Method
---
## Introduction
The `IKeymanControl::OpenConfiguration()` method starts Keyman
Configuration (kmshell.exe). It is better to call this method than to
launch kmshell.exe directly as this method handles paths and parameter
changes across versions of Keyman Engine.
## Specification
``` clike
void OpenConfiguration(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::OpenDiagnostics() Method
---
## Introduction
The `IKeymanControl::OpenDiagnostics()` method opens the Keyman
diagnostics tool (tsysinfo.exe).
## Specification
``` clike
void OpenDiagnostics(void)
```

View file

@ -0,0 +1,19 @@
---
title: IKeymanControl::OpenHelp() Method
---
## Introduction
The `IKeymanControl::OpenHelp()` method opens Keyman Desktop help at the
specified topic.
## Specification
``` clike
void OpenHelp(string Topic)
```
## Parameters
`Topic`
: The string identifier for the topic.

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::OpenTextEditor() Method
---
## Introduction
The `IKeymanControl::OpenTextEditor()` method opens Keyman Desktop Text
Editor.
## Specification
``` clike
void OpenTextEditor(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::OpenUpdateCheck() Method
---
## Introduction
The `IKeymanControl::OpenUpdateCheck()` method opens Keyman Desktop
online update check tool.
## Specification
``` clike
void OpenUpdateCheck(void)
```

View file

@ -0,0 +1,20 @@
---
title: IKeymanControl::ShowKeyboardWelcome() Method
---
## Introduction
The `IKeymanControl::ShowKeyboardWelcome()` method opens the keyboard
welcome.htm for the keyboard in a HTML window hosted by kmshell.exe.
## Specification
``` clike
void ShowKeyboardWelcome(IKeymanKeyboardInstalled* Keyboard)
```
## Parameters
`Keyboard`
: The installed keyboard for which the documentation should be
displayed.

View file

@ -0,0 +1,16 @@
---
title: IKeymanControl::StartKeyman() Method
---
## Introduction
The `IKeymanControl::StartKeyman()` method starts Keyman Engine
(keyman.exe). It is better to call this method than to launch keyman.exe
directly, as this method handles paths and parameter changes across
versions of Keyman Engine.
## Specification
``` clike
void StartKeyman(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::StartVisualKeyboard() Method
---
## Introduction
The `IKeymanControl::StartVisualKeyboard()` method starts the on screen
keyboard.
## Specification
``` clike
void StartVisualKeyboard(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::StopKeyman() Method
---
## Introduction
The `IKeymanControl::StopKeyman()` method stops Keyman Engine
(keyman.exe).
## Specification
``` clike
void StopKeyman(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanControl::StopVisualKeyboard() Method
---
## Introduction
The `IKeymanControl::StopVisualKeyboard()` method stops the on screen
keyboard.
## Specification
``` clike
void StopVisualKeyboard(void)
```

View file

@ -0,0 +1,110 @@
---
title: IKeymanControl Interface
---
## Introduction
The `IKeymanControl` interface controls the operation of Keyman Engine
and provides methods to trigger Keyman Engine's user interface.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanControl`**
## Properties
[`ActiveLanguage`](ActiveLanguage)
: Returns or sets the currently active keyboard + language.
<!-- -->
[`LastActiveWindow`](LastActiveWindow) <span class="readonly">read only</span>
: Returns the last active window handle, excluding Keyman windows such
as the On Screen Keyboard.
<!-- -->
[`LastFocusWindow`](LastFocusWindow) <span class="readonly">read only</span>
: Returns the last focus window handle, irrespective of process.
## Methods
[`IsConfigurationOpen()`](IsConfigurationOpen)
: Returns `True` if Keyman Configuration is currently running.
<!-- -->
[`IsKeymanRunning()`](IsKeymanRunning)
: Returns `True` if Keyman Engine is currently running.
<!-- -->
[`IsOnlineUpdateCheckOpen()`](IsOnlineUpdateCheckOpen)
: Returns `True` if the Keyman Desktop online update check tool is
currently running.
<!-- -->
[`IsTextEditorOpen()`](IsTextEditorOpen)
: Returns `True` if the Keyman Desktop text editor is currently
running.
<!-- -->
[`IsVisualKeyboardOpen()`](IsVisualKeyboardOpen)
: Returns `True` if the on screen keyboard is running.
<!-- -->
[`OpenConfiguration()`](OpenConfiguration)
: Starts Keyman Configuration.
<!-- -->
[`OpenDiagnostics()`](OpenDiagnostics)
: Opens the Keyman diagnostics tool.
<!-- -->
[`OpenHelp()`](OpenHelp)
: Opens Keyman Desktop help at the specific topic.
<!-- -->
[`OpenTextEditor()`](OpenTextEditor)
: Opens Keyman Desktop text editor.
<!-- -->
[`OpenUpdateCheck()`](OpenUpdateCheck)
: Opens Keyman Desktop online update check tool.
<!-- -->
[`ShowKeyboardWelcome()`](ShowKeyboardWelcome)
: Loads the welcome.htm file in a window for the selected keyboard.
<!-- -->
[`StartKeyman()`](StartKeyman)
: Starts Keyman Engine, if it isn't already running.
<!-- -->
[`StartVisualKeyboard()`](StartVisualKeyboard)
: Starts the on screen keyboard, if it isn't already visible.
<!-- -->
[`StopKeyman()`](StopKeyman)
: Stops Keyman Engine.
<!-- -->
[`StopVisualKeyboard()`](StopVisualKeyboard)
: Stops the on screen keyboard.

View file

@ -0,0 +1,15 @@
---
title: IKeymanError::Description Property
---
## Introduction
The `IKeymanError::Description` property returns a human-readable
description of the error intended for display; see
[`ErrorCode`](ErrorCode) for the text of each error.
## Specification
``` clike
readonly string Description
```

View file

@ -0,0 +1,63 @@
---
title: IKeymanError::ErrorCode Property
---
## Introduction
The `IKeymanError::ErrorCode` property returns an integer error code for
the error.
## Specification
``` clike
readonly long ErrorCode
```
## Defined Error Codes
| Code | Identifier | Message | Source |
|----|----|----|----|
| 0xA0000200 | KMN_E_Install_InvalidFile | The file %0:s could not be installed because of the following error: %1:s | InstallKeyboard |
| 0xA0000201 | KMN_E_Install_AlreadyInstalled | A keyboard with the name %0:s is already installed. | InstallKeyboard |
| 0xA0000202 | KMN_E_Install_FailureToCreateDirectories | Failure to create directories for keyboard %0:s. | InstallKeyboard |
| 0xA0000203 | KMN_E_Uninstall_InvalidKeyboard | The keyboard %0:s could not be uninstalled because it was invalid. | UninstallKeyboard |
| 0xA0000204 | KMN_E_Uninstall_KeyboardPartOfPackage | The keyboard %0:s could not be uninstalled because it was part of package %1:s. | UninstallKeyboard |
| 0xA0000205 | KMN_E_Uninstall_AdminKeyboardInstalled | You do not have sufficient privileges to uninstall keyboard %0:s. | UninstallKeyboard |
| 0x20000206 | KMN_W_UninstallFileNotFound | The file %0:s was not found during the uninstall. | UninstallKeyboard |
| 0x20000207 | KMN_W_UninstallFileInUse | The file %0:s is currently in use and will be removed after the next reboot. | UninstallKeyboard |
| 0x20000208 | KMN_W_UninstallError_UnableToDeleteKeyboardRegistrySetting | Unable to delete keyboard %0:s registry key %1:s | UninstallKeyboard |
| 0x20000209 | KMN_W_UninstallError_UnableToRemoveDirectory | Unable to remove directory for keyboard %0:s (error %1:s) | UninstallKeyboard |
| 0xA000020A | KMN_E_PackageInstall_UnableToGetTempPath | Unable to find a temp path to install package. | InstallPackage |
| 0xA000020B | KMN_E_PackageInstall_UnableToGetTempFileName | Unable to get a temp file name to install package. | InstallPackage |
| 0xA000020C | KMN_E_PackageInstall_UnableToCreateTemporaryDirectory | Unable to create temporary folder to install package. | InstallPackage |
| 0xA000020D | KMN_E_PackageInstall_UnableToFindInfFile | Unable to locate inf file from package - it may be damaged. Please download the package again and try again. | InstallPackage |
| 0xA000020E | KMN_E_PackageInstall_PackageAlreadyInstalled | The package is already installed. | InstallPackage |
| 0xA000020F | KMN_E_PackageInstall_UnableToCopyFile | Unable to copy file %0:s for the package to %1:s - you may have insufficient privileges, or you may have run out of disk space. | InstallPackage |
| 0x20000210 | KMN_W_InstallPackage_UnableToFindProgramsFolder | Unable to find Start Menu folder | InstallPackage |
| 0x20000211 | KMN_W_InstallPackage_UnableToCreateStartMenuEntry | Unable to create Start Menu entry %0:s | InstallPackage |
| 0x20000212 | KMN_W_InstallPackage_CannotRunExternalProgram | Cannot run external program %0:s (error %1:s) | InstallPackage |
| 0x20000213 | KMN_W_InstallFont_CannotInstallFont | Cannot install font %0:s (error %2:d: %1:s) | InstallFont |
| 0x20000214 | KMN_W_InstallFont_CannotInstallFontAdmin | Cannot install font registry settings: %0:s | InstallFont |
| 0xA0000215 | KMN_E_Collection_InvalidIndex | Index %0:s out of bounds | Collection |
| 0xA0000216 | KMN_E_PackageUninstall_NotFound | Cannot find the package to uninstall | UninstallPackage |
| 0xA0000217 | KMN_E_PackageUninstall_AdminRequired | This package requires administrator access to uninstall | UninstallPackage |
| 0x20000218 | KMN_W_PackageUninstall_FileInUse | The file %0:s is in use and will be removed on next reboot | UninstallPackage |
| 0x20000219 | KMN_W_UninstallFont_FontInUse | The font %0:s is in use and will be removed on next reboot. Please reboot before attempting to install any additional fonts | UninstallFont |
| 0xA000021A | KMN_E_VisualKeyboard_Install_AlreadyInstalled | A visual keyboard is already installed for keyboard %0:s | InstallVisualKeyboard |
| 0xA000021B | KMN_E_VisualKeyboard_Install_CouldNotInstall | The visual keyboard %0:s could not be installed | InstallVisualKeyboard |
| 0xA000021C | KMN_E_VisualKeyboard_Install_KeyboardNotInstalled | The visual keyboard %0:s could not be installed because the keyboard %1:s was not found | InstallVisualKeyboard |
| 0xA000021D | KMN_E_KeymanControl_CannotLoadKeyman32 | Could not load keyman32.dll. Windows returned the error code %0:8x (%1:s) | Control |
| 0xA000021E | KMN_E_KeymanControl_CannotStartProduct | Could not find %0:s to start Keyman Product %1:s | Control |
| 0xA000021F | KMN_E_KeymanControl_CannotRegisterControllerWindow | Could not register controller window | Control |
| 0xA0000220 | KMN_E_KeymanControl_CannotUnregisterControllerWindow | Could not unregister controller window | Control |
| 0xA0000221 | KMN_E_KeyboardInstall_UnableToCopyFile | Unable to copy file %0:s to %1:s - you may have insufficient privileges, or you may have run out of disk space. | InstallKeyboard |
| 0xA0000222 | KMN_E_Install_KeyboardMustBeInstalledByAdmin | Error installing keyboard %0:s: Keyman requires keyboards to be installed by administrator | InstallKeyboard |
| 0x20000223 | KMN_W_KeyboardUninstall_ProfileNotFound | A language profile for %0:s could not be uninstalled for %1:s (it may be missing) | UninstallKeyboardLanguageProfile |
| 0xA0000224 | KMN_E_ProfileInstall_MustBeAllUsers | You do not have sufficient privileges to install the language profile for %0:s | InstallKeyboardLanguageProfile |
| 0xA0000225 | KMN_E_ProfileUninstall_MustBeAllUsers | You do not have sufficient privileges to uninstall the language profile for %0:s | UninstallKeyboardLanguageProfile |
| 0xA0000226 | KMN_E_ProfileInstall_KeyboardNotFound | The keyboard %0:s is not installed | InstallKeyboardLanguageProfile |
| 0xA0000227 | KMN_E_RecompileMnemonicLayout_mcompileFailed | The keyboard %2:s was not generated because mcompile failed to start with error %0:d (%1:s) | RecompileMnemonicKeyboard |
| 0xA0000228 | KMN_E_RecompileMnemonicLayout_mcompileError | The keyboard %2:s was not generated because mcompile failed with error %0:d: %1:s | RecompileMnemonicKeyboard |
| 0xA0000229 | KMN_E_RecompileMnemonicLayout_mcompileUnexpected | The keyboard %0:s was not generated due to an unknown error. | RecompileMnemonicLayout |
| 0x2000022A | KMN_W_KeyboardInstall_InvalidIcon | The icon for keyboard %0:s was not converted due to an error: %1:s | InstallKeyboard |
| 0x2000022B | KMN_W_TSF_COMError | Error %0:s updating TSF | TSF |

View file

@ -0,0 +1,23 @@
---
title: IKeymanError::Severity Property
---
## Introduction
The `IKeymanError::Severity` property returns the severity level of the
error.
## Specification
``` clike
readonly KeymanErrorSeverity Severity
```
## Severity Levels
| Value | Name |
|-------|------------|
| 0 | kesFatal |
| 1 | kesError |
| 2 | kesWarning |
| 3 | kesHint |

View file

@ -0,0 +1,32 @@
---
title: IKeymanError Interface
---
## Introduction
The `IKeymanError` interface provides information about an error that
Keyman Engine encountered.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanError`**
## Properties
[`ErrorCode`](ErrorCode) <span class="readonly">read only</span>
: Returns an integer code for the error.
<!-- -->
[`Description`](Description) <span class="readonly">read only</span>
: Returns a human-readable description of the error.
<!-- -->
[`Severity`](Severity) <span class="readonly">read only</span>
: Returns a `KeymanErrorSeverity` value for the error.

View file

@ -0,0 +1,14 @@
---
title: IKeymanErrors::Clear Method
---
## Introduction
The `IKeymanErrors::Clear` method removes all
[`IKeymanError`](../IKeymanError) entries from the collection.
## Specification
``` clike
void Clear(void)
```

View file

@ -0,0 +1,21 @@
---
title: IKeymanErrors::Items[Index] Property
---
## Introduction
The `IKeymanErrors::Items[Index]` property returns a
[`IKeymanError`](../IKeymanError) reference identified by `Index`. If
the index is out of range, exception
[`KMN_E_Collection_InvalidIndex`](../IKeymanError/ErrorCode) is raised.
## Specification
``` clike
readonly IKeymanError* Items[long Index]
```
## Parameters
Index
: A zero-based integer index .

View file

@ -0,0 +1,28 @@
---
title: IKeymanErrors Interface
---
## Introduction
The `IKeymanErrors` interface lists errors encountered by Keyman Engine
in a previous command such as installing a package.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > [`IKeymanCollection`](../IKeymanCollection)
> >
> > > **`IKeymanErrors`**
## Properties
[`Items[Index]`](Items) <span class="readonly">read only</span>
: Returns an [`IKeymanError`](../IKeymanError) reference at `Index`.
## Methods
[`Clear()`](Clear)
: Clears the collection.

View file

@ -0,0 +1,19 @@
---
title: IKeymanHotkey::Clear() Method
---
## Introduction
The `IKeymanHotkey::Clear()` method clears the hotkey value.
Changes to the hotkey will be applied after
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
is called for a keyboard hotkey, or after
[`IKeymanHotkeys::Apply`](../IKeymanHotkeys/Apply) is called for other
hotkeys.
## Specification
``` clike
void Clear(void)
```

View file

@ -0,0 +1,14 @@
---
title: IKeymanHotkey::IsEmpty() Method
---
## Introduction
The `IKeymanHotkey::IsEmpty()` method returns `True` if the hotkey value
is zero, or empty.
## Specification
``` clike
boolean IsEmpty(void)
```

View file

@ -0,0 +1,28 @@
---
title: IKeymanHotkey::Modifiers Property
---
## Introduction
The `IKeymanHotkey::Modifiers` property controls the set of modifiers
associated with the hotkey.
Changes to the hotkey will be applied after
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
is called for a keyboard hotkey, or after
[`IKeymanHotkeys::Apply`](../IKeymanHotkeys/Apply) is called for other
hotkeys.
## Specification
``` clike
KeymanHotkeyModifiers Modifiers
```
## Modifier Values
| Value | Modifier |
|---------|----------|
| 0x10000 | HK_ALT |
| 0x20000 | HK_CTRL |
| 0x40000 | HK_SHIFT |

View file

@ -0,0 +1,21 @@
---
title: IKeymanHotkey::RawValue Property
---
## Introduction
The `IKeymanHotkey::RawValue` property sets or returns the raw hotkey
value, which is the [`Modifiers`](Modifiers) property bitwise or-ed with
the [`VirtualKey`](VirtualKey) property.
Changes to the hotkey will be applied after
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
is called for a keyboard hotkey, or after
[`IKeymanHotkeys::Apply`](../IKeymanHotkeys/Apply) is called for other
hotkeys.
## Specification
``` clike
long RawValue
```

View file

@ -0,0 +1,30 @@
---
title: IKeymanHotkey::Target Property
---
## Introduction
The `IKeymanHotkey::Target` property returns the target of the hotkey.
For a hotkey associated with a keyboard, this will always be
`khKeyboard`.
## Specification
``` clike
readonly KeymanHotkeyTarget Target
```
## Target Values
| Value | Target | Notes |
|----|----|----|
| 0 | khKeymanOff | Switches to first Windows keyboard which is not a Keyman keyboard |
| 1 | khKeyboardMenu | Opens the Keyman keyboard menu from the notification area |
| 2 | khVisualKeyboard | Opens the On Screen Keyboard page in the on screen keyboard. If the On Screen Keyboard page is already visible, closes the on screen keyboard |
| 3 | khKeymanConfiguration | Opens Keyman Configuration |
| 4 | khKeyboardUsage | Deprecated. Has no effect in Keyman 14 and later versions. |
| 5 | khFontHelper | Opens the Font Helper page in the on screen keyboard. If the Font Helper page is already visible, closes the on screen keyboard |
| 6 | khCharacterMap | Opens the Character Map page in the on screen keyboard. If the Character Map page is already visible, closes the on screen keyboard |
| 7 | khTextEditor | Opens the Keyman Text Editor |
| 8 | khLanguageSwitch | Opens the Language Switcher |
| 9 | khKeyboard | Selects or Toggles the keyboard associated with the hotkey. |

View file

@ -0,0 +1,20 @@
---
title: IKeymanHotkey::VirtualKey Property
---
## Introduction
The `IKeymanHotkey::VirtualKey` property sets or returns the virtual key
associated with the hotkey.
Changes to the hotkey will be applied after
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
is called for a keyboard hotkey, or after
[`IKeymanHotkeys::Apply`](../IKeymanHotkeys/Apply) is called for other
hotkeys.
## Specification
``` clike
long VirtualKey
```

View file

@ -0,0 +1,50 @@
---
title: IKeymanHotkey Interface
---
## Introduction
The `IKeymanHotkey` interface describes a hotkey associated with an
action or a keyboard.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanHotkey`**
## Properties
[`Modifiers`](Modifiers)
: Returns a set of modifier keys used by the hotkey.
<!-- -->
[`RawValue`](RawValue)
: Returns the raw hotkey value, a combination of `Modifiers` and
`VirtualKey`.
<!-- -->
[`Target`](Target) <span class="readonly">read only</span>
: Returns the action that will be taken when the hotkey is pressed by
the user.
<!-- -->
[`VirtualKey`](VirtualKey)
: Returns the Windows virtual key code of the hotkey.
## Methods
[`Clear()`](Clear)
: Clears the hotkey value. It does not remove the hotkey from the
collection.
<!-- -->
[`IsEmpty()`](IsEmpty)
: Returns `True` if the hotkey is empty.

View file

@ -0,0 +1,14 @@
---
title: IKeymanHotkeys::Apply() Method
---
## Introduction
The `IKeymanHotkeys::Apply()` method applies changes to the keyboard
hotkeys to Keyman Engine.
## Specification
``` clike
void Apply(void)
```

View file

@ -0,0 +1,22 @@
---
title: IKeymanHotkeys::Items[Index] Property
---
## Introduction
The `IKeymanHotkeys::Items[Index]` property returns an
[`IKeymanHotkey`](../IKeymanHotkey) reference to the hotkey by `Index`.
If the hotkey is not found, exception
[`KMN_E_Collection_InvalidIndex`](../IKeymanError/ErrorCode) is raised.
The `Index` is the enumerated type `KeymanHotkeyTarget`.
## Specification
``` clike
readonly IKeymanHotkey* Items[KeymanHotkeyTarget Index]
```
## Parameters
Index
: The [target](../IKeymanHotkey/Target) of the hotkey.

View file

@ -0,0 +1,15 @@
---
title: IKeymanHotkeys::Reset() Method
---
## Introduction
The `IKeymanHotkeys::Reset()` method resets the value of all hotkeys in
the collection to empty. [`Apply`](Apply) must be called for the changes
to take effect.
## Specification
``` clike
void Reset(void)
```

View file

@ -0,0 +1,33 @@
---
title: IKeymanHotkeys Interface
---
## Introduction
The `IKeymanHotkeys` interface lists hotkeys configured for Keyman
Engine.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > [`IKeymanCollection`](../IKeymanCollection)
> >
> > > **`IKeymanHotkeys`**
## Properties
[`Items[Index]`](Items) <span class="readonly">read only</span>
: Returns an [`IKeymanHotkey`](../IKeymanHotkey) reference for the
hotkey identified by `Index`.
## Methods
[`Apply()`](Apply)
: Applies changes to the hotkeys in the collection to Keyman Engine.
[`Reset()`](Reset)
: Resets all hotkeys in the collection to empty.

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboard::Bitmap Property
---
## Introduction
The `IKeymanKeyboard::Bitmap` property returns an `IPicture` reference
to the icon included in the keyboard file as specified by
[`&bitmap`](/developer/language/reference/bitmap). If no icon is
included, a default icon is returned.
## Specification
``` clike
readonly IPicture* Bitmap
```

View file

@ -0,0 +1,15 @@
---
title: IKeymanKeyboard::Copyright Property
---
## Introduction
The `IKeymanKeyboard::Copyright` property returns the
[`&copyright`](/developer/language/reference/copyright) string from the
keyboard file.
## Specification
``` clike
readonly string Copyright
```

View file

@ -0,0 +1,19 @@
---
title: IKeymanKeyboard::DefaultBCP47Languages Property
---
## Introduction
The `IKeymanKeyboard::DefaultBCP47Languages` property returns the
[`&ethnologuecode`](/developer/language/reference/ethnologuecode) string
from the keyboard file. The first language code in the string is the
primary language.
This is informational data and may not be the same as the currently
linked languages for the keyboard.
## Specification
``` clike
readonly string DefaultBCP47Languages
```

View file

@ -0,0 +1,18 @@
---
title: IKeymanKeyboard::DefaultHotkey Property
---
## Introduction
The `IKeymanKeyboard::DefaultHotkey` property returns the
[`&hotkey`](/developer/language/reference/hotkey) value from the
keyboard file.
This is informational data and may not be the same as the currently
configured hotkey for the keyboard.
## Specification
``` clike
readonly IKeymanHotkey* DefaultHotkey
```

View file

@ -0,0 +1,21 @@
---
title: IKeymanKeyboard::DefaultPrimaryLanguage Property
---
## Introduction
The `IKeymanKeyboard::DefaultPrimaryLanguage` property returns the
[`&language`](/developer/language/reference/language) value from the
keyboard file.
This is informational data and may not be the same as the currently
linked languages for the keyboard.
In the future, this will be deprecated in favour of
[`DefaultBCP47Languages`](DefaultBCP47Languages).
## Specification
``` clike
readonly long DefaultPrimaryLanguage
```

View file

@ -0,0 +1,22 @@
---
title: IKeymanKeyboard::DefaultWindowsLanguages Property
---
## Introduction
The `IKeymanKeyboard::DefaultWindowsLanguages` property returns the
[`&windowslanguages`](/developer/language/reference/windowslanguages)
value from the keyboard file.
This is informational data and may not be the same as the currently
linked languages for the keyboard. This is a space separated list of
hexadecimal coded Windows LANGID values.
In the future, this will be deprecated in favour of
[`DefaultBCP47Languages`](DefaultBCP47Languages).
## Specification
``` clike
readonly long DefaultWindowsLanguages
```

View file

@ -0,0 +1,24 @@
---
title: IKeymanKeyboard::Encodings Property
---
## Introduction
The `IKeymanKeyboard::Encodings` property returns the supported
encodings for the keyboard. Most keyboards should be `keUnicode`, but
some legacy keyboards may return `keANSI`. It is possible for a keyboard
to support both `keUnicode` and `keANSI` but these keyboards are rare
and not recommended for general use.
## Specification
``` clike
readonly KeymanKeyboardEncodings Encodings
```
## Encodings
| Value | Name |
|-------|-----------|
| 1 | keANSI |
| 2 | keUnicode |

View file

@ -0,0 +1,20 @@
---
title: IKeymanKeyboard::Filename Property
---
## Introduction
The `IKeymanKeyboard::Filename` property returns the fully qualified
filename of the keyboard .kmx file. If the parent interface is
[`IKeymanKeyboardFile`](../IKeymanKeyboardFile), then the filename is
the same as the file used to instantiate the interface; otherwise, the
file will be in the Keyman keyboard store, and should not be moved out
of the store except by calling the
[`IKeymanKeyboardInstalled::Uninstall`](../IKeymanKeyboardInstalled/Uninstall)
method.
## Specification
``` clike
readonly string Filename
```

View file

@ -0,0 +1,18 @@
---
title: IKeymanKeyboard::Version GetCharsUsed Method
---
## Introduction
The `IKeymanKeyboard::GetCharsUsed` method returns the character
repertoire of the keyboard layout, that is, the Unicode characters that
the keyboard generates and references. This can be helpful for
determining support for a given keyboard, e.g. related fonts, and is
built up by scanning all the keyboard output and context strings in the
keyboard layout.
## Specification
``` clike
string GetCharsUsed(void)
```

View file

@ -0,0 +1,21 @@
---
title: IKeymanKeyboard::ID Property
---
## Introduction
The `IKeymanKeyboard::ID` property returns the base name of the keyboard
.kmx file, sans extension. The full filename, including path, of the
keyboard is available in the [`Filename`](Filename) property.
No two keyboards can share the same identifier in a Keyman Engine
installation. The identifier is case insensitive and should consist of
letters, digits and underscores, although some legacy identifiers may
contain other characters as well. The initial character of an identifier
should be a letter.
## Specification
``` clike
readonly string ID
```

View file

@ -0,0 +1,25 @@
---
title: IKeymanKeyboard::LayoutType Property
---
## Introduction
The `IKeymanKeyboard::LayoutType` property returns the value of the
[`&mnemoniclayout`](/developer/language/reference/mnemoniclayout) store.
A keyboard layout that is mnemonic (`kltMnemonic`) is remapped by Keyman
Engine according to the current Latin script-based base layout, whereas
a keyboard layout that is positional (`kltPositional`) is not affected
by the current base layout.
## Specification
``` clike
readonly KeymanKeyboardLayoutType LayoutType
```
## Layout Types
| Code | Value | Description |
|----|----|----|
| kltPositional | 0 | The keyboard layout is not affected by the current base layout. |
| kltMnemonic | 1 | The keyboard layout has been remapped to match the current Latin script-based base layout. |

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboard::Message Property
---
## Introduction
The `IKeymanKeyboard::Message` property returns the
[`&message`](/developer/language/reference/message) string from the
keyboard file. This value is typically displayed when a keyboard is
installed and in the configuration user interface.
## Specification
``` clike
readonly string Message
```

View file

@ -0,0 +1,22 @@
---
title: IKeymanKeyboard::Name Property
---
## Introduction
The `IKeymanKeyboard::Name` property returns the
[`&name`](/developer/language/reference/name) string from the keyboard
file. This name is shown to the user in the Keyman Engine user interface
and in the Windows keyboard picker.
The `Name` property is not related to the [`ID`](ID) property or the
Filename
property.
## Specification
``` clike
readonly string Name
```

View file

@ -0,0 +1,21 @@
---
title: IKeymanKeyboard::Version Property
---
## Introduction
The `IKeymanKeyboard::Version` property returns the
[`&keyboardversion`](/developer/language/reference/keyboardversion)
string from the keyboard file. This represents the current version of
the keyboard file, and is in the form of a dotted numeric string.
The `Version` property is not related to the
[`&version`](/developer/language/reference/version) store, which
determines the minimum Keyman Engine version which a keyboard can be run
under.
## Specification
``` clike
readonly string Version
```

View file

@ -0,0 +1,82 @@
---
title: IKeymanKeyboard Interface
---
## Introduction
The `IKeymanKeyboard` interface describes a keyboard in Keyman Engine
for Windows API. It is a base class and describes both installed
keyboards and keyboard files.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanKeyboard`**
> >
> > > [`IKeymanKeyboardFile`](../IKeymanKeyboardFile)
> > >
> > > > [`IKeymanKeyboardFile2`](../IKeymanKeyboardFile2)
> > >
> > > [`IKeymanKeyboardInstalled`](../IKeymanKeyboardInstalled)
## Properties
[`Bitmap`](Bitmap) <span class="readonly">read only</span>
: Returns the [`&bitmap`](/developer/language/reference/bitmap) icon
from the keyboard file as an `IPicture`.
[`Copyright`](Copyright) <span class="readonly">read only</span>
: Returns the [`&copyright`](/developer/language/reference/copyright)
string from the keyboard file.
[`DefaultBCP47Languages`](DefaultBCP47Languages) <span class="readonly">read only</span>
: Returns the set of default language ids for the keyboard as a
space-separated list of BCP 47 codes. The first code in the list is
the primary language.
[`DefaultHotkey`](DefaultHotkey) <span class="readonly">read only</span>
: Returns the default hotkey for the keyboard.
[`DefaultPrimaryLanguage`](DefaultPrimaryLanguage) <span class="readonly">read only</span>
: Returns the default primary language id for the keyboard.
[`DefaultWindowsLanguages`](DefaultWindowsLanguages) <span class="readonly">read only</span>
: Returns the set of default language ids for the keyboard as a
space-separated list of hexadecimal strings.
[`Encodings`](Encodings) <span class="readonly">read only</span>
: Returns the set of encodings supported by the keyboard layout.
[`Filename`](Filename) <span class="readonly">read only</span>
: Returns the fully-qualified filename of the keyboard file.
[`ID`](ID) <span class="readonly">read only</span>
: Returns the identifier for the keyboard, which is the base name of
the keyboard file without extension.
[`LayoutType`](LayoutType) <span class="readonly">read only</span>
: Returns the layout type of the keyboard as specified by the
[`&mnemoniclayout`](/developer/language/reference/mnemoniclayout)
store.
[`Message`](Message) <span class="readonly">read only</span>
: Returns the [`&message`](/developer/language/reference/message)
string from the keyboard file.
[`Name`](Name) <span class="readonly">read only</span>
: Returns the [`&name`](/developer/language/reference/name) from the
keyboard file.
[`Version`](Version) <span class="readonly">read only</span>
: Returns the
[`&keyboardversion`](/developer/language/reference/keyboardversion)
string from the keyboard file.
## Methods
[`GetCharsUsed()`](GetCharsUsed)
: Returns a string with every Unicode character used or generated by
the keyboard.

View file

@ -0,0 +1,47 @@
---
title: IKeymanKeyboardFile::Install Method
---
## Introduction
The `IKeymanKeyboardFile::Install` method installs the keyboard file
(.kmx) into Keyman Engine for Windows. This includes copying the file
into the Keyman Engine keyboard store, adding registry settings, and
installing the Windows input method. As installing Windows input methods
is an asynchronous process, this method may not be complete when it
returns.
This method adds the keyboard to the default language as specified in
the
[`IKeymanKeyboard::DefaultBCP47Languages`](../IKeymanKeyboard/DefaultBCP47Languages)
property. This method is the same as calling
[`IKeymanKeyboardsInstalled::Install`](../IKeymanKeyboardsInstalled/Install)
and passing the
[`IKeymanKeyboard::Filename`](../IKeymanKeyboard/Filename) property from
this instance.
This method requires elevated privileges.
## Specification
``` clike
void Install(bool Force)
```
## Parameters
`Force`
: If `True`, overwrites an existing keyboard entry.
## See also
[`IKeymanKeyboardsInstalled::Install`](../IKeymanKeyboardsInstalled/Install)
: Installs a keyboard file and input method for default language
[`IKeymanKeyboardsInstalled::Install2`](../IKeymanKeyboardsInstalled2/Install2)
: Installs a keyboard file, optionally with input method for default
language
[`IKeymanKeyboardFile2::Install2`](../IKeymanKeyboardFile2/Install2)
: Installs a keyboard file, optionally with input method for default
language

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboardFile::Languages Property
---
## Introduction
The `IKeymanKeyboardFile::Languages` property returns an
[`IKeymanKeyboardLanguagesFile`](../IKeymanKeyboardLanguagesFile)
reference which lists the BCP 47 languages that are suggested for use
with the keyboard, as extracted from the package metadata.
## Specification
``` clike
readonly IKeymanKeyboardLanguagesFile* Languages
```

View file

@ -0,0 +1,31 @@
---
title: IKeymanKeyboardFile Interface
---
## Introduction
The `IKeymanKeyboardFile` interface describes a keyboard file. The file
will not have been installed but can be any keyboard file on disk.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > [`IKeymanKeyboard`](../IKeymanKeyboard)
> >
> > > **`IKeymanKeyboardFile`**
> > >
> > > > [`IKeymanKeyboardFile2`](../IKeymanKeyboardFile2)
## Properties
[`Languages`](Languages)
: Lists the languages associated with the keyboard, as retrieved from
package metadata.
## Methods
[`Install()`](Install)
: Installs the keyboard file into Keyman Engine for Windows.

View file

@ -0,0 +1,50 @@
---
title: IKeymanKeyboardFile2::Install2 Method
---
## Introduction
The `IKeymanKeyboardFile2::Install2` method installs the keyboard file
(.kmx) into Keyman Engine for Windows. This includes copying the file
into the Keyman Engine keyboard store, adding registry settings, and
optionally installing the Windows input method. As installing Windows
input methods is an asynchronous process, this method may not be
complete when it returns.
This method adds the keyboard to the default language as specified in
the
[`IKeymanKeyboard::DefaultBCP47Languages`](../IKeymanKeyboard/DefaultBCP47Languages)
property. This method is the same as calling
[`IKeymanKeyboardsInstalled::Install`](../IKeymanKeyboardsInstalled/Install)
and passing the
[`IKeymanKeyboard::Filename`](../IKeymanKeyboard/Filename) property from
this instance.
This method requires elevated privileges.
## Specification
``` clike
void Install(bool Force, bool InstallDefaultLanguage)
```
## Parameters
`Force`
: If `True`, overwrites an existing keyboard entry.
`InstallDefaultLanguage`
: If `True`, installs the Windows input method for the default
language.
## See also
[`IKeymanKeyboardsInstalled::Install`](../IKeymanKeyboardsInstalled/Install)
: Installs a keyboard file and input method for default language
[`IKeymanKeyboardsInstalled::Install2`](../IKeymanKeyboardsInstalled2/Install2)
: Installs a keyboard file, optionally with input method for default
language
[`IKeymanKeyboardFile::Install`](../IKeymanKeyboardFile/Install)
: Installs a keyboard file and input method for default language

View file

@ -0,0 +1,30 @@
---
title: IKeymanKeyboardFile2 Interface
---
## Introduction
The `IKeymanKeyboardFile2` interface describes a keyboard file. The file
will not have been installed but can be any keyboard file on disk.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > [`IKeymanKeyboard`](../IKeymanKeyboard)
> >
> > > [`IKeymanKeyboardFile`](../IKeymanKeyboardFile)
> > >
> > > > **`IKeymanKeyboardFile2`**
## Methods
[`Install2()`](Install2)
: Installs the keyboard file into Keyman Engine for Windows, with
option to install default language at same time.
## History
Added in Keyman Engine for Windows 14.0.

View file

@ -0,0 +1,17 @@
---
title: IKeymanKeyboardInstalled::IconFilename Property
---
## Introduction
The `IKeymanKeyboardInstalled::IconFilename` property returns the fully
qualified filename of a Windows .ico file that is generated from the
icon resource contained within the keyboard when the keyboard is
installed. This icon file is used when Keyman creates a Windows input
method associated with the Keyman keyboard layout.
## Specification
``` clike
readonly string IconFilename
```

View file

@ -0,0 +1,30 @@
---
title: IKeymanKeyboardInstalled::InstallVisualKeyboard Method
---
## Introduction
The `IKeymanKeyboardInstalled::InstallVisualKeyboard` method installs a
visual keyboard file (.kvk) and associates it with the keyboard. The
visual keyboard file is copied into the Keyman keyboard store. If a
visual keyboard is already installed for the keyboard, then the new
visual keyboard replaces the old one.
Typically, a keyboard and visual keyboard will be installed together as
part of a package, but this method can be helpful for testing and
development of keyboards.
Changes associated with calling this method are applied immediately;
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
does not need to be called.
A visual keyboard can be uninstalled with
[`IKeymanVisualKeyboard::Uninstall`](../IKeymanVisualKeyboard/Uninstall).
This method requires elevated privileges.
## Specification
``` clike
void InstallVisualKeyboard(string Filename)
```

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboardInstalled::KeymanID Property
---
## Introduction
The `IKeymanKeyboardInstalled::KeymanID` property returns the integer
identifier for the keyboard used internally by Keyman Engine. This
number is generated when Keyman Engine starts and may be changed at any
time.
## Specification
``` clike
readonly long KeymanID
```

View file

@ -0,0 +1,17 @@
---
title: IKeymanKeyboardInstalled::Languages Property
---
## Introduction
The `IKeymanKeyboardInstalled::Languages` property returns an
[`IKeymanKeyboardLanguagesInstalled`](../IKeymanKeyboardLanguagesInstalled)
reference which lists the Windows languages with which the keyboard is
currently associated, as well as any suggested languages for the
keyboard that are not currently installed.
## Specification
``` clike
readonly IKeymanKeyboardLanguagesInstalled* Languages
```

View file

@ -0,0 +1,17 @@
---
title: IKeymanKeyboardInstalled::Loaded Property
---
## Introduction
The `IKeymanKeyboardInstalled::Loaded` property controls whether or not
the keyboard is currently available for use and visible to the user in
the keyboard picker. When this property is changed,
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
must be called to apply the setting to Keyman Engine.
## Specification
``` clike
bool Loaded
```

View file

@ -0,0 +1,18 @@
---
title: IKeymanKeyboardInstalled::Options Property
---
## Introduction
The `IKeymanKeyboardInstalled::Options` property returns an
[`IKeymanKeyboardOptions`](../IKeymanKeyboardOptions) reference which
lists the user-configurable options for the keyboard layout. Changes to
this collection will be applied after
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
is called.
## Specification
``` clike
readonly IKeymanKeyboardOptions* Options
```

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboardInstalled::OwnerPackage Property
---
## Introduction
The `IKeymanKeyboardInstalled::OwnerPackage` property returns an
[`IKeymanPackageInstalled`](../IKeymanPackageInstalled) reference for
the package which contained this keyboard when it was installed. If the
keyboard was installed standalone, then `OwnerPackage` returns `null`.
## Specification
``` clike
readonly IKeymanPackageInstalled* OwnerPackage
```

View file

@ -0,0 +1,26 @@
---
title: IKeymanKeyboardInstalled::Uninstall Method
---
## Introduction
The `IKeymanKeyboardInstalled::Uninstall` method uninstalls the keyboard
file (.kmx) and related artefacts from Keyman Engine for Windows. This
includes deleting the files from the Keyman Engine keyboard store,
removing registry settings, and removing Windows input methods.
This method removes the keyboard layout from all languages it is
associated with.
Changes associated with calling this method are applied immediately;
[`IKeymanKeyboardsInstalled::Apply`](../IKeymanKeyboardsInstalled/Apply)
does not need to be called. However, changes to the Windows input
methods are applied asynchronously.
This method requires elevated privileges.
## Specification
``` clike
void Uninstall(bool void)
```

View file

@ -0,0 +1,19 @@
---
title: IKeymanKeyboardInstalled::VisualKeyboard Property
---
## Introduction
The `IKeymanKeyboardInstalled::VisualKeyboard` property returns an
[`IKeymanVisualKeyboard`](../IKeymanVisualKeyboard) reference for the
visual keyboard associated with this keyboard. If no visual keyboard is
installed for this keyboard, then `VisualKeyboard` returns `null`.
A visual keyboard can be installed with
[`InstallVisualKeyboard()`](InstallVisualKeyboard).
## Specification
``` clike
readonly IKeymanVisualKeyboard* VisualKeyboard
```

View file

@ -0,0 +1,79 @@
---
title: IKeymanKeyboardInstalled Interface
---
## Introduction
The `IKeymanKeyboardInstalled` interface describes a keyboard file that
has been installed and allows modification of [keyboard option
values](Options) for the keyboard file.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > [`IKeymanKeyboard`](../IKeymanKeyboard)
> >
> > > **`IKeymanKeyboardInstalled`**
## Properties
[`IconFilename`](IconFilename) <span class="readonly">read only</span>
: Returns the string filename of the icon file associated with the
keyboard. When the keyboard is installed the icon file is generated
from the icon resource contained within the keyboard.
<!-- -->
[`KeymanID`](KeymanID) <span class="readonly">read only</span>
: Returns the integer identifier for the keyboard used internally by
Keyman Engine.
<!-- -->
[`Languages`](Languages) <span class="readonly">read only</span>
: Returns an
[`IKeymanKeyboardLanguagesInstalled`](../IKeymanKeyboardLanguagesInstalled)
reference which lists the Windows languages with which the keyboard
is currently associated.
<!-- -->
[`Loaded`](Loaded)
: Determines whether the keyboard layout is selectable by the user.
When unloaded, the keyboard is removed from the user's keyboard
picker.
<!-- -->
[`Options`](Options) <span class="readonly">read only</span>
: Returns an [`IKeymanKeyboardOptions`](../IKeymanKeyboardOptions)
reference which lists the user-configurable options for the keyboard
layout.
<!-- -->
[`OwnerPackage`](OwnerPackage) <span class="readonly">read only</span>
: If the keyboard was installed as part of a package, returns the
[`IKeymanPackageInstalled`](../IKeymanPackageInstalled) reference
for the package; otherwise returns `null`.
<!-- -->
[`VisualKeyboard`](VisualKeyboard) <span class="readonly">read only</span>
: If an associated visual keyboard is installed, returns the
[`IKeymanVisualKeyboard`](../IKeymanVisualKeyboard) reference for
the visual keyboard; otherwise returns `null`.
## Methods
[`InstallVisualKeyboard()`](InstallVisualKeyboard)
: Installs a visual keyboard file into Keyman Engine for Windows and
associates it with the keyboard.
<!-- -->
[`Uninstall()`](Uninstall)
: Uninstalls the keyboard from Keyman Engine for Windows.

View file

@ -0,0 +1,14 @@
---
title: IKeymanKeyboardLanguage::BCP47Code Property
---
## Introduction
The `IKeymanKeyboardLanguage::BCP47Code` property returns the BCP 47
code for the language.
## Specification
``` clike
readonly string BCP47Code
```

View file

@ -0,0 +1,15 @@
---
title: IKeymanKeyboardLanguage::LangID Property
---
## Introduction
The `IKeymanKeyboardLanguage::LangID` property returns a Windows LANGID
for the Windows language. If the language does not have a LangID
defined, then this returns `0`.
## Specification
``` clike
readonly long LangID
```

View file

@ -0,0 +1,15 @@
---
title: IKeymanKeyboardLanguage::Name Property
---
## Introduction
The `IKeymanKeyboardLanguage::Name` property returns the name of the
language, usually supplied in the metadata in the package the keyboard
is a part of.
## Specification
``` clike
readonly BSTR Name
```

View file

@ -0,0 +1,15 @@
---
title: IKeymanKeyboardLanguage::OwnerKeyboard Property
---
## Introduction
The `IKeymanKeyboardLanguage::OwnerKeyboard` property returns
[`IKeymanKeyboard`](../IKeymanKeyboard) reference for the keyboard that
this interface belongs to.
## Specification
``` clike
readonly IKeymanKeyboard* OwnerKeyboard
```

View file

@ -0,0 +1,40 @@
---
title: IKeymanKeyboardLanguage Interface
---
## Introduction
The `IKeymanKeyboardLanguage` interface lists a language associated with
a keyboard in Keyman Engine for Windows API.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > **`IKeymanKeyboardLanguage`**
> >
> > > [`IKeymanKeyboardLanguageInstalled`](../IKeymanKeyboardLanguageInstalled)
> > >
> > > > [`IKeymanKeyboardLanguageInstalled2`](../IKeymanKeyboardLanguageInstalled2)
## Properties
[`BCP47Code`](BCP47Code) <span class="readonly">read only</span>
: Returns a BCP 47 code for the Windows language.
<!-- -->
[`LangID`](LangID) <span class="readonly">read only</span>
: Returns a Windows LANGID for the Windows language.
<!-- -->
[`OwnerKeyboard`](OwnerKeyboard) <span class="readonly">read only</span>
: Returns the keyboard associated with the language.
<!-- -->
[`Name`](Name) <span class="readonly">read only</span>
: Returns the language name for the language.

View file

@ -0,0 +1,24 @@
---
title: IKeymanKeyboardLanguageInstalled::Install Method
---
## Introduction
**Deprecated:** this function is deprecated as of Keyman 14.0. Instead,
use the functions in
[`IKeymanKeyboardLanguageInstalled2`](../IKeymanKeyboardLanguageInstalled2).
The `IKeymanKeyboardLanguageInstalled::Install` method adds this
keyboard layout to the Windows language, and if it is the first input
method for the language, adds the language as well. This is the best way
to install a language that is a suggested language for the keyboard.
This method is asynchronous.
This method requires elevated privileges.
## Specification
``` clike
void Install(void)
```

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboardLanguageInstalled::IsInstalled Property
---
## Introduction
The `IKeymanKeyboardLanguageInstalled::IsInstalled` property returns
`TRUE` if the keyboard is currently associated with this language in
Windows. If the language is not currently installed, then it is a
suggested language for the keyboard, per the package metadata.
## Specification
``` clike
readonly BOOL IsInstalled
```

View file

@ -0,0 +1,15 @@
---
title: IKeymanKeyboardLanguageInstalled::OwnerKeyboard Property
---
## Introduction
The `IKeymanKeyboardLanguageInstalled::OwnerKeyboard` property returns
[`IKeymanKeyboardInstalled`](../IKeymanKeyboardInstalled) reference for
the keyboard that this language profile belongs to.
## Specification
``` clike
readonly IKeymanKeyboardInstalled* OwnerKeyboard
```

View file

@ -0,0 +1,16 @@
---
title: IKeymanKeyboardLanguageInstalled::ProfileGUID Property
---
## Introduction
The `IKeymanKeyboardLanguageInstalled::ProfileGUID` property returns the
profile GUID associated with the Text Services Framework (TSF) Text
Input Processor (TIP) installed for this keyboard, for this language. If
the language is not currently installed, then returns `GUID_NULL`.
## Specification
``` clike
readonly GUID ProfileGUID
```

View file

@ -0,0 +1,19 @@
---
title: IKeymanKeyboardLanguageInstalled::Uninstall Method
---
## Introduction
The `IKeymanKeyboardLanguageInstalled::Uninstall` method removes this
keyboard layout from the Windows language, and if it is the last input
method for the language, removes the language as well.
This method is asynchronous.
This method requires elevated privileges.
## Specification
``` clike
void Uninstall(void)
```

View file

@ -0,0 +1,48 @@
---
title: IKeymanKeyboardLanguageInstalled Interface
---
## Introduction
The `IKeymanKeyboardLanguageInstalled` interface lists a Windows
language associated with a keyboard in Keyman Engine for Windows API, or
a suggested language available for installation for the keyboard.
## Interface Hierarchy
`IDispatch`
> [`IKeymanObject`](../IKeymanObject)
>
> > [`IKeymanKeyboardLanguage`](../IKeymanKeyboardLanguage)
> >
> > > **`IKeymanKeyboardLanguageInstalled`**
> > >
> > > > [`IKeymanKeyboardLanguageInstalled2`](../IKeymanKeyboardLanguageInstalled2)
## Properties
[`OwnerKeyboard`](OwnerKeyboard) <span class="readonly">read only</span>
: Returns the keyboard associated with the language.
[`ProfileGUID`](ProfileGUID) <span class="readonly">read only</span>
: Returns the profile GUID associated with the Text Services Framework
(TSF) Text Input Processor (TIP) installed for this keyboard, for
this language, or `GUID_NULL` if the language is not currently
installed.
[`IsInstalled`](IsInstalled) <span class="readonly">read only</span>
: Returns `TRUE` if the language is currently installed for this
keyboard.
## Methods
[`Install()`](Install)
: Deprecated in 14.0. If not already installed, adds this keyboard
layout to the Windows language, and if necessary installs the
Windows language as well.
[`Uninstall()`](Uninstall)
: Removes this keyboard layout from the Windows language, and if it is
the last input method for the language, removes the language as
well.

View file

@ -0,0 +1,59 @@
---
title: IKeymanKeyboardLanguageInstalled2::FindInstallationLangID Method
---
## Introduction
The `IKeymanKeyboardLanguageInstalled2::FindInstallationLangID` method
finds a LANGID for the language, which can then be passed into
[`IKeymanKeyboardLanguageInstalled2::RegisterTip`](RegisterTip) and
[`IKeymanKeyboardLanguageInstalled2::InstallTip`](InstallTip) to
complete registration.
If the BCP 47 tag does not have a corresponding system LANGID, then
Windows will allocate one of four transient LANGIDs to the tag. These
LANGIDs can differ between systems. In this situation, Windows installs
a temporary placeholder system keyboard which Keyman then replaces as it
completes the installation process.
## Specification
``` clike
bool FindInstallationLangID(long* LangID, string* TemporaryKeyboardID, bool *RegistrationRequired, tagKeymanInstallFlags Flags);
```
## Parameters
`LangID`
: On success, this is filled with the corresponding `LANGID`.
`TemporaryKeyboardID`
: On success, and if the `kifInstallTransientLanguage` flag is
specified, this may contain a string which should be passed to
`InstallTip` to be replaced with the Keyman keyboard. Internally,
this string conforms to the Windows API `InstallLayoutorTip` format.
`RegistrationRequired`
: If `True`, a call to `RegisterTip` will be required to complete
installation of this language, as Keyman is not currently registered
for this language with the Text Services Framework.
`Flags`
: Can be `0` or `kifInstallTransientLanguage`. If
`kifInstallTransientLanguage` is specified, then Keyman will install
a transient language (Windows 8 or later) for BCP 47 tags that do
not have a corresponding system LANGID.
## Returns
Returns `True` if a corresponding `LANGID` was found.
## See also
[`InstallTip()`](InstallTip)
: Installs a registered language profile (persists over reboot) for
the current user.
[`RegisterTip()`](RegisterTip)
: Registers a language profile in Text Services Framework for this
language (requires elevation).

View file

@ -0,0 +1,38 @@
---
title: IKeymanKeyboardLanguageInstalled2::InstallTip Method
---
## Introduction
The `IKeymanKeyboardLanguageInstalled2::InstallTip` installs a
registered Keyman Text Services Framework Text Input Processor (TIP)
input method for the specified language for the current user. The input
method is installed persistently over reboots.
## Specification
``` clike
void InstallTip(long LangID, string TemporaryKeyboardID);
```
## Parameters
`LangID`
: The `LANGID` to install, which can be found with
[`FindInstallationLangID`](FindInstallationLangID).
`TemporaryKeyboardID`
: This value should be passed unmodified from the value returned from
`FindInstallationLangID`. It allows Keyman to replace a temporary
Windows keyboard with the desired Keyman keyboard, for transient
LANGIDs.
## See also
[`FindInstallationLangID()`](FindInstallationLangID)
: Finds a Windows LANGID for this language's BCP 47 code, including
optionally installing a transient language if required.
[`RegisterTip()`](RegisterTip)
: Registers a language profile in Text Services Framework for this
language (requires elevation).

View file

@ -0,0 +1,26 @@
---
title: IKeymanKeyboardLanguageInstalled2::IsRegistered Method
---
## Introduction
The `IKeymanKeyboardLanguageInstalled2::IsRegistered` returns `True` if
a Keyman Text Services Framework Text Input Processor (TIP) input method
is registered for the specified language.
## Specification
``` clike
bool IsRegisterTip();
```
## Returns
Returns `True` if the Keyman TIP is registered for this keyboard
language.
## See also
[`RegisterTip()`](RegisterTip)
: Registers a language profile in Text Services Framework for this
language (requires elevation).

Some files were not shown because too many files have changed in this diff Show more