53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
From 4e08eddcbd4ce67fc3879ac9ed67a9c75ef99780 Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Wed, 11 Dec 2019 14:12:27 +1000
|
|
Subject: [PATCH libX11] 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 to xkbcomp using XConvertCase() to determine whether a key
|
|
requires the type FOUR_LEVEL_ALPHABETIC or FOUR_LEVEL_SEMIALPHABETIC.
|
|
|
|
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.
|
|
|
|
https://gitlab.freedesktop.org/xorg/lib/libx11/issues/110
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
---
|
|
src/KeyBind.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/src/KeyBind.c b/src/KeyBind.c
|
|
index d7c78b37..225581ca 100644
|
|
--- a/src/KeyBind.c
|
|
+++ b/src/KeyBind.c
|
|
@@ -466,6 +466,8 @@ UCSConvertCase( register unsigned code,
|
|
*upper = 0x0178;
|
|
else if (code == 0x00b5) /* micro sign */
|
|
*upper = 0x039c;
|
|
+ else if (code == 0x00df) /* ssharp */
|
|
+ *upper = 0x1e9e;
|
|
return;
|
|
}
|
|
|
|
@@ -595,6 +597,8 @@ UCSConvertCase( register unsigned code,
|
|
}
|
|
else if (code == 0x1e9b)
|
|
*upper = 0x1e60;
|
|
+ else if (code == 0x1e9e)
|
|
+ *lower = XK_ssharp;
|
|
}
|
|
|
|
/* Greek Extended, U+1F00 to U+1FFF */
|
|
--
|
|
2.23.0
|
|
|