From 5f916752799182132ebb21b041e958f66dde685c742b8eca6142f9b2b65b8e96 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Wed, 11 Apr 2018 14:27:34 +0000 Subject: [PATCH] Accepting request 593838 from home:sbrabec:branches-kbd-fi-1085432 - Disable characters >=U+F000. These do not work properly (bsc#1085432#c15, kbd-unicode-fxxx.patch). OBS-URL: https://build.opensuse.org/request/show/593838 OBS-URL: https://build.opensuse.org/package/show/Base:System/kbd?expand=0&rev=109 --- kbd-unicode-fxxx.patch | 101 ++++++++++++++++++++++++++++------------- kbd.changes | 6 +++ 2 files changed, 75 insertions(+), 32 deletions(-) diff --git a/kbd-unicode-fxxx.patch b/kbd-unicode-fxxx.patch index dd3af40..a93e92a 100644 --- a/kbd-unicode-fxxx.patch +++ b/kbd-unicode-fxxx.patch @@ -1,34 +1,71 @@ -Partially revert 3f065394 to not fail on ligature fi and other characters with UNICODE code 0xFxxx. +Disable characters >=U+F000. These do not work properly. -Index: kbd-2.0.4/src/libkeymap/analyze.l +Explanation from Alexey Gladkov: + +The kbd value is unsigned short [1] and take a look how kernel gets +a type [2]. The last bytes are occupied by type. + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/kd.h?id=06dd3dfeea60e2a6457a6aedf97afc8e6d2ba497#n103 +[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/keyboard.h?id=06dd3dfeea60e2a6457a6aedf97afc8e6d2ba497#n45 + +The problem in the kernel. In the kb_value there is no room to store such +values. + +Index: kbd-2.0.4/data/keymaps/i386/qwertz/de_alt_UTF-8.map =================================================================== ---- kbd-2.0.4.orig/src/libkeymap/analyze.l -+++ kbd-2.0.4/src/libkeymap/analyze.l -@@ -361,11 +361,6 @@ To to|To|TO - } - {Unicode} { - yylval->num = strtol(yytext + 1, NULL, 16); -- if (yylval->num >= 0xf000) { -- ERR(yyextra, _("unicode keysym out of range: %s"), -- yytext); -- return(ERROR); -- } - return(UNUMBER); - } - {Decimal}|{Octal}|{Hex} { -Index: kbd-2.0.4/src/libkeymap/analyze.c -=================================================================== ---- kbd-2.0.4.orig/src/libkeymap/analyze.c -+++ kbd-2.0.4/src/libkeymap/analyze.c -@@ -1499,11 +1499,6 @@ YY_RULE_SETUP - #line 362 "analyze.l" - { - yylval->num = strtol(yytext + 1, NULL, 16); -- if (yylval->num >= 0xf000) { -- ERR(yyextra, _("unicode keysym out of range: %s"), -- yytext); -- return(ERROR); -- } - return(UNUMBER); - } - YY_BREAK +--- kbd-2.0.4.orig/data/keymaps/i386/qwertz/de_alt_UTF-8.map ++++ kbd-2.0.4/data/keymaps/i386/qwertz/de_alt_UTF-8.map +@@ -160,7 +160,7 @@ shift alt keycode 2 = U+00AC # notsig + shift alt keycode 3 = U+201D # right double quote + shift alt keycode 4 = numbersign + shift alt keycode 5 = sterling +-shift alt keycode 6 = U+FB01 # fi ligature ++#shift alt keycode 6 = U+FB01 # fi ligature + shift alt keycode 7 = dead_circumflex + shift alt keycode 8 = backslash + shift alt keycode 9 = U+02DC # small tilde +@@ -179,7 +179,7 @@ shift alt keycode 23 = Ucircumflex + shift alt keycode 24 = Ooblique + shift alt keycode 25 = U+220F # n-ary product + shift alt keycode 26 = degree +-shift alt keycode 27 = U+F8FF # apple logo ++#shift alt keycode 27 = U+F8FF # apple logo + shift alt keycode 30 = Aring + shift alt keycode 31 = Iacute + shift alt keycode 32 = U+2122 # trade mark +@@ -188,7 +188,7 @@ shift alt keycode 34 = Igrave + shift alt keycode 35 = Oacute + shift alt keycode 36 = U+0131 # dotless i + shift alt keycode 37 = U+02C6 # circumflex accent +-shift alt keycode 38 = U+FB02 # fl ligature ++#shift alt keycode 38 = U+FB02 # fl ligature + shift alt keycode 39 = U+0152 # OE + shift alt keycode 40 = AE + shift alt keycode 41 = U+201C # left double quote +@@ -210,7 +210,7 @@ control shift alt keycode 2 = U+00AC + control shift alt keycode 3 = U+201D # right double quote + control shift alt keycode 4 = numbersign + control shift alt keycode 5 = sterling +-control shift alt keycode 6 = U+FB01 # fi ligature ++#control shift alt keycode 6 = U+FB01 # fi ligature + control shift alt keycode 7 = circumflex + control shift alt keycode 8 = backslash + control shift alt keycode 9 = U+02DC # small tilde +@@ -229,7 +229,7 @@ control shift alt keycode 23 = Ucircumf + control shift alt keycode 24 = Ooblique + control shift alt keycode 25 = U+220F # n-ary product + control shift alt keycode 26 = degree +-control shift alt keycode 27 = U+F8FF # apple logo ++#control shift alt keycode 27 = U+F8FF # apple logo + control shift alt keycode 30 = Aring + control shift alt keycode 31 = Iacute + control shift alt keycode 32 = U+2122 # trade mark +@@ -238,7 +238,7 @@ control shift alt keycode 34 = Igrave + control shift alt keycode 35 = Oacute + control shift alt keycode 36 = U+0131 # dotless i + control shift alt keycode 37 = U+02C6 # circumflex accent +-control shift alt keycode 38 = U+FB02 # fl ligature ++#control shift alt keycode 38 = U+FB02 # fl ligature + control shift alt keycode 39 = U+0152 # OE + control shift alt keycode 40 = AE + control shift alt keycode 41 = U+201C # left double quote diff --git a/kbd.changes b/kbd.changes index 4f463da..5874427 100644 --- a/kbd.changes +++ b/kbd.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Apr 5 17:32:03 CEST 2018 - sbrabec@suse.com + +- Disable characters >=U+F000. These do not work properly + (bsc#1085432#c15, kbd-unicode-fxxx.patch). + ------------------------------------------------------------------- Thu Mar 15 17:04:06 CET 2018 - sbrabec@suse.com