The static library is currently only needed for the ibus-keyman
tests, so we only build it on Linux. It can't build with
emscripten, and on Windows it'd need some additional work.
We no longer support Ubuntu 18.04 Bionic, so we can update to a newer meson
version. The oldest supported platform is now Ubuntu 20.04 Focal which
comes with Meson 0.53, so we make that the minimal required version.
Fixes#7649.
emit_keystroke code path in kmx processor was writing directly to the
core queue instead of to the internal kmx processor queue. This caused
it to be out-of-order in the actions sent to the engine/debugger.
Engines didn't really care but it broke the debugger, for example if
only a deadkey was in the buffer and backspace was pressed, Developer
would assert as it would get unexpected context for the deletions.
Fixes#7643.
The kmn statement `save()` action was being written directly to the
state queue, bypassing the internal kmx action queue. This caused two
issues:
1. save() actions were out-of-order with other actions on the same key
event.
2. The number of items in the internal action queue became out of sync
with the debug item queue, which would cause the debugger to fail
with an assertion.
The new test in debug_api.cpp validates this second issue as the number
of items in the action queue now matches the expected count in the
corresponding debug item.
Fixes#7487.
`KMN_API` defines only import/export/static modifiers for functions, so
it makes no sense to apply it to a typedef. (Previously, I thought it
also included a calling convention, but it doesn't.)
Recently some include files got added to `common/include` which are
referenced by `core/include/keyman`. This change adds the necessary
code to install them in the same directory as the other include files.
Fixes#7490.
Adds infrastructure required to support caps lock control on keyboard
activation per #5822.
Keyboardprocessor implementation is currently a stub, and engines will
need corresponding updates to support the new API.
build-utils.sh is responsible for filling these variables.
Note: getversion.sh and getversion.bat are still currently used by
meson. gettier is no longer used with these changes.
The name json.hpp conflicts with the JSON for Modern C++ library that
is also used by Developer. Renames json.hpp and json.cpp to jsonpp.hpp
and jsonpp.cpp aka "JSON Pretty Printer".
Fixes up scripts (except under /linux) to use `#!/usr/bin/env bash`
instead of `#!/bin/bash` or `#!/bin/sh` so that we don't end up with
the ancient version of bash supplied with macOS.
This became urgent with this PR, because of bash-4.xisms in
build-utils.sh, for example on line 572:
```
if [[ -v _builder_params[$e] ]]; then
```