-
-
Notifications
You must be signed in to change notification settings - Fork 135
Keyman Keyboard Installation on Windows
Information taken from #3509.
Install is \multiple steps, some at user privilege, and some at machine privilege (elevation):
Find the target language ID for a given BCP 47 code, including installation, if necessary of a transient language ID and a temporary Windows keyboard to 'hold' that transient language ID. Elevate and register the keyboard TIP for the target language ID, if not already registered. Back in user context, install the now-registered TIP for the current user. At keyboard install time, Keyman registers the associated TIP for each language provided in the .kmp/.kmx metadata, as well as for the four transient language IDs. This means that elevation is not required for normal language installation scenarios after the initial Keyman keyboard install.
Note: Keyman uses the term "Install" to describe adding a keyboard into the system (as you would 'install' an app). This requires elevation. Windows uses the term "Register" for its part of this process, where an input method is added to the system (but not made available for use). "Install" is used by Windows to describe making a registered keyboard available for a user. We may have mixed up the terms inon PRs and code comments over the years as we build our understanding.
The core work is in two units:
Keyman.System.Process.KPInstallKeyboardLanguage.pas Keyman.System.Process.KPUninstallKeyboardLanguage.pas These two units are replacements for kpinstallkeyboardlanguageprofile.pas and kpuninstallkeyboardlanguageprofile.pas. They diverged far enough to make it worth rewriting them completely.