Commit graph

3957 commits

Author SHA1 Message Date
rc-swag
d83bd80585 feat(windows): tidy up 2025-11-27 11:26:35 +10:00
rc-swag
dce775c52d
Merge branch 'epic/win-arm' into feat/windows/64x-pure-forwarder-wix-3 2025-11-27 10:08:00 +10:00
rc-swag
6145c1d4e7
Merge pull request #15235 from keymanapp/feat/windows/15228/keyman-x64-arm-ico
feat(windows): adds keyman x64 and ARM Icon 🦾
2025-11-27 10:01:00 +10:00
rc-swag
e0c63a4e47 chore(windows): Merge branch 'epic/win-arm' into feat/windows/64x-pure-forwarder-wix-3 2025-11-26 23:15:25 +10:00
rc-swag
dba3836f2e
feat(windows): apply review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2025-11-26 22:10:33 +10:00
rc-swag
25e5aff4cc feat(windows): update etl2log and Readme 2025-11-26 22:05:13 +10:00
rc-swag
9e7fe64f67
feat(windows): apply review suggestions
Co-authored-by: Marc Durdin <marc@durdin.net>
2025-11-26 21:38:35 +10:00
rc-swag
df8d93e8f9 feat(windows): remove keymandesktop90-64-ico file 2025-11-26 15:49:19 +10:00
Marc Durdin
565af2d30e fix(windows): escape backslashes in path in debugging message
Fixes: #15233
Test-bot: skip
Build-bot: skip
2025-11-26 05:53:02 +01:00
rc-swag
928120b232 feat(windows): add keyman x64 and arm icon
Fixes: 15228
Test-bot: skip
2025-11-26 11:35:33 +10:00
rc-swag
4c4b0be456 feat(windows): audit _WIN64 macro 2025-11-25 16:01:52 +10:00
rc-swag
c4b6d06e43 feat(windows): combine start host 64 process functions
also removed sentry references. Fixed the manifest
references.
2025-11-25 12:42:15 +10:00
rc-swag
bc927bc4c3 feat(windows): fix version rc files to display correct
fix the version.rc files to display the correct description
and file name for keymanhp.*.exe fix version rc files to display correct
Also fix up the Keymanengine arm64 version names.
2025-11-24 13:54:02 +10:00
rc-swag
33cdb0f54c feat(windows): fix manifest for each host 2025-11-24 13:52:51 +10:00
rc-swag
b60056b43e chore(windows): Merge branch 'feat/windows/11905/keymanx64-keymanarm64' into feat/windows/64x-pure-forwarder-wix-3
# Keyman Conventional Commit suggestions:
#
# - Link to a Sentry issue with git trailer:
#     Fixes: _MODULE_-_ID_
# - Give credit to co-authors:
#     Co-authored-by: _Name_ <_email_>
# - Use imperative, present tense ('attach' not 'attaches', 'attached' etc)
# - Don't include a period at the end of the title
# - Always include a blank line before trailers
# - More: https://github.com/keymanapp/keyman/wiki/Pull-Request-and-Commit-workflow-notes
2025-11-24 13:49:01 +10:00
rc-swag
0375dea3d6 feat(windows): remove custom built sentry.arm64.dll 2025-11-24 13:46:17 +10:00
rc-swag
0837da4b7d chore(windows): Merge branch 'feat/windows/11905/keymanx64-keymanarm64' into feat/windows/64x-pure-forwarder-wix-3
# Keyman Conventional Commit suggestions:
#
# - Link to a Sentry issue with git trailer:
#     Fixes: _MODULE_-_ID_
# - Give credit to co-authors:
#     Co-authored-by: _Name_ <_email_>
# - Use imperative, present tense ('attach' not 'attaches', 'attached' etc)
# - Don't include a period at the end of the title
# - Always include a blank line before trailers
# - More: https://github.com/keymanapp/keyman/wiki/Pull-Request-and-Commit-workflow-notes
2025-11-21 18:37:18 +10:00
rc-swag
ad34a44c9f chore(windows): Merge branch 'epic/win-arm' into feat/windows/11905/keymanx64-keymanarm64 2025-11-21 18:36:13 +10:00
rc-swag
23da501019 feat(windows): remove dead code 2025-11-21 15:58:25 +10:00
rc-swag
19cc857b99 feat(windows): fix version rc files to display correct
fix the version.rc files to display the correct description
and file name for keymanhp.*.exe fix version rc files to display correct
Also fix up the Keymanengine arm64 version names.
2025-11-21 14:49:57 +10:00
rc-swag
b48bfeaf8b feat(windows): fix manifest for each host 2025-11-21 11:58:49 +10:00
rc-swag
767c007ca7 feat(windows): rename kmtiparm64EC to kmtiparm64X 2025-11-21 10:07:09 +10:00
Keyman Server
248d4205f0
Merge branch 'epic/win-arm' into auto/A19S16-merge-master-into-win-arm 2025-11-20 11:09:43 +01:00
rc-swag
9881cbb689 chore(windows): Merge branch 'feat/windows/11905/keymanx64-keymanarm64' into feat/windows/64x-pure-forwarder-wix-3 2025-11-20 19:25:55 +10:00
rc-swag
6e5fb1cefe feat(windows): copy sentry arm build to bin folder 2025-11-20 11:28:05 +10:00
rc-swag
59c8ff6d75 feat(windows): remove shared data arm64 test
the arm64 shared data test will only be possible on arm64
machine which is capable of running the x64 applications
2025-11-19 16:05:57 +10:00
Marc Durdin
c3915928a6 chore(windows): use MultiThreaded library for fakefreeze 2025-11-19 06:28:04 +01:00
rc-swag
c059627aa5 feat(windows): link keymanarm64.dll correctly 2025-11-19 14:07:21 +10:00
rc-swag
b38b7b9d43 feat(windows): set property before launchconditions 2025-11-18 20:10:55 +10:00
rc-swag
25770b17f1 feat(windows): setproperty wix_native_machine msi
Works in the msi but not the exe
2025-11-18 11:55:38 +10:00
Marc Durdin
ef64af0155
Merge branch 'master' into fix/windows/8064-low-level-hook-watch-dog 2025-11-17 17:07:23 +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
ab6772e36d feat(windows): build a kmtip ARM64X build
Add ARM64EC build then use to create a ARM64X build.
2025-11-16 07:59:40 +10:00
Marc Durdin
bf4d707662 change(windows): use circular buffer for logging
Test-bot: skip
2025-11-14 05:23:32 +01:00
Marc Durdin
edca16f508 change(windows): include map2pdb generation for relevant Delphi projects
Adds a call to map2pdb for Delphi projects, if map2pdb is an executable
on the path. This way, we get .pdb files we can use for debugging and
for performance profiling. This also replaces tds2dbg.

If map2dbg is available, then the build and install actions will copy
the PDB to be alongside the corresponding executable, making most debug
actions relatively seamless for finding symbols.

Also fixes up setup.exe in Windows and Developer to extend setup.exe to
a 512-byte boundary after map2pdb patches the PE.

Relates-to: #14787
Build-bot: skip release:developer,windows
Test-bot: skip
2025-11-13 14:48:18 +01:00
Marc Durdin
54642dc86d fix(windows): disable OutputDebugString from DllMain
Following investigation, it seems that OutputDebugString can trigger a
loader lock as it throws an exception which can be handled by a global
exception handler, which may try and load/unload DLLs or perform other
unsafe tasks (e.g. StackWalk). The safest solution is to remove the
debug string logging altogether from code paths that run from DllMain.

It would be nice to further simplify DllMain but that would be a
significant amount of additional work.
2025-11-13 14:47:39 +01:00
rc-swag
53ecc3665c feat(windows): as wixproj for dotnet build wip 2025-11-13 16:41:46 +10:00
rc-swag
1cf430bb98 chore(windows): Merge branch 'epic/win-arm' into feat/windows/11905/keymanx64-keymanarm64 2025-11-10 11:29:40 +10:00
Marc Durdin
bf7748a7d0 chore: Merge branch 'epic/win-arm' into auto/A19S15-merge-master-into-win-arm 2025-11-07 14:21:04 +01:00
Darcy Wong
f908546969
Merge pull request #15034 from keymanapp/chore/common/platform-rules
chore(common): Consolidate platformtest.js keyboard to `/common/test/keyboards/` 🚛
2025-11-06 13:24:14 +07:00
rc-swag
80d789c706 feat(windows): update keymanhp to v2022 and engine.sln 2025-11-03 12:53:12 +10: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
ccad218351 chore(windows): Merge branch 'epic/win-arm' into feat/windows/11905/keymanx64-keymanarm64
# Keyman Conventional Commit suggestions:
#
# - Link to a Sentry issue with git trailer:
#     Fixes: _MODULE_-_ID_
# - Give credit to co-authors:
#     Co-authored-by: _Name_ <_email_>
# - Use imperative, present tense ('attach' not 'attaches', 'attached' etc)
# - Don't include a period at the end of the title
# - Always include a blank line before trailers
# - More: https://github.com/keymanapp/keyman/wiki/Pull-Request-and-Commit-workflow-notes
2025-10-28 16:51:53 +10:00
rc-swag
d52b48cbbb feat(windows): handle arm64 complier environment
Update the build.bat to handle configuring the build
environment with vsdevcmd correctly for arm64 2019 doesn't
work very well so have to have pretty weird if statement.
also checked in some missed updates to function name change
2025-10-28 16:40:42 +10:00
Darcy Wong
5bf5a5941f chore(common): Move platformtest to common/test/keyboards 2025-10-28 07:18:49 +07:00
Marc Durdin
ba411774f6 maint(resources): move NPM package publishing to GitHub Actions
Due to recent changes in NPM package publishing security requirements,
we have to move from TeamCity build to a GitHub Action to publish our
NPM packages, so we can take advantage of trusted publishing. This
change also consolidates and centralizes the npm publishing into
resources/build/ci/npm-publish.sh, which removes a lot of boilerplate
from each of the build.sh scripts, and ensures consistency.

Packages will be `npm pack`ed on PR and test builds, and published in
release builds.

Ref: https://docs.npmjs.com/trusted-publishers
Ref: https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/
Fixes: #14963
Test-bot: skip
Build-bot: release:developer
2025-10-27 16:31:55 +01:00
Keyman Server
664b4b2082
Merge branch 'epic/win-arm' into chore/A19S14-merge-master-into-win-arm 2025-10-24 11:14:58 +02:00
Darcy Wong
5f021e3884 chore(windows): Beautify platformtest.js 2025-10-24 14:10:57 +07:00