Commit graph

96 commits

Author SHA1 Message Date
Marc Durdin
5879f087c7 fix(windows): handle forward slash for KEYMAN_ROOT env var
Test-bot: skip
2025-11-13 14:45:23 +01:00
Marc Durdin
50ffbb2722 fix(windows): osk: handle simulated left Control event when AltGr pressed
When a European layout is active, and the user presses AltGr, Windows
generates a simulated VK_LCONTROL event alongside the VK_RMENU event.
This was causing the OSK to show LCtrl as depressed alongside RAlt, so
the OSK would show the wrong modifier layer, which was unhelpful and
confusing to the end user.

It is possible to detect the simulated VK_LCONTROL in the WH_KEYBOARD_LL
hook, because the scan code generated is 0x21D, instead of 0x1D.
Warning: this is not a documented value. (But, this 0x21D scan code is
not passed to the WM_KEYDOWN event!) Therefore, we use Keyman's existing
kmnLowLevelKeyboardProc to pass modifier key events on to the visual
keyboard.

This patch handles only this specific scenario, by watching for that
specific scan code in the new handler in the UfrmOSKOnScreenKeyboard
module, together with some minor refactoring so that it fits neatly.

A future improvement would be to have all modifier key processing go
through this new handler, and eliminate the timer-based polling of the
keyboard. However, there is some additional risk around missing events,
leading to 'stuck modifiers'.

Fixes: #14890
Build-bot: skip release:windows
2025-10-08 14:32:40 +02:00
Marc Durdin
00b98f2286 fix(windows): emit nunit report path correctly and update TeamCity links
* Windows and Developer sources
* Fixes the report path to be fully qualified
* Adds the TeamCity report logger to remaining DUnitX automated tests

Fixes: #14197
Build-bot: skip build:windows,developer
Test-bot: skip
2025-08-20 07:21:03 +02: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
Eberhard Beilharz
460de65f0d
maint(common): use same TC variable everywhere
Standardize on `TEAMCITY_GIT_PATH` environment variable to detect
if we're running on TeamCity.

Test-bot: skip
2025-05-06 17:42:25 +02: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
2d5e3ee440
Merge pull request #13156 from keymanapp/feat/developer/13134-improve-messages-and-links
feat(developer): improve compiler messages and user interface
2025-02-10 08:19:11 +07:00
Marc Durdin
d4ecd83459 chore(developer): use kmn.sh instead of deeplink into help.keyman.com for message links 2025-02-07 12:50:38 +07:00
Marc Durdin
bd4633333b feat(developer): improve compiler messages and user interface
* Add unit test to verify the format of message detail strings
  (max line length of 80 chars)
* Add unit test to verify non-null, non-empty message strings
* Tidy up a number of messages (to pass unit tests)
* Add message details for all kmw compiler messages
* Add a clickable link for the TIKE message window for each message
  so that explanations and further message details are more accessible
  to authors (`kmc message` is already available for command-line users)
* Fixes a number of minor issues with the messages window in TIKE,
  mostly relating to when popup menu commands are enabled and how
  messages are selected.

Fixes: #13134
2025-02-07 08:46:46 +07:00
rc-swag
46c6a44f90
Merge pull request #13115 from keymanapp/feat/windows/13114/merge-update-reg-key
feat(windows): check updates and automatic update merged
2025-02-06 21:46:45 +10:00
rc-swag
9eec271011 feat(windows): check updates and automatic update merged
Check updates meaning has slightly changed it is now automatic updates
and it will now check, download and when possible start the install.

Previously it just meant a check for upates was made and notified
the user of updates.

Fixes:#13114
2025-02-03 14:25:44 +10:00
Marc Durdin
46fc4d52cf feat(developer): add user interface for kmc copy to TIKE
Adds a new set of 'New Project' dialogs to allow authors to easily copy
keyboards from local filesystem, Keyman Cloud (including a keyboard
search web page, implemented in keymanapp/keyman.com#536), and
directly from a GitHub URL. Adds related documentation.

Fixes: #13073
Depends-on: keymanapp/keyman.com#536
2025-01-30 11:04:18 +07:00
Marc Durdin
974b16f722
Merge branch 'epic/windows-updates' into chore/merge-master-into-windows-updates 2024-12-05 08:49:34 +01:00
Marc Durdin
18d00c7701 fix(core): use NDEBUG flag to disable assertions in release build for VC++
This disables assertions in release builds in Windows only. Other
platforms may have different outcomes.

Fixes: #12619
2024-11-27 15:34:34 +07:00
rc-swag
f2d0e268a7 feat(windows): remove TUpdateStateMachineParams
There was some dead code from before the RemoteUpdateCheck refactor
was created. This is removed in this commit
2024-10-30 16:59:32 +10:00
rc-swag
c988271628
feat(windows): formatting review suggestions
Co-authored-by: Marc Durdin <marc@durdin.net>
2024-10-15 12:12:21 +10:00
rc-swag
4ad5f0fc64 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-apply-now-update 2024-10-01 17:38:59 +10:00
Marc Durdin
2d09c805d0
Merge pull request #12417 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-09-13 09:24:17 +02:00
rc-swag
5c187db7a6 feat(windows): address review comments 2024-09-12 13:40:42 +10:00
rc-swag
3f1236ab59 feat(windows): comments copyright formating 2024-09-10 17:22:21 +10:00
rc-swag
bfe1b45983 feat(windows): automatic updates option to config reg 2024-09-09 15:51:32 +10:00
rc-swag
85a998bb73 feat(windows): rename executehistory module for clarity 2024-09-03 15:31:49 +10:00
rc-swag
1667cfed09 feat(windows): clean up ready for review 2024-09-03 14:38:09 +10:00
rc-swag
10c343fc43 feat(windows): change verb use to allow for clarity 2024-09-02 13:31:21 +10:00
rc-swag
e2ec08ca9b feat(windows): remove klogging enable 2024-08-27 18:03:57 +10:00
rc-swag
2927f57c04 feat(windows): missed checked in file 2024-08-23 15:41:31 +10:00
rc-swag
05d52463f9 feat(windows): remove registerhotkey and cache modifier
Remove the feature flags that allows the use of cached modifier for
hotkeys. Remove the feature flag that uses the Win 32 API
RegisterHotkeys.
2024-08-22 15:45:23 +10:00
rc-swag
b7b17686ec feat(windows): add rmodifier hk to keyman config UI 2024-08-19 14:01:43 +10:00
rc-swag
be55dabdc4 feat(windows): add right modifier key option pt1 2024-08-16 22:15:42 +10:00
rc-swag
6a305c168b feat(windows): remove uneeded registry keys 2024-08-16 13:26:02 +10:00
rc-swag
b0cdcabaaa feat(windows): correct error checking for has keyman run 2024-08-13 18:29:16 +10:00
rc-swag
9f72febff8 feat(windows): merge conflicts wip 2024-07-24 16:59:21 +10:00
rc-swag
47d3d26301 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-apply-now-update 2024-06-29 16:04:45 +10:00
Marc Durdin
3d017bc0f5
Merge pull request #11729 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-06-07 19:02:19 +10:00
Marc Durdin
a68124b5e6 chore(windows): support port in THTTPUploader
This can be useful for debugging scenarios, where we want to use a local
test HTTP server on a different port, e.g. setting
`development.urls.api_keyman_com_host` to `localhost:8058`.
2024-05-30 08:20:43 +07:00
Marc Durdin
78f4cbf8d5 chore: Merge branch 'epic/windows-updates' into chore/merge-master-into-windows-updates
Note: deleted TODO.md, had only one minor update
2024-05-25 05:53:48 +07:00
Marc Durdin
fa57d5c674 chore(developer): final work on build.sh for developer
Now builds from a clean repo:

  developer/src/build.sh configure build test publish

* Splits kmbrowserhost into kmdbrowserhost for Developer; this means
  that Developer Browser Host now inherits the Developer settings rather
  than the Keyman for Windows settings, and simplifies distribution and
  management. The only difference between the two is in the startup code
  so this seems like a good split.

* Cleanup of various build scripts and dependencies.
2024-05-20 06:34:53 +07:00
Marc Durdin
2d6ab45f9a fix(developer): emit JSON strings as characters, not surrogate pairs
Fixes #11193.

The JSON pretty-printed format in Delphi would emit strings with
surrogate pairs as e.g. "\uD801\uDDB0" instead of the character. This
change uses TStringBuilder which emits the characters cleanly.
2024-04-18 09:20:40 +07:00
rc-swag
653cb3b4b3 fix(windows): ditch the Indy library use own URLDecode 2024-04-04 14:26:23 +10:00
rc-swag
636d21fe4a fix(windows): decode packge id at assignment encode uri creation
decode the package_id when assinged. encode it again when
the uri is formated.
2024-04-04 09:14:44 +10:00
rc-swag
29b54ad661 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-apply-now-update 2024-03-04 19:10:12 +10:00
Marc Durdin
1c8ef09378
Merge pull request #10588 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-02-01 17:31:25 +11:00
Marc Durdin
56a2b9e494
Merge pull request #10450 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-01-19 17:42:58 +11:00
Marc Durdin
2b02d73347 feat(developer): New LDML Keyboard Project form
Fixes #10135.

Adds a new LDML Keyboard Project template and form, and allows
instantiation from kmconvert command-line and from the New Project
dialog in Keyman Developer IDE.
2024-01-18 15:19:41 +07:00
rc-swag
8454285557 chore(windows): Merge branch 'feat/windows/add-state-machine-o-updates' into feat/windows/add-apply-now-update 2024-01-11 11:14:02 +10:00
rc-swag
f7744f9a49 feat(windows): mark outstanding issues with feature 2024-01-11 10:41:56 +10:00
rc-swag
2a6a7437f7 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-state-machine-o-updates 2024-01-10 16:33:39 +10:00
rc-swag
2eab485c76 feat(windows): Add a installNow event to SM
Added an event for install now when the user wants to manual
start the install process straight away.
2024-01-10 16:23:54 +10:00
rc-swag
dd5767a372 feat(windows): integrate sm states and handlekmshell 2023-12-22 10:11:32 +10:00
rc-swag
6cb83989d5 feat(windows): WIP added keyman has run atom 2023-12-20 08:14:33 +10:00