rx-51 revision c067fea9
1default partial alphanumeric_keys 2xkb_symbols "common" { 3 include "nokia_vndr/rx-51(common_keys)" 4 include "nokia_vndr/rx-51(modifiers)" 5 6 // This section should not be included by any other section. 7 // It's referenced only once by rule file to allow multiple layout configurations. 8 9 // More than one layout at the same time could be set for instance as follows: 10 // setxkbmap -rules evdev \ 11 // -model nokiarx51 \ 12 // -option grp:ctrl_shift_toggle \ 13 // -layout us,cz \ 14 // -variant ",qwerty" 15 16 // Notice the similarity: 17 // "pc+us+cz(qwerty):2+grp:XYZ" vs. 18 // "nokia_vndr/rx-51(common)+nokia_vndr/rx-51(us)+nokia_vndr/rx-51(cz_qwerty):2+grp:XYZ" 19 // where XYZ is one of xkb_symbols section usually located in file symbols/group. 20 21 // Bear in mind that option XYZ could replace current keys configuration!!! 22 23 // For instance using symbols/group(ctrl_shift_toggle) redefines LCTL and LFSH keys 24 // which may disallow opening of virtual symbol table (Multi_key). 25 // Fortunately the Multi_key is defined in 3rd and 4th level a ctrl_shift_toggle 26 // redefines first two levels only. But RX-51 has not right Ctrl nor Shift therefore 27 // pressing Ctrl+Shift will switch to previous layout, not to the next one. 28 29 // For RX-51 device there is a lot of restrictions if more than one layout is 30 // is configured at the same time because some modifiers and special cases are 31 // handled by hildon layer (especially with eight-level layout): 32 // - settings may be done from terminal only (GUI doesn't and won't support it) 33 // - virtual symbol table is not updated according to current layout 34 // - for unknown reasons the eight-level layout (nordic,ru) works properly 35 // only if it's configured as first layout (e.g. "ru,us,cz" not "us,cz,ru") 36 // otherwise it's not possible to access levels 5-8 37 // - Ctrl+Space related problems: 38 // - If eight-level layout is used as first layout one of eight-level layouts has to 39 // be also chosen in GUI - otherwise the Ctrl+Space "switch" is disabled 40 // - Ctrl+Space has no effect if only four-level layouts are chosen 41 // (don't forget the layout configured in GUI - despite of it's not reachable) 42 // - a few keys in 2nd layer could be mixed with other layouts when Ctrl+Space is "turned on" (why?) 43 // in case eight- and four-level layouts are configured simultaneously 44 // - Ctrl+Space is "turned on" by default and has to be "turned off" for four-level layouts 45 // in case eight- and four-level layouts are configured simultaneously 46 // - four-level layout on first place doesn't work at all when Ctrl+Space is "turned on" 47 // in case the 2nd, 3rd or 4th layout is eight-level layout 48}; 49 50//////////////////////////////////////////////////////////////////////////////// 51 52partial alphanumeric_keys 53xkb_symbols "us" { 54 include "nokia_vndr/rx-51(english_base)" 55 include "nokia_vndr/rx-51(arrows_4btns)" 56 57 name[Group1] = "U.S. English"; 58}; 59 60 61 62partial alphanumeric_keys 63xkb_symbols "pl" { 64 include "nokia_vndr/rx-51(english_base)" 65 include "nokia_vndr/rx-51(arrows_4btns)" 66 67 name[Group1] = "Polish"; 68}; 69 70 71 72partial alphanumeric_keys 73xkb_symbols "fise" { 74 include "nokia_vndr/rx-51(nordic_base)" 75 include "nokia_vndr/rx-51(arrows_2btns)" 76 77 name[Group1] = "Finnish/Swedish"; 78 79 // 2. row 80 key <AB09> { [ odiaeresis, Odiaeresis, exclam, exclam ] }; 81 key <UP> { [ adiaeresis, Adiaeresis, question, question ] }; 82}; 83 84 85 86partial alphanumeric_keys 87xkb_symbols "dano" { 88 include "nokia_vndr/rx-51(nordic_base)" 89 include "nokia_vndr/rx-51(arrows_2btns)" 90 91 name[Group1] = "Danish/Norwegian"; 92 93 // 2. row 94 key <AB09> { [ oslash, Oslash, exclam, exclam ] }; 95 key <UP> { [ ae, AE, question, question ] }; 96}; 97 98 99 100partial alphanumeric_keys 101xkb_symbols "nordic" { 102 include "nokia_vndr/rx-51(nordic_base)" 103 include "nokia_vndr/rx-51(arrows_2btns)" 104 105 name[Group1] = "Danish/Finnish/Norwegian/Swedish"; 106 107 key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; 108 109 // 2. row 110 key <AB09> { [ odiaeresis, Odiaeresis, exclam, exclam, oslash, Oslash, exclam, exclam ] }; 111 key <UP> { [ adiaeresis, Adiaeresis, question, question, ae, AE, question, question ] }; 112}; 113 114 115 116partial alphanumeric_keys 117xkb_symbols "ptes" { 118 include "nokia_vndr/rx-51(english_base)" 119 include "nokia_vndr/rx-51(arrows_2btns)" 120 121 name[Group1] = "Portuguese/Spanish"; 122 123 // 1. row 124 key <AB08> { [ dead_acute, dead_acute, dead_grave, dead_grave ] }; 125 126 // 2. row 127 key <AC05> { [ g, G, exclamdown, exclamdown ] }; 128 key <AC06> { [ h, H, exclam, exclam ] }; 129 key <AC07> { [ j, J, questiondown, questiondown ] }; 130 key <AC08> { [ k, K, question, question ] }; 131 key <AC09> { [ l, L, dead_diaeresis, dead_diaeresis ] }; 132 key <AB09> { [ ntilde, Ntilde, dead_tilde, dead_tilde ] }; 133 key <UP> { [ ccedilla, Ccedilla, dead_circumflex,dead_circumflex ] }; 134 135 // 3. row 136 key <AB01> { [ z, Z, parenleft, parenleft ] }; 137 key <AB02> { [ x, X, parenright, parenright ] }; 138 key <AB03> { [ c, C, slash, slash ] }; 139 key <AB04> { [ v, V, quotedbl, quotedbl ] }; 140 key <AB05> { [ b, B, apostrophe, apostrophe ] }; 141 key <AB06> { [ n, N, colon, colon ] }; 142 key <AB07> { [ m, M, semicolon, semicolon ] }; 143 key <LEFT> { [ period, comma, comma, comma ] }; 144}; 145 146 147 148partial alphanumeric_keys 149xkb_symbols "fr" { 150 include "nokia_vndr/rx-51(english_base)" 151 include "nokia_vndr/rx-51(arrows_2btns)" 152 153 name[Group1] = "French"; 154 155 // 1. row 156 key <AD01> { [ a, A, 1, 1 ] }; 157 key <AD02> { [ z, Z, 2, 2 ] }; 158 key <AB08> { [ agrave, Agrave, ccedilla, Ccedilla ] }; 159 160 // 2. row 161 key <AC01> { [ q, Q, asterisk, asterisk ] }; 162 key <AC02> { [ s, S, plus, plus ] }; 163 key <AC03> { [ d, D, numbersign, numbersign ] }; 164 key <AC04> { [ f, F, minus, minus ] }; 165 key <AC05> { [ g, G, underscore, underscore ] }; 166 key <AC06> { [ h, H, exclam, exclam ] }; 167 key <AC07> { [ j, J, question, question ] }; 168 key <AC08> { [ k, K, colon, colon ] }; 169 key <AC09> { [ l, L, dead_circumflex,dead_circumflex ] }; 170 key <AB09> { [ m, M, ugrave, Ugrave ] }; 171 key <UP> { [ eacute, Eacute, egrave, Egrave ] }; 172 173 // 3. row 174 key <AB01> { [ w, W, EuroSign, EuroSign ] }; 175 key <AB03> { [ c, C, parenleft, parenleft ] }; 176 key <AB04> { [ v, V, parenright, parenright ] }; 177 key <AB05> { [ b, B, slash, slash ] }; 178 key <AB07> { [ comma, comma, apostrophe, apostrophe ] }; 179 key <LEFT> { [ semicolon, period, period, period ] }; 180}; 181 182 183 184partial alphanumeric_keys 185xkb_symbols "de" { 186 include "nokia_vndr/rx-51(english_base)" 187 include "nokia_vndr/rx-51(arrows_2btns)" 188 189 name[Group1] = "German"; 190 191 // 1. row 192 key <AD06> { [ z, Z, 6, 6 ] }; 193 key <AB08> { [ udiaeresis, Udiaeresis, ssharp, ssharp ] }; 194 195 // 2. row 196 key <AC08> { [ k, K, semicolon, semicolon ] }; 197 key <AC09> { [ l, L, colon, colon ] }; 198 key <AB09> { [ odiaeresis, Odiaeresis, exclam, exclam ] }; 199 key <UP> { [ adiaeresis, Adiaeresis, question, question ] }; 200 201 // 3. row 202 key <AB01> { [ y, Y, EuroSign, EuroSign ] }; 203 key <AB03> { [ c, C, equal, equal ] }; 204 key <LEFT> { [ period, comma, comma, comma ] }; 205}; 206 207 208 209partial alphanumeric_keys 210xkb_symbols "ch" { 211 include "nokia_vndr/rx-51(english_base)" 212 include "nokia_vndr/rx-51(arrows_2btns)" 213 214 name[Group1] = "Swiss"; 215 216 // 1. row 217 key <AD06> { [ z, Z, 6, 6 ] }; 218 key <AB08> { [ udiaeresis, Udiaeresis, egrave, Egrave ] }; 219 220 // 2. row 221 key <AC06> { [ h, H, equal, equal ] }; 222 key <AC07> { [ j, J, parenleft, parenleft ] }; 223 key <AC08> { [ k, K, parenright, parenright ] }; 224 key <AC09> { [ l, L, colon, colon ] }; 225 key <AB09> { [ odiaeresis, Odiaeresis, eacute, Aacute ] }; 226 key <UP> { [ adiaeresis, Adiaeresis, agrave, Agrave ] }; 227 228 // 3. row 229 key <AB01> { [ y, Y, question, question ] }; 230 key <AB02> { [ x, X, exclam, exclam ] }; 231 key <AB03> { [ c, C, ccedilla, Ccedilla ] }; 232 key <LEFT> { [ period, comma, comma, comma ] }; 233}; 234 235 236 237// Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons. 238partial alphanumeric_keys 239xkb_symbols "ru" { 240 include "nokia_vndr/rx-51(english_base)" 241 include "nokia_vndr/rx-51(arrows_2btns)" 242 243 name[Group1] = "Russian"; 244 245 key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; 246 247 // 1. row 248 key <AD01> { [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] }; 249 key <AD02> { [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] }; 250 key <AD03> { [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] }; 251 key <AD04> { [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] }; 252 key <AD05> { [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] }; 253 key <AD06> { [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] }; 254 key <AD07> { [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] }; 255 key <AD08> { [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] }; 256 key <AD09> { [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] }; 257 key <AD10> { [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] }; 258 key <AB08> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; 259 260 // 2. row 261 key <AC01> { [ a, A, asterisk, asterisk, Cyrillic_ef, Cyrillic_EF, asterisk, asterisk ] }; 262 key <AC02> { [ s, S, plus, plus, Cyrillic_yeru, Cyrillic_YERU, plus, plus ] }; 263 key <AC03> { [ d, D, numbersign, numbersign, Cyrillic_ve, Cyrillic_VE, numbersign, numbersign ] }; 264 key <AC04> { [ f, F, minus, minus, Cyrillic_a, Cyrillic_A, minus, minus ] }; 265 key <AC05> { [ g, G, underscore, underscore, Cyrillic_pe, Cyrillic_PE, underscore, underscore ] }; 266 key <AC06> { [ h, H, exclam, exclam, Cyrillic_er, Cyrillic_ER, exclam, exclam ] }; 267 key <AC07> { [ j, J, question, question, Cyrillic_o, Cyrillic_O, question, question ] }; 268 key <AC08> { [ k, K, semicolon, semicolon, Cyrillic_el, Cyrillic_EL, semicolon, semicolon ] }; 269 key <AC09> { [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] }; 270 key <AB09> { [ comma, comma, comma, comma, Cyrillic_zhe, Cyrillic_ZHE, comma, comma ] }; 271 key <UP> { [ period, period, period, period, Cyrillic_e, Cyrillic_E, period, period ] }; 272 273 // 3. row 274 key <AB01> { [ z, Z, dollar, dollar, Cyrillic_ya, Cyrillic_YA, dollar, dollar ] }; 275 key <AB02> { [ x, X, EuroSign, EuroSign, Cyrillic_che, Cyrillic_CHE, EuroSign, EuroSign ] }; 276 key <AB03> { [ c, C, slash, slash, Cyrillic_es, Cyrillic_ES, slash, slash ] }; 277 key <AB04> { [ v, V, parenleft, parenleft, Cyrillic_em, Cyrillic_EM, parenleft, parenleft ] }; 278 key <AB05> { [ b, B, parenright, parenright, Cyrillic_i, Cyrillic_I, parenright, parenright ] }; 279 key <AB06> { [ n, N, quotedbl, quotedbl, Cyrillic_te, Cyrillic_TE, quotedbl, quotedbl ] }; 280 key <AB07> { [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] }; 281 key <LEFT> { [ Cyrillic_be, Cyrillic_BE, Cyrillic_yu, Cyrillic_YU, Cyrillic_be, Cyrillic_BE, Cyrillic_yu, Cyrillic_YU ] }; 282}; 283 284 285 286partial alphanumeric_keys 287xkb_symbols "it" { 288 include "nokia_vndr/rx-51(english_base)" 289 include "nokia_vndr/rx-51(arrows_2btns)" 290 291 name[Group1] = "Italian"; 292 293 // 1. row 294 key <AB08> { [ egrave, Egrave, eacute, Eacute ] }; 295 296 // 2. row 297 key <AC06> { [ h, H, semicolon, semicolon ] }; 298 key <AC07> { [ j, J, colon, colon ] }; 299 key <AC08> { [ k, K, exclam, exclam ] }; 300 key <AC09> { [ l, L, question, question ] }; 301 key <AB09> { [ ograve, Ograve, igrave, Igrave ] }; 302 key <UP> { [ agrave, Agrave, ugrave, Ugrave ] }; 303 304 // 3. row 305 key <AB01> { [ z, Z, EuroSign, EuroSign ] }; 306 key <AB02> { [ x, X, parenleft, parenleft ] }; 307 key <AB03> { [ c, C, parenright, parenright ] }; 308 key <LEFT> { [ period, comma, comma, comma ] }; 309}; 310 311 312 313partial alphanumeric_keys 314xkb_symbols "cz" { 315 include "nokia_vndr/rx-51(english_base)" 316 include "nokia_vndr/rx-51(arrows_2btns)" 317 318 name[Group1] = "Czech"; 319 320 // 1. row 321 key <AD06> { [ z, Z, 6, 6 ] }; 322 key <AB08> { [ dead_acute, dead_acute, sterling, sterling ] }; 323 324 // 2. row 325 key <AC08> { [ k, K, semicolon, semicolon ] }; 326 key <AC09> { [ l, L, colon, colon ] }; 327 key <AB09> { [ uring, Uring, EuroSign, EuroSign ] }; 328 key <UP> { [ dead_caron, dead_caron, dollar, dollar ] }; 329 330 // 3. row 331 key <AB01> { [ y, Y, equal, equal ] }; 332 key <AB02> { [ x, X, slash, slash ] }; 333 key <AB03> { [ c, C, backslash, backslash ] }; 334 key <AB04> { [ v, V, apostrophe, apostrophe ] }; 335 key <AB05> { [ b, B, quotedbl, quotedbl ] }; 336 key <AB06> { [ n, N, exclam, exclam ] }; 337 key <AB07> { [ m, M, question, question ] }; 338 key <LEFT> { [ period, comma, comma, comma ] }; 339}; 340 341partial alphanumeric_keys 342xkb_symbols "cz_qwerty" { 343 include "nokia_vndr/rx-51(cz)" 344 345 name[Group1] = "Czech - qwerty"; 346 347 // Do not use the layout "cz_qwerty" directly if it is the only layout and compat rules enabled. 348 // There is one compat rule that converts "cz_qwerty" to "pc+cz(qwerty)" which is not correct for RX-51. 349 // Use either the layout "cz(qwerty)" or the general "cz" with variant "qwerty". 350 351 // 1. row 352 key <AD06> { [ y, Y, 6, 6 ] }; 353 354 // 3. row 355 key <AB01> { [ z, Z, percent, percent ] }; 356}; 357 358 359 360//////////////////////////////////////////////////////////////////////////////// 361 362partial hidden alphanumeric_keys 363xkb_symbols "nordic_base" { 364 include "nokia_vndr/rx-51(english_base)" 365 366 // 1. row 367 key <AB08> { [ aring, Aring, equal, equal ] }; 368 369 // 2. row 370 key <AC08> { [ k, K, semicolon, semicolon ] }; 371 key <AC09> { [ l, L, colon, colon ] }; 372 373 // 3. row 374 key <AB01> { [ z, Z, EuroSign, EuroSign ] }; 375 key <AB03> { [ c, C, sterling, sterling ] }; 376 key <LEFT> { [ period, comma, comma, comma ] }; 377}; 378 379partial hidden alphanumeric_keys 380xkb_symbols "english_base" { 381 382 // 1. row 383 key <AD01> { [ q, Q, 1, 1 ] }; 384 key <AD02> { [ w, W, 2, 2 ] }; 385 key <AD03> { [ e, E, 3, 3 ] }; 386 key <AD04> { [ r, R, 4, 4 ] }; 387 key <AD05> { [ t, T, 5, 5 ] }; 388 key <AD06> { [ y, Y, 6, 6 ] }; 389 key <AD07> { [ u, U, 7, 7 ] }; 390 key <AD08> { [ i, I, 8, 8 ] }; 391 key <AD09> { [ o, O, 9, 9 ] }; 392 key <AD10> { [ p, P, 0, 0 ] }; 393 key <AB08> { [ comma, semicolon, equal, equal ] }; 394 395 // 2. row 396 key <AC01> { [ a, A, asterisk, asterisk ] }; 397 key <AC02> { [ s, S, plus, plus ] }; 398 key <AC03> { [ d, D, numbersign, numbersign ] }; 399 key <AC04> { [ f, F, minus, minus ] }; 400 key <AC05> { [ g, G, underscore, underscore ] }; 401 key <AC06> { [ h, H, parenleft, parenleft ] }; 402 key <AC07> { [ j, J, parenright, parenright ] }; 403 key <AC08> { [ k, K, ampersand, ampersand ] }; 404 key <AC09> { [ l, L, exclam, exclam ] }; 405 key <AB09> { [ period, colon, question, question ] }; 406 407 // 3. row 408 key <AB01> { [ z, Z, sterling, sterling ] }; 409 key <AB02> { [ x, X, dollar, dollar ] }; 410 key <AB03> { [ c, C, EuroSign, EuroSign ] }; 411 key <AB04> { [ v, V, slash, slash ] }; 412 key <AB05> { [ b, B, backslash, backslash ] }; 413 key <AB06> { [ n, N, quotedbl, quotedbl ] }; 414 key <AB07> { [ m, M, apostrophe, apostrophe ] }; 415 key <SPCE> { [ space, space, at, at ] }; 416}; 417 418partial hidden alphanumeric_keys 419xkb_symbols "common_keys" { 420 // all other common keys 421 422 key <BKSP> { [ BackSpace ] }; 423 key <TAB> { [ Tab ] }; 424 425 // broken UI spec. 426 key <RTRN> { [ KP_Enter ] }; 427 428 key <KPEN> { [ Return ] }; 429 key <ESC> { [ Escape ] }; 430 431 key <FK01> { [ F1 ] }; 432 key <FK02> { [ F2 ] }; 433 key <FK03> { [ F3 ] }; 434 key <FK04> { [ F4 ] }; 435 key <FK05> { [ F5 ] }; 436 key <FK06> { [ F6 ] }; 437 438 // Swap +/- keys intentionally. The VOL+/VOL- keys are located physically 439 // on left/right and up/down in landscape/portrait orientation. This does 440 // not feel natural for the user and therefore we want the VOL+/VOL- keys 441 // map to -/+. 442 // 443 // The only exception is an active call in portrait mode where we want to 444 // use the real meanings of the keys. This special case and management of 445 // +/- keys in general is handled in maemo-statusmenu-volume. 446 key <FK07> { [ F8 ] }; 447 key <FK08> { [ F7 ] }; 448 449 key <FK09> { [ F9 ] }; 450 key <FK10> { [ F10 ] }; 451 key <FK11> { [ F11 ] }; 452}; 453 454partial hidden alphanumeric_keys modifier_keys 455xkb_symbols "modifiers" { 456 // Shift switches between current level and level+1 457 key <LFSH> { 458 type[Group1] = "ONE_LEVEL", 459 symbols[Group1] = [ Shift_L ] 460 }; 461 modifier_map Shift { Shift_L }; 462 463 // Fn+Ctrl virtual symbol table (Multi_key) 464 // Ctrl+Space switches between 1st and 5th level (hardcoded in hildon) 465 key <LCTL> { 466 type[Group1] = "FOUR_LEVEL", 467 symbols[Group1] = [ Control_L, Control_L, Multi_key, Multi_key ] 468 }; 469 modifier_map Control { Control_L }; 470 471 // Fn key (right alt) switches to 3rd level 472 include "level3(ralt_switch)" 473}; 474 475partial hidden alphanumeric_keys 476xkb_symbols "arrows_2btns" { 477 // rx-51 specific arrows mapping 478 // normal 2nd level must not be enumerated to allow text selection with Shift key 479 key <DOWN> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, Up ] }; 480 key <RGHT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, Down ] }; 481}; 482 483partial hidden alphanumeric_keys 484xkb_symbols "arrows_4btns" { 485 // standard arrows mapping 486 // normal 2nd level must not be enumerated to allow text selection with Shift key 487 key <UP> { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Up ] }; 488 key <LEFT> { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Left ] }; 489 key <DOWN> { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Down ] }; 490 key <RGHT> { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Right ] }; 491}; 492