diff --git a/HISTORY.md b/HISTORY.md index 58aa8ca338..856c60b57f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,9 @@ # Keyman Version History +## 19.0.174 alpha 2025-12-10 + +* chore(windows): simple bisect utility for checking setup-redist.exe file size (#15322) + ## 19.0.173 alpha 2025-12-09 * docs(developer): Clarify keystrokes in Step-1 of tutorial (#15326) diff --git a/VERSION.md b/VERSION.md index 76d3c69330..4861c29373 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -19.0.174 \ No newline at end of file +19.0.175 \ No newline at end of file diff --git a/windows/src/engine/keyman32/RightAltEmulationCheck.cpp b/windows/src/engine/keyman32/RightAltEmulationCheck.cpp index 7c1caed8aa..ef10d88aa0 100644 --- a/windows/src/engine/keyman32/RightAltEmulationCheck.cpp +++ b/windows/src/engine/keyman32/RightAltEmulationCheck.cpp @@ -65,7 +65,7 @@ typedef PKBDTABLES_WOW64 (WINAPI *PKBDLAYERDESCRIPTORWOW64FUNC)(VOID); #endif HMODULE LoadKbdLibrary(const char* keyboardLayoutName); -BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName); +BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName, BOOL& result); typedef PKBDTABLES (WINAPI *PKBDLAYERDESCRIPTORFUNC)(VOID); @@ -92,14 +92,15 @@ BOOL KeyboardGivesCtrlRAltForRAlt() { char keyboardLayoutName[KL_NAMELENGTH+1]; GetKeyboardLayoutName(keyboardLayoutName); - altGrFlag = ReadAltGrFlagFromKbdDll(keyboardLayoutName); + ReadAltGrFlagFromKbdDll(keyboardLayoutName, altGrFlag); } return altGrFlag; } -BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName) { - BOOL result = FALSE; +BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName, BOOL& result) { + BOOL success = FALSE; + result = FALSE; HMODULE hKbdLibrary = LoadKbdLibrary(keyboardLayoutName); if(!hKbdLibrary) { @@ -118,6 +119,7 @@ BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName) { PKBDTABLES_WOW64 KbdTables = (*KbdLayerDescriptorFunc)(); if(KbdTables) { result = (KbdTables->fLocaleFlags & KLLF_ALTGR) ? TRUE : FALSE; + success = TRUE; } } } else { @@ -130,13 +132,14 @@ BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName) { PKBDTABLES KbdTables = (*KbdLayerDescriptorFunc)(); if(KbdTables) { result = (KbdTables->fLocaleFlags & KLLF_ALTGR) ? TRUE : FALSE; + success = TRUE; } } } FreeLibrary(hKbdLibrary); - return result; + return success; } HMODULE LoadKbdLibrary(const char* keyboardLayoutName) { diff --git a/windows/src/engine/keyman32/tests/RightAltEmulationCheck.tests.cpp b/windows/src/engine/keyman32/tests/RightAltEmulationCheck.tests.cpp index 7cede5bc9a..abee7c5c10 100644 --- a/windows/src/engine/keyman32/tests/RightAltEmulationCheck.tests.cpp +++ b/windows/src/engine/keyman32/tests/RightAltEmulationCheck.tests.cpp @@ -1,6 +1,6 @@ #include "pch.h" -extern BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName); +extern BOOL ReadAltGrFlagFromKbdDll(const char *keyboardLayoutName, BOOL& result); TEST(RightAltEmulationCheck, ReadAltGrFlagFromKbdDll) { @@ -9,12 +9,23 @@ TEST(RightAltEmulationCheck, ReadAltGrFlagFromKbdDll) { // a known keyboard layout // These keyboards do not use AltGr + BOOL result = FALSE; - EXPECT_EQ(ReadAltGrFlagFromKbdDll("00000409"), FALSE); // kbdus.dll - English (US) - EXPECT_EQ(ReadAltGrFlagFromKbdDll("00000401"), FALSE); // kbda1.dll - Arabic 101 + // kbdus.dll - English (US) + EXPECT_EQ(ReadAltGrFlagFromKbdDll("00000409", result), TRUE); + EXPECT_EQ(result, FALSE); + + // kbda1.dll - Thai Kedmanee + EXPECT_EQ(ReadAltGrFlagFromKbdDll("0000041e", result), TRUE); + EXPECT_EQ(result, FALSE); // These keyboards use AltGr - EXPECT_EQ(ReadAltGrFlagFromKbdDll("0000040C"), TRUE); // kbdfr.dll - French AZERTY (Legacy) - EXPECT_EQ(ReadAltGrFlagFromKbdDll("00000405"), TRUE); // kbdcz.dll - Czech + // kbdfr.dll - French AZERTY (Legacy) + EXPECT_EQ(ReadAltGrFlagFromKbdDll("0000040C", result), TRUE); + EXPECT_EQ(result, TRUE); + + // kbdcz.dll - Czech + EXPECT_EQ(ReadAltGrFlagFromKbdDll("00000405", result), TRUE); + EXPECT_EQ(result, TRUE); }