partial alphanumeric_keys default xkb_symbols "no" { name[Group1]= "Norwegian/Danish"; include "nokia_vndr/su-8w(base)" key { [ 1, exclam, dead_circumflex ] }; key { [ 2, quotedbl, at ] }; key { [ 3, numbersign, EuroSign ] }; key { [ 4, currency, dollar ] }; key { [ 5, percent, sterling ] }; key { [ 6, ampersand ] }; key { [ 7, slash, braceleft ] }; key { [ 8, parenleft, bracketleft ] }; key { [ 9, parenright, bracketright ] }; key { [ 0, equal, braceright ] }; key { [ plus, question ] }; key { [ dead_acute, dead_grave, backslash ] }; key { [ q, Q, dead_circumflex ] }; key { [ w, W, at ] }; key { [ e, E, EuroSign ] }; key { [ r, R, dollar ] }; key { [ t, T, sterling ] }; key { [ y, Y ] }; key { [ u, U, braceleft ] }; key { [ i, I, bracketleft ] }; key { [ o, O, bracketright ] }; key { [ p, P, braceright ] }; key { [ aring, Aring ] }; key { [ ssharp, ssharp, backslash ] }; key { [ a, A ] }; key { [ s, S ] }; key { [ d, D ] }; key { [ f, F ] }; key { [ g, G ] }; key { [ h, H ] }; key { [ j, J ] }; key { [ k, K ] }; key { [ l, L ] }; key { [ oslash, Ooblique ] }; key { [ ae, AE ] }; key { [ z, Z ] }; key { [ x, X ] }; key { [ c, C ] }; key { [ v, V ] }; key { [ b, B ] }; key { [ n, N ] }; key { [ m, M ] }; key { [ comma, semicolon, less ] }; key { [ period, colon, greater ] }; key { [ minus, underscore, dead_diaeresis ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "no_nodeadkeys" { name[Group1] = "Norwegian/Danish (no dead keys)"; include "nokia_vndr/su-8w(no)" key { [ 1, exclam, asciicircum ] }; key { [ acute, grave, backslash ] }; key { [ q, Q, asciicircum ] }; }; partial alphanumeric_keys default xkb_symbols "dk" { include "nokia_vndr/su-8w(no)" }; partial alphanumeric_keys default xkb_symbols "dk_nodeadkeys" { include "nokia_vndr/su-8w(no_nodeadkeys)" }; partial alphanumeric_keys default xkb_symbols "de" { name[Group1]= "German"; include "nokia_vndr/su-8w(base)" key { [ 1, exclam, dead_circumflex ] }; key { [ 2, quotedbl, at ] }; key { [ 3, numbersign, EuroSign ] }; key { [ 4, currency, dollar ] }; key { [ 5, percent, sterling ] }; key { [ 6, ampersand ] }; key { [ 7, slash, braceleft ] }; key { [ 8, parenleft, bracketleft ] }; key { [ 9, parenright, bracketright ] }; key { [ 0, equal, braceright ] }; key { [ plus, question ] }; key { [ dead_acute, dead_grave, backslash ] }; key { [ q, Q, dead_circumflex ] }; key { [ w, W, at ] }; key { [ e, E, EuroSign ] }; key { [ r, R, dollar ] }; key { [ t, T, sterling ] }; key { [ z, Z ] }; key { [ u, U, braceleft ] }; key { [ i, I, bracketleft ] }; key { [ o, O, bracketright ] }; key { [ p, P, braceright ] }; key { [ udiaeresis, Udiaeresis ] }; key { [ ssharp, ssharp, backslash ] }; key { [ a, A ] }; key { [ s, S ] }; key { [ d, D ] }; key { [ f, F ] }; key { [ g, G ] }; key { [ h, H ] }; key { [ j, J ] }; key { [ k, K ] }; key { [ l, L ] }; key { [ odiaeresis, Odiaeresis ] }; key { [ adiaeresis, Adiaeresis ] }; key { [ y, Y ] }; key { [ x, X ] }; key { [ c, C ] }; key { [ v, V ] }; key { [ b, B ] }; key { [ n, N ] }; key { [ m, M ] }; key { [ comma, semicolon, less ] }; key { [ period, colon, greater ] }; // XXX Inexplicably, the diaeresis is dead on other layouts, but not // German. Go figure. key { [ minus, underscore, diaeresis ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "de_nodeadkeys" { name[Group1] = "German (no dead keys)"; include "nokia_vndr/su-8w(de)" key { [ 1, exclam, asciicircum ] }; key { [ acute, grave, backslash ] }; key { [ q, Q, asciicircum ] }; }; partial alphanumeric_keys default xkb_symbols "se" { name[Group1]= "Finnish/Swedish"; include "nokia_vndr/su-8w(base)" key { [ 1, exclam, dead_circumflex ] }; key { [ 2, quotedbl, at ] }; key { [ 3, numbersign, EuroSign ] }; key { [ 4, currency, dollar ] }; key { [ 5, percent, sterling ] }; key { [ 6, ampersand ] }; key { [ 7, slash, braceleft ] }; key { [ 8, parenleft, bracketleft ] }; key { [ 9, parenright, bracketright ] }; key { [ 0, equal, braceright ] }; key { [ plus, question ] }; key { [ dead_acute, dead_grave, backslash ] }; key { [ q, Q, dead_circumflex ] }; key { [ w, W, at ] }; key { [ e, E, EuroSign ] }; key { [ r, R, dollar ] }; key { [ t, T, sterling ] }; key { [ y, Y ] }; key { [ u, U, braceleft ] }; key { [ i, I, bracketleft ] }; key { [ o, O, bracketright ] }; key { [ p, P, braceright ] }; key { [ aring, Aring ] }; key { [ ssharp, ssharp, backslash ] }; key { [ a, A ] }; key { [ s, S ] }; key { [ d, D ] }; key { [ f, F ] }; key { [ g, G ] }; key { [ h, H ] }; key { [ j, J ] }; key { [ k, K ] }; key { [ l, L ] }; key { [ odiaeresis, Odiaeresis ] }; key { [ adiaeresis, Adiaeresis ] }; key { [ z, Z ] }; key { [ x, X ] }; key { [ c, C ] }; key { [ v, V ] }; key { [ b, B ] }; key { [ n, N ] }; key { [ m, M ] }; key { [ comma, semicolon, less ] }; key { [ period, colon, greater ] }; key { [ minus, underscore, dead_diaeresis ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "se_nodeadkeys" { name[Group1] = "Finnish/Swedish (no dead keys)"; include "nokia_vndr/su-8w(se)" key { [ 1, exclam, asciicircum ] }; key { [ acute, grave, backslash ] }; key { [ q, Q, asciicircum ] }; key { [ minus, underscore, diaeresis ] }; }; partial alphanumeric_keys default xkb_symbols "fi" { include "nokia_vndr/su-8w(se)" }; xkb_symbols "fi_nodeadkeys" { include "nokia_vndr/su-8w(se_nodeadkeys)" }; // Russian layout on first two levels, US layout on third and fourth. partial alphanumeric_keys default xkb_symbols "ru" { name[Group1]= "Russian"; include "nokia_vndr/su-8w(base)" // XXX Would be nice if this actually generated a tilde. key { [ Cyrillic_io, Cyrillic_IO, grave ] }; key { [ 1, exclam, exclam, exclam ] }; key { [ 2, at, quotedbl, at ] }; key { [ 3, numbersign, numbersign, numbersign ] }; key { [ 4, dollar, currency, dollar ] }; key { [ 5, percent, percent, percent ] }; key { [ 6, dead_circumflex, ampersand, asciicircum ] }; key { [ 7, ampersand, slash, ampersand ] }; key { [ 8, asterisk, parenleft, asterisk ] }; key { [ 9, parenleft, parenright, parenleft ] }; key { [ 0, parenright, equal, parenright ] }; key { [ minus, underscore, plus, question ] }; key { [ equal, plus, equal, plus ] }; key { [ Cyrillic_shorti, Cyrillic_SHORTI, q, Q ] }; key { [ Cyrillic_tse, Cyrillic_TSE, w, W ] }; key { [ Cyrillic_u, Cyrillic_U, e, E ] }; key { [ Cyrillic_ka, Cyrillic_KA, r, R ] }; key { [ Cyrillic_ie, Cyrillic_IE, t, T ] }; key { [ Cyrillic_en, Cyrillic_EN, y, Y ] }; key { [ Cyrillic_ghe, Cyrillic_GHE, u, U ] }; key { [ Cyrillic_sha, Cyrillic_SHA, i, I ] }; key { [ Cyrillic_shcha, Cyrillic_SHCHA, o, O ] }; key { [ Cyrillic_ze, Cyrillic_ZE, p, P ] }; key { [ Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft ] }; key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright ] }; key { [ Cyrillic_ef, Cyrillic_EF, a, A ] }; key { [ Cyrillic_yeru, Cyrillic_YERU, s, S ] }; key { [ Cyrillic_ve, Cyrillic_VE, d, D ] }; key { [ Cyrillic_a, Cyrillic_A, f, F ] }; key { [ Cyrillic_pe, Cyrillic_PE, g, G ] }; key { [ Cyrillic_er, Cyrillic_ER, h, H ] }; key { [ Cyrillic_o, Cyrillic_O, j, J ] }; key { [ Cyrillic_el, Cyrillic_EL, k, K ] }; key { [ Cyrillic_de, Cyrillic_DE, l, L ] }; key { [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, colon ] }; key { [ Cyrillic_e, Cyrillic_E, apostrophe, quotedbl ] }; key { [ Cyrillic_ya, Cyrillic_YA, z, Z ] }; key { [ Cyrillic_che, Cyrillic_CHE, x, X ] }; key { [ Cyrillic_es, Cyrillic_ES, c, C ] }; key { [ Cyrillic_em, Cyrillic_EM, v, V ] }; key { [ Cyrillic_i, Cyrillic_I, b, B ] }; key { [ Cyrillic_te, Cyrillic_TE, n, N ] }; key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, m, M ] }; key { [ Cyrillic_be, Cyrillic_BE, comma, less ] }; key { [ Cyrillic_yu, Cyrillic_YU, period, greater ] }; key { [ slash, question, slash, question ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "ru_nodeadkeys" { name[Group1] = "Russian - no dead keys"; include "nokia_vndr/su-8w(ru)" key { [ 6, asciicircum, ampersand, asciicircum ] }; }; partial alphanumeric_keys default xkb_symbols "us" { name[Group1]= "U.S. English - International"; include "nokia_vndr/su-8w(base)" // I can't believe it's not us(intl). key { [ 1, exclam, exclamdown ] }; key { [ 2, at, twosuperior ] }; key { [ 3, numbersign ] }; key { [ 4, dollar, currency ] }; key { [ 5, percent, EuroSign ] }; key { [ 6, asciicircum, onequarter ] }; key { [ 7, ampersand, onehalf ] }; key { [ 8, asterisk, threequarters ] }; key { [ 9, parenleft, leftsinglequotemark ] }; key { [ 0, parenright, rightsinglequotemark ] }; key { [ minus, underscore, yen ] }; key { [ equal, plus, multiply ] }; key { [ q, Q, adiaeresis, Adiaeresis ] }; key { [ w, W, aring, Aring ] }; key { [ e, E, eacute, Eacute ] }; key { [ r, R, registered ] }; key { [ t, T, thorn, THORN ] }; key { [ y, Y, udiaeresis, Udiaeresis ] }; key { [ u, U, uacute, Uacute ] }; key { [ i, I, iacute, Iacute ] }; key { [ o, O, oacute, Oacute ] }; key { [ p, P, odiaeresis, Odiaeresis ] }; key { [ bracketleft, braceleft, guillemotleft ] }; key { [ bracketright, braceright, guillemotright ] }; key { [ a, A, aacute, Aacute ] }; key { [ s, S, ssharp, section ] }; key { [ d, D, eth, ETH ] }; key { [ f, F ] }; key { [ g, G ] }; key { [ h, H ] }; key { [ j, J ] }; key { [ k, K ] }; key { [ l, L, oslash, Ooblique ] }; key { [ semicolon, colon, paragraph, degree ] }; // XXX Not entirely sure if fourth level is quotedbl or diaeresis. // The former makes a lot more sense. key { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; key { [ z, Z, ae, AE ] }; key { [ x, X ] }; key { [ c, C, copyright ] }; key { [ v, V ] }; key { [ b, B ] }; key { [ n, N, ntilde, Ntilde ] }; key { [ m, M, mu ] }; key { [ comma, less, ccedilla, Ccedilla ] }; key { [ period, greater ] }; key { [ slash, question, questiondown ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "us_nodeadkeys" { name[Group1] = "U.S. English - no dead keys"; include "nokia_vndr/su-8w(us_intl)" // XXX Not entirely sure if second level is quotedbl or diaeresis. // The former makes a lot more sense. key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; }; partial default alphanumeric_keys xkb_symbols "base" { // forked from from pc(pc105); madness. key { [ Escape ] }; // the extra key on most European keyboards key { [ less, greater, bar, brokenbar ] }; // these keys are common to all layouts key { [ backslash, bar ] }; key { [ space ] }; key { [ BackSpace ] }; key { [ Tab, ISO_Left_Tab ] }; key { [ Return ] }; // we don't ever generate this key, but the VKB needs it always. key { [ KP_Enter ] }; // generated from the headset, must always be in the map. key { [ XF86Phone ] }; key { [ Caps_Lock ] }; key { [ Num_Lock, Pointer_EnableKeys ] }; key { [ Shift_L ] }; key { [ Control_L ] }; key { [ Alt_L, Meta_L ] }; key { [ Super_L ] }; key { [ Shift_R ] }; key { [ Control_R ] }; key { [ Alt_R, Meta_R ] }; key { [ Super_R ] }; key { [ Menu ] }; key { [ F1 ] }; key { [ F2 ] }; key { [ F3 ] }; key { [ F4 ] }; key { [ F5 ] }; key { [ F6 ] }; key { [ F7 ] }; key { [ F8 ] }; key { [ F9 ] }; key { [ F11 ] }; key { [ F10 ] }; key { [ F12 ] }; // begin modifier mappings modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L, Control_R }; modifier_map Mod2 { Num_Lock }; // Fake keys for virtual<->real modifiers mapping key { [ ISO_Level3_Shift ] }; key { [ Mode_switch ] }; modifier_map Mod5 { , }; key { [ NoSymbol, Alt_L ] }; modifier_map Mod1 { , }; key { [ NoSymbol, Meta_L ] }; modifier_map Mod1 { }; key { [ NoSymbol, Super_L ] }; modifier_map Mod4 { }; key { [ NoSymbol, Hyper_L ] }; modifier_map Mod4 { }; key { [ Insert ] }; key { [ Delete ] }; key { [ End ] }; key { [ Up ] }; key { [ Left ] }; key { [ Down ] }; key { [ Right ] }; // True for all layouts (except for ru). key { [ grave, asterisk, asciitilde ] }; // SU-8W uses 140 for Home, not the normal keycode. Very useful. key { [ NoSymbol ] }; // Ditto LWIN/RWIN and Page Up/Page Down. key { [ none ] }; key { [ NoSymbol ] }; // The LWIN & RWIN keys correspond to the 'select left' and // 'select right' keys. key { [ Prior ] }; key { [ Next ] }; // = 140 ~ key { [ Home ] }; // = 138 ~ key { [ Menu ] }; key { [ XF86Mail ] }; // Power button. key { [ Execute ] }; };