Skip to content

Appendix A. Default Symbol Transformations

Interpreting the Control Modifier

If the Control modifier is not consumed by the symbol lookup process, routines that determine the symbol and string that correspond to an event should convert the symbol to a string as defined in the table below. Only the string to be returned is affected by the Control modifier; the symbol is not changed.

This table lists the decimal value of the standard control characters that correspond to some keysyms for ASCII characters. Control characters for symbols not listed in this table are application-specific.

KeysymsValueKeysymsValueKeysymsValueKeysymsValue
atsign0h, H8p, P16x, X24
a, A1i, I9q, Q17y, Y25
b, B2j, J10r, R18z, Z26
c, C3k, K11s, S19left_bracket27
d, D4l, L12t, T20backslash28
e, E5m, M13u, U21right_bracket29
f, F6n, N14v, V22asciicircum30
g, G8o, O15w, W23underbar31

Interpreting the Lock Modifier

If the Lock modifier is not consumed by the symbol lookup process, routines that determine the symbol and string that correspond to an event should capitalize the result. Unlike the transformation for Control , the capitalization transformation changes both the symbol and the string returned by the event.

Locale-Sensitive Capitalization

If Lock is set in an event and not consumed, applications should capitalize the string and symbols that result from an event according to the capitalization rules in effect for the system on which the application is running, taking the current state of the user environment (e.g. locale) into account.

Locale-Insensitive Capitalization

XKB recommends but does not require locale-sensitive capitalization. In cases where the locale is unknown or where locale-sensitive capitalization is prohibitively expensive, applications can capitalize according to the rules defined in this extension.

The following tables list all of the keysyms for which XKB defines capitalization behavior. Any keysyms not explicitly listed in these tables are not capitalized by XKB when locale-insensitive capitalization is in effect and are not automatically assigned the ALPHABETIC type as described in the Alphabetic Key Type.

Capitalization Rules for Latin-1 Keysyms

This table lists the Latin-11 keysyms for which XKB defines upper and lower case:

Lower CaseUpper CaseLower CaseUpper CaseLower CaseUpper CaseLower CaseUpper Case
aAoOacircumflexAcircumflexethETH
bBpPadiaeresisAdiaeresisntildeNtilde
cCqQatildeAtildeograveOgrave
dDrRaringAringoacuteOacute
eEsSaeAEocircumflexOcircumflex
fFtTccedillaCcedillaotildeOtilde
gGuUegraveEgraveodiaeresisOdiaeresis
hHvVeacuteEacuteoslashOoblique
iIwWecircumflexEcircumflexugraveUgrave
jJxXediaeresisEdiaeresisuacuteUacute
kKyYigraveIgraveucircumflexUcircumflex
lLzZiacuteIacuteudiaeresisUdiaeresis
mMagraveAgraveicircumflexIcircumflexyacuteYacute
nNaacuteAacuteidiaeresisIdiaeresisthornTHORN

Capitalization Rules for Latin-2 Keysyms

This table lists the Latin-2 keysyms for which XKB defines upper and lower case:

Lower CaseUpper CaseLower CaseUpper CaseLower CaseUpper Case
aogonekAogonekzabovedotZabovedotdstrokeDstroke
lstrokeLstrokeracuteRacutenacuteNacute
lcaronLcaronabreveAbrevencaronNcaron
sacuteSacutelacuteLacuteodoubleacuteOdoubleacute
scaronScaroncacuteCacutercaronRcaron
scedillaScedillaccaronCcaronuaboveringUabovering
tcaronTcaroneogonekEogonekudoubleacuteUdoubleacute
zacuteZacuteecaronEcarontcedillaTcedilla
zcaronZcarondcaronDcaron

Capitalization Rules for Latin-3 Keysyms

This table lists the Latin-3 keysyms for which XKB defines upper and lower case:

Lower CaseUpper CaseLower CaseUpper CaseLower CaseUpper Case
hstrokeHstrokejcircumflexJcircumflexgcircumflexGcircumflex
hcircumflexHcircumflexcabovedotCabovedotubreveUbreve
idotlessIabovedotccircumflexCcircumflexscircumflexScircumflex
gbreveGbrevegabovedotGabovedot

Capitalization Rules for Latin-4 Keysyms

This table lists the Latin-4 keysyms for which XKB defines upper and lower case:

Lower CaseUpper CaseLower CaseUpper CaseLower CaseUpper Case
rcedillaRcedillaengENGomacronOmacron
itildeItildeamacronAmacronkcedillaKcedilla
lcedillaLcedillaiogonekIogonekuogonekUogonek
emacronEmacroneabovedoteabovedotutildeUtilde
gcedillaGcedillaimacronImacronumacronUmacron
tslashTslashncedillaNcedilla

Capitalization Rules for Cyrillic Keysyms

This table lists the Cyrillic keysyms for which XKB defines upper and lower case:

Lower CaseUpper CaseLower CaseUpper Case
Serbian_djeSerbian_DJECyrillic_iCyrillic_I
Macedonia_gjeMacedonia_GJECyrillic_shortiCyrillic_SHORTI
Cyrillic_ioCyrillic_IOCyrillic_kaCyrillic_KA
Ukrainian_ieUkrainian_IECyrillic_elCyrillic_EL
Macedonia_dseMacedonia_DSECyrillic_emCyrillic_EM
Ukrainian_iUkrainian_ICyrillic_enCyrillic_EN
Ukrainian_yiUkrainian_YICyrillic_oCyrillic_O
Cyrillic_jeCyrillic_JECyrillic_peCyrillic_PE
Cyrillic_ljeCyrillic_LJECyrillic_yaCyrillic_YA
Cyrillic_njeCyrillic_NJECyrillic_erCyrillic_ER
Serbian_tsheSerbian_TSHECyrillic_esCyrillic_ES
Macedonia_kjeMacedonia_KJECyrillic_teCyrillic_TE
Byelorussian_shortuByelorussian_SHORTUCyrillic_uCyrillic_U
Cyrillic_dzheCyrillic_DZHECyrillic_zheCyrillic_ZHE
Cyrillic_yuCyrillic_YUCyrillic_veCyrillic_VE
Cyrillic_aCyrillic_ACyrillic_softsignCyrillic_SOFTSIGN
Cyrillic_beCyrillic_BECyrillic_yeruCyrillic_YERU
Cyrillic_tseCyrillic_TSECyrillic_zeCyrillic_ZE
Cyrillic_deCyrillic_DECyrillic_shaCyrillic_SHA
Cyrillic_ieCyrillic_IECyrillic_eCyrillic_E
Cyrillic_efCyrillic_EFCyrillic_shchaCyrillic_SHCHA
Cyrillic_gheCyrillic_GHECyrillic_cheCyrillic_CHE
Cyrillic_haCyrillic_HACyrillic_hardsignCyrillic_HARDSIGN

Capitalization Rules for Greek Keysyms

This table lists the Greek keysyms for which XKB defines upper and lower case:

Lower CaseUpper CaseLower CaseUpper Case
Greek_omegaaccentGreek_OMEGAACCENTGreek_iotaGreek_IOTA
Greek_alphaaccentGreek_ALPHAACCENTGreek_kappaGreek_KAPPA
Greek_epsilonaccentGreek_EPSILONACCENTGreek_lamdaGreek_LAMDA
Greek_etaaccentGreek_ETAACCENTGreek_lambdaGreek_LAMBDA
Greek_iotaaccentGreek_IOTAACCENTGreek_muGreek_MU
Greek_iotadieresisGreek_IOTADIERESISGreek_nuGreek_NU
Greek_omicronaccentGreek_OMICRONACCENTGreek_xiGreek_XI
Greek_upsilonaccentGreek_UPSILONACCENTGreek_omicronGreek_OMICRON
Greek_upsilondieresisGreek_UPSILONDIERESISGreek_piGreek_PI
Greek_alphaGreek_ALPHAGreek_rhoGreek_RHO
Greek_betaGreek_BETAGreek_sigmaGreek_SIGMA
Greek_gammaGreek_GAMMAGreek_tauGreek_TAU
Greek_deltaGreek_DELTAGreek_upsilonGreek_UPSILON
Greek_epsilonGreek_EPSILONGreek_phiGreek_PHI
Greek_zetaGreek_ZETAGreek_chiGreek_CHI
Greek_etaGreek_ETAGreek_psiGreek_PSI
Greek_thetaGreek_THETAGreek_omegaGreek_OMEGA

Capitalization Rules for Other Keysyms

XKB defines no capitalization rules for symbols in any other set of keysyms provided by the consortium. Applications are free to apply additional rules for private keysyms or for other keysyms not covered by XKB.