From a9e2e62fc22d1d7dea57445de2dc477ce6fc5a0b Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 13 Dec 2019 13:42:51 +1000 Subject: [PATCH] convert ssharp to the correct uppercase letter --- ...keysym-handle-ssharp-in-XConvertCase.patch | 50 +++++++++++++++++++ libxkbcommon.spec | 7 ++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 0001-keysym-handle-ssharp-in-XConvertCase.patch diff --git a/0001-keysym-handle-ssharp-in-XConvertCase.patch b/0001-keysym-handle-ssharp-in-XConvertCase.patch new file mode 100644 index 0000000..12aa704 --- /dev/null +++ b/0001-keysym-handle-ssharp-in-XConvertCase.patch @@ -0,0 +1,50 @@ +From adaf6072aeb4048f459cf855ee92b5188bc6d9e5 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 13 Dec 2019 13:35:25 +1000 +Subject: [PATCH] keysym: handle ssharp in XConvertCase() + +lowercase: LATIN SMALL LETTER SHARP S (U+00DF) +uppercase: LATIN CAPITAL LETTER SHARP S (U+1E9E) + +The uppercase sharp s (XK_ssharp) is a relatively recent addition to unicode +but was added to the relevant keyboard layouts in xkeyboard-config-2.25 +(d1411e5e95c) +https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/issues/144 + +Alas, the CapsLock behavior was broken on the finnish layout (maybe others). +This was due XConvertCase() never returning the uppercase characters. + +Let's make this function return the right lower/upper symbols for the sharp s +and hope that the world won't get any worse because of it. + +Corresponding Xlib patch: +https://gitlab.freedesktop.org/xorg/lib/libx11/issues/110 +--- + src/keysym.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/keysym.c b/src/keysym.c +index 6d06de0..f3a196b 100644 +--- a/src/keysym.c ++++ b/src/keysym.c +@@ -478,6 +478,8 @@ UCSConvertCase(uint32_t code, xkb_keysym_t *lower, xkb_keysym_t *upper) + *upper = 0x0178; + else if (code == 0x00b5) /* micro sign */ + *upper = 0x039c; ++ else if (code == 0x00df) /* ssharp */ ++ *upper = 0x1e9e; + return; + } + +@@ -607,6 +609,8 @@ UCSConvertCase(uint32_t code, xkb_keysym_t *lower, xkb_keysym_t *upper) + } + else if (code == 0x1e9b) + *upper = 0x1e60; ++ else if (code == 0x1e9e) ++ *lower = XKB_KEY_ssharp; + } + + /* Greek Extended, U+1F00 to U+1FFF */ +-- +2.23.0 + diff --git a/libxkbcommon.spec b/libxkbcommon.spec index 54e0157..518cdcb 100644 --- a/libxkbcommon.spec +++ b/libxkbcommon.spec @@ -2,7 +2,7 @@ Name: libxkbcommon Version: 0.9.1 -Release: 2%{?gitdate:.%{gitdate}}%{?dist} +Release: 3%{?gitdate:.%{gitdate}}%{?dist} Summary: X.Org X11 XKB parsing library License: MIT URL: http://www.x.org @@ -14,6 +14,8 @@ Source0: http://xkbcommon.org/download/%{name}-%{version}.tar.xz %endif Source1: make-git-snapshot.sh +Patch01: 0001-keysym-handle-ssharp-in-XConvertCase.patch + BuildRequires: git meson BuildRequires: xorg-x11-util-macros byacc flex bison BuildRequires: xorg-x11-proto-devel libX11-devel @@ -89,6 +91,9 @@ X.Org X11 XKB keymap creation library development package %{_libdir}/pkgconfig/xkbcommon-x11.pc %changelog +* Fri Dec 13 2019 Peter Hutterer 0.9.1-3 +- convert ssharp to the correct uppercase letter + * Fri Nov 01 2019 Peter Hutterer 0.9.1-2 - drop the wayland-devel BR, we disable the wayland test programs