Resolves #2290842 Fix Super-space in Wayland
- Fix compose sequences beyond U10000
This commit is contained in:
parent
21ca965641
commit
77787d99c6
288
ibus-HEAD.patch
288
ibus-HEAD.patch
@ -745,6 +745,72 @@ index d907458e..534a9d37 100644
|
|||||||
--
|
--
|
||||||
2.45.0
|
2.45.0
|
||||||
|
|
||||||
|
From aea035a96261f9c3a36f5cd9c30b84b1d7609103 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Sat, 8 Jun 2024 10:23:31 +0900
|
||||||
|
Subject: [PATCH] ui/gtk3: Fix Super-space in Wayland
|
||||||
|
|
||||||
|
ibus_bus_set_global_shortcut_keys_async() was not called in Plasma
|
||||||
|
Wayland after "Fix to unref GdkDisplay in Wayland" patch is applied.
|
||||||
|
Now it's called correctly and the event handler is disabled instead.
|
||||||
|
|
||||||
|
BUG=rhbz#2290842
|
||||||
|
BUG=https://github.com/ibus/ibus/issues/2644
|
||||||
|
Fixes: https://github.com/ibus/ibus/commit/627e7cc
|
||||||
|
---
|
||||||
|
ui/gtk3/keybindingmanager.vala | 9 +++++----
|
||||||
|
ui/gtk3/panel.vala | 5 ++---
|
||||||
|
2 files changed, 7 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ui/gtk3/keybindingmanager.vala b/ui/gtk3/keybindingmanager.vala
|
||||||
|
index 71b4acb2..d4c7636a 100644
|
||||||
|
--- a/ui/gtk3/keybindingmanager.vala
|
||||||
|
+++ b/ui/gtk3/keybindingmanager.vala
|
||||||
|
@@ -60,8 +60,9 @@ public class KeybindingManager : GLib.Object {
|
||||||
|
public delegate void KeybindingHandlerFunc(Gdk.Event event);
|
||||||
|
|
||||||
|
|
||||||
|
- private KeybindingManager() {
|
||||||
|
- Gdk.Event.handler_set(event_handler);
|
||||||
|
+ private KeybindingManager(bool is_wayland_im) {
|
||||||
|
+ if (!is_wayland_im)
|
||||||
|
+ Gdk.Event.handler_set(event_handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -107,9 +108,9 @@ public class KeybindingManager : GLib.Object {
|
||||||
|
m_bindings.remove (binding);
|
||||||
|
}
|
||||||
|
|
||||||
|
- public static KeybindingManager get_instance () {
|
||||||
|
+ public static KeybindingManager get_instance (bool is_wayland_im=false) {
|
||||||
|
if (m_instance == null)
|
||||||
|
- m_instance = new KeybindingManager ();
|
||||||
|
+ m_instance = new KeybindingManager (is_wayland_im);
|
||||||
|
return m_instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
|
||||||
|
index 534a9d37..b24c23ac 100644
|
||||||
|
--- a/ui/gtk3/panel.vala
|
||||||
|
+++ b/ui/gtk3/panel.vala
|
||||||
|
@@ -446,11 +446,10 @@ class Panel : IBus.PanelService {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void bind_switch_shortcut() {
|
||||||
|
- if (m_is_wayland_im)
|
||||||
|
- return;
|
||||||
|
string[] accelerators = m_settings_hotkey.get_strv("triggers");
|
||||||
|
|
||||||
|
- var keybinding_manager = KeybindingManager.get_instance();
|
||||||
|
+ var keybinding_manager =
|
||||||
|
+ KeybindingManager.get_instance(m_is_wayland_im);
|
||||||
|
|
||||||
|
BindingCommon.KeyEventFuncType ftype =
|
||||||
|
BindingCommon.KeyEventFuncType.IME_SWITCHER;
|
||||||
|
--
|
||||||
|
2.45.0
|
||||||
|
|
||||||
From be94b8ddb4c37fe83646860a08c600b98e67fe84 Mon Sep 17 00:00:00 2001
|
From be94b8ddb4c37fe83646860a08c600b98e67fe84 Mon Sep 17 00:00:00 2001
|
||||||
From: fujiwarat <takao.fujiwara1@gmail.com>
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
Date: Sat, 25 May 2024 18:10:36 +0900
|
Date: Sat, 25 May 2024 18:10:36 +0900
|
||||||
@ -1296,3 +1362,225 @@ index a5210004..fd1d15f7 100644
|
|||||||
--
|
--
|
||||||
2.45.0
|
2.45.0
|
||||||
|
|
||||||
|
From 8d314d749f5ab83eb6de189faba184108fbccd61 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Sat, 8 Jun 2024 11:46:57 +0900
|
||||||
|
Subject: [PATCH 1/2] src/ibuscomposetable: Fix UFDD5 key for compose seq with fr(bepo_afnor)
|
||||||
|
|
||||||
|
AltGr-t with fr(bepo_afnor) keymap has no keysym name but can be
|
||||||
|
used in the compose key sequences.
|
||||||
|
Most Unicode format (UXXXX) should be supported in the compose sequences
|
||||||
|
in case they are not used in XKB options except for 'Pointer_*' XKB option
|
||||||
|
names.
|
||||||
|
Also refactor compose sequences with each range beyond U10000.
|
||||||
|
Also update ibus_keyval_name() can output keysym names beyond U10000.
|
||||||
|
|
||||||
|
BUG=https://github.com/ibus/ibus/issues/2646
|
||||||
|
Fixes: https://github.com/ibus/ibus/commit/ad883dc
|
||||||
|
---
|
||||||
|
src/ibuscomposetable.c | 35 +++++++++++++++++++++++++++++------
|
||||||
|
src/ibusenginesimpleprivate.h | 1 +
|
||||||
|
src/ibuskeynames.c | 7 +------
|
||||||
|
src/tests/ibus-compose.basic | 10 ++++++++++
|
||||||
|
4 files changed, 41 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c
|
||||||
|
index 9d4377a9..2c97fd3b 100644
|
||||||
|
--- a/src/ibuscomposetable.c
|
||||||
|
+++ b/src/ibuscomposetable.c
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
|
||||||
|
/* ibus - The Input Bus
|
||||||
|
* Copyright (C) 2013-2014 Peng Huang <shawn.p.huang@gmail.com>
|
||||||
|
- * Copyright (C) 2013-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
|
||||||
|
+ * Copyright (C) 2013-2024 Takao Fujiwara <takao.fujiwara1@gmail.com>
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@@ -222,6 +222,12 @@ parse_compose_sequence (IBusComposeData *compose_data,
|
||||||
|
compose_data->sequence[n] = codepoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (codepoint >= 0x10000) {
|
||||||
|
+ if (!ibus_compose_key_flag (0xffff & codepoint)) {
|
||||||
|
+ g_warning ("The keysym %s > 0xffff is not supported: %s",
|
||||||
|
+ match, line);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (codepoint == IBUS_KEY_VoidSymbol) {
|
||||||
|
g_warning ("Could not get code point of keysym %s: %s",
|
||||||
|
match, line);
|
||||||
|
@@ -603,6 +609,7 @@ ibus_compose_list_check_duplicated (GList *compose_list,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actual typed keysyms have a flag against the definition.
|
||||||
|
+ * https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/master/include/X11/keysymdef.h?ref_type=heads#L82
|
||||||
|
* https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/nls/en_US.UTF-8/Compose.pre#L4559
|
||||||
|
*/
|
||||||
|
guint
|
||||||
|
@@ -611,11 +618,27 @@ ibus_compose_key_flag (guint key)
|
||||||
|
const char *name;
|
||||||
|
if (key <= 0xff)
|
||||||
|
return 0;
|
||||||
|
+ switch (key) {
|
||||||
|
+ /* <Aogonek> is not used in UTF-8 compose sequences but <ohorn> in EN
|
||||||
|
+ * compose file and vn keymap is assumed instead.
|
||||||
|
+ */
|
||||||
|
+ case 0x1a1:
|
||||||
|
+ /* <Zabovedot> is not used in UTF-8 compose sequences but <Uhorn> in EN
|
||||||
|
+ * compose file and vn keymap s assumed instead.
|
||||||
|
+ */
|
||||||
|
+ case 0x1af:
|
||||||
|
+ /* <caron> is not used in UTF-8 compose sequences but <EZH> in EN compose
|
||||||
|
+ * file and fr(nodeadkeys) keymap is assumed instead.
|
||||||
|
+ */
|
||||||
|
+ case 0x1b7:
|
||||||
|
+ return 0x1000000;
|
||||||
|
+ default:;
|
||||||
|
+ }
|
||||||
|
name = ibus_keyval_name (key);
|
||||||
|
/* If name is null, the key sequence is expressed as "<Uxxxx>" format in
|
||||||
|
* the Compose file and the typed keysym has the flag.
|
||||||
|
*/
|
||||||
|
- if (!name)
|
||||||
|
+ if (!name || g_str_has_prefix (name, "0x"))
|
||||||
|
return 0x1000000;
|
||||||
|
/* "<Pointer_EnableKeys>" is not described in the Compose file but <UFEF9>
|
||||||
|
* in the file.
|
||||||
|
@@ -648,8 +671,8 @@ ibus_compose_data_compare (gpointer a,
|
||||||
|
gunichar code_a = compose_data_a->sequence[i];
|
||||||
|
gunichar code_b = compose_data_b->sequence[i];
|
||||||
|
|
||||||
|
- code_a += ibus_compose_key_flag (code_a);
|
||||||
|
- code_b += ibus_compose_key_flag (code_b);
|
||||||
|
+ code_a &= 0xffff;
|
||||||
|
+ code_b &= 0xffff;
|
||||||
|
if (code_a != code_b)
|
||||||
|
return code_a - code_b;
|
||||||
|
if (code_a == 0 && code_b == 0)
|
||||||
|
@@ -1581,9 +1604,9 @@ compare_seq (const void *key, const void *value)
|
||||||
|
guint saved_key = (guint)seq[i];
|
||||||
|
guint flag = ibus_compose_key_flag (saved_key);
|
||||||
|
if (typed_key < (saved_key + flag))
|
||||||
|
- return -1;
|
||||||
|
+ return (0xffff & typed_key) - saved_key;
|
||||||
|
else if (typed_key > (saved_key + flag))
|
||||||
|
- return 1;
|
||||||
|
+ return (0xffff & typed_key) - saved_key;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
diff --git a/src/ibusenginesimpleprivate.h b/src/ibusenginesimpleprivate.h
|
||||||
|
index fd600853..ae42342b 100644
|
||||||
|
--- a/src/ibusenginesimpleprivate.h
|
||||||
|
+++ b/src/ibusenginesimpleprivate.h
|
||||||
|
@@ -42,6 +42,7 @@ struct _IBusComposeTablePrivate
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
+guint ibus_compose_key_flag (guint key);
|
||||||
|
gboolean ibus_check_algorithmically (const guint *compose_buffer,
|
||||||
|
int n_compose,
|
||||||
|
gunichar *output);
|
||||||
|
diff --git a/src/ibuskeynames.c b/src/ibuskeynames.c
|
||||||
|
index 544c6ade..2925bdec 100644
|
||||||
|
--- a/src/ibuskeynames.c
|
||||||
|
+++ b/src/ibuskeynames.c
|
||||||
|
@@ -47,12 +47,7 @@ ibus_keyval_name (guint keyval)
|
||||||
|
static gchar buf[100];
|
||||||
|
gdk_key *found;
|
||||||
|
|
||||||
|
- /* Check for directly encoded 24-bit UCS characters: */
|
||||||
|
- if ((keyval & 0xff000000) == 0x01000000)
|
||||||
|
- {
|
||||||
|
- g_sprintf (buf, "U+%.04X", (keyval & 0x00ffffff));
|
||||||
|
- return buf;
|
||||||
|
- }
|
||||||
|
+ /* <ohorn> with 0x01000000 is supported in gdk_keys_by_keyval */
|
||||||
|
|
||||||
|
found = bsearch (&keyval, gdk_keys_by_keyval,
|
||||||
|
IBUS_NUM_KEYS, sizeof (gdk_key),
|
||||||
|
diff --git a/src/tests/ibus-compose.basic b/src/tests/ibus-compose.basic
|
||||||
|
index 0735d4ea..4e8cb9ab 100644
|
||||||
|
--- a/src/tests/ibus-compose.basic
|
||||||
|
+++ b/src/tests/ibus-compose.basic
|
||||||
|
@@ -8,6 +8,13 @@
|
||||||
|
<dead_macron> <U0227> : "ǟ" U01DE
|
||||||
|
<Multi_key> <macron> <U0227> : "ǟ" U01DE
|
||||||
|
<Multi_key> <underscore> <U0227> : "ǟ" U01DE
|
||||||
|
+# AltGr-t, Shift-asterisk with fr(bepo_afnor) keymap outputs
|
||||||
|
+# <UFDD5> <0>
|
||||||
|
+# Support Unicode keysyms in case they are not used in XKB options except
|
||||||
|
+# for 'Pointer_*' XKB option names.
|
||||||
|
+<UFDD5> <0> : "⁰" U2070
|
||||||
|
+#
|
||||||
|
+### Multibyte chars tests
|
||||||
|
# Khmer digraphs
|
||||||
|
# This case swaps U17fe and U17ff in en-US
|
||||||
|
<U17fe> : "ាំ"
|
||||||
|
@@ -22,3 +29,6 @@
|
||||||
|
# This case swaps c_h and C_h in en-US
|
||||||
|
<c_h> : "C’h"
|
||||||
|
<C_h> : "c’h"
|
||||||
|
+# Some <U10000> are supported for musical composer in en-US
|
||||||
|
+<Multi_key> <U1D157> <U1D165> : "𝇒" U1D1D2 # MUSICAL SYMBOL SQUARE B
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.45.0
|
||||||
|
|
||||||
|
From 909dff4fd50d86492fb7f42a09bbd04625fa60f4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Wismill <dev@wismill.eu>
|
||||||
|
Date: Sat, 8 Jun 2024 11:47:01 +0900
|
||||||
|
Subject: [PATCH 2/2] src/tests/ibus-compose: Add some Unicode boundary tests
|
||||||
|
|
||||||
|
BUG=https://github.com/ibus/ibus/pull/2649
|
||||||
|
---
|
||||||
|
src/tests/ibus-compose.basic | 8 +++++++-
|
||||||
|
src/tests/ibus-compose.emoji | 4 ++++
|
||||||
|
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/ibus-compose.basic b/src/tests/ibus-compose.basic
|
||||||
|
index 4e8cb9ab..d904dbb4 100644
|
||||||
|
--- a/src/tests/ibus-compose.basic
|
||||||
|
+++ b/src/tests/ibus-compose.basic
|
||||||
|
@@ -3,7 +3,9 @@
|
||||||
|
<Multi_key> <quotedbl> <Cyrillic_zhe> : "Ӝ" U04DC
|
||||||
|
<Multi_key> <quotedbl> <Cyrillic_ZHE> : "ӝ" U04DD
|
||||||
|
#
|
||||||
|
-# Unicode tests of Uxxxx
|
||||||
|
+# A Unicode keysym <Uxxxx> has a real value 0x01000000 + xxxx.
|
||||||
|
+# https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/master/include/X11/keysymdef.h?ref_type=heads#L82
|
||||||
|
+#
|
||||||
|
# en-US is "ǡ" U01E1 but this case is "ǟ" U01DE
|
||||||
|
<dead_macron> <U0227> : "ǟ" U01DE
|
||||||
|
<Multi_key> <macron> <U0227> : "ǟ" U01DE
|
||||||
|
@@ -13,6 +15,10 @@
|
||||||
|
# Support Unicode keysyms in case they are not used in XKB options except
|
||||||
|
# for 'Pointer_*' XKB option names.
|
||||||
|
<UFDD5> <0> : "⁰" U2070
|
||||||
|
+# ohorn, grave with vn keymap
|
||||||
|
+# IBus does not distingish ohorn and Aogonek
|
||||||
|
+<ohorn> <grave> : "Ờ" U1EDC
|
||||||
|
+<U01A1> <grave> : "Ờ" U1EDC
|
||||||
|
#
|
||||||
|
### Multibyte chars tests
|
||||||
|
# Khmer digraphs
|
||||||
|
diff --git a/src/tests/ibus-compose.emoji b/src/tests/ibus-compose.emoji
|
||||||
|
index 7fbf82cf..fdd560f8 100644
|
||||||
|
--- a/src/tests/ibus-compose.emoji
|
||||||
|
+++ b/src/tests/ibus-compose.emoji
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+# Emoji tests
|
||||||
|
<Multi_key> <Multi_key> <l> <e> <o> : "♌" U264C # LEO
|
||||||
|
<Multi_key> <Multi_key> <v> <i> <r> <g> <o> : "♍" U264D # VIRGO
|
||||||
|
<Multi_key> <Multi_key> <I> <n> <t> : "∫"
|
||||||
|
@@ -9,3 +10,6 @@
|
||||||
|
<Multi_key> <Multi_key> <o> <I> <n> <t> : "∮"
|
||||||
|
<Multi_key> <Multi_key> <o> <I> <I> <n> <t> : "∯"
|
||||||
|
<Multi_key> <Multi_key> <o> <I> <I> <I> <n> <t> : "∰"
|
||||||
|
+# Unicode boundary tests
|
||||||
|
+<U2800> <0> : "a"
|
||||||
|
+<braille_blank> <0> : "a"
|
||||||
|
--
|
||||||
|
2.45.0
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@
|
|||||||
Name: ibus
|
Name: ibus
|
||||||
Version: 1.5.30
|
Version: 1.5.30
|
||||||
# https://github.com/fedora-infra/rpmautospec/issues/101
|
# https://github.com/fedora-infra/rpmautospec/issues/101
|
||||||
Release: 4%{?dist}
|
Release: 5%{?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
|
||||||
@ -625,6 +625,10 @@ dconf update || :
|
|||||||
%{_datadir}/installed-tests/ibus
|
%{_datadir}/installed-tests/ibus
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Jun 08 2024 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.30-5
|
||||||
|
- Resolves #2290842 Fix Super-space in Wayland
|
||||||
|
- Fix compose sequences beyond U10000
|
||||||
|
|
||||||
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 1.5.30-4
|
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 1.5.30-4
|
||||||
- Rebuilt for Python 3.13
|
- Rebuilt for Python 3.13
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user