1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Note: conformsTo= references a previous release here, 4 because this keyboard does not depend on schema or data from later CLDR versions. 5--> 6<keyboard3 xmlns="https://schemas.unicode.org/cldr/45/keyboard3" conformsTo="45" 7 locale="fr"> 8 <version number="1.0.0" /> 9 10 <info author="Team Keyboard" name="Français normalisé (AZERTY)" layout="AZERTY" indicator="FR" /> 11 12 <displays> 13 <!-- display for diacritics --> 14 <display output="\u0300" display="${grave}" /> 15 <display output="\m{acute}" display="´" /> 16 <display output="\m{grave}" display="`" /> 17 <display output="\m{umlaut}" display="¨" /> 18 <display output="\m{caret}" display="^" /> 19 <display output="\m{tilde}" display="~" /> 20 <display output="\m{invbreve}" display="\u{20}\u{0311}" /> 21 22 <!-- display for 'mode' keys --> 23 <display keyId="mark-currency" display="\u{00A4}" /> 24 <display keyId="mark-greek" display="\u{B5}" /> 25 <display keyId="mark-euro" display="Eu" /> 26 </displays> 27 28 <keys> 29 <import base="cldr" path="45/keys-Zyyy-punctuation.xml" /> 30 <import base="cldr" path="45/keys-Zyyy-currency.xml" /> 31 32 <!-- deadkeys --> 33 <key id="mark-acute" output="\m{acute}" /> 34 <key id="mark-breve" output="\m{breve}" /> 35 <key id="mark-caret" output="\m{caret}" /> 36 <key id="mark-caron" output="\m{caron}" /> 37 <key id="mark-cedilla" output="\m{cedilla}" /> 38 <key id="mark-invbreve" output="\m{invbreve}" /> 39 <key id="mark-comma" output="\m{comma}" /> 40 <key id="mark-currency" output="\m{currency}" /> 41 <key id="mark-dotabove" output="\m{dotabove}" /> 42 <key id="mark-dotbelow" output="\m{dotbelow}" /> 43 <key id="mark-doubleacute" output="\m{doubleacute}" /> 44 <key id="mark-doublegrave" output="\m{doublegrave}" /> 45 <key id="mark-euro" output="\m{euro}" /> 46 <key id="mark-grave" output="\m{grave}" /> 47 <key id="mark-macron" output="\m{macron}" /> 48 <key id="mark-ogonek" output="\m{ogonek}" /> 49 <key id="mark-ring" output="\m{ring}" /> 50 <key id="mark-greek" output="\m{greek}" /> 51 <key id="mark-solidus" output="\m{solidus}" /> 52 <key id="mark-stroke" output="\m{stroke}" /> 53 <key id="mark-submacron" output="\m{submacron}" /> 54 <key id="mark-tilde" output="\m{tilde}" /> 55 <key id="mark-umlaut" output="\m{umlaut}" /> 56 57 <!-- spaces --> 58 <key id="nbsp" output="\u{A0}" /> 59 <key id="nnbsp" output="\u{202F}" /> 60 61 <!-- extra keys --> 62 <key id="e-grave" output="è" /> 63 <key id="e-acute" output="é" /> 64 <key id="c-cedilla" output="ç" /> 65 <key id="a-acute" output="á" /> 66 <key id="a-grave" output="à" /> 67 <key id="e-caret" output="ê" /> 68 69 <!-- extra symbols --> 70 <key id="bullet" output="•" /> 71 <key id="umlaut" output="¨" /> 72 <key id="sub-2" output="₂" /> 73 <key id="super-2" output="²" longPressKeyIds="sub-2" /> 74 <key id="en-dash" output="–" /> 75 <key id="plus-minus" output="±" /> 76 <key id="vulgar-half" output="½" /> 77 <key id="vulgar-quarter" output="¼" /> 78 <key id="ellipsis" output="…" /> 79 <key id="open-apos" output="‘" /> 80 <key id="close-apos" output="’" /> 81 <key id="open-g" output="«" /> 82 <key id="close-g" output="»" /> 83 84 <key id="theta" output="θ" /> <!-- "for Romani" --> 85 <key id="Theta" output="ϴ" /> <!-- "for Romani" --> 86 <key id="tm" output="™" /> 87 <key id="open-double" output="“" /> 88 <key id="close-double" output="”" /> 89 <key id="oe" output="œ" /> 90 <key id="Oe" output="Œ" /> 91 <key id="registered" output="®" /> 92 <key id="minus-sign" output="−" /> 93 <key id="ss" output="ß" /> 94 <key id="infinity" output="∞" /> 95 <key id="division" output="÷" /> 96 <key id="less-equal" output="⩽" /> 97 <key id="greater-equal" output="⩾" /> 98 <key id="copy" output="©" /> 99 <key id="inverse-question" output="¿" /> 100 <key id="inverse-bang" output="¡" /> 101 <key id="middle-dot" output="•" /> 102 <key id="A-grave" output="À" /> 103 <key id="E-acute" output="É" /> 104 <key id="E-caret" output="Ê" /> 105 <key id="em-dash" output="—" /> 106 <key id="open-single" output="’" /> 107 <key id="close-single" output="’" /> 108 <key id="u-grave" output="Ù" /> 109 <key id="radix" output="√" /> 110 <key id="C-cedilla" output="Ç" /> 111 <key id="not-equal" output="≠" /> 112 <key id="open-angle-quote" output="‹" /> 113 <key id="close-angle-quote" output="›" /> 114 115 <key id="E-grave" output="È" /> 116 <key id="U-grave" output="Ù" /> 117 <key id="nb-hyphen" output="‑" /> 118 <key id="multiplication" output="×" /> 119 <key id="ezh" output="ʒ" /> 120 <key id="Ezh" output="Ʒ" /> 121 <key id="ae" output="æ" /> 122 <key id="Ae" output="Æ" /> 123 <key id="permille" output="‰" /> 124 <key id="dbl-dagger" output="‡" /> 125 <key id="dagger" output="†" /> 126 <key id="asym-equal" output="≃" /> 127 <key id="Ss" output="ẞ" /> 128 </keys> 129 130 <layers formId="iso"> 131 <layer modifiers="none"> 132 <row 133 keys="at a-grave e-acute e-grave e-caret open-paren close-paren open-apos close-apos open-g close-g apos mark-caret" /> 134 <row keys="a z e r t y u i o p hyphen plus" /> 135 <row keys="q s d f g h j k l m slash asterisk" /> 136 <row keys="open-angle w x c v b n period comma colon semi-colon" /> 137 <row keys="space" /> 138 </layer> 139 140 <layer modifiers="shift"> 141 <row keys="hash 1 2 3 4 5 6 7 8 9 0 double-quote mark-umlaut" /> 142 <row keys="A Z E R T Y U I O P en-dash plus-minus" /> 143 <row keys="Q S D F G H J K L M backslash vulgar-half" /> 144 <row keys="close-angle W X C V B N question bang ellipsis equal" /> 145 <row keys="space" /> 146 </layer> 147 <!-- layer is for AltGr - for now we use ctrl alt --> 148 <layer modifiers="ctrl alt"> 149 <row 150 keys="mark-breve section mark-acute mark-grave amp open-square close-square mark-macron underscore open-double close-double degree mark-caron" /> 151 <row 152 keys="ae pound euro registered open-curly close-curly u-grave mark-dotabove oe percent minus-sign dagger" /> 153 <row 154 keys="theta ss dollar mark-currency mark-greek mark-euro gap mark-solidus pipe infinity division multiplication" /> 155 <row 156 keys="less-equal ezh copy c-cedilla mark-cedilla mark-stroke mark-tilde inverse-question inverse-bang middle-dot asym-equal" /> 157 <row keys="nbsp" /> 158 </layer> 159 160 <layer modifiers="ctrl alt shift"> 161 <row 162 keys="mark-invbreve A-grave E-acute E-grave E-caret mark-doubleacute mark-doublegrave gap em-dash open-angle-quote close-angle-quote mark-ring gap" /> 163 <row keys="Ae gap gap gap tm gap U-grave mark-dotbelow Oe permille nb-hyphen dbl-dagger" /> 164 <row keys="Theta Ss gap gap gap mark-submacron gap gap gap gap radix vulgar-quarter" /> 165 <row 166 keys="greater-equal Ezh gap C-cedilla mark-ogonek gap gap gap mark-comma gap not-equal" /> 167 <row keys="nnbsp" /> 168 </layer> 169 </layers> 170 171 <variables> 172 <!-- spacing accents as string variables --> 173 <string id="grave" value="`" /> 174 <string id="caret" value="^" /> 175 <string id="umlaut" value="¨" /> 176 <string id="tilde" value="~" /> 177 178 <!-- sets representing vowels and accented vowels. --> 179 <!-- There's an extra space between the lower and upper case for visual separation --> 180 <!-- but, there are only 10 vowels in the following four sets --> 181 <!-- plus space at end for the visible version --> 182 <set id="vowel" value="a e i o u A E I O U" /> 183 184 <!-- everything that should take an accented combining char --> 185 <set id="upaccentable" value="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ʒ Æ Œ" /> 186 <set id="lwaccentable" value="a b c d e f g h i j k l m n o p q r s t u v w x y z ʒ æ œ" /> 187 <set id="accentable" value="$[upaccentable] $[lwaccentable]" /> 188 189 <!-- currency key from/to --> 190 <set id="currfrom" value="e r t y p s d f g h k l m w c b n A R T P S D F L M C B" /> 191 <set id="currto" value="₠ ₽ ₸ ¥ ₱ ₪ ₫ ƒ ₲ ₴ ₭ ₺ ₥ ₩ ¢ ₿ ₦ ₳ ₹ ₮ ₧ ₷ ₯ ₣ ₤ ℳ ₡ ﺀ" /> 192 193 <!-- greek from/to: deviating from spec, uppercase final sigma (X) is encoded as another Σ --> 194 <set id="greekfrom" 195 value="a z e r u i o p s d g h j k l m x b n A Z E R U I O P S D G H J K L M X B N" /> 196 <set id="greekto" 197 value="α ζ ε ρ θ ι ο π σ δ γ η ξ κ λ μ ς β ν Α Ζ Ε Ρ Θ Ι Ο Π Σ Δ Γ Η Ξ Κ Λ Μ Σ Β Ν" /> 198 199 <!-- euro key from/to --> 200 <set id="eurofrom" value="a e t i o s d g j ‘ ’ « » ' E T I D G J 7 8 9 0" /> 201 <set id="euroto" value="ª ə þ ı º ſ ð ŋ ij ‚ ‘ „ ‟ ’ Ə Þ İ Đ Ŋ IJ › ‹ » «" /> 202 203 <!-- numbers --> 204 <set id="digits" value="0 1 2 3 4 5 6 7 8 9" /> 205 <set id="superdigits" value="⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹" /> 206 <set id="subdigits" value="₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉" /> 207 </variables> 208 209 <transforms type="simple"> 210 <transformGroup> 211 <!-- super/sub digits --> 212 <transform from="\m{breve}($[digits])" to="$[1:superdigits]" /> 213 <transform from="\m{invbreve}($[digits])" to="$[1:subdigits]" /> 214 215 <!-- special cases - any more of these? --> 216 <transform from="\m{dotabove}i" to="ı" /> 217 218 <!-- match accentables with combining marks --> 219 <transform from="\m{breve}($[accentable])" to="$1\u{0306}" /> 220 <transform from="\m{umlaut}($[accentable])" to="$1\u{0308}" /> 221 <transform from="\m{invbreve}($[accentable])" to="$1\u{0311}" /> 222 <transform from="\m{acute}($[accentable])" to="$1\u{0301}" /> 223 <transform from="\m{caret}($[accentable])" to="$1\u{0302}" /> 224 <transform from="\m{caron}($[accentable])" to="$1\u{030c}" /> 225 <transform from="\m{cedilla}($[accentable])" to="$1\u{0327}" /> 226 <transform from="\m{comma}($[accentable])" to="$1\u{0326}" /> 227 <transform from="\m{dotabove}($[accentable])" to="$1\u{0307}" /> 228 <transform from="\m{dotbelow}($[accentable])" to="$1\u{0323}" /> 229 <transform from="\m{doubleacute}($[accentable])" to="$1\u{030b}" /> 230 <transform from="\m{doublegrave}($[accentable])" to="$1\u{030f}" /> 231 <transform from="\m{grave}($[accentable])" to="$1\u{0300}" /> 232 <transform from="\m{macron}($[accentable])" to="$1\u{0304}" /> 233 <transform from="\m{ogonek}($[accentable])" to="$1\u{0328}" /> 234 <transform from="\m{ring}($[accentable])" to="$1\u{030a}" /> 235 <transform from="\m{solidus}($[accentable])" to="$1\u{338}" /> 236 <transform from="\m{stroke}($[accentable])" to="$1\u{0335}" /> 237 <transform from="\m{submacron}($[accentable])" to="$1\u{0331}" /> 238 <transform from="\m{tilde}($[accentable])" to="$1\u{0303}" /> 239 240 <!-- curr/greek/euro layer for hardware --> 241 <transform from="\m{currency}($[currfrom])" to="$[1:currto]" /> 242 <transform from="\m{greek}\m{greek}" to="\u{B5}" /> 243 <transform from="\m{greek}($[greekfrom])" to="$[1:greekto]" /> 244 <transform from="\m{euro}($[eurofrom])" to="$[1:euroto]" /> 245 246 <!-- these are harder to see because they are from AltGr and AltGr+Shift layers --> 247 <transform from="\m{currency}®" to="₨" /> <!-- AltGr-R --> 248 <transform from="\m{currency}%" to="₰" /> <!-- AltGr-P --> 249 <transform from="\m{currency}\|" to="₾" /> <!-- AltGr-L - note pipe is escaped --> 250 <transform from="\m{currency}∞" to="₼" /> <!-- AltGr-M --> 251 <transform from="\m{currency}ç" to="₢" /> <!-- AltGr-C --> 252 <transform from="\m{currency}\m{currency}" to="¤" /> <!-- AltGr-Shift-E --> 253 <transform from="\m{currency}Ç" to="₵" /> <!-- AltGr-Shift-C (Cedi sign) --> 254 </transformGroup> 255 <!-- now, cleanup --> 256 <transformGroup> 257 <!-- catch-all: drop any marker that didn't otherwise match before a char --> 258 <transform from="\m{.}(.)" to="$1" /> 259 <!-- not defined, so drop double euro --> 260 <transform from="\m{euro}\m{euro}" /> 261 </transformGroup> 262 </transforms> 263</keyboard3> 264