Keysyms: Update using latest xorgproto

For the sake of compatibility, this reintroduce some deleted keysyms and
postpone the effective deprecation of others.

xorgproto commit: fe12c5102762afcbf852e50dcbbdea2ef625570c

Also added tests for some canonical names.
master
Pierre Le Marre 2024-02-05 08:57:35 +01:00 committed by Wismill
parent efdb05d193
commit 382f6d2d5e
5 changed files with 3903 additions and 3859 deletions

View File

@ -115,6 +115,7 @@ SOFTWARE.
* that match one of these Perl regular expressions:
*
* /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U\+([0-9A-F]{4,6}) (.*) \*\/\s*$/
* /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*<U\+([0-9A-F]{4,6}) (.*)>\*\/\s*$/
* /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U\+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
* /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
*
@ -138,6 +139,24 @@ SOFTWARE.
* - the protocol specification in specs/keysyms.xml in this repo
* https://gitlab.freedesktop.org/xorg/proto/xorgproto
*
* Before removing or changing the order of the keysyms, please consider
* the following: it is very difficult to know what keysyms are used and
* how.
*
* - A sandboxed application may have incompatibilities with the host
* system. For example, if new keysym name is introduced and is made
* the canonical name, then an application with an older keysym parser
* will not be able to parse the new name.
* - Customization of keyboard layout and Compose files are two popular
* use cases. Checking the standard keyboard layout database xkeyboard-config
* https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config
* and the standard Compose files in libx11
* https://gitlab.freedesktop.org/xorg/lib/libx11 is a mandatory
* step, but may *not* be enough for a proper impact assessment for
* e.g. keysyms removals.
*
* Therefore, it is advised to proceed to no removal and to make a new
* name canonical only 10 years after its introduction.
*/
#define XKB_KEY_VoidSymbol 0xffffff /* Void symbol */
@ -439,6 +458,12 @@ SOFTWARE.
#define XKB_KEY_dead_belowcomma 0xfe6e
#define XKB_KEY_dead_currency 0xfe6f
/* extra dead elements for German T3 layout */
#define XKB_KEY_dead_lowline 0xfe90
#define XKB_KEY_dead_aboveverticalline 0xfe91
#define XKB_KEY_dead_belowverticalline 0xfe92
#define XKB_KEY_dead_longsolidusoverlay 0xfe93
/* dead vowels for universal syllable entry */
#define XKB_KEY_dead_a 0xfe80
#define XKB_KEY_dead_A 0xfe81
@ -450,10 +475,10 @@ SOFTWARE.
#define XKB_KEY_dead_O 0xfe87
#define XKB_KEY_dead_u 0xfe88
#define XKB_KEY_dead_U 0xfe89
#define XKB_KEY_dead_small_schwa 0xfe8a /* deprecated, use dead_schwa instead */
#define XKB_KEY_dead_capital_schwa 0xfe8b /* deprecated, use dead_SCHWA instead */
#define XKB_KEY_dead_schwa 0xfe8a
#define XKB_KEY_dead_SCHWA 0xfe8b
#define XKB_KEY_dead_small_schwa 0xfe8a /* deprecated, remove in 2025 */
#define XKB_KEY_dead_capital_schwa 0xfe8b /* deprecated, remove in 2025 */
#define XKB_KEY_dead_greek 0xfe8c
#define XKB_KEY_dead_hamza 0xfe8d
@ -668,8 +693,8 @@ SOFTWARE.
#define XKB_KEY_diaeresis 0x00a8 /* U+00A8 DIAERESIS */
#define XKB_KEY_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */
#define XKB_KEY_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */
#define XKB_KEY_guillemotleft 0x00ab /* deprecated misspelling. Use guillemetleft instead. */
#define XKB_KEY_guillemetleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XKB_KEY_guillemotleft 0x00ab /* deprecated misspelling */
#define XKB_KEY_notsign 0x00ac /* U+00AC NOT SIGN */
#define XKB_KEY_hyphen 0x00ad /* U+00AD SOFT HYPHEN */
#define XKB_KEY_registered 0x00ae /* U+00AE REGISTERED SIGN */
@ -684,10 +709,10 @@ SOFTWARE.
#define XKB_KEY_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */
#define XKB_KEY_cedilla 0x00b8 /* U+00B8 CEDILLA */
#define XKB_KEY_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */
#define XKB_KEY_masculine 0x00ba /* deprecated inconsistent name (see ordfeminine), use ordmasculine instead */
#define XKB_KEY_ordmasculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */
#define XKB_KEY_masculine 0x00ba /* deprecated inconsistent name */
#define XKB_KEY_guillemotright 0x00bb /* deprecated misspelling. Use guillemotright instead. */
#define XKB_KEY_guillemetright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XKB_KEY_guillemotright 0x00bb /* deprecated misspelling */
#define XKB_KEY_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */
#define XKB_KEY_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */
#define XKB_KEY_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */

View File

@ -69,7 +69,7 @@
/** Maximum keysym value with explicit name */
#define XKB_KEYSYM_MAX_EXPLICIT 0x1008ffb8
/** Count of keysym value with explicit name */
#define XKB_KEYSYM_COUNT_EXPLICIT 2442
#define XKB_KEYSYM_COUNT_EXPLICIT 2446
/** Offset to use when converting a Unicode code point to a keysym */
#define XKB_KEYSYM_UNICODE_OFFSET 0x01000000
/** Minimum Unicode keysym. NOTE: code points in 0..0xff cannot be converted. */

File diff suppressed because it is too large Load Diff

View File

@ -1093,7 +1093,7 @@ xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
symbols[Group1]= [ 2, at ],
symbols[Group2]= [ 2, quotedbl ],
symbols[Group3]= [ 2, at, at, NoSymbol, twosuperior, NoSymbol, NoSymbol, NoSymbol ],
symbols[Group4]= [ 2, section, twosuperior, twosubscript, ordmasculine, NoSymbol, logicalor, NoSymbol ]
symbols[Group4]= [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ]
};
key <AE03> {
type[Group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
@ -1109,7 +1109,7 @@ xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
symbols[Group1]= [ 4, dollar ],
symbols[Group2]= [ 4, semicolon ],
symbols[Group3]= [ 4, dollar, cent, NoSymbol, onequarter, currency, NoSymbol, NoSymbol ],
symbols[Group4]= [ 4, guillemetright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ]
symbols[Group4]= [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ]
};
key <AE05> {
type[Group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
@ -1117,7 +1117,7 @@ xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
symbols[Group1]= [ 5, percent ],
symbols[Group2]= [ 5, percent ],
symbols[Group3]= [ 5, percent, currency, NoSymbol, onehalf, threeeighths, NoSymbol, NoSymbol ],
symbols[Group4]= [ 5, guillemetleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ]
symbols[Group4]= [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ]
};
key <AE06> {
type[Group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
@ -1442,7 +1442,7 @@ xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
type[Group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
symbols[Group1]= [ z, Z ],
symbols[Group2]= [ Cyrillic_ya, Cyrillic_YA ],
symbols[Group3]= [ z, Z, guillemetleft, NoSymbol ],
symbols[Group3]= [ z, Z, guillemotleft, NoSymbol ],
symbols[Group4]= [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ]
};
key <AB02> {
@ -1452,7 +1452,7 @@ xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
type[Group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
symbols[Group1]= [ x, X ],
symbols[Group2]= [ Cyrillic_che, Cyrillic_CHE ],
symbols[Group3]= [ x, X, guillemetright, NoSymbol ],
symbols[Group3]= [ x, X, guillemotright, NoSymbol ],
symbols[Group4]= [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ]
};
key <AB03> {
@ -1502,7 +1502,7 @@ xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
type[Group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
symbols[Group1]= [ m, M ],
symbols[Group2]= [ Cyrillic_softsign, Cyrillic_SOFTSIGN ],
symbols[Group3]= [ m, M, mu, NoSymbol, mu, ordmasculine, NoSymbol, NoSymbol ],
symbols[Group3]= [ m, M, mu, NoSymbol, mu, masculine, NoSymbol, NoSymbol ],
symbols[Group4]= [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ]
};
key <AB08> {

View File

@ -464,6 +464,13 @@ main(void)
assert(test_keysym(0x0, "NoSymbol"));
assert(test_keysym(0x1008FE20, "XF86Ungrab"));
assert(test_keysym(XKB_KEYSYM_UNICODE_OFFSET, "0x01000000"));
/* Canonical names */
assert(test_keysym(XKB_KEY_Henkan, "Henkan_Mode"));
assert(test_keysym(XKB_KEY_ISO_Group_Shift, "Mode_switch"));
assert(test_keysym(XKB_KEY_dead_perispomeni, "dead_tilde"));
assert(test_keysym(XKB_KEY_guillemetleft, "guillemotleft"));
assert(test_keysym(XKB_KEY_ordmasculine, "masculine"));
assert(test_keysym(XKB_KEY_Greek_lambda, "Greek_lamda"));
/* Min Unicode */
assert(test_keysym(XKB_KEYSYM_UNICODE_MIN, "U0100"));
assert(test_keysym(0x01001234, "U1234"));