Hash :
66f71890
Author :
Date :
2025-03-31T08:01:29
symbols: Enable writing keysyms list as UTF-8 strings
Each Unicode code point of the string will be translated to their
respective keysym, if possible. An empty string denotes `NoSymbol`.
When such conversion is not possible, this will raise a syntax error.
This introduces the following syntax:
```c
// Empty string = `NoSymbol`
key <1> {[""]}; // NoSymbol
// Single code point = single keysym
key <2> {["é"]}; // eacute
// String = translate each code point to their respective keysym
key <3> {["sßξك🎺"]}; // {s, ssharp, Greek_xi, Arabic_kaf, U1F3BA}
// Mix string and keysyms
key <4> {[{"ξ", Greek_kappa, "β"}]}; // { Greek_xi, Greek_kappa, Greek_beta}
```
It can also be used wherever a keysym is required, e.g. in `interpret`
and `modifier_map` statements. In these cases a single keysym is expected,
so the string should contain *exactly one* Unicode code point.
Enable to write keysyms as UTF-8-encoded strings:
U+1F3BA (TRUMPET) "🎺" is converted into a
single keysym: U1F3BA. "J́" is converted to U+004A LATIN CAPITAL
LETTER J plus U+0301 COMBINING ACUTE ACCENT: {J, U0301}. "" denotes the keysym NoSymbol.
Enable to write keysyms as UTF-8-encoded strings:
- *Single* Unicode code point `U+1F3BA` (TRUMPET) `"🎺"` is converted into a
single keysym: `U1F3BA`.
- *Multiple* Unicode code points are converted to a keysym *list* where it is
allowed (i.e. in key symbols). E.g. `"J́"` is converted to U+004A LATIN CAPITAL
LETTER J plus U+0301 COMBINING ACUTE ACCENT: `{J, U0301}`.
- An empty string `""` denotes the keysym `NoSymbol`.