Commit graph

147 commits

Author SHA1 Message Date
Eberhard Beilharz
3169cc0fa5
feat(linux): implement engine side of SimulateAltGr option
- read value from dconf
- set up Core environment
- if dconf value changes re-create the Core environment

Fixes: #7697
2024-06-21 18:27:06 +02:00
Eberhard Beilharz
d93fb6aa0b
refactor(linux): rename methods that deal with keyboard options
This renames the existing methods that read and write keyboard options
so that it's visible from the name that they read/write keyboard options.
This is in preparation of new methods that read and write more general
options.
2024-06-21 18:22:29 +02:00
Steven R. Loomis
6706ae0957 chore(core): km_core_cp -> km_core_cu
- km_core_cp represents a 16 bit code unit, not a code point.

Fixes: #11033
2024-05-02 17:39:15 -05:00
Eberhard Beilharz
a08fbd1346
fix(linux): Ignore keys with IBUS_MOD4_MASK set
If we process keys that have the (Super/Meta/Windows) IBUS_MOD4_MASK
modifier set we ignore the key. Core doesn't handle the Meta modifier
state and so would treat it as regular key. This fixes switching keyboards
in Ubuntu 23.10/24.04 on Wayland.

Fixes #10476.
2024-02-07 18:14:05 +01:00
Marc Durdin
70ba1d1c1e
Merge branch 'chore/core/10520-hide-old-action-apis' into fix/core/10582-km_core_state_get_actions-idempotency 2024-02-05 13:44:47 +11:00
Eberhard Beilharz
df24cfda0a
chore(linux): Use correct format specifier for g_utf8_strlen
The package build on armhf failed because of the wrong format specifier
which expects a `size_t` instead of `glong` that `g_utf8_strlen` returns.
2024-02-01 16:51:10 +01:00
Marc Durdin
1b88ab99be fix(core): make km_core_state_get_actions() idempotent
Fixes #10582.

Returned struct from the `km_core_state_get_actions()` API is now owned
by the state object. This is a change in API contract. The corresponding
`km_core_actions_dispose()` API has been made private, because there is
never any need for API consumers to call it. As this change is happening
in alpha, we won't bump the ABI version.

`state->app_context` is now guaranteed to be in sync with
`state->context` after `km_core_process_event()`, with the actions
struct populated at that point.

The next and final step in this refactor is to remove the actions queue
altogether from the Core and make that a kmn-only concept, but that will
wait until 18.0. The only consumers of the actions queue are the
kmn-specific interactive debugger in Keyman Developer, and kmn-specific
Input Method eXtensions in Keyman Engine for Windows.
2024-02-01 11:28:08 +07:00
Marc Durdin
f546c44048
Merge pull request #10390 from keymanapp/epic/core/9999-normalization
epic: Keyman Core normalization 🌱
2024-01-31 10:45:51 +11:00
Eberhard Beilharz
60746e02d0
chore(core): Fix compilation error 2024-01-29 18:00:14 +01:00
Eberhard Beilharz
6b5b44eddd
fix(linux): Fix packaging on Ubuntu and Debian servers
When building packages warnings are treated as errors. When building on
Ubuntu and Debian servers we don't have a patched ibus version but still
want to build the packages. So this change outputs a message instead of
a warning when building packages.
2024-01-29 17:50:04 +01:00
Eberhard Beilharz
a79e64b02d
chore(linux): Add more debug output 2024-01-25 20:02:22 +01:00
Eberhard Beilharz
c713cd02cc
refactor(linux): address code review comments 2024-01-24 14:27:43 +01:00
Eberhard Beilharz
372af218ca
refactor(linux): Use km_core_state_action_items struct instead of queue
Implements #10353.
2024-01-23 17:05:49 +01:00
Marc Durdin
307f7da846 refactor(linux): use km_core_state_context_debug
Relates to #10365.
Fixes #10378.
2024-01-15 08:27:01 +07:00
Marc Durdin
9830f9ea24 refactor(core): use km_core_state_context_clear where possible
Relates to #10365.

Use `km_core_state_context_clear()` instead of `km_core_context_clear()`
as part of eliminating use of `km_core_state_context()`.
2024-01-12 12:05:00 +07:00
Eberhard Beilharz
9b768c57d7
refactor(linux): Use km_core_state_context_set_if_needed
Also update comment on `km_core_state_context_set_if_needed` to make it
clearer that it's expecting a UTF-16 string.

Closes #10212.
2024-01-10 18:57:41 +01:00
Eberhard Beilharz
22126a0eef
refactor(linux): Use auto cleanup 2023-10-10 15:52:51 +02:00
Marc Durdin
db76e2541d chore: rename KM_KBP_ to KM_CORE_ 2023-10-09 14:53:22 +07:00
Marc Durdin
ba5f18defd chore: rename km_kbp_ to km_core_ 2023-10-09 14:53:13 +07:00
Marc Durdin
906a0a2ed7 chore: fix typo 2023-10-09 14:41:01 +07:00
Marc Durdin
4ef18f5e29 chore(core): rename keyboardprocessor.h to keyman_core_api.h
Fixes #9721.

Also tweaks some documentation references to keyboardprocessor, but does
not touch those relating to debian/control.
2023-10-09 14:21:01 +07:00
Eberhard Beilharz
ab25157364
feat(linux): Refactor to benefit from C++ RAII
Also apply changes from code review comments.
2023-05-22 19:51:45 +02:00
Eberhard Beilharz
c2e6fe23bd
feat(linux): Client side 2023-05-15 09:13:58 +02:00
Eberhard Beilharz
c20531b08a
chore(linux): Log error 2023-03-06 16:00:43 +01:00
Eberhard Beilharz
a26caa4d18
feat(linux): Add DBus method SendText
This new DBus method allows an OSK to output a junk of text.
2023-03-06 16:00:43 +01:00
Marc Durdin
e645b8665f chore: Merge branch 'feature-ldml' into chore/A17S7-master-to-feature-ldml
* core/build.sh -- accept feature-ldml changes (remove call to get_builder_OS)
* developer/src/kmlmc/build.sh -- delete file
*	linux/debian/rules -- accept master changes, fixup call to core/build.sh
*	linux/ibus-keyman/tests/Makefile.am -- accept master changes, fixup call to core/build.sh
*	linux/scripts/build.sh -- accept master changes, fixup call to core/build.sh
*	linux/scripts/reconf.sh -- accept master changes
2023-02-22 08:00:08 +07:00
Eberhard Beilharz
4d3755770c
fix(linux): Collect consecutive backspaces
When using Wayland `im-wayland.so` (which is part of libgtk) gets
loaded into the client app instead of `im-ibus.so`. This means that
our ordered output doesn't work with Wayland.

This change works around a problem with keyboards that use multiple
consecutive backspace actions. Because method calls get processed
asynchronously some backspaces get lost. In clients that support
surrounding text we can count the consecutive backspaces and then
do one call to delete surrounding text with the appropriate number
of characters.

This can be tested with "Khmer Angkor" keyboard by typing `xEjmr`,
or with "Vedic Sanskrit Devanagari Phonetic (ITRANS)" keyboard by
typing `shrI`.

Part of #4273.
2023-02-20 18:47:51 +01:00
Steven R. Loomis
ae45295dc6 Merge remote-tracking branch 'upstream/master' into chore/merge-master-a17s5-REDO-epic-ldml 2023-02-03 16:53:35 -06:00
Eberhard Beilharz
f2cfccb572
chore(linux): Fix warnings
This warnings showed up when building with Meson.
2023-01-26 16:58:27 +01:00
Eberhard Beilharz
d20812d043
Merge pull request #8036 from TheSchlunz/TheSchlunz/issue7540
chore(linux): log failures to `km_kbp_context_clear(context)`
2023-01-19 11:46:49 +01:00
Eberhard Beilharz
4f19ea690f
Merge pull request #8037 from TheSchlunz/TheSchlunz/issue7541
chore(linux): use faster zero-length string check
2023-01-19 11:41:24 +01:00
Kevin Schluensen
28baf30135 Add status output 2023-01-18 18:27:37 +01:00
Kevin Schluensen
c7dedf6643 chore(linux): use faster zero-length string check
Fixes #7541
2023-01-18 13:06:16 +01:00
Kevin Schluensen
b7c27886c0 chore(linux): log failures to km_kbp_context_clear(context)
Fixes #7540
2023-01-18 12:57:13 +01:00
Eberhard Beilharz
3afc6961d7
fix(linux): Properly set context after changing IP
This change fixes a bug where we the context was wrong after
putting the IP in a new location by mouse-click.

Fixes #8024.

(cherry picked from commit a085fa244b)
2023-01-16 17:19:05 +01:00
Steven R. Loomis
bc14f18460 Merge remote-tracking branch 'origin/master' into chore/core/mergemaster4-epic-ldml 2022-12-15 17:55:13 -06:00
Eberhard Beilharz
f54ea7a7f2
Merge pull request #7804 from keymanapp/refactor/linux/kbdOptions
refactor(linux): Refactor setting keyboard options ⚙️
2022-11-29 10:48:02 +01:00
Eberhard Beilharz
0f2c9972c6
refactor(linux): Fix more memory leaks
Turns out there are more things we need to clean out if we run
into an error condition in the c'tor. Easiest is to call the
destroy method.
2022-11-28 16:46:55 +01:00
Eberhard Beilharz
8b4d3e09ed
Apply suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2022-11-28 16:40:02 +01:00
Eberhard Beilharz
61d5d69a12
refactor(linux): Address code review comments 2022-11-25 17:31:32 +01:00
Eberhard Beilharz
35b678a931
refactor(linux): Fix failing tests 2022-11-24 19:16:14 +01:00
Eberhard Beilharz
ddd8e5b08c
refactor(linux): Address code review comments 2022-11-24 17:00:11 +01:00
Eberhard Beilharz
afd5fc86f1
refactor(linux): Refactor setting keyboard options
- set keyboard options in a call to `km_kbp_state_options_update`
  separate from setting the environment options
- output status value if method fails
- if any of the methods fails we now return NULL
- split setting the options in multiple methods

Fixes #7717.
2022-11-23 19:05:54 +01:00
Eberhard Beilharz
5da4f17dd1
refactor(linux): Don't free consts
(cherry picked from commit b0b605709a)
2022-11-23 18:21:01 +01:00
Eberhard Beilharz
0f0ab06f53
refactor(linux): Use consts instead of strings
This refactoring makes use of the already defined strings.
It also simplifies setting the values by directly specifying an
UTF-16 string.

Motivated by the changes in PR #7667.

(cherry picked from commit 31340b5b51)
2022-11-23 18:20:52 +01:00
Eberhard Beilharz
a958f1a369
Merge pull request #7792 from keymanapp/fix/linux/7774_buildWithOldIbus
fix(linux): Allow to build without patched ibus version
2022-11-23 08:42:36 +01:00
Eberhard Beilharz
c1871fdd70
fix(linux): Improve compiler warning if ibus not patched
Co-authored-by: Marc Durdin <marc@durdin.net>
2022-11-23 08:42:25 +01:00
Eberhard Beilharz
bb54946a8a
fix(linux): Fix warning
Commit acab920de8 didn't really fix
the warning. https://stackoverflow.com/a/2524675/1836776 suggests
to use `%zu` which is what this change does now.
2022-11-22 18:47:11 +01:00
Eberhard Beilharz
da765f1625
fix(linux): Allow to build without patched ibus version
This change makes it possible to compile even when the updated
ibus version is not installed. Of course ordered output won't work
in that case, but at least it will compile and the rest of Keyman
will work.

Fixes #7774.
2022-11-22 18:05:46 +01:00
Eberhard Beilharz
812c7c33b9
fix(linux): Revert "fix(linux): Fix a warning"
This reverts commit acab920de8.

I'm confused - now we're getting the same warning again - claiming
that `size_t` is defined as `long unsigned int` and so we have to
use `%lu`!? Is this related to the platform we're compiling on?
This time, the warning we get is when compiling for x86_64:

```
engine.c: In function ‘get_current_context_text’:
engine.c:224:15: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 5 has type ‘size_t’ {aka ‘long unsigned int’} [-Wformat=]
  224 |     g_message("%s: current context is:%u:%lu:%s:", __FUNCTION__, km_kbp_context_length(context), buf_size, current_context_utf8);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                  |
      |                                                                  size_t {aka long unsigned int}
engine.c:224:40: note: format string is defined here
  224 |     g_message("%s: current context is:%u:%lu:%s:", __FUNCTION__, km_kbp_context_length(context), buf_size, current_context_utf8);
      |                                       ~^
      |                                        |
      |                                        unsigned int
      |                                       %lu

```

Reverting the previous fix for now.
2022-11-21 16:12:00 +01:00