diff --git a/Xorg/xorg/data/xkbdata/Makefile b/Xorg/xorg/data/xkbdata/Makefile index 7587cfeb8..4157539d1 100644 --- a/Xorg/xorg/data/xkbdata/Makefile +++ b/Xorg/xorg/data/xkbdata/Makefile @@ -30,7 +30,7 @@ define Package/xkbdata endef define Package/xkbdata/install - $(INSTALL_DIR) $(1)/usr/share/X11/xkb/{rules,types,keycodes,geometry,compat} + $(INSTALL_DIR) $(1)/usr/share/X11/xkb/{rules,types,keycodes,geometry,compat,symbols} $(INSTALL_DATA) \ $(PKG_INSTALL_DIR)/usr/share/X11/xkb/rules/xorg \ $(1)/usr/share/X11/xkb/rules/base @@ -53,6 +53,12 @@ define Package/xkbdata/install $(INSTALL_DATA) \ $(PKG_INSTALL_DIR)/usr/share/X11/xkb/compat/* \ $(1)/usr/share/X11/xkb/compat/ + + $(if $(filter y,$(CONFIG_TARGET_omap24xx_n810-gui)), \ + $(INSTALL_DIR) $(1)/usr/share/X11/xkb/symbols/nokia_vndr; \ + $(INSTALL_DATA) ./files/nokia_n810/rx-44 $(1)/usr/share/X11/xkb/symbols/nokia_vndr/; \ + $(INSTALL_DATA) ./files/nokia_n810/su-8w $(1)/usr/share/X11/xkb/symbols/nokia_vndr/; \ + ) endef $(eval $(call BuildPackage,xkbdata)) diff --git a/Xorg/xorg/data/xkbdata/files/nokia_n810/rx-44 b/Xorg/xorg/data/xkbdata/files/nokia_n810/rx-44 new file mode 100644 index 000000000..b775ca035 --- /dev/null +++ b/Xorg/xorg/data/xkbdata/files/nokia_n810/rx-44 @@ -0,0 +1,309 @@ +partial alphanumeric_keys +xkb_symbols "us" { + name[Group1] = "U.S. English"; + + include "nokia_vndr/rx-44(base)" + + key { [ a, A, exclam, exclam ] }; + key { [ s, S, quotedbl, quotedbl ] }; + key { [ d, D, at, at ] }; + key { [ f, F, numbersign, numbersign ] }; + key { [ g, G, backslash, backslash ] }; + key { [ h, H, slash, slash ] }; + key { [ j, J, parenleft, parenleft ] }; + key { [ k, K, parenright, parenright ] }; + key { [ l, L, asterisk, asterisk ] }; + key { [ apostrophe, question, question, question ] }; + + key { [ z, Z, yen, yen ] }; + key { [ x, X, asciicircum, asciicircum ] }; + key { [ c, C, asciitilde, asciitilde ] }; + key { [ v, V, percent, percent ] }; + key { [ b, B, ampersand, ampersand ] }; + key { [ n, N, dollar, dollar ] }; + key { [ m, M, EuroSign, EuroSign ] }; + key { [ semicolon, colon, sterling, sterling ] }; + key { [ minus, underscore, underscore, underscore ] }; + key { [ plus, equal, equal, equal ] }; + + key { [ comma, less, comma, less ] }; + key { [ period, greater, period, greater ] }; +}; + + + +partial alphanumeric_keys +xkb_symbols "fisenoda" { + name[Group1] = "Finnish/Swedish/Norwegian/Danish"; + + include "nokia_vndr/rx-44(base)" + + key { [ a, A, exclam, exclam ] }; + key { [ s, S, quotedbl, quotedbl ] }; + key { [ d, D, at, at ] }; + key { [ f, F, numbersign, numbersign ] }; + key { [ g, G, asterisk, asterisk ] }; + key { [ h, H, backslash, backslash ] }; + key { [ j, J, slash, slash ] }; + key { [ k, K, parenleft, parenleft ] }; + key { [ l, L, parenright, parenright ] }; + key { [ aring, Aring, question, question ] }; + + key { [ z, Z, EuroSign, EuroSign ] }; + key { [ x, X, asciitilde, asciitilde ] }; + key { [ c, C, percent, percent ] }; + key { [ v, V, ampersand, ampersand ] }; + key { [ b, B, plus, plus ] }; + key { [ n, N, less, less ] }; + key { [ m, M, greater, greater ] }; + key { type="EIGHT_LEVEL", [ oslash, Oslash, equal, equal, odiaeresis, Odiaeresis, equal, equal ] }; + key { type="EIGHT_LEVEL", [ ae, AE, apostrophe, apostrophe, adiaeresis, Adiaeresis, apostrophe, apostrophe ] }; + key { [ minus, underscore, underscore, underscore ] }; + + key { [ comma, semicolon, comma, semicolon ] }; + key { [ period, colon, period, colon ] }; +}; + + + +partial alphanumeric_keys +xkb_symbols "ptes" { + name[Group1] = "Portuguese/Spanish"; + + include "nokia_vndr/rx-44(base)" + + key { [ a, A, exclam, exclam ] }; + key { [ s, S, quotedbl, quotedbl ] }; + key { [ d, D, at, at ] }; + key { [ f, F, numbersign, numbersign ] }; + key { [ g, G, asterisk, asterisk ] }; + key { [ h, H, backslash, backslash ] }; + key { [ j, J, slash, slash ] }; + key { [ k, K, parenleft, parenleft ] }; + key { [ l, L, parenright, parenright ] }; + key { [ dead_acute, dead_grave, dead_diaeresis, dead_diaeresis ] }; + + key { [ z, Z, EuroSign, EuroSign ] }; + key { [ x, X, percent, percent ] }; + key { [ c, C, ampersand, ampersand ] }; + key { [ v, V, exclamdown, exclamdown ] }; + key { [ b, B, apostrophe, apostrophe ] }; + key { [ n, N, plus, plus ] }; + key { [ m, M, equal, equal ] }; + key { [ ccedilla, Ccedilla, questiondown, questiondown ] }; + key { [ ntilde, Ntilde, question, question ] }; + key { [ dead_tilde, dead_circumflex, dead_circumflex, dead_circumflex ] }; + + key { [ comma, semicolon, minus, minus ] }; + key { [ period, colon, underscore, underscore ] }; +}; + + + +partial alphanumeric_keys +xkb_symbols "fr" { + name[Group1] = "French"; + + include "nokia_vndr/rx-44(base)" + + key { [ a, A, 1, 1 ] }; + key { [ z, Z, 2, 2 ] }; + + key { [ q, Q, at, at ] }; + key { [ s, S, percent, percent ] }; + key { [ d, D, ecircumflex, Ecircumflex ] }; + key { [ f, F, eacute, Eacute ] }; + key { [ g, G, egrave, Egrave ] }; + key { [ h, H, oe, OE ] }; + key { [ j, J, parenleft, parenleft ] }; + key { [ k, K, parenright, parenright ] }; + key { [ l, L, agrave, Agrave ] }; + key { [ m, M, ugrave, Ugrave ] }; + + key { [ w, w, EuroSign, EuroSign ] }; + key { [ x, X, numbersign, numbersign ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, plus, plus ] }; + key { [ b, B, equal, equal ] }; + key { [ n, N, quotedbl, quotedbl ] }; + key { [ comma, question, backslash, backslash ] }; + key { [ semicolon, period, minus, minus ] }; + key { [ colon, slash, underscore, underscore ] }; + key { [ apostrophe, apostrophe, mu, mu ] }; + + key { [ less, greater, less, greater ] }; + key { [ exclam, section, asterisk, asterisk ] }; +}; + + + +partial alphanumeric_keys +xkb_symbols "de" { + name[Group1] = "German"; + + include "nokia_vndr/rx-44(base)" + + key { [ z, Z, 6, 6 ] }; + + key { [ a, A, exclam, exclam ] }; + key { [ s, S, quotedbl, quotedbl ] }; + key { [ d, D, at, at ] }; + key { [ f, F, numbersign, numbersign ] }; + key { [ g, G, percent, percent ] }; + key { [ h, H, backslash, backslash ] }; + key { [ j, J, slash, slash ] }; + key { [ k, K, parenleft, parenleft ] }; + key { [ l, L, parenright, parenright ] }; + key { [ udiaeresis, Udiaeresis, question, question ] }; + + key { [ y, Y, EuroSign, EuroSign ] }; + key { [ x, X, asciitilde, asciitilde ] }; + key { [ c, C, asterisk, asterisk ] }; + key { [ v, V, ampersand, ampersand ] }; + key { [ b, B, plus, plus ] }; + key { [ n, N, less, less ] }; + key { [ m, M, greater, greater ] }; + key { [ odiaeresis, Odiaeresis, equal, equal ] }; + key { [ adiaeresis, Adiaeresis, apostrophe, apostrophe ] }; + key { [ minus, underscore, ssharp, ssharp ] }; + + key { [ comma, semicolon, comma, semicolon ] }; + key { [ period, colon, period, colon ] }; +}; + + +// Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons. +partial alphanumeric_keys +xkb_symbols "ru" { + name[Group1] = "Russian"; + + include "nokia_vndr/rx-44(base)" + + key { type="EIGHT_LEVEL", [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] }; + key { type="EIGHT_LEVEL", [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] }; + key { type="EIGHT_LEVEL", [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] }; + key { type="EIGHT_LEVEL", [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] }; + key { type="EIGHT_LEVEL", [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] }; + key { type="EIGHT_LEVEL", [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] }; + key { type="EIGHT_LEVEL", [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] }; + key { type="EIGHT_LEVEL", [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] }; + key { type="EIGHT_LEVEL", [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] }; + key { type="EIGHT_LEVEL", [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] }; + + key { type="EIGHT_LEVEL", [ a, A, exclam, exclam, Cyrillic_ef, Cyrillic_EF, exclam, exclam ] }; + key { type="EIGHT_LEVEL", [ s, S, quotedbl, quotedbl, Cyrillic_yeru, Cyrillic_YERU, quotedbl, quotedbl ] }; + key { type="EIGHT_LEVEL", [ d, D, at, at, Cyrillic_ve, Cyrillic_VE, at, at ] }; + key { type="EIGHT_LEVEL", [ f, F, numbersign, numbersign, Cyrillic_a, Cyrillic_A, numbersign, numbersign ] }; + key { type="EIGHT_LEVEL", [ g, G, backslash, backslash, Cyrillic_pe, Cyrillic_PE, backslash, backslash ] }; + key { type="EIGHT_LEVEL", [ h, H, slash, slash, Cyrillic_er, Cyrillic_ER, slash, slash ] }; + key { type="EIGHT_LEVEL", [ j, J, parenleft, parenleft, Cyrillic_o, Cyrillic_O, parenleft, parenleft ] }; + key { type="EIGHT_LEVEL", [ k, K, parenright, parenright, Cyrillic_el, Cyrillic_EL, parenright, parenright ] }; + key { type="EIGHT_LEVEL", [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon, Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon, Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon ] }; + + key { type="EIGHT_LEVEL", [ z, Z, underscore, underscore, Cyrillic_ya, Cyrillic_YA, minus, minus ] }; + key { type="EIGHT_LEVEL", [ x, X, percent, percent, Cyrillic_che, Cyrillic_CHE, percent, percent ] }; + key { type="EIGHT_LEVEL", [ c, C, 0x1002116, 0x1002116, Cyrillic_es, Cyrillic_ES, 0x1002116, 0x1002116 ] }; + key { type="EIGHT_LEVEL", [ v, V, equal, equal, Cyrillic_em, Cyrillic_EM, equal, equal ] }; + key { type="EIGHT_LEVEL", [ b, B, ampersand, ampersand, Cyrillic_i, Cyrillic_I, ampersand, ampersand ] }; + key { type="EIGHT_LEVEL", [ n, N, asterisk, asterisk, Cyrillic_te, Cyrillic_TE, asterisk, asterisk ] }; + key { type="EIGHT_LEVEL", [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_be, Cyrillic_BE, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_be, Cyrillic_BE, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_yu, Cyrillic_YU, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_yu, Cyrillic_YU, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + + key { type="EIGHT_LEVEL", [ period, comma, period, comma, period, comma, period, comma ] }; + key { type="EIGHT_LEVEL", [ period, comma, period, comma, period, comma, period, comma ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] }; + key { type="EIGHT_LEVEL", [ Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] }; +}; + + + +partial alphanumeric_keys +xkb_symbols "it" { + name[Group1] = "Italian"; + + include "nokia_vndr/rx-44(base)" + + key { [ a, A, exclam, exclam ] }; + key { [ s, S, quotedbl, quotedbl ] }; + key { [ d, D, at, at ] }; + key { [ f, F, numbersign, numbersign ] }; + key { [ g, G, asterisk, asterisk ] }; + key { [ h, H, backslash, backslash ] }; + key { [ j, J, slash, slash ] }; + key { [ k, K, parenleft, parenleft ] }; + key { [ l, L, parenright, parenright ] }; + key { [ apostrophe, question, igrave, Igrave ] }; + + key { [ z, Z, EuroSign, EuroSign ] }; + key { [ x, X, asciitilde, asciitilde ] }; + key { [ c, C, ampersand, ampersand ] }; + key { [ v, V, equal, equal ] }; + key { [ b, B, less, less ] }; + key { [ n, N, greater, greater ] }; + key { [ m, M, plus, plus ] }; + key { [ eacute, Eacute, ograve, Ograve ] }; + key { [ egrave, Egrave, agrave, Agrave ] }; + key { [ minus, underscore, ugrave, Ugrave ] }; + + key { [ comma, semicolon, comma, semicolon ] }; + key { [ period, colon, period, colon ] }; +}; + +partial default alphanumeric_keys +xkb_symbols "base" { + 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 { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; + + // broken UI spec. + key { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] }; + + key { [ Multi_key, Multi_key, Multi_key, Multi_key ] }; + key { [ Shift_L, Shift_L, Shift_L, Shift_L ] }; + key { [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift ] }; + key { [ space, space, space, space ] }; + key { [ Control_R, Control_R, Control_R, Control_R ] }; + key { [ Tab, Tab, Tab, Tab ] }; + + modifier_map Shift { Shift_L }; + modifier_map Mod5 { ISO_Level3_Shift }; + modifier_map Control { Control_R }; + + key { [ Return ] }; + key { [ Up ] }; + key { [ Down ] }; + key { [ Left ] }; + key { [ Right ] }; + + key { [ Escape ] }; + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + + // generated from the headset, must always be in the map. + key { [ XF86Phone ] }; +}; diff --git a/Xorg/xorg/data/xkbdata/files/nokia_n810/su-8w b/Xorg/xorg/data/xkbdata/files/nokia_n810/su-8w new file mode 100644 index 000000000..8292db1a9 --- /dev/null +++ b/Xorg/xorg/data/xkbdata/files/nokia_n810/su-8w @@ -0,0 +1,482 @@ +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, ISO_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 ] }; + + key { [ Home ] }; + key { [ Menu ] }; + key { [ XF86Mail ] }; + + // Power button. + key { [ Execute ] }; +};