From 5e89946c004c0e1f6b83a2109d26d2e06bddd39e Mon Sep 17 00:00:00 2001 From: rc-swag <58423624+rc-swag@users.noreply.github.com> Date: Thu, 3 Sep 2026 17:29:51 +1000 Subject: [PATCH] chore(windows): Revert "fix(windows): strtoint for command line basekeyboardid" This reverts commit 155b8e15edab819bde11b564423a950366a05812. --- windows/src/desktop/kmshell/main/initprog.pas | 2 +- windows/src/engine/kmcomapi/keymanapi_TLB.pas | 251 ++++-------------- windows/src/engine/kmcomapi/kmcomapi.ridl | 108 ++++---- 3 files changed, 109 insertions(+), 252 deletions(-) diff --git a/windows/src/desktop/kmshell/main/initprog.pas b/windows/src/desktop/kmshell/main/initprog.pas index 6457542bca..3143d72828 100644 --- a/windows/src/desktop/kmshell/main/initprog.pas +++ b/windows/src/desktop/kmshell/main/initprog.pas @@ -264,7 +264,7 @@ begin else if s = '-bd' then FMode := fmBackgroundDownload else if s = '-an' then FMode := fmApplyInstallNow else if s = '-basekeyboard' then FMode := fmBaseKeyboard // I4169 - else if s = 'bkd' then begin Inc(i); FBaseKeyboard := StrToInt('$' + ParamStr(i)); end + else if s = 'bkd' then begin Inc(i); FBaseKeyboard := ParamStr(i); end else if s = '-mcompilekbds' then begin FMode := fmMCompileKbds; diff --git a/windows/src/engine/kmcomapi/keymanapi_TLB.pas b/windows/src/engine/kmcomapi/keymanapi_TLB.pas index 3c436dc5d9..7246c9173f 100644 --- a/windows/src/engine/kmcomapi/keymanapi_TLB.pas +++ b/windows/src/engine/kmcomapi/keymanapi_TLB.pas @@ -12,7 +12,7 @@ unit keymanapi_TLB; // ************************************************************************ // // $Rev: 52393 $ -// File generated on 31/08/2026 5:28:13 PM from Type Library described below. +// File generated on 16/09/2021 6:54:44 PM from Type Library described below. // ************************************************************************ // // Type Lib: C:\Projects\keyman\app\windows\src\engine\kmcomapi\kmcomapi (1) @@ -87,16 +87,11 @@ const IID_IKeymanKeyboardLanguagesInstalled: TGUID = '{7DC22BC0-85BB-45C0-8EDB-A2F4BD1D500B}'; IID_IKeymanKeyboardLanguagesFile: TGUID = '{5F90BCDA-F1C1-433A-8FD0-B498299D3C30}'; IID_IKeymanKeyboardsInstalled2: TGUID = '{EA57C94F-C140-485E-941A-3F1D5A229024}'; - IID_IKeymanKeyboardInstalled2: TGUID = '{3086C85C-932A-4726-BF76-2D74DD133AC9}'; IID_IKeymanPackagesInstalled2: TGUID = '{F23B9848-2AEF-4A2B-BC3A-292E3A00D691}'; IID_IKeymanKeyboardFile2: TGUID = '{EDE4326B-51F4-42D5-8251-B20B71993EC8}'; IID_IKeymanPackageFile2: TGUID = '{9B43B6BC-C622-47EF-915E-6780CF53BAAA}'; IID_IKeymanKeyboardLanguageInstalled2: TGUID = '{414C26E6-BFAC-4A70-9EA1-E525BA9BBA7E}'; IID_IKeymanKeyboardLanguagesInstalled2: TGUID = '{628FF2E6-B490-462E-8FC7-7AE53B9D392C}'; - IID_IKeymanKeyboardFile3: TGUID = '{8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4}'; - IID_IKeymanPackageFile3: TGUID = '{C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7}'; - IID_IKeymanKeyboardsInstalled3: TGUID = '{B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641}'; - IID_IKeymanPackagesInstalled3: TGUID = '{3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458}'; CLASS_Keyman: TGUID = '{CF46549D-4D2D-4679-A2E1-23A815F172F8}'; IID_IKeymanDefaultLanguage: TGUID = '{77BAB934-B7DF-4304-AFA6-B8F6BEC16516}'; @@ -253,8 +248,6 @@ type IKeymanKeyboardLanguagesFileDisp = dispinterface; IKeymanKeyboardsInstalled2 = interface; IKeymanKeyboardsInstalled2Disp = dispinterface; - IKeymanKeyboardInstalled2 = interface; - IKeymanKeyboardInstalled2Disp = dispinterface; IKeymanPackagesInstalled2 = interface; IKeymanPackagesInstalled2Disp = dispinterface; IKeymanKeyboardFile2 = interface; @@ -265,14 +258,6 @@ type IKeymanKeyboardLanguageInstalled2Disp = dispinterface; IKeymanKeyboardLanguagesInstalled2 = interface; IKeymanKeyboardLanguagesInstalled2Disp = dispinterface; - IKeymanKeyboardFile3 = interface; - IKeymanKeyboardFile3Disp = dispinterface; - IKeymanPackageFile3 = interface; - IKeymanPackageFile3Disp = dispinterface; - IKeymanKeyboardsInstalled3 = interface; - IKeymanKeyboardsInstalled3Disp = dispinterface; - IKeymanPackagesInstalled3 = interface; - IKeymanPackagesInstalled3Disp = dispinterface; IKeymanDefaultLanguage = interface; IKeymanDefaultLanguageDisp = dispinterface; @@ -1584,6 +1569,27 @@ type procedure RefreshInstalledKeyboards; safecall; end; +// *********************************************************************// +// Interface: IKeymanKeyboardsInstalled3 +// Flags: (4416) Dual OleAutomation Dispatchable +// GUID: {B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641} +// *********************************************************************// + IKeymanKeyboardsInstalled3 = interface(IKeymanKeyboardsInstalled) + ['{B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641}'] + function Install3(const Filename: WideString; Force: WordBool; BasePackageID: Integer): IKeymanKeyboardInstalled; safecall; + procedure RefreshInstalledKeyboards; safecall; + end; + +// *********************************************************************// +// Interface: IKeymanKeyboardInstalled2 +// Flags: (4416) Dual OleAutomation Dispatchable +// GUID: {3086C85C-932A-4726-BF76-2D74DD133AC9} +// *********************************************************************// + IKeymanKeyboardInstalled2 = interface(IKeymanKeyboardInstalled) + ['{3086C85C-932A-4726-BF76-2D74DD133AC9}'] + procedure MCompileForBaseKeyboard(KLID: Integer); safecall; + end; + // *********************************************************************// // DispIntf: IKeymanKeyboardsInstalled2Disp // Flags: (4416) Dual OleAutomation Dispatchable @@ -1605,51 +1611,6 @@ type out References: OleVariant): WideString; dispid 401; end; -// *********************************************************************// -// Interface: IKeymanKeyboardInstalled2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3086C85C-932A-4726-BF76-2D74DD133AC9} -// *********************************************************************// - IKeymanKeyboardInstalled2 = interface(IKeymanKeyboardInstalled) - ['{3086C85C-932A-4726-BF76-2D74DD133AC9}'] - procedure MCompileForBaseKeyboard(KLID: Integer); safecall; - end; - -// *********************************************************************// -// DispIntf: IKeymanKeyboardInstalled2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3086C85C-932A-4726-BF76-2D74DD133AC9} -// *********************************************************************// - IKeymanKeyboardInstalled2Disp = dispinterface - ['{3086C85C-932A-4726-BF76-2D74DD133AC9}'] - procedure MCompileForBaseKeyboard(KLID: Integer); dispid 288; - property IconFilename: WideString readonly dispid 257; - procedure InstallVisualKeyboard(const Filename: WideString); dispid 258; - property KeymanID: Integer readonly dispid 259; - property Languages: IKeymanKeyboardLanguagesInstalled readonly dispid 260; - property Loaded: WordBool dispid 261; - property Options: IKeymanKeyboardOptions readonly dispid 262; - property OwnerPackage: IKeymanPackageInstalled readonly dispid 263; - property VisualKeyboard: IKeymanVisualKeyboard readonly dispid 264; - procedure Uninstall; dispid 265; - property Bitmap: IPicture readonly dispid 1; - property Copyright: WideString readonly dispid 2; - property DefaultBCP47Languages: WideString readonly dispid 3; - property DefaultPrimaryLanguage: Integer readonly dispid 4; - property DefaultWindowsLanguages: WideString readonly dispid 5; - property DefaultHotkey: IKeymanHotkey readonly dispid 6; - property Encodings: KeymanKeyboardEncodings readonly dispid 7; - property Filename: WideString readonly dispid 8; - function GetCharsUsed: WideString; dispid 9; - property ID: WideString readonly dispid 10; - property LayoutType: KeymanKeyboardLayoutType readonly dispid 11; - property Message: WideString readonly dispid 12; - property Name: WideString readonly dispid 13; - property Version: WideString readonly dispid 14; - function SerializeXML(Flags: tagKeymanSerializeFlags; const ImagePath: WideString; - out References: OleVariant): WideString; dispid 401; - end; - // *********************************************************************// // Interface: IKeymanPackagesInstalled2 // Flags: (4416) Dual OleAutomation Dispatchable @@ -1660,6 +1621,16 @@ type function Install2(const Filename: WideString; Force: WordBool): IKeymanPackageInstalled; safecall; end; +// *********************************************************************// +// Interface: IKeymanPackagesInstalled3 +// Flags: (4416) Dual OleAutomation Dispatchable +// GUID: {3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458} +// *********************************************************************// + IKeymanPackagesInstalled3 = interface(IKeymanPackagesInstalled) + ['{3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458}'] + function Install3(const Filename: WideString; Force: WordBool; BasePackageID: Integer): IKeymanPackageInstalled; safecall; + end; + // *********************************************************************// // DispIntf: IKeymanPackagesInstalled2Disp // Flags: (4416) Dual OleAutomation Dispatchable @@ -1689,6 +1660,16 @@ type function Install2(Force: WordBool): IKeymanKeyboardInstalled; safecall; end; +// *********************************************************************// +// Interface: IKeymanKeyboardFile3 +// Flags: (4416) Dual OleAutomation Dispatchable +// GUID: {EDE4326B-51F4-42D5-8251-B20B71993EC8} +// *********************************************************************// + IKeymanKeyboardFile3 = interface(IKeymanKeyboardFile) + ['{8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4}'] + function Install3(Force: WordBool; BaseKeyboardID: Integer): IKeymanKeyboardInstalled; safecall; + end; + // *********************************************************************// // DispIntf: IKeymanKeyboardFile2Disp // Flags: (4416) Dual OleAutomation Dispatchable @@ -1727,6 +1708,17 @@ type function Install2(Force: WordBool): IKeymanPackageInstalled; safecall; end; +// *********************************************************************// +// Interface: IKeymanPackageFile3 +// Flags: (4416) Dual OleAutomation Dispatchable +// GUID: {C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7} +// *********************************************************************// + IKeymanPackageFile3 = interface(IKeymanPackageFile) + ['{C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7}'] + function Install3(Force: WordBool; BaseKeyboardID: Integer): IKeymanPackageInstalled; safecall; + end; + + // *********************************************************************// // DispIntf: IKeymanPackageFile2Disp // Flags: (4416) Dual OleAutomation Dispatchable @@ -1828,143 +1820,6 @@ type out References: OleVariant): WideString; dispid 401; end; -// *********************************************************************// -// Interface: IKeymanKeyboardFile3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4} -// *********************************************************************// - IKeymanKeyboardFile3 = interface(IKeymanKeyboardFile) - ['{8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4}'] - function Install3(Force: WordBool; BaseKeyboardID: Integer): IKeymanKeyboardInstalled; safecall; - end; - -// *********************************************************************// -// DispIntf: IKeymanKeyboardFile3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4} -// *********************************************************************// - IKeymanKeyboardFile3Disp = dispinterface - ['{8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4}'] - function Install3(Force: WordBool; BaseKeyboardID: Integer): IKeymanKeyboardInstalled; dispid 289; - procedure Install(Force: WordBool); dispid 256; - property Languages: IKeymanKeyboardLanguagesFile readonly dispid 402; - property Bitmap: IPicture readonly dispid 1; - property Copyright: WideString readonly dispid 2; - property DefaultBCP47Languages: WideString readonly dispid 3; - property DefaultPrimaryLanguage: Integer readonly dispid 4; - property DefaultWindowsLanguages: WideString readonly dispid 5; - property DefaultHotkey: IKeymanHotkey readonly dispid 6; - property Encodings: KeymanKeyboardEncodings readonly dispid 7; - property Filename: WideString readonly dispid 8; - function GetCharsUsed: WideString; dispid 9; - property ID: WideString readonly dispid 10; - property LayoutType: KeymanKeyboardLayoutType readonly dispid 11; - property Message: WideString readonly dispid 12; - property Name: WideString readonly dispid 13; - property Version: WideString readonly dispid 14; - function SerializeXML(Flags: tagKeymanSerializeFlags; const ImagePath: WideString; - out References: OleVariant): WideString; dispid 401; - end; - -// *********************************************************************// -// Interface: IKeymanPackageFile3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7} -// *********************************************************************// - IKeymanPackageFile3 = interface(IKeymanPackageFile) - ['{C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7}'] - function Install3(Force: WordBool; BaseKeyboardID: Integer): IKeymanPackageFile; safecall; - end; - -// *********************************************************************// -// DispIntf: IKeymanPackageFile3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7} -// *********************************************************************// - IKeymanPackageFile3Disp = dispinterface - ['{C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7}'] - function Install3(Force: WordBool; BaseKeyboardID: Integer): IKeymanPackageFile; dispid 292; - procedure Install(Force: WordBool); dispid 256; - property Author: WideString readonly dispid 1; - property AuthorEmail: WideString readonly dispid 2; - property Copyright: WideString readonly dispid 3; - property Filename: WideString readonly dispid 4; - property Files: IKeymanPackageContentFiles readonly dispid 5; - property Fonts: IKeymanPackageContentFonts readonly dispid 6; - property Graphic: IPicture readonly dispid 7; - property GraphicFile: IKeymanPackageContentFile readonly dispid 8; - property ID: WideString readonly dispid 9; - property KeyboardOptionsFile: IKeymanPackageContentFile readonly dispid 10; - property Keyboards: IKeymanPackageContentKeyboards readonly dispid 11; - property Name: WideString readonly dispid 12; - property ReadmeFile: IKeymanPackageContentFile readonly dispid 13; - property UsageFile: IKeymanPackageContentFile readonly dispid 14; - property Version: WideString readonly dispid 15; - property WelcomeFile: IKeymanPackageContentFile readonly dispid 16; - property Website: WideString readonly dispid 17; - function SerializeXML(Flags: tagKeymanSerializeFlags; const ImagePath: WideString; - out References: OleVariant): WideString; dispid 401; - end; - -// *********************************************************************// -// Interface: IKeymanKeyboardsInstalled3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641} -// *********************************************************************// - IKeymanKeyboardsInstalled3 = interface(IKeymanKeyboardsInstalled) - ['{B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641}'] - function Install3(const Filename: WideString; Force: WordBool; BaseKeyboardID: Integer): IKeymanKeyboardInstalled; safecall; - end; - -// *********************************************************************// -// DispIntf: IKeymanKeyboardsInstalled3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641} -// *********************************************************************// - IKeymanKeyboardsInstalled3Disp = dispinterface - ['{B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641}'] - function Install3(const Filename: WideString; Force: WordBool; BaseKeyboardID: Integer): IKeymanKeyboardInstalled; dispid 290; - property Items[Index: OleVariant]: IKeymanKeyboardInstalled readonly dispid 0; default; - function GetKeyboardFromFile(const Filename: WideString): IKeymanKeyboardFile; dispid 16; - procedure Install(const Filename: WideString; Force: WordBool); dispid 17; - procedure Apply; dispid 18; - function IndexOf(const ID: WideString): Integer; dispid 5; - property Count: Integer readonly dispid 1; - property _NewEnum: IUnknown readonly dispid -4; - procedure Refresh; dispid 2; - function SerializeXML(Flags: tagKeymanSerializeFlags; const ImagePath: WideString; - out References: OleVariant): WideString; dispid 401; - end; - -// *********************************************************************// -// Interface: IKeymanPackagesInstalled3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458} -// *********************************************************************// - IKeymanPackagesInstalled3 = interface(IKeymanPackagesInstalled) - ['{3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458}'] - function Install3(const Filename: WideString; Force: WordBool; BaseKeyboardID: Integer): IKeymanPackageInstalled; safecall; - end; - -// *********************************************************************// -// DispIntf: IKeymanPackagesInstalled3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458} -// *********************************************************************// - IKeymanPackagesInstalled3Disp = dispinterface - ['{3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458}'] - function Install3(const Filename: WideString; Force: WordBool; BaseKeyboardID: Integer): IKeymanPackageInstalled; dispid 291; - property Items[Index: OleVariant]: IKeymanPackageInstalled readonly dispid 0; default; - function GetPackageFromFile(const Filename: WideString): IKeymanPackageFile; dispid 16; - procedure Install(const Filename: WideString; Force: WordBool); dispid 17; - function IndexOf(const ID: WideString): Integer; dispid 18; - property Count: Integer readonly dispid 1; - property _NewEnum: IUnknown readonly dispid -4; - procedure Refresh; dispid 2; - function SerializeXML(Flags: tagKeymanSerializeFlags; const ImagePath: WideString; - out References: OleVariant): WideString; dispid 401; - end; - // *********************************************************************// // Interface: IKeymanDefaultLanguage // Flags: (4416) Dual OleAutomation Dispatchable diff --git a/windows/src/engine/kmcomapi/kmcomapi.ridl b/windows/src/engine/kmcomapi/kmcomapi.ridl index ecfff3d707..91f49822b5 100644 --- a/windows/src/engine/kmcomapi/kmcomapi.ridl +++ b/windows/src/engine/kmcomapi/kmcomapi.ridl @@ -6,7 +6,7 @@ // However, when applying changes via the Editor this file will be regenerated // and comments or formatting changes will be lost. // ************************************************************************ // -// File generated on 31/08/2026 5:28:15 PM (- $Rev: 12980 $, 11059984). +// File generated on 16/09/2021 6:54:45 PM (- $Rev: 12980 $, 32940875). [ uuid(F16E2A9A-DA46-4EA3-BFF3-BA46B480C961), @@ -980,6 +980,60 @@ library keymanapi HRESULT _stdcall Install2([in] VARIANT_BOOL Force, [out, retval] IKeymanKeyboardInstalled** KeyboardResult); }; + [ + uuid(8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4), + version(19.0), + helpstring("http://help.keyman.com/developer/engine/desktop/19.0/api/IKeymanKeyboardFile3"), + dual, + oleautomation + ] + interface IKeymanKeyboardFile3: IKeymanKeyboardFile + { + [id(0x00000121)] + HRESULT _stdcall Install3([in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanKeyboardInstalled** KeyboardResult); + }; + + [ + uuid(C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7), + version(19.0), + helpstring("http://help.keyman.com/developer/engine/desktop/19.0/api/IKeymanPackageFile3"), + dual, + oleautomation + ] + + interface IKeymanPackageFile3: IKeymanPackageFile + { + [id(0x00000124)] + HRESULT _stdcall Install3([in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanPackageFile** Package); + }; + + + [ + uuid(B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641), + version(19.0), + helpstring("https://help.keyman.com/developer/engine/windows/19.0/api/IKeymanKeyboardInstalled2\3"), + dual, + oleautomation + ] + interface IKeymanKeyboardsInstalled3: IKeymanKeyboardsInstalled + { + [id(0x00000122)] + HRESULT _stdcall Install3([in] BSTR Filename, [in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanKeyboardInstalled** KeyboardResult); + }; + + [ + uuid(3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458), + version(19.0), + helpstring("http://help.keyman.com/developer/engine/desktop/19.0/api/IKeymanPackagesInstalled3"), + dual, + oleautomation + ] + interface IKeymanPackagesInstalled3: IKeymanPackagesInstalled + { + [id(0x00000123)] + HRESULT _stdcall Install3([in] BSTR Filename, [in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanPackageInstalled** PackageResult); + }; + [ uuid(9B43B6BC-C622-47EF-915E-6780CF53BAAA), version(14.0), @@ -1025,58 +1079,6 @@ library keymanapi HRESULT _stdcall Add([in] BSTR BCP47Tag, [out, retval] IKeymanKeyboardLanguageInstalled** Result); }; - [ - uuid(8F4B2D91-6C37-4A05-BE82-1D9F7C53A6E4), - version(19.0), - helpstring("http://help.keyman.com/developer/engine/desktop/19.0/api/IKeymanKeyboardFile3"), - dual, - oleautomation - ] - interface IKeymanKeyboardFile3: IKeymanKeyboardFile - { - [id(0x00000121)] - HRESULT _stdcall Install3([in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanKeyboardInstalled** KeyboardResult); - }; - - [ - uuid(C27A6E4B-9D13-47F8-A052-6B8E31D4F9C7), - version(19.0), - helpstring("http://help.keyman.com/developer/engine/desktop/19.0/api/IKeymanPackageFile3"), - dual, - oleautomation - ] - interface IKeymanPackageFile3: IKeymanPackageFile - { - [id(0x00000124)] - HRESULT _stdcall Install3([in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanPackageFile** Package); - }; - - [ - uuid(B7D3A8F1-6C42-4E95-AB17-93F0C2D8E641), - version(19.0), - helpstring("https://help.keyman.com/developer/engine/windows/19.0/api/IKeymanKeyboardInstalled2\x03"), - dual, - oleautomation - ] - interface IKeymanKeyboardsInstalled3: IKeymanKeyboardsInstalled - { - [id(0x00000122)] - HRESULT _stdcall Install3([in] BSTR Filename, [in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanKeyboardInstalled** KeyboardResult); - }; - - [ - uuid(3F8C2D71-94A6-4B0E-87D5-C1E3A9F62458), - version(19.0), - helpstring("http://help.keyman.com/developer/engine/desktop/19.0/api/IKeymanPackagesInstalled3"), - dual, - oleautomation - ] - interface IKeymanPackagesInstalled3: IKeymanPackagesInstalled - { - [id(0x00000123)] - HRESULT _stdcall Install3([in] BSTR Filename, [in] VARIANT_BOOL Force, [in] long BaseKeyboardID, [out, retval] IKeymanPackageInstalled** PackageResult); - }; - [ uuid(CA3B3B00-EA42-4EED-9043-D1A1F1842D52), dual,