Commit graph

104 commits

Author SHA1 Message Date
Marc Durdin
6243afea0c chore(windows): show architecture in support texteditor
Test-bot: skip
Build-bot: skip build:windows
2025-12-22 09:44:55 +11:00
rc-swag
c3e8d648c7 chore: Merge branch 'master' into chore/merge-master-to-epic-win-arm 2025-12-18 15:45:55 +10:00
Marc Durdin
76e6a956ed chore(windows): simple bisect utility for checking setup-redist.exe file size
This could be used for various other bisect tasks in the future, as a
starting point.

Test-bot: skip
Build-bot: skip
2025-12-09 18:19:30 +00:00
Marc Durdin
d7f21e80ec chore: Merge remote-tracking branch 'origin/epic/win-arm' into auto/A19S17-merge-master-into-win-arm
Significant conflict resolution fixes required to:
*	windows/src/engine/keyman32/build.sh
*	windows/src/engine/keyman32/keyman-engine.vcxproj
*	windows/src/engine/keyman32/keyman32.vcxproj
*	windows/src/engine/keyman32/keyman32.vcxproj.filters
*	windows/src/engine/keyman32/tests/keyman32.tests.vcxproj
2025-12-05 10:16:37 +01:00
Marc Durdin
ec8908ecc7 chore(windows): add wow64kbd support app for researching WOW64 reqs
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
2025-11-27 11:06:01 +01:00
rc-swag
25e5aff4cc feat(windows): update etl2log and Readme 2025-11-26 22:05:13 +10:00
Marc Durdin
c3915928a6 chore(windows): use MultiThreaded library for fakefreeze 2025-11-19 06:28:04 +01:00
Marc Durdin
711541be60 fix(windows): reinstall low level keyboard hook if it gets removed
This change improves the stability of Keyman for Windows by monitoring
the health of the low level keyboard hook. If keyman.exe is unresponsive
at any time, Windows can silently uninstall its low level keyboard hook,
which results in (at least) two problems:

* Keyman's hotkeys stop working
* A modifier key can become stuck, if it was pressed around the time
  Keyman became unresponsive.

The most common scenario in which Keyman can become unresponsive is high
system load, e.g. rendering graphics, videoconference calls, compiling
software.

Restarting Keyman always resolved both of these two issues in the past,
but with this patch, I hope that this will no longer be necessary.

A related 'fakefreeze' project is included for simulating a keyman.exe
hang by posting a `wm_keyman_control:KMC_WATCHDOG_FAKEFREEZE` message to
it, which keyman.exe responds to by `Sleep()`ing for 5 seconds. While
keyman.exe is freezing, any keystroke will cause the low level hook to
be uninstalled by Windows.

Logging has been updated; look for "LowLevelHookWatchDog" in the log for
related events.

One final small change in keyman32.cpp, as I refactored the
WH_KEYBOARD_LL hook installation/uninstallation, was to always clear out
hook variables when uninstalling a hook, because if the hook fails to
uninstall, there's really nothing we can do about it anyway, and we
probably shouldn't be trying again.

Fixes: #8064
2025-11-17 16:30:43 +01:00
rc-swag
d2b9c7d1fe chore(windows): Merge branch 'epic/win-arm' into feat/windows/11905/keymanx64-keymanarm64 2025-11-03 09:59:10 +10:00
Marc Durdin
6ed0d6b280 chore(windows): upgrade VC++ projects to v143 (VS2022)
Test-bot: skip
Build-bot: skip release:developer,windows
2025-10-31 13:28:25 +01:00
Marc Durdin
9e1fe8e6de chore(windows): upgrade VC++ projects to v143 (VS2022)
Test-bot: skip
Build-bot: skip release:developer,windows
2025-10-30 16:31:45 +01:00
rc-swag
1340c4f9e5 feat(windows): add arm64 to wxs and core build
Add cross-arm64 and cross-x64 build
Add the arm64 binaries to the wxs installers with guids
update build.sh files
2025-10-14 16:00:40 +10:00
Marc Durdin
f394245636 maint(common): consolidate builder scripts
Clarifies the confusing builder.inc.sh / build-utils.sh distinction by
giving the scripts more appropriate names. Most build scripts should use
builder-full.inc.sh; some helper scripts can use builder-basic.inc.sh.
Documented in resources/build/README.md.

Renames:
* resources/build/builder.inc.sh to resources/build/builder-full.inc.sh
* resources/build/build-utils.sh to resources/build/builder-basic.inc.sh

Other changes:
* Moves Android-specific functions out of builder-basic.inc.sh and into
  android/build.sh.
* Renames functions in builder-basic.inc.sh

More functions may be moved from builder-basic.inc.sh into utils.inc.sh
or other scripts in the future.

Fixes: #14065
Build-bot: build all
Test-bot: skip
2025-08-02 08:11:24 +10:00
Marc Durdin
156bdcdd8a maint(common): rename and move builder_if_release_build_level 2025-06-16 06:45:42 +10:00
Marc Durdin
870d37f56b maint(developer): only copy .dbg/.pdb on release buildLevel 2025-06-16 05:40:30 +10:00
Marc Durdin
f61a104acf
Merge branch 'master' into chore/merge-beta-into-master-B18S2 2025-03-01 15:45:19 +07:00
Marc Durdin
ef60c08d7c chore: add build.sh edit action for Delphi projects
This opens up the Delphi IDE with the correct KEYMAN_ROOT environment,
which allows for debugging. This is very helpful when working with
multiple worktrees, and also helps to avoid editing a project in the
wrong tree.
2025-02-22 06:18:47 +01:00
Marc Durdin
296e1bbad4 feat(windows): hack in some fun features for kmdevlink
This was an evening activity scratching itches on kmdevlink's 'Open
Issue' dialog. The search box now supports three different types of
strings:

1. `[[repo]#]num` -> open issue/PR #num in repo (if repo omitted, will
   use 'keyman'):
   * `13235` or `#13235` or `keyman#13235` -> opens PR #13235
   * `keyman.com#545` -> opens PR keymanapp/keyman.com#545
   * `api#172` -> opens PR keymanapp/api.keyman.com#172
2. `[[repo]#]searchtext` -> any non-numeric string does an issue search:
   * `label:ios/ font` -> opens an issue search for 'ios/' label and
     'font' in keymanapp/keyman repo
   * `api#db` -> opens an issue search for 'db' in
     keymanapp/api.keyman.com repo
3. `[[repo]#]` -> opens issue list for repo (keymanapp/keyman if repo is
   omitted, or empty box)

A second feature is construction of a HTML snippet of our usual
short-form links to issues/PRs for Google Docs. Note that this dialog
does not check if the target is an issue or PR, it just builds a link to
the issue URL and lets GitHub redirect to PR. To use this, just type the
`[[repo]#]num` format into the search field and click the Copy button.
2025-02-14 05:51:35 +07:00
Marc Durdin
b062a8b558 chore(windows): address review comments 2024-10-30 13:02:14 +07:00
Marc Durdin
8ebe621c1c chore(windows): fixup output paths for kmdevlink 2024-10-17 07:09:35 +07:00
Marc Durdin
12564c2efc feat(windows): kmdevlink app
Internal app for opening shortcuts to Keyman repos and Character
Identifier.
2024-10-17 06:21:52 +07:00
Marc Durdin
9a8b6d1279 chore(windows): remove remaining unused Makefiles
Fixes: #12247
2024-08-23 18:12:06 +02:00
Marc Durdin
1be73a9c2e refactor(windows): clean up logging
* Remove unused parameters from SendDebugMessage functions
* Add SendDebugEntry and SendDebugExit functions for tracking
  function entry/exit
* Add indenting and function names to log entries
* Remove unused debug functions
* Eliminate now-unused hwnd parameter in initialization functions
* Replace Log,LogEntry,LogExit functions with SendDebug equivalents in
  kmtip

Many functions now have SendDebugEntry/SendDebugExit (or
return_SendDebugExit) pairs. It is important to SendDebugExit on all
returns from a function to keep the log indent depth consistent. In some
cases I chose not to add these logging calls, e.g. on frequently called
functions such as the message hooks.
2024-07-03 21:28:37 +10:00
Marc Durdin
a90e9f45f3 fix(windows): etl2log support unicode
Minimal patch to etl2log to support emitting Unicode characters, in
UTF-8.
2024-02-06 15:07:08 +07:00
Marc Durdin
f61e65ceb9
Merge pull request #9736 from keymanapp/chore/merge-master-into-package-metadata
chore: merge master into package-metadata
2023-10-11 11:28:07 +11:00
Marc Durdin
eeb755f76a fix(windows): re-enable signature check
Fixes #9692.

Signature checking was skipped because we missed a ".virtual" to force
nmake to build the test and test_i3633 targets. This opened up a small
cascade of related formatting issues on Makefiles, and the fact that the
test_i3633 (has there ever been a more poorly named project?) Makefile
did not even work.

Refactored significantly, added same tests to Developer Makefile, and
also now verifying the .msi and installer executable.

We can improve this further but I'd like to get this in to avoid further
critical issues with code signing given the current broken signing
configuration.
2023-10-06 09:14:35 +07:00
Marc Durdin
a093507a4c chore(developer): remove .keyboard_info sources
Fixes #9551.

Removes various .keyboard_info files from test fixtures and also removes
generation of .keyboard_info source files from kmconvert, alongside now-
redundant tests (cvt.dpr).
2023-09-25 12:19:26 +07:00
Marc Durdin
4c07b6c49c feat(developer): remove kmcmpdll 2023-09-02 12:25:29 +04:00
Ross
acb6371f51 fix(windows): cut and paste error 2023-05-17 12:51:24 +10:00
Ross
28ecb56ae6 fix(windows): add wrap-symbols texteditor makefile 2023-05-17 12:45:06 +10:00
Ross
be8d5b08c6 feat(windows): add text editor to the support makefile
Add text editor to the windows/src/support/Makefile
Fixed the TextEditor Makefile to copy the debug file
to the debug folder.
2023-05-11 15:20:50 +10:00
Ross
45fe335abb feat(windows): Clone HFONT handle 2023-03-30 16:55:42 +10:00
Ross
d6fce6c34f feat(windows): tabs crept back in fixing formatting 2023-03-28 11:45:23 +10:00
Ross
ac1d5f1f8f feat(windows): build 64 and 32 fix error handling 2023-03-28 11:24:47 +10:00
Ross
0d7d45ac4e feat(windows): make output dir match keyman standard 2023-03-27 18:12:03 +10:00
rc-swag
eecc8735d3
feat(windows): apply suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-03-27 17:39:13 +10:00
Ross
895fc9dab0 feat(windows): fix tabs and brackets 2023-03-27 17:35:44 +10:00
Ross
0bbba50a3a feat(windows): fix tab indents 2023-03-20 17:26:13 +10:00
Ross
82c237b45d feat(windows): missed in update 2023-03-20 13:56:16 +10:00
Ross
9517c20acb feat(windows): clean up comments 2023-03-20 13:26:33 +10:00
Ross
77ccfc689e feat(windows): move project location 2023-03-20 10:07:15 +10:00
Steven R. Loomis
93a9509302 chore(core): delete crc32.cpp and crc32.pas from some places 2022-09-21 18:13:19 -05:00
Marc Durdin
385045e978 chore(windows): fixup refs and move StockFileNames
* StockFileNames.pas was missed in earlier moves.
* Cleaned up references in various dproj files
* Fixed up broken references to common files
2022-06-23 09:47:59 +10:00
Marc Durdin
2aaa31eae2 chore(windows): move general keyboard units to common 2022-06-23 06:33:16 +10:00
Marc Durdin
331c9d2d71 chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Marc Durdin
eba8a4ab35 chore(windows): move CRC32.pas to common 2022-06-22 10:36:55 +10:00
Marc Durdin
9dbe33e36e chore(windows): move KeymanVersion.pas to common and update refs 2022-06-21 09:39:04 +10:00
Marc Durdin
ad4039b5db chore(windows): move RegistryKeys.pas, ErrorControlledRegistry.pas, Glossary.pas, ScanCodeMap.pas to common 2022-06-21 09:39:03 +10:00
Marc Durdin
f163ceb6d5 chore(windows): move Unicode.pas to common 2022-06-21 09:39:01 +10:00
Marc Durdin
ff9a4c5edb chore(windows): move GetOSVersion to common 2022-06-21 09:39:00 +10:00