Commit graph

393 commits

Author SHA1 Message Date
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
1f7d6682a8
chore(linux): Update autotools configuration
This fixes some deprecation warnings:
- "The macro `AC_GNU_SOURCE' is obsolete"
- "The macro `AM_DISABLE_STATIC' is obsolete"
- "The macro `AC_ISC_POSIX' is obsolete"
- "The macro `AC_HEADER_STDC' is obsolete"
- "The macro `AM_PROG_LIBTOOL' is obsolete"
2022-11-23 08:46:41 +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
Eberhard Beilharz
acab920de8
fix(linux): Fix a warning
`size_t` is defined as `unsigned int`, not as a long.
2022-11-17 19:26:28 +01:00
Eberhard Beilharz
417dcc6bcd
Merge pull request #7686 from keymanapp/refactor/linux/consts
refactor(linux): Use consts instead of strings
2022-11-14 17:20:37 +01:00
Eberhard Beilharz
b0b605709a
refactor(linux): Don't free consts 2022-11-11 18:44:28 +01:00
Eberhard Beilharz
31340b5b51
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.
2022-11-10 19:56:35 +01:00
Eberhard Beilharz
053ee52281
fix(linux): Fix keyboard icon in system tray
Show the keyboard specific icon in the system tray on Wasta instead
of the generic keyman one.

Fixes #7547.
2022-11-10 09:11:44 +01:00
Marc Durdin
deeb246783
Merge pull request #7084 from keymanapp/fix/linux/improvecontext
fix(linux): Improve setting context
2022-10-26 12:34:24 +11:00
Marc Durdin
c37a15b317 chore(core): update linux test makefile refs to debuglog 2022-10-25 06:33:44 +11:00
Marc Durdin
5321538d1d
Merge pull request #7503 from keymanapp/chore/linux/clearify
chore(linux): call `reset_context` instead of `...focus_in`
2022-10-25 06:23:42 +11:00
Eberhard Beilharz
7b3f891eb9
chore(linux): Rename internal method to commit_string
The previous method name `ibus_keyman_engine_commit_string`
suggests that this method is overridden from ibus-engine class.
However, while it is true that ibus-engine has a
`ibus_engine_commit_string` method it can't be overridden. This
change renames the method to make it clearer that this is an internal
method that won't be called by ibus.
2022-10-20 09:34:28 +02:00
Eberhard Beilharz
e529052dc5
chore(linux): call reset_context instead of ...focus_in
Both `ibus_keyman_engine_reset` and `ibus_keyman_engine_focus_in`
are methods that get called by ibus. Having `ibus_keyman_engine_reset`
call `ibus_keyman_engine_focus_in` makes it much harder to see in
log files which methods get really called by ibus.

This change replaces the call of `...focus_in` with `reset_context`,
which is what `...focus_in` does as well. The only other thing that
`ibus_keyman_engine_focus_in` does in addition to that is calling
`ibus_engine_register_properties` - which shouldn't be necessary on
a reset (besides that we don't seem to do anything with the one
status property we register).
2022-10-20 09:22:11 +02:00
Eberhard Beilharz
cfe0998b2e
refactor(linux): Comment unused methods
Closes #7297.
2022-10-20 09:06:27 +02:00
Eberhard Beilharz
448baad79d
refactor(linux): Replace tabs with spaces 2022-10-20 09:02:48 +02:00
Eberhard Beilharz
d4283754df
refactor(linux): Refactor alignment of params 2022-10-20 09:02:48 +02:00
Eberhard Beilharz
2dab491a10
chore(linux): Always output function name in debug messages 2022-10-20 08:56:58 +02:00
Eberhard Beilharz
2663aa738c
chore(linux): Improve debug output 2022-10-20 08:56:36 +02:00
Eberhard Beilharz
f4410616e8
fix(linux): Fix tests
The previous changes didn't work when we output a character +
deadkey. In response to outputting the character we get a
`ibus_keyman_engine_set_surrounding_text` call in which we
called `reset_context` which removed the deadkey marker. This change
fixes this problem by comparing the surrounding text with the
context we already have. Only if it's different we reset the
context.
2022-10-17 20:27:04 +02:00
Eberhard Beilharz
696f683d0e
chore(linux): address code review comments 2022-10-13 11:13:28 +02:00
Marc Durdin
0945b92732 chore: Merge branch 'master' into chore/merge-master-into-feature-ldml 2022-10-13 13:38:31 +11:00
Eberhard Beilharz
d2262f2223
refactor(linux): Some refactorings
- adjust indentation of `reset_context`
- move variable definition to block where they're used
- make use of method to detect surrounding text support
2022-10-12 21:19:10 +02:00
Eberhard Beilharz
bad0feea9b
fix(linux): Improve setting context
This change always gets the context from the surrounding text
if `reset_context` gets called. This helps when the user puts the
IP after a certain character. Previously we basically lost the
context, with this change we restore the context so that it's like
the user just typed the previous characters.
2022-10-12 21:14:26 +02:00
Eberhard Beilharz
bcd29634bf
feat(linux): Address code review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2022-10-11 18:44:30 +02:00
Eberhard Beilharz
908dfbeefb
feat(linux): Optimize if surrounding text is supported
Only send fake event if client does not support surrounding text.
2022-10-11 18:44:30 +02:00
Eberhard Beilharz
e6601f205c
feat(linux): match state of original event when creating fake event
We forward a fake event for both keydown and keyup. This change
will set the flag on the fake event so that we get keydown and keyup.
This is probably not technically necessary, but it helps in
debugging because you can then see that both fake events still
belong to the same keypress.
2022-10-11 18:44:30 +02:00
Eberhard Beilharz
dba2002287
feat(linux): Still support older ibus versions
If we're dealing with an older ibus version that doesn't have the
necessary patches we fall back to the old behaviour. Otherwise
we use the new output reordering.
2022-10-11 18:44:29 +02:00
Eberhard Beilharz
e1d4169eeb
feat(linux): Optimizations 2022-10-11 18:44:29 +02:00
Eberhard Beilharz
18d0711ff3
fix(linux): Fix reordering of output
This change implements a commit queue which allows to control the
order of the output. This ensures that any backspace we generate
will be processed before the character we're adding.

Requires changes in ibus (surrounding text fix (see #7072) and
prefilter change)

Fixes #1489, #4028, #4029, #4030, #4505, #5510, #6639
2022-10-11 18:44:28 +02:00
Eberhard Beilharz
efbfaa1be4
chore(linux): Cleanup unnecessary surrogate check
Previously `process_unicode_char_action` checked for
`action_item->character` being a surrogate. This should never happen
because `action_item->character` is a 32-bit character. This change
removes the unnecessary check and the `keyman->firstsurrogate` field.

Fixes #6385.
2022-10-04 19:24:58 +02:00
Marc Durdin
55f302d929
Merge pull request #7322 from keymanapp/chore/merge-master-to-feature-ldml
chore: merge master into feature-ldml 🙀
2022-09-20 13:42:40 +10:00
Eberhard Beilharz
af6c6db49a
chore(linux): Remove unused IBusLookupTable 2022-09-15 18:53:44 +02:00
Marc Durdin
655c872dc8 chore: Merge branch 'master' into chore/merge-master-feature-ldml 2022-08-30 06:31:04 +10:00
Marc Durdin
895ce930a0
Merge pull request #6993 from keymanapp/chore/core/rename-json-source
chore(core): rename json.hpp to jsonpp.hpp 🛩
2022-08-29 14:48:32 -05:00
Eberhard Beilharz
7169723d54
fix(linux): Remove wrong ok_for_single_backspace method
The implementation of `ok_for_single_backspace` checked the current
action_item multiple times. However, we already know that that
item is `KM_KBP_IT_BACK` because the only place this method gets
called is from the `process_backspace_action` method. So basically
this method always returns `FALSE`. "Fixing" this method to check
the next action_items makes things fail.

Removing this method since it doesn't do anything except burn
processing cycles...

Fixes #5614.
2022-08-25 18:38:06 +02:00
Marc Durdin
e6ff47f2b3 chore: Merge branch 'master' into feature-ldml 2022-08-24 04:21:21 +10:00
Steven R. Loomis
e8dff5cf4e feat(core): add event_flags to process_event #7046
- use a constant, KM_KBP_EVENT_FLAG_DEFAULT for 0
- update pascal and python
- update linux and windows
2022-08-12 09:58:58 -05:00
Marc Durdin
e30871f01e chore(linux): add common/include to further paths 2022-08-11 14:56:46 +02:00
Marc Durdin
600f6bfec4 chore(linux): update include paths 2022-08-11 13:18:28 +02:00
Marc Durdin
b5bddc025f chore(core): rename json.hpp to jsonpp.hpp
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".
2022-07-26 13:06:16 +10:00
Marc Durdin
d5aa61fdc0 chore(common): Merge branch 'chore/web/keyman-version-for-developer' into chore/common/move-common-core-desktop-to-core 2022-05-30 09:38:27 +10:00
Marc Durdin
4ab3c53810 chore(common): adjust scripts for core relocation 2022-05-18 07:22:11 +10:00
Eberhard Beilharz
acd0a252b0
chore(linux): Fix failure in Debian reproducibility testing
Debian reproducibility testing runs a slightly different package
build that seemingly doesn't set the `DEB_BUILD_MULTIARCH` variable.
This change introduces our own environment variable to detect
package builds so that we can skip the ibus-keyman integration
tests that require running an X server.
2022-04-20 16:50:38 +02:00
Eberhard Beilharz
aa7537730a
feat(linux): Allow to run ibus tests on Wayland
This change modifies the `run-tests.sh` script so that tests
run on both Wayland (if supported) and X11 unless
`--no-wayland` or `--no-x11` is specified.

This change also adds the new argument `--wayland` to the
`ibus-keyman-tests` executable which runs the tests under
Wayland.

Note that running Wayland tests is only possible in Ubuntu 21.10+
because it requires a version of `mutter` that supports the
headless option which got added in mutter 40.
2022-03-31 17:52:50 +02:00