keysyms: Add sharp S upper case mapping exception #551
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The case mapping
ssharp
ß ↔U1E9E
ẞ was added in 13b30f4 but was broken:0x10000df
, which it an invalid Unicode keysym.It did accidentally enable the detection of alphabetic key type for the pair (ß, ẞ) though. However this detection was accidentally removed in 5c7c799 (v1.7) with an attempt to fix the wrong keysym case mapping. Finally both the lower case mapping and the key type detection were fixed for good when we implemented the complete Unicode simple case mappings and corresponding tests in e83d08d.
However, the upper case mapping
ssharp
→U1E9E
remained disabled. Indeed, ẞ is a relatively recent addition to Unicode (2008) and had no official recommendation, until recently. So while the lower mapping ẞ→ß exists in Unicode, its converse upper mapping does not. Yet since 2017 the Council for German Orthography (Rat für deutsche Rechtschreibung) recommends1 ẞ as the capitalization of ß.Due to its stability policies, the Unicode Character Database (UCD) that we use to generate our keysym case mapping (via ICU) cannot update the simple case mapping of ß. Discussions are currently ongoing in the Unicode mailing list2 and CLDR3 about how to deal with the new recommended case mapping. However, the discussions are oriented on text-processing and compatibility mappings, while libxkbcommon is on a rather lower level.
It seems that the slow adoption of ẞ is partly due to the difficulty to type it. Since ẞ is used only for ALL CAPS casing, the expectation is to type it using CapsLock. While our detection of alphabetic key types works well4 for the pair (ß,ẞ), the internal capitalization currently does not work and is fixed by this commit.
Added the ß → ẞ upper mapping:
xkbcommon.h
Fixes #550
Footnotes
https://www.rechtschreibrat.com/regeln-und-woerterverzeichnis/ ↩
https://corp.unicode.org/pipermail/unicode/2024-November/011162.html ↩
https://unicode-org.atlassian.net/browse/CLDR-17624 ↩
Except libxkbcommon 1.7, see the second paragraph. ↩