Commit graph

1978 commits

Author SHA1 Message Date
Marc Durdin
16e5b9c358
Merge pull request #4563 from keymanapp/fix/developer/2998-package-compile-require-langugae-tag
fix(developer): require language tag when compiling keyboard package
2021-03-03 09:28:07 +11:00
Marc Durdin
a0734f153b
Merge pull request #4552 from keymanapp/fix/developer/2740-touch-editor-importing-osk-right-alt-layer
fix(developer): touch layout osk import handling of multiple modifiers
2021-03-03 09:27:11 +11:00
Marc Durdin
1f87c7608c fix(developer): require language tag when compiling keyboard package
Fixes #2998.

Three parts to this:

* The package compiler will now give a warning if a keyboard in a
  package does not contain any language metadata.

* Removed old canonicalization check during compile which is now handled
  better in `TPackageInfoRefreshKeyboards`.

* Reduced non-canonical BCP 47 tag warnings in
  `TPackageInfoRefreshKeyboards` to "info" so they do not block the
  build.

Point 3 above is one part of the outcome of our BCP 47 discussion at:
https://docs.google.com/document/d/1N5CkTX7tlLlmUB9Mbd-LblY1ch1e642XxlTasC_WE_Q/edit#heading=h.fiy983iliay5
2021-03-02 11:59:12 +11:00
Marc Durdin
1fcfefa3cf fix(developer): support for smp names 2021-03-01 16:05:17 +11:00
Marc Durdin
3f54c81461 fix(developer): touch layout osk import handling of multiple modifiers
Fixes #2740.

The definitions for several of the combined modifiers was incorrect,
which led to a mismatch when attempting to import those layers from a
visual keyboard into the touch layout editor.
2021-03-01 15:44:55 +11:00
Marc Durdin
17c94770ef chore(windows): update test project 2021-03-01 10:34:30 +11:00
Marc Durdin
26b1d777f7 fix(developer): Improve stability of named code constants
Fixes #4423.

Using a named character constant with a store name that included
characters outside ascii could cause kmcmpdll to crash with an assertion
failure.

This fix allows store names defined in the .kmn file to use characters
outside ascii.

Note that more work needs to be done on which characters are acceptable
to use, as this is somewhat implementation-specific according to the C++
specification for `iswalpha`.

Added a test case to verify various named code constant examples.

Also removes dead code for `IsCJKUnifiedIdeograph` as this was never
used and somewhat pointless in any case.

NamedCodeConstants.cpp could stand to be rewritten using `std::map` or
equivalent. Current implementation is pretty icky.
2021-03-01 10:25:06 +11:00
Marc Durdin
d4bf9f910e
Merge pull request #4535 from keymanapp/fix/windows/4445-upgrade-of-14-re-registered-all-tips
fix(windows): prevent re-registration of TIPs on 14.0 upgrade
2021-02-26 19:56:48 +11:00
Marc Durdin
d496d266fa
Merge pull request #4378 from keymanapp/fix/windows/4289-altgr-refresh-on-64-bit
fix(windows): Refresh settings on 64-bit apps
2021-02-26 19:55:28 +11:00
Marc Durdin
f6734879a8
Merge pull request #4539 from keymanapp/fix/developer/4221-utf8-messages-in-lm-compiler
fix(developer): UTF-8 messages in LM compiler
2021-02-26 14:32:37 +11:00
Marc Durdin
4aced2762c
Merge pull request #4537 from keymanapp/fix/developer/4451-continue-if-sentry-not-available
fix(developer): run even if sentry unavailable
2021-02-26 14:32:31 +11:00
Marc Durdin
e2c79b0dfa fix(developer): UTF-8 messages in LM compiler
Fixes #4221.

When the Keyman Developer IDE calls out to the lexical model compiler,
it receives UTF-8 compiler message strings back but they are treated as
Windows-1252 strings. This fixes that.
2021-02-26 13:59:21 +11:00
Marc Durdin
c8e6ddbe7b fix(developer): run even if sentry unavailable
Fixes #4451.

If sentry.dll is missing, we should continue without error reporting,
rather than crashing out.
2021-02-26 11:45:16 +11:00
Marc Durdin
d7e4e18987 fix(windows): Handle Caps Lock event correctly from TIP
Fixes #4525.

This is a regression from #4468, which inadvertently added modifier
checks for `VK_CAPITAL` and `VK_NUMLOCK`, when it should not have done
so, as the flag was then being reset when the key was released rather
than toggled.

`ProcessModifierChange` pretended that it could handle `VK_CAPITAL` and
`VK_NUMLOCK` but it would never have worked, and the other caller (the
GetMessage hook) never passed those key events through, only Shift, Ctrl
and Alt, so that's now what the TIP handler does as well.

This leaves the rest of the fix from #4468 in place as that appears
correct.

I took the opportunity to move a repeated function declaration into
keyman64.h.
2021-02-26 10:54:30 +11:00
Marc Durdin
27529287e2 fix(windows): prevent re-registration of TIPs on 14.0 upgrade
Fixes #4445.

When upgrading from 11.0, 12.0 or 13.0, Keyman needs to re-register the
TIPs so that we use the new registration model for 14.0. However, if we
do this on a 14.0 version install, we end up registering TIPs for every
single suggested language for a keyboard, which is definitely not what
we want.

This fix simply looks to see if we have a 14.0-style installation
already, as evidenced by the presence of a `Transient Language Profiles`
key, and if found, does not continue the 11to13 upgrade process.
2021-02-26 07:42:55 +11:00
Marc Durdin
380832cda8
Merge pull request #4486 from keymanapp/fix/windows/4484-tsysinfox64-not-signed
fix(windows): tsysinfox64 not signed
2021-02-12 15:47:19 +11:00
Darcy Wong
beeec37195
Merge pull request #4470 from keymanapp/chore/ios/check-in-help
change(ios/app): Generate offline help from markdown
2021-02-12 11:35:42 +07:00
Marc Durdin
09ace08f7e fix(windows): tsysinfox64 not signed
Fixes #4484.

tsysinfox64 was being signed, but too late in the build
process as it is embedded into tsysinfo.exe. There was
code to sign it earlier, but that was being skipped due
to a missing build flag. This has been a problem for
some time.
2021-02-12 14:20:41 +11:00
Marc Durdin
c98379789d
Merge pull request #4458 from keymanapp/chore/windows/3540-firstvoices-keyboards-configuration
chore(windows): FirstVoices Keyboards Configuration merge
2021-02-11 16:56:45 +11:00
Darcy Wong
b9851c9136 change(ios): Update build-help.sh
* Generate offline help from markdown
* Update bundle to use index.html
2021-02-11 08:46:38 +07:00
Marc Durdin
32d42d7d31 fix(windows): Track modifier changes in UWP apps
Fixes #4369.

When Keyman is not handling a particular virtual key, it does not
preserve the virtual key (TSF terminology, essentially reserves that
virtual key + modifier for Keyman). In this situation, Keyman still
receives and processes the virtual key event, but the modifier state
is not passed through by kmtip to keyman32. This is normally okay,
because our `GetMessage` hook is responsible for tracking modifiers.

However, in UWP apps, our `GetMessage` hook does not get run, and so
we lose the modifier keys. Thus, this update ensures that the modifier
keys are processed when received by the TSF TIP.

It does not hurt to process modifier events twice.
2021-02-11 10:17:21 +11:00
Marc Durdin
1171290877 fix(windows): update order of disabling keyboard
We should uninstall transient languages before disabling them
because once we have disabled them, we lose the language
association and cannot find the entry to uninstall. catch-22.
2021-02-11 10:15:38 +11:00
Marc Durdin
3a7d1cb6fd
Merge pull request #4454 from keymanapp/fix/windows/4426-hotkeys-config-offset
fix(windows): hotkeys offset in config list
2021-02-10 12:25:43 +11:00
Marc Durdin
ea0d08ca4f chore(windows): FirstVoices Keyboards Configuration merge
Fixes #3540.

Merges all relevant changes from Keyman Configuration xml folder into
the FirstVoices Keyboards xml folder.

Adds support for enabling/disabling keyboards for FirstVoices Keyboards.

Renames from Keyman Desktop for FirstVoices to Keyman for FirstVoices.
2021-02-10 10:37:23 +11:00
Marc Durdin
9a3aaaaaba fix(windows): hotkeys offset in config list
Fixes #4426.

After removing the hotkey for the Keyboard Usage pane, the hotkey
`index` value was now offset from the hotkey `Target` value, which
uncovered a bug where the two values were conflated.

Note that the parameter passed to the `keyman:hotkey_set` command is
still called `index` -- this does not need to change.
2021-02-09 21:11:33 +11:00
Darcy Wong
982ce27c18 Merge remote-tracking branch 'origin/beta' into modify/common/help-keyman-com 2021-02-09 10:33:51 +07:00
Marc Durdin
d59701ca7d
Merge pull request #4383 from keymanapp/fix/windows/4185-uninstall-exit-keyman
fix(windows): When uninstalling, exit Keyman
2021-02-09 13:25:01 +11:00
Marc Durdin
a353c1572a chore(windows): cleanup dproj 2021-02-09 12:26:36 +11:00
Marc Durdin
35fe8f2132 chore(windows): address review comments 2021-02-09 10:16:55 +11:00
Marc Durdin
c966f297cb
Merge branch 'beta' into feat/developer/improve-bcp47-canonicalization 2021-02-09 07:03:28 +11:00
Marc Durdin
7a59d073ff chore(windows): address review comments, add test 2021-02-09 06:56:43 +11:00
Marc Durdin
9b0daf5652
Merge pull request #4410 from keymanapp/fix/developer/4280-if-nul-start-of-context
fix(developer): Compiler check for if and nul at start of context
2021-02-09 06:47:14 +11:00
Marc Durdin
3a4038a74e
Merge pull request #4408 from keymanapp/fix/developer/4250-debug-information-with-unicode-identifiers
fix(developer): debug information with unicode identifiers
2021-02-09 06:45:58 +11:00
Marc Durdin
70e6aa9f4e chore(windows): rename variable per review 2021-02-08 20:12:24 +11:00
Darcy Wong
9938af36a5
Merge pull request #4420 from keymanapp/chore/common/crowdin-fr
chore(common): Check in crowdin files for French
2021-02-08 16:05:36 +07:00
Darcy Wong
90bb475bcd chore(common): Move help-keyman-com.sh for refactoring 2021-02-08 08:37:52 +07:00
Marc Durdin
dab52774c2 fix(common): support quotes 2021-02-05 20:12:01 +11:00
Marc Durdin
2dbb928852 chore(windows): update unit tests 2021-02-05 18:45:55 +11:00
Marc Durdin
558c8013ee feat(developer): improve BCP 47 canonicalization
Ensures we get a canonical tag per langtags.json as far as we possibly
can. This is a breaking change for the compiler as tags which were
formerly regarded as canonical are no longer regarded that way. This
mostly relates to script subtag but a secondary bug meant that some
other tags would have lost data in the canonicalization process
(because we did a lookup based only on the language subtag previously,
which is a no-no).

See keymanapp/keyboards#1452 for related work.
2021-02-05 16:56:21 +11:00
Darcy Wong
26f57f02a6 chore(windows): Check in crowdin files for fr 2021-02-04 08:28:23 +07:00
Darcy Wong
138d3070a1 chore(windows/resources): Fix typo 2021-02-03 14:28:21 +07:00
Marc Durdin
cc54c2c158
Merge pull request #4407 from keymanapp/fix/windows/3336-model-wordlist-forward-slashes
fix(windows): Use forward slashes in wordlist paths
2021-02-03 16:52:35 +11:00
Marc Durdin
6cbf8de840
Merge pull request #4406 from keymanapp/fix/windows/4393-crash-deleting-wordlist
fix(windows): crash deleting wordlist
2021-02-03 16:52:03 +11:00
Marc Durdin
12834c618a
Merge pull request #4405 from keymanapp/chore/windows/case-sensitive-tests
chore(windows): tests should be case-sensitive
2021-02-03 16:51:50 +11:00
Marc Durdin
0c782e22d3 fix(developer): Compiler check for if and nul at start of context
Fixes #4280.

Adds checks to verify that `if()`, `platform()`, `baselayout()` and
`nul` are at the start of the context in the appropriate order.

Adds unit tests to validate these checks.

These are conditions that have been present in earlier versions of
Keyman but not enforced until now. Keyboards that do not meet these
conditions would not work correctly in all circumstances and should be
updated to meet the requirements.

An alternative would have been to reorder the context string but that is
much more complex as manipulation would also have been required for the
output string. The enforced order is logical and reduces confusion in
any case.

Updated documentation coming along shortly.
2021-02-03 15:28:53 +11:00
Marc Durdin
171b6fac54 fix(developer): debug information with unicode identifiers
Fixes #4250.

This implements @jahorton's suggestion of including the original name
in a comment alongside the munged name, as well as appending the unique
integer identifier of each symbol.

Note: the error reporting code needed a massage to support Unicode error
strings; in the future we should update the C++ compiler to emit
Unicode error strings also.
2021-02-03 10:54:20 +11:00
Marc Durdin
953cb15581 fix(windows): Use forward slashes in wordlist paths
Fixes #3336.
2021-02-03 10:15:30 +11:00
Marc Durdin
8f1fc61cc6 fix(windows): crash deleting wordlist
Fixes #4393.
Fixes KEYMAN-DEVELOPER-46.
Fixes KEYMAN-DEVELOPER-45.

This arose because deleting a tab caused Delphi VCL to switch to another
tab in the page control, which is IMHO a bug in the TPageControl VCL
component. Furthermore, when the active page is changed under these
circumstances, the normal OnChange and OnChanging events are not fired,
which means that the Source tab (which is the lucky tab to be activated)
never gets initialised. This cascades eventually to a crash due to the
Source tab's text editor not being properly loaded.

Two parts to this fix:

1. Restore the active page when we delete a wordlist tab (RSP-32327);
   this does not resolve the crash but does avoid weird side-effect of
   the active tab changing.
2. Initialise the source tab when we load the form so that the
   initialisation issue described above is avoided.

A separate fix in modelTsProjectFile avoids a (handled) null variant
conversion exception.
2021-02-03 09:43:48 +11:00
Marc Durdin
01645ff8c5
Merge pull request #4400 from keymanapp/fix/developer/2657-import-support-targets
fix(developer): Import Keyboard support for Targets
2021-02-03 07:08:45 +11:00
Marc Durdin
4a1ee301f1
Merge pull request #4399 from keymanapp/fix/developer/2679-template-for-web-not-touch
fix(developer): Generate platforms correctly from template
2021-02-03 07:08:25 +11:00