libxkbcommon/0001-keysym-handle-ssharp-in-XConvertCase.patch
2019-12-13 13:59:19 +10:00

51 lines
1.7 KiB
Diff

From adaf6072aeb4048f459cf855ee92b5188bc6d9e5 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
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