Commit graph

3957 commits

Author SHA1 Message Date
Marc Durdin
547ede3a9b fix(developer): add version info to Core
Fixes #5672.

* Adds version information to meson build for Keyman Core DLL
* Removes verify.dpr patch added in #5649 so it will be tested at build
2021-09-17 12:47:01 +10:00
Marc Durdin
6fa5399cda
chore(windows): Apply suggestion
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
2021-09-17 10:30:41 +10:00
Marc Durdin
838693d132
Merge pull request #5647 from keymanapp/feat/developer/debugger-keyboard-options
feat(developer): Debugger keyboard options 🐞
2021-09-17 10:11:29 +10:00
Marc Durdin
7295ea9af3
Merge pull request #5640 from keymanapp/feat/developer/debugger-platform-option
feat(developer): Debugger platform option 🐞
2021-09-17 10:10:53 +10:00
Marc Durdin
a8a19b2a2e fix(windows): handle edge cases using default language
Fixes #5091.

If the user has a default language that is not a minimal BCP47 tag, such
as `zh-Hans-CN` vs `zh-CN`, or if the default language does not have a
mapping in our `TLanguageCodeUtils.TranslateWindowsLanguagesToBCP47`
function, then kmshell would crash on install of a keyboard that had no
language metadata specified (i.e. neither legacy metadata in .kmx nor
modern metadata in .kmp).

This crash arose because the elevated instance of kmshell would install
a local-machine reference to `zh-CN` (as it back-translated from a
LangID), but the current user install would look for `zh-Hans-CN`, read
from the Windows registry `HKCU\Control Panel\International\User Profile`.

To further complicate matters, it is possible for the current user to
have a different default language than the elevated user on the machine.
Keyman was assuming that the default language was the same in both
cases.

This fix passes in the current user's default BCP47 and LangID to the
elevated portion of the keyboard install, so we can guarantee that
keyboard install which needs to use the default language, actually
installs for the current user's actual language code, and not a
canonicalized version (or a totally different code in the case of
elevation to an alternate admin user account).
2021-09-17 06:37:23 +10:00
Darcy Wong
349ed55840 chore(common): Update strings
* also includes untranslated strings (fallback to English)
2021-09-16 08:29:29 +07:00
Marc Durdin
72e6188192 fix(developer): support chiral modifiers in debugger
The ralt, rctrl, lalt, lctrl modifiers were not working correctly
in the debugger.

Relates to #5013.
2021-09-15 15:55:42 +10:00
Marc Durdin
cec8d11759 feat(developer): track changes to option values better in debugger
Fixes #5695.

When the debugger is in single-step mode, reflects the value of option
stores at the time of the change rather than at the beginning of the
batch.
2021-09-15 15:29:44 +10:00
Marc Durdin
564a8a019a chore(developer): Merge branch 'feat/developer/debugger-platform-option' into feat/developer/debugger-keyboard-options 2021-09-14 14:18:39 +10:00
Darcy Wong
6bf1ef004a chore(windows): Update strings with hotkeys 2021-09-14 08:07:58 +07:00
Darcy Wong
0a4d94dae7 chore(common): Skip untranslated strings 2021-09-14 07:45:49 +07:00
Darcy Wong
091628aed2 chore(common): Update additional strings 2021-09-14 06:08:13 +07:00
Marc Durdin
a00eb2c91a fix(windows): fallback to filename if &name not set
Fixes #5683.

If `store(&name)` is missing from a keyboard, then fallback to the
filename of the keyboard (sans extension). This fixes a regression in
14.0 keyboard registration.

I opted not to make this change in kmxfile but rather in places which
use it in the Keyman Engine COM API, because I wanted kmxfile to remain
truthful about all details of what it is reading from the file.

Given that the COM API will now never return an empty string for the
name of the keyboard, there are  mitigations for this in Keyman
Configuration which are unnecessary, but it is not harmful for them to
remain there.

Will cherry-pick to stable-14.0.
2021-09-14 08:24:17 +10:00
Marc Durdin
207bf84fd9 fix(developer): iOS platform is touch not hardware 2021-09-14 06:24:37 +10:00
Marc Durdin
4aeb06f98d feat(developer): handle form factor in platform options 2021-09-13 15:51:20 +10:00
Darcy Wong
42197c896b chore(common): Check in crowdin strings for simplified Chinese 2021-09-13 12:16:58 +07:00
Marc Durdin
bab345cb65 chore(developer): Merge branch 'master' into fix/developer/5577-import-from-layout-dirty-flag 2021-09-13 12:27:12 +10:00
Marc Durdin
36c21657e2 fix(developer): ensure file modified after import from layout
Fixes #5577.

This ensures that the touch layout file is marked as modified after
running Import From Layout in Keyman Developer, so that changes are
not lost when you save.
2021-09-10 14:19:47 +10:00
Marc Durdin
986743b05e chore(developer): fixup merge issue 2021-09-10 12:02:16 +10:00
Marc Durdin
8dffc75e00
Merge branch 'feat/developer/debugger-platform-option' into feat/developer/debugger-keyboard-options 2021-09-10 10:48:29 +10:00
Marc Durdin
e1bcf00117 chore(developer): Merge branch 'fix/developer/5648-debugger-include-keyman-core' into feat/developer/debugger-keyboard-options 2021-09-10 10:44:10 +10:00
Marc Durdin
f022a121df chore(developer): Merge branch 'fix/developer/5648-debugger-include-keyman-core' into feat/developer/debugger-platform-option 2021-09-10 10:43:44 +10:00
Ross
a90a99784a feat(windows): cast size_t to int for list size 2021-09-07 12:00:34 +10:00
Marc Durdin
aac9c284f2 chore(windows): temp skip version info check for kmnkbp0-0 2021-09-06 06:56:11 +10:00
Ross
8719a27ee9 feat(windows): add save and restore options
Add save and restore methods for saving and restoring
keyboard processor options.
2021-09-03 13:45:18 +10:00
Ross
5ffb136acf feat(windows): Added UpdateKeyboardOptions
This functions was to update the keyboard options in the
windows engine with the current options in the core

However it is not needed as first thought. This is because the options
will not be updated in first Non updatable call kmtip. This is due to
the fact the actions will not be processed. A variation on the current
core implementation. I am still pushing the branch as the unit test will
be usefull.
2021-09-02 11:57:44 +10:00
Ross
e125736e0e feat(windows): Update all TODOs with Issue numbers 2021-08-30 10:18:57 +10:00
Marc Durdin
5b9e49ce4e chore: sign kmnkbp0-0.dll 2021-08-27 17:22:23 +10:00
Marc Durdin
fbdbf65553 chore(developer): build core with developer 2021-08-27 16:24:44 +10:00
Ross
0663fcbeb7 feat(windows): Add unit tests for process actions 2021-08-27 14:18:14 +10:00
Marc Durdin
adc2509c5c fix(developer): include Keyman Core in Keyman Developer
Fixes #5648.

Includes kmnkbp0-0.dll in the installer for Keyman Developer.
2021-08-27 13:22:19 +10:00
Marc Durdin
3d488c4ead feat(developer): Debugger keyboard options
Fixes #5642.
Relates to #5013.

This adds support for viewing and setting keyboard options in the
debugger. This initial implementation does not have 100% coverage of
keyboard options; specifically:

1. keyboard options are not saved between debug sessions.
2. in single-step debugging, the keyboard options will be shown as
   updated at the start of a keystroke batch, not when the rule which
   calls `set()` is fired. This level of granularity is not currently
   visible from the engine. It does not impact the correctness of the
   rule processing, only the view of the current state of the keyboard
   option.

I do not anticipate supporting either of those functions in 15.0.

This commit renames the existing `TfrmDebugStatus_Options` to
`TfrmDebugStatus_Platform`. I had originally planned to show both the
platform and keyboard options in the same debug status window, but for
space reasons I have split them. (I'm sorry if this makes reading the
PR a little more challenging.)

There is a significant amount of rewriting of kmxfileutils.pas and
debugkeyboard.pas. This extends support for working with kmx files and
modernises the code (e.g. using generics for list types).

Note in particular the `ExpandSentinel` function in kmxfileutils.pas.
This is copied from CompileKeymanWeb.pas but has different internal
references, so cannot be used as-is -- CompileKeymanWeb works with
intermediate object 'files' from the kmx compiler, whereas the debugger
works with final binary .kmx files which have a different in-memory
layout. It may be possible to unify this in future but that would
involve additional risk. (Seriously, I would probably prefer to rewrite
CompileKeymanWeb.pas in C++, Rust or TypeScript than to invest in
merging these two use cases.)
2021-08-27 11:07:00 +10:00
Marc Durdin
1f6aac7fd7 feat(developer): Debugger platform option
Relates to #5013.

Adds a debug status page to allow the user to select an alternative
platform so they can debug rules relating to those platforms which
are constrained by the `platform()` statement in the keyboard source.

Note that while touch platforms are listed here, there is not yet any
method of activating touch key events (e.g. `[T_foo]`). This
functionality is planned for a future update.
2021-08-26 10:12:57 +10:00
Ross
a4801373db feat(windows): err logs, DEBUG_ASSERT macro
Added some more error logs
Added a DEBUG_ASSERT macro
Update variable names
2021-08-24 17:17:26 +10:00
Marc Durdin
a820c5cdef
Merge pull request #5597 from keymanapp/fix/developer/5013-debug-f6-and-focus
fix(developer): F6 in debugger and cef focus 🐞
2021-08-24 12:17:04 +10:00
Marc Durdin
fa20ed06a4
Merge pull request #4172 from keymanapp/chore/windows/sentry-tool-param-file-support
chore(windows): sentrytool param file support
2021-08-24 12:16:58 +10:00
rc-swag
aab8cb178c
fix(windows): apply suggestion changes core integration review
Co-authored-by: Marc Durdin <marc@durdin.net>
2021-08-23 09:51:10 +10:00
Marc Durdin
6b0058f5e7
Merge pull request #5595 from keymanapp/chore/developer/5013-debug-events-panel
chore(developer): hide debug events panel 🐞
2021-08-20 10:51:42 +10:00
Marc Durdin
1f4044c497
Merge pull request #5594 from keymanapp/fix/developer/5013-test-mode
fix(developer): get Test Mode working again 🐞
2021-08-20 10:51:32 +10:00
Marc Durdin
485c5d2ee7
Merge pull request #5593 from keymanapp/chore/developer/5013-remove-forcekeyboard
chore(developer): refactor forcekeyboard in debug 🐞
2021-08-20 10:51:23 +10:00
Marc Durdin
3456ec6a8b
Merge pull request #5592 from keymanapp/chore/developer/5013-deadkey-value-1-based
chore(developer): debug deadkey 1-based values 🐞
2021-08-20 10:51:16 +10:00
Marc Durdin
ab9db35c32
Merge pull request #5588 from keymanapp/fix/developer/5013-tidyup
fix(developer): debugger cleanup 🐞
2021-08-20 10:51:06 +10:00
Ross
937bf8a485 feat(windows): review comments 2021-08-19 14:17:34 +10:00
Ross
4350c5a63d feat(windows): review comments rename keyman32-tests 2021-08-19 11:51:31 +10:00
rc-swag
a681f46319
feat(windows): apply review suggestions
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
Co-authored-by: Marc Durdin <marc@durdin.net>
2021-08-19 09:07:30 +10:00
Marc Durdin
623315ea18
Merge branch 'master' into fix/windows/4549-welcome-in-front 2021-08-19 06:33:20 +10:00
Ross
e2b73af029 fix(windows): rename reg key prefix dw for DWORD 2021-08-18 15:44:45 +10:00
Marc Durdin
3f2ca56a39 fix(developer): F6 in debugger and cef focus
Relates to #5013.

If user presses F6 in the debugger (while not in run mode), will now
switch to editor view, and vice-versa.

Also fixes the inversion of the focus test in CEF so that focus controls
work correctly for web hosts.
2021-08-18 15:28:37 +10:00
Marc Durdin
bb351a7d0b chore(developer): hide debug events panel
Relates to #5013.

Hide the debug events panel by default, and add
a Tools menu item to make it visible for dev purposes
(Ctrl+Shift+click on Tools menu to view).
2021-08-18 09:05:53 +10:00
Marc Durdin
9f0ba213aa fix(developer): null check 2021-08-18 08:31:00 +10:00