default partial alphanumeric_keys xkb_symbols "common" { include "nokia_vndr/rx-51(common_keys)" include "nokia_vndr/rx-51(modifiers)" // This section should not be included by any other section. // It's referenced only once by rule file to allow multiple layout configurations. // More than one layout at the same time could be set for instance as follows: // setxkbmap -rules evdev \ // -model nokiarx51 \ // -option grp:ctrl_shift_toggle \ // -layout us,cz \ // -variant ",qwerty" // Notice the similarity: // "pc+us+cz(qwerty):2+grp:XYZ" vs. // "nokia_vndr/rx-51(common)+nokia_vndr/rx-51(us)+nokia_vndr/rx-51(cz_qwerty):2+grp:XYZ" // where XYZ is one of xkb_symbols section usually located in file symbols/group. // Bear in mind that option XYZ could replace current keys configuration!!! // For instance using symbols/group(ctrl_shift_toggle) redefines LCTL and LFSH keys // which may disallow opening of virtual symbol table (Multi_key). // Fortunately the Multi_key is defined in 3rd and 4th level a ctrl_shift_toggle // redefines first two levels only. But RX-51 has not right Ctrl nor Shift therefore // pressing Ctrl+Shift will switch to previous layout, not to the next one. // For RX-51 device there is a lot of restrictions if more than one layout is // is configured at the same time because some modifiers and special cases are // handled by hildon layer (especially with eight-level layout): // - settings may be done from terminal only (GUI doesn't and won't support it) // - virtual symbol table is not updated according to current layout // - for unknown reasons the eight-level layout (nordic,ru) works properly // only if it's configured as first layout (e.g. "ru,us,cz" not "us,cz,ru") // otherwise it's not possible to access levels 5-8 // - Ctrl+Space related problems: // - If eight-level layout is used as first layout one of eight-level layouts has to // be also chosen in GUI - otherwise the Ctrl+Space "switch" is disabled // - Ctrl+Space has no effect if only four-level layouts are chosen // (don't forget the layout configured in GUI - despite of it's not reachable) // - a few keys in 2nd layer could be mixed with other layouts when Ctrl+Space is "turned on" (why?) // in case eight- and four-level layouts are configured simultaneously // - Ctrl+Space is "turned on" by default and has to be "turned off" for four-level layouts // in case eight- and four-level layouts are configured simultaneously // - four-level layout on first place doesn't work at all when Ctrl+Space is "turned on" // in case the 2nd, 3rd or 4th layout is eight-level layout }; //////////////////////////////////////////////////////////////////////////////// partial alphanumeric_keys xkb_symbols "us" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_4btns)" name[Group1] = "U.S. English"; }; partial alphanumeric_keys xkb_symbols "pl" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_4btns)" name[Group1] = "Polish"; }; partial alphanumeric_keys xkb_symbols "fise" { include "nokia_vndr/rx-51(nordic_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Finnish/Swedish"; // 2. row key { [ odiaeresis, Odiaeresis, exclam, exclam ] }; key { [ adiaeresis, Adiaeresis, question, question ] }; }; partial alphanumeric_keys xkb_symbols "dano" { include "nokia_vndr/rx-51(nordic_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Danish/Norwegian"; // 2. row key { [ oslash, Oslash, exclam, exclam ] }; key { [ ae, AE, question, question ] }; }; partial alphanumeric_keys xkb_symbols "nordic" { include "nokia_vndr/rx-51(nordic_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Danish/Finnish/Norwegian/Swedish"; key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; // 2. row key { [ odiaeresis, Odiaeresis, exclam, exclam, oslash, Oslash, exclam, exclam ] }; key { [ adiaeresis, Adiaeresis, question, question, ae, AE, question, question ] }; }; partial alphanumeric_keys xkb_symbols "ptes" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Portuguese/Spanish"; // 1. row key { [ dead_acute, dead_acute, dead_grave, dead_grave ] }; // 2. row key { [ g, G, exclamdown, exclamdown ] }; key { [ h, H, exclam, exclam ] }; key { [ j, J, questiondown, questiondown ] }; key { [ k, K, question, question ] }; key { [ l, L, dead_diaeresis, dead_diaeresis ] }; key { [ ntilde, Ntilde, dead_tilde, dead_tilde ] }; key { [ ccedilla, Ccedilla, dead_circumflex,dead_circumflex ] }; // 3. row key { [ z, Z, parenleft, parenleft ] }; key { [ x, X, parenright, parenright ] }; key { [ c, C, slash, slash ] }; key { [ v, V, quotedbl, quotedbl ] }; key { [ b, B, apostrophe, apostrophe ] }; key { [ n, N, colon, colon ] }; key { [ m, M, semicolon, semicolon ] }; key { [ period, comma, comma, comma ] }; }; partial alphanumeric_keys xkb_symbols "fr" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "French"; // 1. row key { [ a, A, 1, 1 ] }; key { [ z, Z, 2, 2 ] }; key { [ y, Y, 6, less ] }; key { [ u, U, 7, greater ] }; key { [ i, I, 8, bracketleft ] }; key { [ o, O, 9, bracketright ] }; key { [ p, P, 0, ampersand ] }; key { [ agrave, Agrave, ccedilla, Ccedilla ] }; // 2. row key { [ q, Q, asterisk, asterisk ] }; key { [ s, S, plus, plus ] }; key { [ d, D, numbersign, numbersign ] }; key { [ f, F, minus, minus ] }; key { [ g, G, underscore, underscore ] }; key { [ h, H, exclam, exclam ] }; key { [ j, J, question, question ] }; key { [ k, K, colon, colon ] }; key { [ l, L, dead_circumflex,bar ] }; key { [ m, M, ugrave, Ugrave ] }; key { [ eacute, Eacute, egrave, Egrave ] }; // 3. row key { [ w, W, EuroSign, EuroSign ] }; key { [ c, C, parenleft, braceleft ] }; key { [ v, V, parenright, braceright ] }; key { [ b, B, slash, backslash ] }; key { [ comma, Escape, apostrophe, apostrophe ] }; key { [ semicolon, period, period, F6 ] }; }; partial alphanumeric_keys xkb_symbols "de" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "German"; // 1. row key { [ z, Z, 6, 6 ] }; key { [ udiaeresis, Udiaeresis, ssharp, ssharp ] }; // 2. row key { [ k, K, semicolon, semicolon ] }; key { [ l, L, colon, colon ] }; key { [ odiaeresis, Odiaeresis, exclam, exclam ] }; key { [ adiaeresis, Adiaeresis, question, question ] }; // 3. row key { [ y, Y, EuroSign, EuroSign ] }; key { [ c, C, equal, equal ] }; key { [ period, comma, comma, comma ] }; }; // Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons. partial alphanumeric_keys xkb_symbols "ru" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Russian"; key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; // 1. row key { [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] }; key { [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] }; key { [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] }; key { [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] }; key { [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] }; key { [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] }; key { [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] }; key { [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] }; key { [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] }; key { [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] }; key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; // 2. row key { [ a, A, asterisk, asterisk, Cyrillic_ef, Cyrillic_EF, asterisk, asterisk ] }; key { [ s, S, plus, plus, Cyrillic_yeru, Cyrillic_YERU, plus, plus ] }; key { [ d, D, numbersign, numbersign, Cyrillic_ve, Cyrillic_VE, numbersign, numbersign ] }; key { [ f, F, minus, minus, Cyrillic_a, Cyrillic_A, minus, minus ] }; key { [ g, G, underscore, underscore, Cyrillic_pe, Cyrillic_PE, underscore, underscore ] }; key { [ h, H, exclam, exclam, Cyrillic_er, Cyrillic_ER, exclam, exclam ] }; key { [ j, J, question, question, Cyrillic_o, Cyrillic_O, question, question ] }; key { [ k, K, semicolon, semicolon, Cyrillic_el, Cyrillic_EL, semicolon, semicolon ] }; key { [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] }; key { [ comma, comma, comma, comma, Cyrillic_zhe, Cyrillic_ZHE, comma, comma ] }; key { [ period, period, period, period, Cyrillic_e, Cyrillic_E, period, period ] }; // 3. row key { [ z, Z, dollar, dollar, Cyrillic_ya, Cyrillic_YA, dollar, dollar ] }; key { [ x, X, EuroSign, EuroSign, Cyrillic_che, Cyrillic_CHE, EuroSign, EuroSign ] }; key { [ c, C, slash, slash, Cyrillic_es, Cyrillic_ES, slash, slash ] }; key { [ v, V, parenleft, parenleft, Cyrillic_em, Cyrillic_EM, parenleft, parenleft ] }; key { [ b, B, parenright, parenright, Cyrillic_i, Cyrillic_I, parenright, parenright ] }; key { [ n, N, quotedbl, quotedbl, Cyrillic_te, Cyrillic_TE, quotedbl, quotedbl ] }; key { [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] }; key { [ Cyrillic_be, Cyrillic_BE, Cyrillic_yu, Cyrillic_YU, Cyrillic_be, Cyrillic_BE, Cyrillic_yu, Cyrillic_YU ] }; }; partial alphanumeric_keys xkb_symbols "it" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Italian"; // 1. row key { [ egrave, Egrave, eacute, Eacute ] }; // 2. row key { [ h, H, semicolon, semicolon ] }; key { [ j, J, colon, colon ] }; key { [ k, K, exclam, exclam ] }; key { [ l, L, question, question ] }; key { [ ograve, Ograve, igrave, Igrave ] }; key { [ agrave, Agrave, ugrave, Ugrave ] }; // 3. row key { [ z, Z, EuroSign, EuroSign ] }; key { [ x, X, parenleft, parenleft ] }; key { [ c, C, parenright, parenright ] }; key { [ period, comma, comma, comma ] }; }; partial alphanumeric_keys xkb_symbols "cz" { include "nokia_vndr/rx-51(english_base)" include "nokia_vndr/rx-51(arrows_2btns)" name[Group1] = "Czech"; // 1. row key { [ z, Z, 6, 6 ] }; key { [ dead_acute, dead_acute, sterling, sterling ] }; // 2. row key { [ k, K, semicolon, semicolon ] }; key { [ l, L, colon, colon ] }; key { [ uring, Uring, EuroSign, EuroSign ] }; key { [ dead_caron, dead_caron, dollar, dollar ] }; // 3. row key { [ y, Y, equal, equal ] }; key { [ x, X, slash, slash ] }; key { [ c, C, backslash, backslash ] }; key { [ v, V, apostrophe, apostrophe ] }; key { [ b, B, quotedbl, quotedbl ] }; key { [ n, N, exclam, exclam ] }; key { [ m, M, question, question ] }; key { [ period, comma, comma, comma ] }; }; partial alphanumeric_keys xkb_symbols "cz_qwerty" { include "nokia_vndr/rx-51(cz)" name[Group1] = "Czech - qwerty"; // Do not use the layout "cz_qwerty" directly if it is the only layout and compat rules enabled. // There is one compat rule that converts "cz_qwerty" to "pc+cz(qwerty)" which is not correct for RX-51. // Use either the layout "cz(qwerty)" or the general "cz" with variant "qwerty". // 1. row key { [ y, Y, 6, 6 ] }; // 3. row key { [ z, Z, percent, percent ] }; }; //////////////////////////////////////////////////////////////////////////////// partial hidden alphanumeric_keys xkb_symbols "nordic_base" { include "nokia_vndr/rx-51(english_base)" // 1. row key { [ aring, Aring, equal, equal ] }; // 2. row key { [ k, K, semicolon, semicolon ] }; key { [ l, L, colon, colon ] }; // 3. row key { [ z, Z, EuroSign, EuroSign ] }; key { [ c, C, sterling, sterling ] }; key { [ period, comma, comma, comma ] }; }; partial hidden alphanumeric_keys xkb_symbols "english_base" { // 1. row key { [ q, Q, 1, 1 ] }; key { [ w, W, 2, 2 ] }; key { [ e, E, 3, 3 ] }; key { [ r, R, 4, 4 ] }; key { [ t, T, 5, 5 ] }; key { [ y, Y, 6, 6 ] }; key { [ u, U, 7, 7 ] }; key { [ i, I, 8, 8 ] }; key { [ o, O, 9, 9 ] }; key { [ p, P, 0, 0 ] }; key { [ comma, semicolon, equal, equal ] }; // 2. row key { [ a, A, asterisk, asterisk ] }; key { [ s, S, plus, plus ] }; key { [ d, D, numbersign, numbersign ] }; key { [ f, F, minus, minus ] }; key { [ g, G, underscore, underscore ] }; key { [ h, H, parenleft, parenleft ] }; key { [ j, J, parenright, parenright ] }; key { [ k, K, ampersand, ampersand ] }; key { [ l, L, exclam, exclam ] }; key { [ period, colon, question, question ] }; // 3. row key { [ z, Z, sterling, sterling ] }; key { [ x, X, dollar, dollar ] }; key { [ c, C, EuroSign, EuroSign ] }; key { [ v, V, slash, slash ] }; key { [ b, B, backslash, backslash ] }; key { [ n, N, quotedbl, quotedbl ] }; key { [ m, M, apostrophe, apostrophe ] }; key { [ space, space, at, at ] }; }; partial hidden alphanumeric_keys xkb_symbols "common_keys" { // all other common keys key { [ BackSpace, Tab, BackSpace, BackSpace ] }; key { [ Tab ] }; // broken UI spec. key { [ KP_Enter ] }; key { [ Return ] }; key { [ Escape ] }; key { [ F1 ] }; key { [ F2 ] }; key { [ F3 ] }; key { [ F4 ] }; key { [ F5 ] }; key { [ F6 ] }; // Swap +/- keys intentionally. The VOL+/VOL- keys are located physically // on left/right and up/down in landscape/portrait orientation. This does // not feel natural for the user and therefore we want the VOL+/VOL- keys // map to -/+. // // The only exception is an active call in portrait mode where we want to // use the real meanings of the keys. This special case and management of // +/- keys in general is handled in maemo-statusmenu-volume. key { [ F8 ] }; key { [ F7 ] }; key { [ F9 ] }; key { [ F10 ] }; key { [ F11 ] }; }; partial hidden alphanumeric_keys modifier_keys xkb_symbols "modifiers" { // Shift switches between current level and level+1 key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Shift_L ] }; modifier_map Shift { Shift_L }; // Fn+Ctrl virtual symbol table (Multi_key) // Ctrl+Space switches between 1st and 5th level (hardcoded in hildon) key { type[Group1] = "FOUR_LEVEL", symbols[Group1] = [ Control_L, Control_L, Multi_key, Multi_key ] }; modifier_map Control { Control_L }; // Fn key (right alt) switches to 3rd level include "level3(ralt_switch)" }; partial hidden alphanumeric_keys xkb_symbols "arrows_2btns" { // rx-51 specific arrows mapping // normal 2nd level must not be enumerated to allow text selection with Shift key key { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, Up ] }; key { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, Down ] }; }; partial hidden alphanumeric_keys xkb_symbols "arrows_4btns" { // standard arrows mapping // normal 2nd level must not be enumerated to allow text selection with Shift key key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Up ] }; key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Left ] }; key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Down ] }; key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Right ] }; };