Fix game control keys with language layout
This commit is contained in:
parent
93ea339c0f
commit
27145fdaf3
@ -1622,3 +1622,74 @@ index e3fab8d9..26bded99 100644
|
|||||||
--
|
--
|
||||||
2.41.0
|
2.41.0
|
||||||
|
|
||||||
|
From 4872c1fcdc8bbe146e967d004edf63f5994b21f8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Thu, 21 Dec 2023 08:26:48 +0900
|
||||||
|
Subject: [PATCH] src/ibusenginesimple.c: Don't commit any characters
|
||||||
|
|
||||||
|
Revert a part of the previous patch of #2495 because it explains
|
||||||
|
"Super-space and space key can launch IBus Emojier." but I cannot
|
||||||
|
remember what I tried to fix.
|
||||||
|
|
||||||
|
IBus XKB engines should not commit any keysyms before the key event is
|
||||||
|
sent to the application with IBUS_IGNORED_MASK flag even if the key
|
||||||
|
is not an ASCII because any characters can be control characters
|
||||||
|
by application.
|
||||||
|
E.g. VIM cursor mode "hjkl" keys or game cursor keys with language
|
||||||
|
layouts.
|
||||||
|
|
||||||
|
Fixes: https://github.com/ibus/ibus/commit/ad883dc
|
||||||
|
|
||||||
|
BUG=https://github.com/ibus/ibus/issues/2588
|
||||||
|
---
|
||||||
|
client/gtk2/ibusimcontext.c | 6 ++++++
|
||||||
|
src/ibusenginesimple.c | 15 ++++++++++-----
|
||||||
|
2 files changed, 16 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
|
||||||
|
index cfc08c20..ebc8d869 100644
|
||||||
|
--- a/client/gtk2/ibusimcontext.c
|
||||||
|
+++ b/client/gtk2/ibusimcontext.c
|
||||||
|
@@ -361,6 +361,12 @@ ibus_im_context_commit_event (IBusIMContext *ibusimcontext,
|
||||||
|
keyval == GDK_KEY_KP_Enter) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
+ /* #2588 If IBus tries to commit a character, it should be forwarded to
|
||||||
|
+ * the application at once with IBUS_IGNORED_MASK before the actual
|
||||||
|
+ * commit because any characters can be control characters even if
|
||||||
|
+ * they are not ASCII characters, e.g. game cursor keys with a
|
||||||
|
+ * language keyboard layout likes VIM cursor mode "hjkl" keys.
|
||||||
|
+ */
|
||||||
|
ch = ibus_keyval_to_unicode (keyval);
|
||||||
|
if (ch != 0 && !g_unichar_iscntrl (ch)) {
|
||||||
|
IBusText *text = ibus_text_new_from_unichar (ch);
|
||||||
|
diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
|
||||||
|
index 31cb416c..4bee8cb3 100644
|
||||||
|
--- a/src/ibusenginesimple.c
|
||||||
|
+++ b/src/ibusenginesimple.c
|
||||||
|
@@ -647,12 +647,17 @@ no_sequence_matches (IBusEngineSimple *simple,
|
||||||
|
|
||||||
|
ibus_engine_simple_update_preedit_text (simple);
|
||||||
|
ch = ibus_keyval_to_unicode (keyval);
|
||||||
|
- /* IBUS_CHANGE: RH#769133
|
||||||
|
- * Since we use ibus xkb engines as the disable state,
|
||||||
|
- * Super-space and space key can launch IBus Emojier.
|
||||||
|
+ /* IBUS_CHANGE: RH#769133, #2588
|
||||||
|
+ * Since we use ibus xkb engines as the disable IM mode,
|
||||||
|
+ * do not commit the characters locally without in_hex_sequence.
|
||||||
|
+ * If IBus tries to commit a character, it should be forwarded to
|
||||||
|
+ * the application at once with IBUS_IGNORED_MASK before the actual
|
||||||
|
+ * commit because any characters can be control characters even if
|
||||||
|
+ * they are not ASCII characters, e.g. game cursor keys with a
|
||||||
|
+ * language keyboard layout likes VIM cursor mode "hjkl" keys.
|
||||||
|
*/
|
||||||
|
- if (ch != 0 && !g_unichar_iscntrl (ch) && ch > 0x7F) {
|
||||||
|
- ibus_engine_simple_commit_char (simple, ch);
|
||||||
|
+ if (ch != 0 && !g_unichar_iscntrl (ch) &&
|
||||||
|
+ priv->in_hex_sequence) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
Name: ibus
|
Name: ibus
|
||||||
Version: 1.5.29~rc2
|
Version: 1.5.29~rc2
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
Summary: Intelligent Input Bus for Linux OS
|
Summary: Intelligent Input Bus for Linux OS
|
||||||
License: LGPL-2.1-or-later
|
License: LGPL-2.1-or-later
|
||||||
URL: https://github.com/ibus/%name/wiki
|
URL: https://github.com/ibus/%name/wiki
|
||||||
@ -581,6 +581,9 @@ dconf update || :
|
|||||||
%{_datadir}/installed-tests/ibus
|
%{_datadir}/installed-tests/ibus
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Dec 21 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc2-6
|
||||||
|
- Fix game control keys with language layout
|
||||||
|
|
||||||
* Fri Dec 15 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc2-5
|
* Fri Dec 15 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc2-5
|
||||||
- Refactor object initialization
|
- Refactor object initialization
|
||||||
- Fix some warnings
|
- Fix some warnings
|
||||||
|
Loading…
Reference in New Issue
Block a user