This app reports on WOW64 identification function results, and reports
on kbdxx.dll file alignment by printing a hex dump of the first 44 bytes
(which is the 32 bit size of the structure). Manual review of the hex
dump should be possible to determine if we have the expected alignment,
which should be 32 bit on a 32 bit Windows installation, but 64 bit on
any 64 bit other Windows installations, even with a 32 bit process.
wow64kbd is not included in the normal build. Build when needed; you can
copy entire folder to a target computer and run `run.bat` to get a full
report.
`./build.sh test` will also run the same test on the local machine.
Test-bot: skip
Build-bot: skip
Remove a number of unused bits and pieces, and merge the one remaining
function in syskbdnt.cpp, `KeyboardGivesCtrlRAltForRAlt` with the
corresponding function in syskbdnt64.cpp.
Add a unit test for `ReadAltGrFlagFromKbdDll` to ensure that it is
working correctly across various architectures.
Test-bot: skip
Rename keyman-engine-tests.vcxproj to keyman32.tests.vcxproj, move up a
folder, rename other files to match test filename conventions, update
vcxproj for vs2022, and build and run this from build.sh:test.
Also remove keyman-engine.vcxproj, instead integrating the static lib
version of keyman32 into keyman32.vcxproj. One day in the future, we
could split back the other way, and have the DLL be essentially a link
action from the .lib, but that's higher complexity to setup.
Add a configuration step to install NuGet packages for Google Test
specifically for keyman32.tests.vcxproj. If we add Google Test to other
msbuild projects, we could move the packages/ up to top level of the
repo in the future (similar to node_modules) to reduce number of
configuration downloads.
Build-bot: skip build:windows,developer
Test-bot: skip
If the .keyman-touch-layout file has validation errors, Keyman Developer
will now report the first validation error in the message window, rather
than silently closing the whole keyboard editor. The
.keyman-touch-layout file will be loaded in Code view, and once the
first validation error is addressed, switching to Design view will
report the next error.
For future improvement:
* reporting multiple validation errors
* reporting line number of error
Fixes: #15242
Test-bot: skip
Addresses review feedback from Marc and Darcy:
- Add JavaDoc comments to getKeyboardHeightMin() and getKeyboardHeightMax()
explaining the purpose, parameters, and return values
- Implement separate pending height tracking per keyboard type (in-app/system)
and orientation (portrait/landscape) instead of a single flag
- Add four preference keys following KMKey_ naming convention:
KMKey_PendingHeightUpdate_InappPortrait, KMKey_PendingHeightUpdate_InappLandscape,
KMKey_PendingHeightUpdate_SystemPortrait, KMKey_PendingHeightUpdate_SystemLandscape
- Create helper function getPendingHeightKey() to determine the correct key
- Create setPendingHeightUpdate() and getAndClearPendingHeightUpdate() functions
- Fix applyKeyboardHeight() to use new helper functions and remove broken
heightApplied variable and duplicate pending height logic
- Update KMKeyboard.onResume() to use getAndClearPendingHeightUpdate()
- Add documentation links for getKeyboardHeightMin and getKeyboardHeightMax
in index.md
Handling invalid orientations
updating orientation logic
refresh webview height if ApplyKeyboardHeight() has been applied without KB active
I ran into a bug building this code into app-builders and fixed it downstream. This commit pushes it upstream.
While resize dialog is open:
- Keyboard WebView is NOT loaded (isKeyboardLoaded() == false)
- ACTION_UP saves to SharedPreferences: ✅ Works
-But skips WebView layout update: ❌ Because keyboard not loaded
- User exits dialog, keyboard appears:
- If the keyboard WebView loads and reads from SharedPreferences properly: ✅ Works
- But if there's a timing issue or the WebView had old layout params cached: ❌ Touch zone mismatch