mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-16 02:47:31 +00:00
Merge pull request #5685 from keymanapp/fix/windows/cherry-pick/5683-keyboard-name-fallback
fix(windows): fallback to filename if `&name` not set 🍒
This commit is contained in:
commit
e7c6c5e19c
4 changed files with 25 additions and 12 deletions
|
|
@ -195,7 +195,9 @@ end;
|
|||
|
||||
function TKeymanKeyboardFile.Get_Name: WideString;
|
||||
begin
|
||||
Result := FKeyboardInfo.KeyboardName;
|
||||
if FKeyboardInfo.KeyboardName = ''
|
||||
then Result := Get_ID
|
||||
else Result := FKeyboardInfo.KeyboardName;
|
||||
end;
|
||||
|
||||
function TKeymanKeyboardFile.Get_Version: WideString;
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ var
|
|||
FLanguages: TArray<Integer>;
|
||||
FLanguageInstalled: Boolean;
|
||||
ki: TKeyboardInfo;
|
||||
kbdname: string;
|
||||
KeyboardID: string;
|
||||
FDestPath: string;
|
||||
FDestFileName: string;
|
||||
FIconFileName: string;
|
||||
|
|
@ -325,6 +325,7 @@ var
|
|||
i: Integer;
|
||||
kpil: TKPInstallKeyboardLanguage;
|
||||
ml: TMitigateWin10_1803.TMitigatedLanguage;
|
||||
KeyboardName: string;
|
||||
|
||||
type
|
||||
TWSLCallback = reference to procedure(r: TRegistryErrorControlled);
|
||||
|
|
@ -367,7 +368,11 @@ begin
|
|||
|
||||
FDefaultHKL := GetDefaultHKL;
|
||||
|
||||
kbdname := GetShortKeyboardName(FileName);
|
||||
KeyboardID := GetShortKeyboardName(FileName);
|
||||
|
||||
if ki.KeyboardName = ''
|
||||
then KeyboardName := KeyboardID
|
||||
else KeyboardName := ki.KeyboardName;
|
||||
|
||||
if ikPartOfPackage in FInstallOptions
|
||||
then FDestPath := GetPackageInstallPath(PackageID)
|
||||
|
|
@ -412,7 +417,7 @@ begin
|
|||
kpil := TKPInstallKeyboardLanguage.Create(Context);
|
||||
try
|
||||
if kpil.FindInstallationLangID(BCP47Tag, LangID, TemporaryKeyboardID, []) and not IsTransientLanguageID(LangID) then
|
||||
kpil.RegisterTip(kbdname, BCP47Tag, ki.KeyboardName, LangID, FIconFileName, PackageLanguageMetadata[i].Name);
|
||||
kpil.RegisterTip(KeyboardID, BCP47Tag, KeyboardName, LangID, FIconFileName, PackageLanguageMetadata[i].Name);
|
||||
finally
|
||||
kpil.Free;
|
||||
end;
|
||||
|
|
@ -432,7 +437,7 @@ begin
|
|||
begin
|
||||
BCP47Tag := TCanonicalLanguageCodeUtils.FindBestTag(PackageLanguageMetadata[i].ID, True, True);
|
||||
if BCP47Tag <> '' then
|
||||
FLanguageInstalled := LegacyRegisterAndInstallLanguageProfile(BCP47Tag, kbdname, ki.KeyboardName, FIconFileName, PackageLanguageMetadata[i].Name);
|
||||
FLanguageInstalled := LegacyRegisterAndInstallLanguageProfile(BCP47Tag, KeyboardID, KeyboardName, FIconFileName, PackageLanguageMetadata[i].Name);
|
||||
if FLanguageInstalled then
|
||||
Break;
|
||||
end;
|
||||
|
|
@ -443,7 +448,7 @@ begin
|
|||
// This is most likely to happen on Win7 where custom BCP 47 tags
|
||||
// are not allowed
|
||||
AddLanguage(HKLToLanguageID(FDefaultHKL));
|
||||
LegacyRegisterAndInstallLanguageProfile(FLanguages, kbdname, ki.KeyboardName, FIconFileName); // I3581 // I3707
|
||||
LegacyRegisterAndInstallLanguageProfile(FLanguages, KeyboardID, KeyboardName, FIconFileName); // I3581 // I3707
|
||||
end;
|
||||
end;
|
||||
end
|
||||
|
|
@ -466,7 +471,7 @@ begin
|
|||
if ikLegacyRegisterAndInstallProfiles in FInstallOptions then
|
||||
begin
|
||||
// Registers only the first language
|
||||
LegacyRegisterAndInstallLanguageProfile(FLanguages, kbdname, ki.KeyboardName, FIconFileName); // I3581 // I3707
|
||||
LegacyRegisterAndInstallLanguageProfile(FLanguages, KeyboardID, KeyboardName, FIconFileName); // I3581 // I3707
|
||||
end;
|
||||
|
||||
// Save the list of preferred languages for the keyboard, translated to BCP47 tags
|
||||
|
|
@ -490,7 +495,7 @@ begin
|
|||
|
||||
kpil := TKPInstallKeyboardLanguage.Create(Context);
|
||||
try
|
||||
kpil.RegisterTip(kbdname, BCP47Tag, ki.KeyboardName, FLanguages[i], FIconFileName, ''); //TODO: language name
|
||||
kpil.RegisterTip(KeyboardID, BCP47Tag, KeyboardName, FLanguages[i], FIconFileName, ''); //TODO: language name
|
||||
finally
|
||||
kpil.Free;
|
||||
end;
|
||||
|
|
@ -504,7 +509,7 @@ begin
|
|||
// Write the four transient language ID profiles
|
||||
kpil := TKPInstallKeyboardLanguage.Create(Context);
|
||||
try
|
||||
kpil.RegisterTransientTips(kbdname, ki.KeyboardName, FIconFileName);
|
||||
kpil.RegisterTransientTips(KeyboardID, KeyboardName, FIconFileName);
|
||||
finally
|
||||
kpil.Free;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -145,7 +145,8 @@ begin
|
|||
s := ReadString(SRegValue_KeymanFile);
|
||||
try
|
||||
GetKeyboardInfo(s, False, ki);
|
||||
Result := ki.KeyboardName;
|
||||
if ki.KeyboardName <> '' then
|
||||
Result := ki.KeyboardName;
|
||||
except
|
||||
;
|
||||
end;
|
||||
|
|
@ -170,7 +171,8 @@ begin
|
|||
s := ReadString(SRegValue_KeymanFile);
|
||||
try
|
||||
GetKeyboardInfo(s, False, ki);
|
||||
Result := ki.KeyboardName;
|
||||
if ki.KeyboardName <> '' then
|
||||
Result := ki.KeyboardName;
|
||||
except
|
||||
;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -408,7 +408,11 @@ begin
|
|||
Exit;
|
||||
end;
|
||||
end;
|
||||
FKeyboardName := ki.KeyboardName;
|
||||
|
||||
if ki.KeyboardName = ''
|
||||
then FKeyboardName := GetShortKeyboardName(FName)
|
||||
else FKeyboardName := ki.KeyboardName;
|
||||
|
||||
FEncodings := ki.Encodings;
|
||||
FIsRegistered := ki.IsRegistered;
|
||||
FMessage := ki.MessageString;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue