1// 2// X keyboard maps for Finland 3// 4// SFS 5966 / Kotoistus keymap created by Troy Korjuslommi 5// Classic keymap based on traditional by Marko Myllynen 6// Eliminate deadkeys alternative sent by Linus Torvalds 7// 8 9default partial alphanumeric_keys 10xkb_symbols "kotoistus" { 11 12 // Official keymap for Finland based on SFS 5966:2019 standard 13 // 14 // This keymap implements all the functionality of Annex 1 15 // of the standard and additionally defines the following to 16 // allow entering these characters with keyboards without LSGT. 17 // 18 // AE08+4 : U+003C LESS-THAN SIGN (less) 19 // AE09+4 : U+003E GREATER-THAN SIGN (greater) 20 // AD08+4 : U+007C VERTICAL LINE (bar) 21 // 22 // Annex 3 of the standard is implemented in fi_FI.UTF-8/Compose. 23 // 24 // This keymap implements regular space in position "A-3" of the 25 // standard and implements NARROW NO-BREAK SPACE (U+202F) in A-4. 26 // 27 // The following definitions are also included to allow entering 28 // Greek letters and currency symbols with the libX11 sequences. 29 // 30 // AC08+4 : dead_greek 31 // AC09+4 : dead_currency 32 33 name[Group1]="Finnish"; 34 35 key <TLDE> { [ section, onehalf, dead_stroke, NoSymbol ] }; 36 key <AE01> { [ 1, exclam, NoSymbol, exclamdown ] }; 37 key <AE02> { [ 2, quotedbl, at, rightdoublequotemark ] }; 38 key <AE03> { [ 3, numbersign, sterling, guillemotright ] }; 39 key <AE04> { [ 4, currency, dollar, guillemotleft ] }; 40 key <AE05> { [ 5, percent, permille, leftdoublequotemark ] }; 41 key <AE06> { [ 6, ampersand, singlelowquotemark, doublelowquotemark ] }; 42 key <AE07> { [ 7, slash, braceleft, NoSymbol ] }; 43 key <AE08> { [ 8, parenleft, bracketleft, less ] }; 44 key <AE09> { [ 9, parenright, bracketright, greater ] }; 45 key <AE10> { [ 0, equal, braceright, degree ] }; 46 key <AE11> { [ plus, question, backslash, questiondown ] }; 47 key <AE12> { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] }; 48 49 key <AD01> { [ q, Q, q, Q ] }; 50 key <AD02> { [ w, W, w, W ] }; 51 key <AD03> { [ e, E, EuroSign, NoSymbol ] }; 52 key <AD04> { [ r, R, r, R ] }; 53 key <AD05> { [ t, T, thorn, THORN ] }; 54 key <AD06> { [ y, Y, y, Y ] }; 55 key <AD07> { [ u, U, u, U ] }; 56 key <AD08> { [ i, I, idotless, bar ] }; 57 key <AD09> { [ o, O, oe, OE ] }; 58 key <AD10> { [ p, P, dead_horn, dead_hook ] }; 59 key <AD11> { [ aring, Aring, dead_doubleacute, dead_abovering ] }; 60 key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_macron ] }; 61 62 key <AC01> { [ a, A, schwa, SCHWA ] }; 63 key <AC02> { [ s, S, ssharp, U1E9E ] }; 64 key <AC03> { [ d, D, eth, ETH ] }; 65 key <AC04> { [ f, F, f, F ] }; 66 key <AC05> { [ g, G, g, G ] }; 67 key <AC06> { [ h, H, h, H ] }; 68 key <AC07> { [ j, J, j, J ] }; 69 key <AC08> { [ k, K, kra, dead_greek ] }; 70 key <AC09> { [ l, L, dead_stroke, dead_currency ] }; 71 key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; 72 key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; 73 key <BKSL> { [ apostrophe, asterisk, dead_caron, dead_breve ] }; 74 75 key <LSGT> { [ less, greater, bar, NoSymbol ] }; 76 key <AB01> { [ z, Z, ezh, EZH ] }; 77 key <AB02> { [ x, X, multiply, periodcentered ] }; 78 key <AB03> { [ c, C, c, C ] }; 79 key <AB04> { [ v, V, v, V ] }; 80 key <AB05> { [ b, B, b, B ] }; 81 key <AB06> { [ n, N, eng, ENG ] }; 82 key <AB07> { [ m, M, mu, emdash ] }; 83 key <AB08> { [ comma, semicolon, rightsinglequotemark, leftsinglequotemark ] }; 84 key <AB09> { [ period, colon, dead_belowdot, dead_abovedot ] }; 85 key <AB10> { [ minus, underscore, endash, dead_belowcomma ] }; 86 87 key <SPCE> { [ space, space, space, U202F ] }; 88 89 include "kpdl(comma)" 90 include "level3(ralt_switch)" 91}; 92 93partial alphanumeric_keys 94xkb_symbols "winkeys" { 95 96 include "fi(kotoistus)" 97 98 name[Group1]="Finnish (Windows)"; 99 100 include "eurosign(5)" 101}; 102 103hidden partial alphanumeric_keys 104xkb_symbols "fi" { 105 106 // Classic Finnish keyboard layout with dead keys 107 108 key <TLDE> { [ section, onehalf, onequarter, threequarters ] }; 109 key <AE01> { [ 1, exclam, exclamdown, onesuperior ] }; 110 key <AE02> { [ 2, quotedbl, at, twosuperior ] }; 111 key <AE03> { [ 3, numbersign, sterling, threesuperior ] }; 112 key <AE04> { [ 4, currency, dollar, cent ] }; 113 key <AE05> { [ 5, percent, EuroSign, masculine ] }; 114 key <AE06> { [ 6, ampersand, yen, ordfeminine ] }; 115 key <AE07> { [ 7, slash, braceleft, plusminus ] }; 116 key <AE08> { [ 8, parenleft, bracketleft, less ] }; 117 key <AE09> { [ 9, parenright, bracketright, greater ] }; 118 key <AE10> { [ 0, equal, braceright, degree ] }; 119 key <AE11> { [ plus, question, backslash, questiondown ] }; 120 key <AE12> { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] }; 121 122 key <AD01> { [ q, Q, q, Q ] }; 123 key <AD02> { [ w, W, w, W ] }; 124 key <AD03> { [ e, E, EuroSign, cent ] }; 125 key <AD04> { [ r, R, registered, NoSymbol ] }; 126 key <AD05> { [ t, T, thorn, THORN ] }; 127 key <AD06> { [ y, Y, y, Y ] }; 128 key <AD07> { [ u, U, u, U ] }; 129 key <AD08> { [ i, I, idotless, bar ] }; 130 key <AD09> { [ o, O, o, O ] }; 131 key <AD10> { [ p, P, paragraph, NoSymbol ] }; 132 key <AD11> { [ aring, Aring, oe, OE ] }; 133 key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] }; 134 135 key <AC01> { [ a, A, schwa, SCHWA ] }; 136 key <AC02> { [ s, S, scaron, Scaron ] }; 137 key <AC03> { [ d, D, eth, ETH ] }; 138 key <AC04> { [ f, F, f, F ] }; 139 key <AC05> { [ g, G, eng, ENG ] }; 140 key <AC06> { [ h, H, h, H ] }; 141 key <AC07> { [ j, J, j, J ] }; 142 key <AC08> { [ k, K, kra, dead_greek ] }; 143 key <AC09> { [ l, L, dead_stroke, dead_currency ] }; 144 key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; 145 key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; 146 key <BKSL> { [ apostrophe, asterisk, dead_caron, dead_breve ] }; 147 148 key <LSGT> { [ less, greater, bar, brokenbar ] }; 149 key <AB01> { [ z, Z, zcaron, Zcaron ] }; 150 key <AB02> { [ x, X, multiply, division ] }; 151 key <AB03> { [ c, C, copyright, cent ] }; 152 key <AB04> { [ v, V, v, V ] }; 153 key <AB05> { [ b, B, ssharp, U1E9E ] }; 154 key <AB06> { [ n, N, ntilde, Ntilde ] }; 155 key <AB07> { [ m, M, mu, NoSymbol ] }; 156 key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ] }; 157 key <AB09> { [ period, colon, periodcentered, notsign ] }; 158 key <AB10> { [ minus, underscore, hyphen, dead_macron ] }; 159 160 key <SPCE> { [ space, space, space, U202F ] }; 161 162 include "kpdl(comma)" 163 include "level3(ralt_switch)" 164}; 165 166partial alphanumeric_keys 167xkb_symbols "classic" { 168 169 include "fi(fi)" 170 171 name[Group1]="Finnish (classic)"; 172}; 173 174partial alphanumeric_keys 175xkb_symbols "nodeadkeys" { 176 177 // Classic Finnish keyboard layout without dead keys 178 179 include "fi(fi)" 180 181 name[Group1]="Finnish (classic, no dead keys)"; 182 183 key <AE12> { [ acute, grave, cedilla, ogonek ] }; 184 key <AD12> { [ diaeresis, asciicircum, asciitilde, caron ] }; 185 key <AC09> { [ l, L, l, L ] }; 186 key <BKSL> { [ apostrophe, asterisk, caron, breve ] }; 187 key <AB08> { [ comma, semicolon, cedilla, ogonek ] }; 188 key <AB10> { [ minus, underscore, hyphen, macron ] }; 189}; 190 191partial alphanumeric_keys 192xkb_symbols "smi" { 193 194 // Describes the differences between a Norwegian Northern Sami 195 // (keyboard with dead key support) and a Swedish/Finnish Sami 196 // keyboard according to the specs at: 197 // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html 198 199 include "no(smi)" 200 201 name[Group1]="Northern Saami (Finland)"; 202 203 key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; 204 key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; 205}; 206 207partial alphanumeric_keys 208xkb_symbols "mac" { 209 210 // Macintosh keyboard for Finland based on Swedish(Macintosh) keyboard 211 212 include "se(mac)" 213 214 name[Group1]="Finnish (Macintosh)"; 215}; 216 217partial alphanumeric_keys 218xkb_symbols "sun_type6" { 219 220 // Sun Type 6/7 keyboard for Finland 221 222 include "sun_vndr/fi(sun_type6)" 223 224 name[Group1]="Finnish (Sun Type 6/7)"; 225}; 226 227partial 228xkb_symbols "das" { 229 230 // DAS layout for typing Finnish designed by Cristian Seres (cseres at iki.fi). 231 // More information about DAS is available at http://c.seres.fi/DAS_en.html. 232 // This xkeyboard layout was created by Joel Lehtonen (joel.lehtonen at iki.fi), 233 // and he released it to public domain. 234 235 name[Group1]="Finnish (DAS)"; 236 237 key <AE01> { [ 1, exclam, section ] }; 238 key <AE02> { [ 2, quotedbl, twosuperior ] }; 239 key <AE03> { [ 3, at, sterling ] }; 240 key <AE04> { [ 4, EuroSign, dollar ] }; 241 key <AE05> { [ 5, percent, onehalf ] }; 242 key <AE06> { [ 6, ampersand ] }; 243 key <AE07> { [ 7, braceleft ] }; 244 key <AE08> { [ 8, parenleft, bracketleft ] }; 245 key <AE09> { [ 9, parenright, bracketright ] }; 246 key <AE10> { [ 0, braceright, degree ] }; 247 key <AE11> { [ plus, question, currency ] }; 248 key <AE12> { [ equal, numbersign ] }; 249 250 key <AD01> { [ p, P, Greek_pi ] }; 251 key <AD02> { [ h, H ] }; 252 key <AD03> { [ r, R, dead_circumflex ] }; 253 key <AD04> { [ k, K, dead_caron ] }; 254 key <AD05> { [ less, greater ] }; 255 key <AD06> { [ apostrophe, bar ] }; 256 key <AD07> { [ w, W ] }; 257 key <AD08> { [ u, U ] }; 258 key <AD09> { [ y, Y ] }; 259 key <AD10> { [ b, B ] }; 260 key <AD11> { [ q, Q ] }; 261 key <AD12> { [ z, Z, zcaron, Zcaron ] }; 262 263 key <AC01> { [ s, S, scaron, Scaron ] }; 264 key <AC02> { [ l, L, dead_acute ] }; 265 key <AC03> { [ n, N, dead_grave ] }; 266 key <AC04> { [ t, T, dead_diaeresis ] }; 267 key <AC05> { [ v, V ] }; 268 key <AC06> { [ g, G ] }; 269 key <AC07> { [ a, A ] }; 270 key <AC08> { [ i, I ] }; 271 key <AC09> { [ o, O ] }; 272 key <AC10> { [ e, E ] }; 273 key <AC11> { [ c, C ] }; 274 key <TLDE> { [ backslash, dead_tilde ] }; 275 276 key <BKSL> { [ asterisk, slash ] }; 277 key <LSGT> { [ f, F ] }; 278 key <AB01> { [ x, X ] }; 279 key <AB02> { [ d, D ] }; 280 key <AB03> { [ m, M, mu ] }; 281 key <AB04> { [ j, J ] }; 282 key <AB05> { [ aring, Aring ] }; 283 key <AB06> { [ odiaeresis, Odiaeresis, oe, OE ] }; 284 key <AB07> { [ adiaeresis, Adiaeresis, ae, AE ] }; 285 key <AB08> { [ comma, semicolon ] }; 286 key <AB09> { [ period, colon ] }; 287 key <AB10> { [ minus, underscore, U2013, dead_macron ] }; 288 key <SPCE> { [ space, space, space, nobreakspace ] }; 289 290 include "kpdl(comma)" 291 include "level3(ralt_switch)" 292}; 293 294partial alphanumeric_keys 295xkb_symbols "fidvorak" { 296 297 // Dvorak keyboard layout for use with Finnish by Pekka Oinas. 298 // 299 // Dedicated keys for Ä and Ö by utilizing the extra LSGT key found on Finnish keyboards 300 // and by moving colon and semicolon behind shift-modifiers on comma and period. 301 // Less and greater than symbols moved behind 3rd level modifiers on comma and period. 302 // Includes an assortment of dead keys but was not created with them in mind. 303 304 name[Group1]="Finnish (Dvorak)"; 305 306 key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] }; 307 key <AE01> { [ 1, exclam, NoSymbol, exclamdown ] }; 308 key <AE02> { [ 2, at, cent, rightdoublequotemark ] }; 309 key <AE03> { [ 3, numbersign, sterling ] }; 310 key <AE04> { [ 4, dollar, currency ] }; 311 key <AE05> { [ 5, percent, permille, leftdoublequotemark ] }; 312 key <AE06> { [ 6, asciicircum, dead_circumflex, doublelowquotemark ] }; 313 key <AE07> { [ 7, ampersand, section, singlelowquotemark ] }; 314 key <AE08> { [ 8, asterisk ] }; 315 key <AE09> { [ 9, parenleft ] }; 316 key <AE10> { [ 0, parenright, degree, dead_abovering ] }; 317 key <AE11> { [ bracketleft, braceleft ] }; 318 key <AE12> { [ bracketright, braceright ] }; 319 320 key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_doubleacute ] }; 321 key <AD02> { [ comma, semicolon, less, leftsinglequotemark ] }; 322 key <AD03> { [ period, colon, greater ] }; 323 key <AD04> { [ p, P ] }; 324 key <AD05> { [ y, Y, yen ] }; 325 key <AD06> { [ f, F ] }; 326 key <AD07> { [ g, G ] }; 327 key <AD08> { [ c, C ] }; 328 key <AD09> { [ r, R ] }; 329 key <AD10> { [ l, L, notsign ] }; 330 key <AD11> { [ slash, question, NoSymbol, questiondown ] }; 331 key <AD12> { [ equal, plus ] }; 332 333 key <AC01> { [ a, A, schwa, SCHWA ] }; 334 key <AC02> { [ o, O, aring, Aring ] }; 335 key <AC03> { [ e, E, EuroSign ] }; 336 key <AC04> { [ u, U, udiaeresis, Udiaeresis ] }; 337 key <AC05> { [ i, I, idotless, Iabovedot ] }; 338 key <AC06> { [ d, D, eth, ETH ] }; 339 key <AC07> { [ h, H ] }; 340 key <AC08> { [ t, T, thorn, THORN ] }; 341 key <AC09> { [ n, N, eng, ENG ] }; 342 key <AC10> { [ s, S, ssharp, U1E9E ] }; 343 key <AC11> { [ minus, underscore, endash, emdash ] }; 344 key <BKSL> { [ backslash, bar, dead_caron, dead_breve ] }; 345 346 key <LSGT> { [ adiaeresis, Adiaeresis, ae, AE ] }; 347 key <AB01> { [ odiaeresis, Odiaeresis, dead_diaeresis, dead_macron ] }; 348 key <AB02> { [ q, Q, ooblique, Ooblique ] }; 349 key <AB03> { [ j, J ] }; 350 key <AB04> { [ k, K, kra ] }; 351 key <AB05> { [ x, X, multiply, periodcentered ] }; 352 key <AB06> { [ b, B, hyphen ] }; 353 key <AB07> { [ m, M, mu, emdash ] }; 354 key <AB08> { [ w, W ] }; 355 key <AB09> { [ v, V ] }; 356 key <AB10> { [ z, Z, ezh, EZH ] }; 357 358 include "level3(ralt_switch)" 359}; 360