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