Merge branch 'master' into feat/windows/15218-report-low-level-hook-reinstall

This commit is contained in:
Marc Durdin 2025-12-11 21:22:38 +01:00 committed by GitHub
commit 66a22754cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 11 deletions

View file

@ -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)

View file

@ -1 +1 @@
19.0.174
19.0.175

View file

@ -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) {

View file

@ -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);
}