From 5edf40fbe9a0d82f8d2dd33ce0fcfd1e4a8cf76f Mon Sep 17 00:00:00 2001 From: "Sicelo A. Mhlongo" Date: Sat, 2 Aug 2025 21:05:38 +0200 Subject: [PATCH] xkeyboard-config: upgrade to latest upstream Upgrade to latest upstream HEAD, paving the way to eventually drop the fork. The Nokia patch has been submitted upstream, https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/840 As of xkeyboard-config 2.45, the data directory has been changed to /usr/share/xkeyboard-config-2/ instead of the legacy /usr/share/X11/xkb. Update paths in the device-nokia-n900 package to match. Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6869 [ci:skip-build]: already built successfully in CI --- device/community/device-nokia-n900/APKBUILD | 12 +- .../{x11-keymap => xkb-keymap} | 126 +- temp/xkeyboard-config/APKBUILD | 14 +- temp/xkeyboard-config/re-nokia.patch | 2403 +++++++++++++++++ 4 files changed, 2481 insertions(+), 74 deletions(-) rename device/community/device-nokia-n900/{x11-keymap => xkb-keymap} (95%) create mode 100644 temp/xkeyboard-config/re-nokia.patch diff --git a/device/community/device-nokia-n900/APKBUILD b/device/community/device-nokia-n900/APKBUILD index 93398757c..870b4829b 100644 --- a/device/community/device-nokia-n900/APKBUILD +++ b/device/community/device-nokia-n900/APKBUILD @@ -2,8 +2,8 @@ # Maintainer: Sicelo # Co-Maintainer: Danct12 pkgname=device-nokia-n900 -pkgver=46 -pkgrel=1 +pkgver=47 +pkgrel=0 pkgdesc="Nokia N900" url="https://postmarketos.org" arch="armv7" @@ -81,7 +81,7 @@ source=" udev/15-bq27k.rules udev/90-touchscreen-dev.rules upower.conf - x11-keymap + xkb-keymap xorg.conf xresources " @@ -178,8 +178,8 @@ x11() { xkeyboard_config() { install_if="$pkgname=$pkgver-r$pkgrel xkeyboard-config" replaces="xkeyboard-config" - install -D -m644 "$srcdir"/x11-keymap \ - "$subpkgdir"/usr/share/X11/xkb/symbols/nokia_vndr/rx-51 + install -D -m644 "$srcdir"/xkb-keymap \ + "$subpkgdir"/usr/share/xkeyboard-config-2/symbols/nokia_vndr/nokiarx51 } i3wm() { @@ -284,7 +284,7 @@ e440ed7a3070c17e003b86b72dbe6d8194d01b577ca8dd56dd066f216b6dda32bb965c780950f178 1acc441b9f83dc91fd65fa3f89b8205bfd72a465286bc181b4e7e92dd4b8c0bc5c20a18dab46ff3ee8ae70940efd7d767b3dfb920edb4c74377bd418b838693d 15-bq27k.rules c6012aef28b096141b924fced226ec99fb93eb53b69c064a8887d8fecdf8dc08a3ba3db399e18d88374c6ef4c59013a30699c7e4d76e5cb771040582573a0527 90-touchscreen-dev.rules 9b99feee42dd6bdd122769994c786d3127c41e0aa3321f19c82a9d3845cf07b522908621a31cbddd9599fe18c5c37127d9b4be4255cd7fa8e0e8983bf73eb41b upower.conf -c7837e6688f09c7d650ac7479b8881d4bad709480a71a1dea8b5bba4f4215d6b48a3aebd3f58923bbd48813559478d4ef137dcc9838d321722e141f0aa6a6085 x11-keymap +4de54d007bd354461fe4d6d455fe3f29694c132a3996c79b68070d606b5ca1839f9027202ebb731035f0bf6504b42fbd5ab15c7b47b7f308ce768a84d45024c4 xkb-keymap a91f98daa60efa2beb2ff6b405097f92edca5f1bbb9e7675499139be52ca2570712f8f06f9032ef29f636f99c8f8da8b992f746eab6424aac04260c16158bcc2 xorg.conf 183dfdd545ba05e216209b1abe45e4af4e0ee16b2e73cff0e7ea7b9524ee35a1cf85213a77f32a1a94287aee6546885dbd71c6de1f4f1a1e2961e638ff27cdf6 xresources " diff --git a/device/community/device-nokia-n900/x11-keymap b/device/community/device-nokia-n900/xkb-keymap similarity index 95% rename from device/community/device-nokia-n900/x11-keymap rename to device/community/device-nokia-n900/xkb-keymap index 90bf5fba2..fe40573f4 100644 --- a/device/community/device-nokia-n900/x11-keymap +++ b/device/community/device-nokia-n900/xkb-keymap @@ -1,7 +1,7 @@ default partial alphanumeric_keys xkb_symbols "common" { - include "nokia_vndr/rx-51(common_keys)" - include "nokia_vndr/rx-51(modifiers)" + include "nokia_vndr/nokiarx51(common_keys)" + include "nokia_vndr/nokiarx51(modifiers)" key { [ BackSpace, Delete, Escape, F12 ] }; @@ -17,7 +17,7 @@ xkb_symbols "common" { // 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" + // "nokia_vndr/nokiarx51(common)+nokia_vndr/nokiarx51(us)+nokia_vndr/nokiarx51(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!!! @@ -53,8 +53,8 @@ xkb_symbols "common" { partial alphanumeric_keys xkb_symbols "us" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; }; @@ -63,8 +63,8 @@ xkb_symbols "us" { partial alphanumeric_keys xkb_symbols "pl" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "Polish"; }; @@ -73,8 +73,8 @@ xkb_symbols "pl" { partial alphanumeric_keys xkb_symbols "fise" { - include "nokia_vndr/rx-51(nordic_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(nordic_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Finnish/Swedish"; @@ -87,8 +87,8 @@ xkb_symbols "fise" { partial alphanumeric_keys xkb_symbols "dano" { - include "nokia_vndr/rx-51(nordic_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(nordic_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Danish/Norwegian"; @@ -101,8 +101,8 @@ xkb_symbols "dano" { partial alphanumeric_keys xkb_symbols "nordic" { - include "nokia_vndr/rx-51(nordic_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(nordic_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Danish/Finnish/Norwegian/Swedish"; @@ -117,8 +117,8 @@ xkb_symbols "nordic" { partial alphanumeric_keys xkb_symbols "ptes" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Portuguese/Spanish"; @@ -150,8 +150,8 @@ xkb_symbols "ptes" { partial alphanumeric_keys xkb_symbols "fr" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "French"; @@ -186,8 +186,8 @@ xkb_symbols "fr" { partial alphanumeric_keys xkb_symbols "de" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "German"; @@ -211,8 +211,8 @@ xkb_symbols "de" { partial alphanumeric_keys xkb_symbols "ch" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Swiss"; @@ -250,8 +250,8 @@ xkb_symbols "ch" { // 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)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Russian"; @@ -298,8 +298,8 @@ xkb_symbols "ru" { partial alphanumeric_keys xkb_symbols "it" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Italian"; @@ -325,8 +325,8 @@ xkb_symbols "it" { partial alphanumeric_keys xkb_symbols "cz" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Czech"; @@ -353,7 +353,7 @@ xkb_symbols "cz" { partial alphanumeric_keys xkb_symbols "cz_qwerty" { - include "nokia_vndr/rx-51(cz)" + include "nokia_vndr/nokiarx51(cz)" name[Group1] = "Czech - qwerty"; @@ -374,7 +374,7 @@ xkb_symbols "cz_qwerty" { partial hidden alphanumeric_keys xkb_symbols "nordic_base" { - include "nokia_vndr/rx-51(english_base)" + include "nokia_vndr/nokiarx51(english_base)" // 1. row key { [ aring, Aring, equal, equal ] }; @@ -508,8 +508,8 @@ xkb_symbols "arrows_4btns" { // author: Roman Moravcik xkb_symbols "sk" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Slovak QWERTZ (CZ HW)"; @@ -535,7 +535,7 @@ xkb_symbols "sk" { }; xkb_symbols "sk_qwerty" { - include "nokia_vndr/rx-51(sk)" + include "nokia_vndr/nokiarx51(sk)" name[Group1] = "Slovak QWERTY (CZ hw)"; @@ -549,8 +549,8 @@ xkb_symbols "sk_qwerty" { // author: Roman Moravcik partial alphanumeric_keys xkb_symbols "aren" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Arabic"; @@ -597,8 +597,8 @@ xkb_symbols "aren" { // author: Hessam Farhang partial alphanumeric_keys xkb_symbols "faen" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Persian"; @@ -644,8 +644,8 @@ xkb_symbols "faen" { // author: Jaroslav Poriz xkb_symbols "dv" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "Dvorak"; @@ -690,8 +690,8 @@ xkb_symbols "dv" { // author: Faidon Liambotis partial alphanumeric_keys xkb_symbols "gr" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Greek"; @@ -740,8 +740,8 @@ xkb_symbols "gr" { // author: Roman Moravcik partial alphanumeric_keys xkb_symbols "bg_phonetic" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Bulgarian - Phonetic"; @@ -792,8 +792,8 @@ xkb_symbols "bg_phonetic" { // author: Nikola Kovachevski partial alphanumeric_keys xkb_symbols "mk" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Macedonian"; @@ -844,8 +844,8 @@ xkb_symbols "mk" { // author: Roman Moravcik partial alphanumeric_keys xkb_symbols "ru_phonetic" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "Russian - Phonetic"; name[Group2] = "U.S. English"; @@ -927,8 +927,8 @@ xkb_symbols "ru_phonetic" { // author: Roman Moravcik partial alphanumeric_keys xkb_symbols "he_phonetic" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Hebrew - Phonetic"; @@ -975,8 +975,8 @@ xkb_symbols "he_phonetic" { // author: Roman Moravcik partial alphanumeric_keys xkb_symbols "he" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Hebrew"; @@ -1023,8 +1023,8 @@ xkb_symbols "he" { // author: David Gegechkori partial alphanumeric_keys xkb_symbols "ge" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Georgian - Latin"; @@ -1071,8 +1071,8 @@ xkb_symbols "ge" { // author: Eriks Jansons partial alphanumeric_keys xkb_symbols "lv" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Latvian"; @@ -1120,8 +1120,8 @@ xkb_symbols "lv" { // author: Aleksandar Urosevic partial alphanumeric_keys xkb_symbols "sr_cyrillic" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Serbian - Cyrillic"; @@ -1173,8 +1173,8 @@ xkb_symbols "sr_cyrillic" { // author: Tarick partial alphanumeric_keys xkb_symbols "ua_phonetic" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "U.S. English"; name[Group2] = "Ukrainian - Phonetic"; @@ -1258,8 +1258,8 @@ xkb_symbols "ua_phonetic" { // author: Tarick partial alphanumeric_keys xkb_symbols "ua" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_2btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_2btns)" name[Group1] = "U.S. English"; name[Group2] = "Ukrainian"; @@ -1341,7 +1341,7 @@ xkb_symbols "ua" { // created on 2010-10-31 partial alphanumeric_keys xkb_symbols "ro" { - include "nokia_vndr/rx-51(english_base)" + include "nokia_vndr/nokiarx51(english_base)" name[Group1] = "Romanian"; @@ -1356,8 +1356,8 @@ xkb_symbols "ro" { // author: Thanawit Lertruengpanya partial alphanumeric_keys xkb_symbols "th" { - include "nokia_vndr/rx-51(english_base)" - include "nokia_vndr/rx-51(arrows_4btns)" + include "nokia_vndr/nokiarx51(english_base)" + include "nokia_vndr/nokiarx51(arrows_4btns)" name[Group1] = "U.S. English"; name[Group2] = "Thai Kedmanee"; diff --git a/temp/xkeyboard-config/APKBUILD b/temp/xkeyboard-config/APKBUILD index 486d53259..ec1fb18c0 100644 --- a/temp/xkeyboard-config/APKBUILD +++ b/temp/xkeyboard-config/APKBUILD @@ -1,8 +1,9 @@ # Maintainer: Sicelo A. Mhlongo pkgname=xkeyboard-config pkgver=9999 -_pkgver=2.41 -pkgrel=0 +_pkgver=2.45 +_commit="23fec5367a042639ed93f7cf3878fbe9ddb84115" +pkgrel=1 pkgdesc="X keyboard configuration files" url="https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config" arch="armv7" @@ -11,9 +12,11 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" depends_dev="$pkgname" makedepends="gettext meson perl libxslt" checkdepends="gawk" -source="https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/archive/xkeyboard-config-$_pkgver/xkeyboard-config-xkeyboard-config-$_pkgver.tar.gz +source=" + https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/archive/$_commit/xkeyboard-config-$_commit.tar.gz + re-nokia.patch " -builddir="$srcdir"/xkeyboard-config-xkeyboard-config-$_pkgver +builddir="$srcdir/xkeyboard-config-$_commit" build() { abuild-meson . output @@ -29,5 +32,6 @@ package() { } sha512sums=" -bae6ce7441154b8582cb431256899d748f8f45e24a28898e767e212d1233ea55d52de608ff760f37bb9930e47f1d0d840d085fd4129927e4a1ad3ab446f5b908 xkeyboard-config-xkeyboard-config-2.41.tar.gz +b40f1be143495cbf20b18016643cef5ff123f4b9eb236bbd789a300d220bd9476f858ee5bfb1bd4191aa6e3ece4b65510892c1982926b49ac8d2daa5dfbe258a xkeyboard-config-23fec5367a042639ed93f7cf3878fbe9ddb84115.tar.gz +88c44ba723dc97fdaba04076fc49ff09c01384b689e93c9b1ab2b7c4547ea88cb64fbd2f203094abe149d4c1ff6efe38529ddf37f97fbbc3a22a714966289775 re-nokia.patch " diff --git a/temp/xkeyboard-config/re-nokia.patch b/temp/xkeyboard-config/re-nokia.patch new file mode 100644 index 000000000..c52d6ab12 --- /dev/null +++ b/temp/xkeyboard-config/re-nokia.patch @@ -0,0 +1,2403 @@ +From 8e01047b4faf3ed4b1d5ff901d3fbeaa3259da41 Mon Sep 17 00:00:00 2001 +From: "Sicelo A. Mhlongo" +Date: Thu, 31 Jul 2025 00:18:52 +0200 +Subject: [PATCH] restore and update nokia configs + +--- + geometry/nokia | 53 + + rules/0010-lists.part | 3 + + rules/0090-model_geometry.part | 1 + + rules/0130-modellayout_symbols.part | 4 + + rules/0160-modellayout1_symbols.part | 2 + + rules/0180-modellayout2_symbols.part | 2 + + rules/0200-modellayout3_symbols.part | 2 + + rules/0220-modellayout4_symbols.part | 2 + + rules/0350-model_types.part | 1 + + symbols/nokia_vndr/nokiarx44 | 303 ++++++ + symbols/nokia_vndr/nokiarx51 | 1385 ++++++++++++++++++++++++++ + symbols/nokia_vndr/nokiasu8w | 490 +++++++++ + types/nokia | 15 + + 13 files changed, 2263 insertions(+) + create mode 100644 geometry/nokia + create mode 100644 symbols/nokia_vndr/nokiarx44 + create mode 100644 symbols/nokia_vndr/nokiarx51 + create mode 100644 symbols/nokia_vndr/nokiasu8w + create mode 100644 types/nokia + +diff --git a/geometry/nokia b/geometry/nokia +new file mode 100644 +index 00000000..2d0fd56c +--- /dev/null ++++ b/geometry/nokia +@@ -0,0 +1,53 @@ ++// Zoomed 3x because of text size ++ ++default xkb_geometry "nokiarx51" { ++ ++ description= "Nokia RX-51"; ++ width= 273; // 13x6mm + 2x1.5mm border + 2x5mm border ++ height= 54; // 3x5mm + 2x1.5mm border ++ ++ shape.cornerRadius= 1.5; ++ shape "NORM" { { [18,15] } }; ++ shape "SPCE" { { [36,15] } }; ++ shape "FRAME" { cornerRadius= 2.5, { [243,54] } }; ++ ++ solid "FRAME" { ++ shape= "FRAME"; ++ color= "white"; ++ top= 0; ++ left= 15; ++ }; ++ ++ section.left= 15; ++ row.left= 4.5; ++ key.shape= "NORM"; ++ key.gap= 0; ++ section "Keys" { ++ top= 0; ++ row { ++ top= 4.5; ++ keys { { , "NORM", color="grey20" }, ++ , , , , , ++ , , , , , , ++ { , "NORM", color="grey20" } ++ }; ++ }; ++ row { ++ top= 19.5; ++ keys { { , "NORM", color="grey20" }, ++ , , , , , ++ , , , , , , ++ { , "NORM", color="grey20" } ++ }; ++ }; ++ row { ++ top= 34.5; ++ keys { { , "NORM", color="grey20" }, ++ , , , , , , , ++ { , "SPCE", color="white" }, ++ , , ++ }; ++ }; ++ }; // End of "Keys" section ++ ++}; // End of "nokiarx51" geometry +diff --git a/rules/0010-lists.part b/rules/0010-lists.part +index 2f55b528..1e97585c 100644 +--- a/rules/0010-lists.part ++++ b/rules/0010-lists.part +@@ -14,6 +14,9 @@ + // Microsoft models (using MS geometry) + ! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface + ++// Nokia devices and keyboards ++! $nokiamodels = nokiasu8w nokiarx44 nokiarx51 ++ + // TypeMatrix geometries + ! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 + +diff --git a/rules/0090-model_geometry.part b/rules/0090-model_geometry.part +index 00cb87ac..de91a6e7 100644 +--- a/rules/0090-model_geometry.part ++++ b/rules/0090-model_geometry.part +@@ -22,6 +22,7 @@ + $applealu = macintosh(%m) + hhk = hhk(basic) + kinesis = kinesis(model100) ++ $nokiamodels = nokia(%m) + sun_type6_jp = sun(type6jp) + sun_type6_usb = sun(type6) + sun_type6_euro_usb = sun(type6tuv) +diff --git a/rules/0130-modellayout_symbols.part b/rules/0130-modellayout_symbols.part +index 6e1e7371..819c740a 100644 +--- a/rules/0130-modellayout_symbols.part ++++ b/rules/0130-modellayout_symbols.part +@@ -15,6 +15,10 @@ + applealu_iso us = macintosh_vndr/apple(alukbd)+macintosh_vndr/us(applealu_iso) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l + $applealu * = macintosh_vndr/apple(alukbd)+%l%(v) ++ nokiarx44 * = nokia_vndr/%m(%l) ++ nokiarx51 cz(qwerty) = nokia_vndr/%m(common)+nokia_vndr/%m(cz_qwerty) ++ nokiarx51 * = nokia_vndr/%m(common)+nokia_vndr/%m(%l%_v) ++ nokiasu8w * = nokia_vndr/%m(%l) + olpc $olpclayouts = olpc+%l%(m) + olpc * = olpc+%l%(v) + olpcm $olpclayouts = olpc+%l%(m) +diff --git a/rules/0160-modellayout1_symbols.part b/rules/0160-modellayout1_symbols.part +index 86c5996e..2549a067 100644 +--- a/rules/0160-modellayout1_symbols.part ++++ b/rules/0160-modellayout1_symbols.part +@@ -7,5 +7,7 @@ + applealu_iso us = macintosh_vndr/apple(alukbd)+macintosh_vndr/us(applealu_iso) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1] + $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1]) ++ nokiarx51 cz(qwerty) = nokia_vndr/%m(common)+nokia_vndr/%m(cz_qwerty) ++ nokiarx51 * = nokia_vndr/%m(common)+nokia_vndr/%m(%l[1]%_v[1]) + $thinkpads br = pc+%l[1](thinkpad) + * * = pc+%l[1]%(v[1]) +diff --git a/rules/0180-modellayout2_symbols.part b/rules/0180-modellayout2_symbols.part +index a7dc7814..cfab36a4 100644 +--- a/rules/0180-modellayout2_symbols.part ++++ b/rules/0180-modellayout2_symbols.part +@@ -1,5 +1,7 @@ + ! model layout[2] = symbols + applealu_iso us = +macintosh_vndr/us(applealu_iso):2 + $applealu $macvendorlayouts = +macintosh_vndr/%l[2]:2 ++ nokiarx51 cz(qwerty) = +nokia_vndr/%m(cz_qwerty):2 ++ nokiarx51 * = +nokia_vndr/%m(%l[2]%_v[2]):2 + $sun $sun_custom = +sun_vndr/%l[2]:2 + * * = +%l[2]%(v[2]):2 +diff --git a/rules/0200-modellayout3_symbols.part b/rules/0200-modellayout3_symbols.part +index 1f4285d8..cda6d308 100644 +--- a/rules/0200-modellayout3_symbols.part ++++ b/rules/0200-modellayout3_symbols.part +@@ -1,5 +1,7 @@ + ! model layout[3] = symbols + applealu_iso us = +macintosh_vndr/us(applealu_iso):3 + $applealu $macvendorlayouts = +macintosh_vndr/%l[3]:3 ++ nokiarx51 cz(qwerty) = +nokia_vndr/%m(cz_qwerty):3 ++ nokiarx51 * = +nokia_vndr/%m(%l[3]%_v[3]):3 + $sun $sun_custom = +sun_vndr/%l[3]:3 + * * = +%l[3]%(v[3]):3 +diff --git a/rules/0220-modellayout4_symbols.part b/rules/0220-modellayout4_symbols.part +index 7b4d41d9..170b1544 100644 +--- a/rules/0220-modellayout4_symbols.part ++++ b/rules/0220-modellayout4_symbols.part +@@ -1,5 +1,7 @@ + ! model layout[4] = symbols + applealu_iso us = +macintosh_vndr/us(applealu_iso):4 + $applealu $macvendorlayouts = +macintosh_vndr/%l[4]:4 ++ nokiarx51 cz(qwerty) = +nokia_vndr/%m(cz_qwerty):4 ++ nokiarx51 * = +nokia_vndr/%m(%l[4]%_v[4]):4 + $sun $sun_custom = +sun_vndr/%l[4]:4 + * * = +%l[4]%(v[4]):4 +diff --git a/rules/0350-model_types.part b/rules/0350-model_types.part +index f1f97ec4..98a7d4f9 100644 +--- a/rules/0350-model_types.part ++++ b/rules/0350-model_types.part +@@ -1,3 +1,4 @@ + ! model = types + $applealu = complete+numpad(mac) ++ $nokiamodels = complete+nokia + * = complete +diff --git a/symbols/nokia_vndr/nokiarx44 b/symbols/nokia_vndr/nokiarx44 +new file mode 100644 +index 00000000..350e2dfa +--- /dev/null ++++ b/symbols/nokia_vndr/nokiarx44 +@@ -0,0 +1,303 @@ ++partial alphanumeric_keys ++xkb_symbols "us" { ++ name[Group1] = "U.S. English"; ++ ++ include "nokia_vndr/nokiarx44(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/nokiarx44(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/nokiarx44(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/nokiarx44(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/nokiarx44(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, U1E9E ] }; ++ ++ 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/nokiarx44(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", [ NoSymbol, NoSymbol, 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", [ NoSymbol, NoSymbol, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] }; ++ key { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] }; ++ key { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, 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", [ NoSymbol, NoSymbol, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] }; ++}; ++ ++ ++ ++partial alphanumeric_keys ++xkb_symbols "it" { ++ name[Group1] = "Italian"; ++ ++ include "nokia_vndr/nokiarx44(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 ] }; ++}; ++ ++default partial 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/symbols/nokia_vndr/nokiarx51 b/symbols/nokia_vndr/nokiarx51 +new file mode 100644 +index 00000000..09b868d9 +--- /dev/null ++++ b/symbols/nokia_vndr/nokiarx51 +@@ -0,0 +1,1385 @@ ++default partial alphanumeric_keys ++xkb_symbols "common" { ++ include "nokia_vndr/nokiarx51(common_keys)" ++ include "nokia_vndr/nokiarx51(modifiers)" ++ ++ key { [ BackSpace, Delete, BackSpace, Delete ] }; ++ ++ // 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/nokiarx51(common)+nokia_vndr/nokiarx51(us)+nokia_vndr/nokiarx51(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 does not 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 does not 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/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++}; ++ ++ ++ ++partial alphanumeric_keys ++xkb_symbols "pl" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "Polish"; ++}; ++ ++ ++ ++partial alphanumeric_keys ++xkb_symbols "fise" { ++ include "nokia_vndr/nokiarx51(nordic_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(nordic_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(nordic_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "French"; ++ ++ // 1. row ++ key { [ a, A, 1, 1 ] }; ++ key { [ z, Z, 2, 2 ] }; ++ 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,dead_circumflex ] }; ++ key { [ m, M, ugrave, Ugrave ] }; ++ key { [ eacute, Eacute, egrave, Egrave ] }; ++ ++ // 3. row ++ key { [ w, W, EuroSign, EuroSign ] }; ++ key { [ c, C, parenleft, parenleft ] }; ++ key { [ v, V, parenright, parenright ] }; ++ key { [ b, B, slash, slash ] }; ++ key { [ comma, comma, apostrophe, apostrophe ] }; ++ key { [ semicolon, period, period, period ] }; ++}; ++ ++ ++ ++partial alphanumeric_keys ++xkb_symbols "de" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "German"; ++ ++ // 1. row ++ key { [ z, Z, 6, 6 ] }; ++ key { [ udiaeresis, Udiaeresis, ssharp, U1E9E ] }; ++ ++ // 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 ] }; ++}; ++ ++ ++ ++partial alphanumeric_keys ++xkb_symbols "ch" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "Swiss"; ++ ++ // 1. row ++ key { [ z, Z, 6, 6 ] }; ++ key { [ udiaeresis, Udiaeresis, egrave, Egrave ] }; ++ ++ // 2. row ++ key { [ h, H, equal, equal ] }; ++ key { [ j, J, parenleft, parenleft ] }; ++ key { [ k, K, parenright, parenright ] }; ++ key { [ l, L, colon, colon ] }; ++ key { [ odiaeresis, Odiaeresis, eacute, Aacute ] }; ++ key { [ adiaeresis, Adiaeresis, agrave, Agrave ] }; ++ ++ // 3. row ++ key { [ y, Y, question, question ] }; ++ key { [ x, X, exclam, exclam ] }; ++ key { [ c, C, ccedilla, Ccedilla ] }; ++ 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/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(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/nokiarx51(cz)" ++ ++ name[Group1] = "Czech - 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/nokiarx51(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 ] }; ++ 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)" ++ modifier_map Mod5 { ISO_Level3_Shift }; ++}; ++ ++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 ] }; ++}; ++ ++// author: Roman Moravcik ++xkb_symbols "sk" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "Slovak QWERTZ (CZ HW)"; ++ ++ // 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 { [ ocircumflex, adiaeresis, EuroSign, EuroSign ] }; ++ key { [ dead_caron, bar, 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, Tab, comma, comma ] }; ++}; ++ ++xkb_symbols "sk_qwerty" { ++ include "nokia_vndr/nokiarx51(sk)" ++ ++ name[Group1] = "Slovak QWERTY (CZ hw)"; ++ ++ // 1. row ++ key { [ y, Y, 6, 6 ] }; ++ ++ // 3. row ++ key { [ z, Z, equal, equal ] }; ++}; ++ ++// author: Roman Moravcik ++partial alphanumeric_keys ++xkb_symbols "aren" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Arabic"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ Arabic_dad, Arabic_fatha, 0x1000661, 0x1000661 ] }; ++ key { symbols[Group2] = [ Arabic_sad, Arabic_fathatan, 0x1000662, 0x1000662 ] }; ++ key { symbols[Group2] = [ Arabic_theh, Arabic_damma, 0x1000663, 0x1000663 ] }; ++ key { symbols[Group2] = [ Arabic_qaf, Arabic_dammatan, 0x1000664, 0x1000664 ] }; ++ key { symbols[Group2] = [ Arabic_feh, 0x100fef9, 0x1000665, 0x1000665 ] }; ++ key { symbols[Group2] = [ Arabic_ghain, Arabic_hamzaunderalef, 0x1000666, 0x1000666 ] }; ++ key { symbols[Group2] = [ Arabic_ain, rightsinglequotemark, 0x1000667, 0x1000667 ] }; ++ key { symbols[Group2] = [ Arabic_ha, Arabic_tehmarbuta, 0x1000668, 0x1000668 ] }; ++ key { symbols[Group2] = [ Arabic_khah, division, 0x1000669, 0x1000669 ] }; ++ key { symbols[Group2] = [ Arabic_hah, multiply, 0x1000660, 0x1000660 ] }; ++ key { symbols[Group2] = [ Arabic_jeem, period, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Arabic_sheen, Arabic_kasra, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Arabic_seen, Arabic_kasratan, plus, plus ] }; ++ key { symbols[Group2] = [ Arabic_yeh, Arabic_alefmaksura, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Arabic_beh, Arabic_hamzaonyeh, minus, minus ] }; ++ key { symbols[Group2] = [ Arabic_lam, 0x100fef7, underscore, underscore ] }; ++ key { symbols[Group2] = [ Arabic_alef, Arabic_hamzaonalef, parenright, parenright ] }; ++ key { symbols[Group2] = [ Arabic_teh, Arabic_tatweel, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Arabic_noon, Arabic_comma, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Arabic_meem, Arabic_semicolon, exclam, exclam ] }; ++ key { symbols[Group2] = [ Arabic_kaf, colon, Arabic_question_mark, Arabic_question_mark ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Arabic_thal, Arabic_shadda, sterling, sterling ] }; ++ key { symbols[Group2] = [ Arabic_dal, Arabic_sukun, dollar, dollar ] }; ++ key { symbols[Group2] = [ Arabic_waw, Arabic_hamzaonwaw, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Arabic_ra, 0x100fef5, slash, slash ] }; ++ key { symbols[Group2] = [ Arabic_zain, 0x100fefb, backslash, backslash ] }; ++ key { symbols[Group2] = [ Arabic_tah, Arabic_maddaonalef, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Arabic_zah, Arabic_hamza, apostrophe, apostrophe ] }; ++}; ++ ++// author: Hessam Farhang ++partial alphanumeric_keys ++xkb_symbols "faen" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Persian"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ Arabic_dad, Arabic_sukun, 0x10006f1, 0x1000661 ] }; ++ key { symbols[Group2] = [ Arabic_sad, Arabic_dammatan, 0x10006f2, 0x1000662 ] }; ++ key { symbols[Group2] = [ Arabic_theh, Arabic_kasratan, 0x10006f3, 0x1000663 ] }; ++ key { symbols[Group2] = [ Arabic_qaf, Arabic_fathatan, 0x10006f4, 0x1000664 ] }; ++ key { symbols[Group2] = [ Arabic_feh, Arabic_damma, 0x10006f5, 0x1000665 ] }; ++ key { symbols[Group2] = [ Arabic_ghain, Arabic_kasra, 0x10006f6, 0x1000666 ] }; ++ key { symbols[Group2] = [ Arabic_ain, Arabic_fatha, 0x10006f7, 0x1000667 ] }; ++ key { symbols[Group2] = [ Arabic_heh, Arabic_shadda, 0x10006f8, 0x1000668 ] }; ++ key { symbols[Group2] = [ Arabic_khah, 0x10006af, 0x10006f9, 0x1000669 ] }; ++ key { symbols[Group2] = [ Arabic_hah, 0x1000686, 0x10006f0, 0x1000660 ] }; ++ key { symbols[Group2] = [ Arabic_jeem, Arabic_comma, comma, Arabic_semicolon ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Arabic_sheen, Arabic_hamzaonwaw, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Arabic_seen, Arabic_hamzaonyeh, plus, plus ] }; ++ key { symbols[Group2] = [ 0x10006cc, period, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Arabic_beh, colon, minus, minus ] }; ++ key { symbols[Group2] = [ Arabic_lam, Arabic_hamzaonalef, underscore, underscore ] }; ++ key { symbols[Group2] = [ Arabic_alef, Arabic_maddaonalef, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Arabic_teh, Arabic_tehmarbuta, parenright, parenright ] }; ++ key { symbols[Group2] = [ Arabic_noon, guillemotright, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Arabic_meem, guillemotleft, exclam, exclam ] }; ++ key { symbols[Group2] = [ 0x10006a9, Arabic_waw, Arabic_question_mark, colon ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Arabic_zah, Arabic_kaf, sterling, period ] }; ++ key { symbols[Group2] = [ Arabic_tah, 0x1000653, dollar, dollar ] }; ++ key { symbols[Group2] = [ Arabic_zain, 0x1000698, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Arabic_ra, 0x1000670, slash, slash ] }; ++ key { symbols[Group2] = [ Arabic_thal, 0x100200c, backslash, backslash ] }; ++ key { symbols[Group2] = [ Arabic_dal, 0x1000654, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ 0x100067e, Arabic_hamza, apostrophe, apostrophe ] }; ++}; ++ ++// author: Jaroslav Poriz ++xkb_symbols "dv" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "Dvorak"; ++ ++ // 1. row ++ key { [ colon, semicolon, 1, 1 ] }; ++ key { [ w, W, 2, 2 ] }; ++ key { [ v, V, 3, 3 ] }; ++ key { [ p, P, 4, 4 ] }; ++ key { [ y, Y, 5, 5 ] }; ++ key { [ f, F, 6, 6 ] }; ++ key { [ g, G, 7, 7 ] }; ++ key { [ c, C, 8, 8 ] }; ++ key { [ r, R, 9, 9 ] }; ++ key { [ l, L, 0, 0 ] }; ++ key { [ period, comma, equal, equal ] }; ++ ++ // 2. row ++ key { [ a, A, asterisk, asterisk ] }; ++ key { [ o, O, plus, plus ] }; ++ key { [ e, E, numbersign, numbersign ] }; ++ key { [ u, U, minus, minus ] }; ++ key { [ i, I, underscore, underscore ] }; ++ key { [ d, D, exclam, parenleft ] }; ++ key { [ h, H, question, parenright ] }; ++ key { [ t, T, ampersand, ampersand ] }; ++ key { [ n, N, less, exclam ] }; ++ key { [ s, S, greater, question ] }; ++ ++ // 3. row ++ key { [ z, Z, asciitilde, asciitilde ] }; ++ key { [ q, Q, dollar, dollar ] }; ++ key { [ j, J, backslash, bar ] }; ++ key { [ k, K, grave, slash ] }; ++ key { [ x, X, parenleft, backslash ] }; ++ key { [ b, B, parenright, quotedbl ] }; ++ key { [ m, M, apostrophe, apostrophe ] }; ++ key { [ space, slash, at, at ] }; ++}; ++ ++// author: Porfyras ++// author: Roman Moravcik ++// author: Faidon Liambotis ++partial alphanumeric_keys ++xkb_symbols "gr" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Greek"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ period, colon, 1, 1 ] }; ++ key { symbols[Group2] = [ Greek_finalsmallsigma, Greek_SIGMA, 2, 2 ] }; ++ key { symbols[Group2] = [ Greek_epsilon, Greek_EPSILON, 3, 3 ] }; ++ key { symbols[Group2] = [ Greek_rho, Greek_RHO, 4, 4 ] }; ++ key { symbols[Group2] = [ Greek_tau, Greek_TAU, 5, 5 ] }; ++ key { symbols[Group2] = [ Greek_upsilon, Greek_UPSILON, 6, 6 ] }; ++ key { symbols[Group2] = [ Greek_theta, Greek_THETA, 7, 7 ] }; ++ key { symbols[Group2] = [ Greek_iota, Greek_IOTA, 8, 8 ] }; ++ key { symbols[Group2] = [ Greek_omicron, Greek_OMICRON, 9, 9 ] }; ++ key { symbols[Group2] = [ Greek_pi, Greek_PI, 0, 0 ] }; ++ key { symbols[Group2] = [ comma, semicolon, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Greek_alpha, Greek_ALPHA, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Greek_sigma, Greek_SIGMA, plus, plus ] }; ++ key { symbols[Group2] = [ Greek_delta, Greek_DELTA, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Greek_phi, Greek_PHI, minus, minus ] }; ++ key { symbols[Group2] = [ Greek_gamma, Greek_GAMMA, underscore, underscore ] }; ++ key { symbols[Group2] = [ Greek_eta, Greek_ETA, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Greek_xi, Greek_XI, parenright, parenright ] }; ++ key { symbols[Group2] = [ Greek_kappa, Greek_KAPPA, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Greek_lamda, Greek_LAMDA, exclam, exclam ] }; ++ key { symbols[Group2] = [ dead_acute, dead_diaeresis, question, question ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Greek_zeta, Greek_ZETA, sterling, sterling ] }; ++ key { symbols[Group2] = [ Greek_chi, Greek_CHI, dollar, dollar ] }; ++ key { symbols[Group2] = [ Greek_psi, Greek_PSI, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Greek_omega, Greek_OMEGA, slash, slash ] }; ++ key { symbols[Group2] = [ Greek_beta, Greek_BETA, backslash, backslash ] }; ++ key { symbols[Group2] = [ Greek_nu, Greek_NU, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Greek_mu, Greek_MU, apostrophe, apostrophe ] }; ++}; ++ ++// author: Ognian Samokovliyski ++// author: Kostadin Bashev ++// author: Roman Moravcik ++partial alphanumeric_keys ++xkb_symbols "bg_phonetic" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Bulgarian - Phonetic"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ Cyrillic_ya, Cyrillic_YA, 1, 1 ] }; ++ key { symbols[Group2] = [ Cyrillic_ve, Cyrillic_VE, 2, 2 ] }; ++ key { symbols[Group2] = [ Cyrillic_ie, Cyrillic_IE, 3, 3 ] }; ++ key { symbols[Group2] = [ Cyrillic_er, Cyrillic_ER, 4, 4 ] }; ++ key { symbols[Group2] = [ Cyrillic_te, Cyrillic_TE, 5, 5 ] }; ++ key { symbols[Group2] = [ Cyrillic_hardsign, Cyrillic_HARDSIGN, 6, 6 ] }; ++ key { symbols[Group2] = [ Cyrillic_u, Cyrillic_U, 7, 7 ] }; ++ key { symbols[Group2] = [ Cyrillic_i, Cyrillic_I, 8, 8 ] }; ++ key { symbols[Group2] = [ Cyrillic_o, Cyrillic_O, 9, 9 ] }; ++ key { symbols[Group2] = [ Cyrillic_pe, Cyrillic_PE, 0, 0 ] }; ++ key { symbols[Group2] = [ comma, semicolon, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Cyrillic_a, Cyrillic_A, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Cyrillic_es, Cyrillic_ES, plus, plus ] }; ++ key { symbols[Group2] = [ Cyrillic_de, Cyrillic_DE, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Cyrillic_ef, Cyrillic_EF, minus, minus ] }; ++ key { symbols[Group2] = [ Cyrillic_ghe, Cyrillic_GHE, underscore, underscore ] }; ++ key { symbols[Group2] = [ Cyrillic_ha, Cyrillic_HA, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Cyrillic_shorti, Cyrillic_SHORTI, parenright, parenright ] }; ++ key { symbols[Group2] = [ Cyrillic_ka, Cyrillic_KA, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Cyrillic_el, Cyrillic_EL, exclam, exclam ] }; ++ key { symbols[Group2] = [ period, colon, question, question ] }; ++ key { symbols[Group2] = [ Cyrillic_yu, Cyrillic_YU, Up, Up ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE, sterling, sterling ] }; ++ key { symbols[Group2] = [ Cyrillic_softsign, Cyrillic_SOFTSIGN, dollar, dollar ] }; ++ key { symbols[Group2] = [ Cyrillic_tse, Cyrillic_TSE, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Cyrillic_zhe, Cyrillic_ZHE, slash, slash ] }; ++ key { symbols[Group2] = [ Cyrillic_be, Cyrillic_BE, backslash, backslash ] }; ++ key { symbols[Group2] = [ Cyrillic_en, Cyrillic_EN, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Cyrillic_em, Cyrillic_EM, apostrophe, apostrophe ] }; ++ key { symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA, Left, Left ] }; ++ key { symbols[Group2] = [ Cyrillic_shcha, Cyrillic_SHCHA, Down, Down ] }; ++ key { symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE, Right, Right ] }; ++}; ++ ++// author: Nikola Kovachevski ++partial alphanumeric_keys ++xkb_symbols "mk" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Macedonian"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ Cyrillic_lje, Cyrillic_LJE, 1, 1 ] }; ++ key { symbols[Group2] = [ Cyrillic_nje, Cyrillic_NJE, 2, 2 ] }; ++ key { symbols[Group2] = [ Cyrillic_ie, Cyrillic_IE, 3, 3 ] }; ++ key { symbols[Group2] = [ Cyrillic_er, Cyrillic_ER, 4, 4 ] }; ++ key { symbols[Group2] = [ Cyrillic_te, Cyrillic_TE, 5, 5 ] }; ++ key { symbols[Group2] = [ Macedonia_dse, Macedonia_DSE, 6, 6 ] }; ++ key { symbols[Group2] = [ Cyrillic_u, Cyrillic_U, 7, 7 ] }; ++ key { symbols[Group2] = [ Cyrillic_i, Cyrillic_I, 8, 8 ] }; ++ key { symbols[Group2] = [ Cyrillic_o, Cyrillic_O, 9, 9 ] }; ++ key { symbols[Group2] = [ Cyrillic_pe, Cyrillic_PE, 0, 0 ] }; ++ key { symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Cyrillic_a, Cyrillic_A, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Cyrillic_es, Cyrillic_ES, plus, plus ] }; ++ key { symbols[Group2] = [ Cyrillic_de, Cyrillic_DE, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Cyrillic_ef, Cyrillic_EF, minus, minus ] }; ++ key { symbols[Group2] = [ Cyrillic_ghe, Cyrillic_GHE, underscore, underscore ] }; ++ key { symbols[Group2] = [ Cyrillic_ha, Cyrillic_HA, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Cyrillic_je, Cyrillic_JE, parenright, parenright ] }; ++ key { symbols[Group2] = [ Cyrillic_ka, Cyrillic_KA, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Cyrillic_el, Cyrillic_EL, exclam, exclam ] }; ++ key { symbols[Group2] = [ period, comma, question, question ] }; ++ key { symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE, Up, Up ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE, colon, colon ] }; ++ key { symbols[Group2] = [ Cyrillic_dzhe, Cyrillic_DZHE, semicolon, semicolon ] }; ++ key { symbols[Group2] = [ Cyrillic_tse, Cyrillic_TSE, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Cyrillic_ve, Cyrillic_VE, slash, slash ] }; ++ key { symbols[Group2] = [ Cyrillic_be, Cyrillic_BE, backslash, backslash ] }; ++ key { symbols[Group2] = [ Cyrillic_en, Cyrillic_EN, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Cyrillic_em, Cyrillic_EM, apostrophe, apostrophe ] }; ++ key { symbols[Group2] = [ Macedonia_kje, Macedonia_KJE, Left, Left ] }; ++ key { symbols[Group2] = [ Cyrillic_zhe, Cyrillic_ZHE, Down, Down ] }; ++ key { symbols[Group2] = [ Macedonia_gje, Macedonia_GJE, Right, Right ] }; ++}; ++ ++// author: Roman Moravcik ++partial alphanumeric_keys ++xkb_symbols "ru_phonetic" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "Russian - Phonetic"; ++ name[Group2] = "U.S. English"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group1] = [ Cyrillic_ya, Cyrillic_YA, 1, 1 ] }; ++ key { symbols[Group1] = [ Cyrillic_ve, Cyrillic_VE, 2, 2 ] }; ++ key { symbols[Group1] = [ Cyrillic_ie, Cyrillic_IE, 3, 3 ] }; ++ key { symbols[Group1] = [ Cyrillic_er, Cyrillic_ER, 4, 4 ] }; ++ key { symbols[Group1] = [ Cyrillic_te, Cyrillic_TE, 5, 5 ] }; ++ key { symbols[Group1] = [ Cyrillic_yeru, Cyrillic_YERU, 6, 6 ] }; ++ key { symbols[Group1] = [ Cyrillic_u, Cyrillic_U, 7, 7 ] }; ++ key { symbols[Group1] = [ Cyrillic_i, Cyrillic_I, 8, 8 ] }; ++ key { symbols[Group1] = [ Cyrillic_o, Cyrillic_O, 9, 9 ] }; ++ key { symbols[Group1] = [ Cyrillic_pe, Cyrillic_PE, 0, 0 ] }; ++ key { symbols[Group1] = [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] }; ++ ++ key { symbols[Group2] = [ q, Q, 1, 1 ] }; ++ key { symbols[Group2] = [ w, W, 2, 2 ] }; ++ key { symbols[Group2] = [ e, E, 3, 3 ] }; ++ key { symbols[Group2] = [ r, R, 4, 4 ] }; ++ key { symbols[Group2] = [ t, T, 5, 5 ] }; ++ key { symbols[Group2] = [ y, Y, 6, 6 ] }; ++ key { symbols[Group2] = [ u, U, 7, 7 ] }; ++ key { symbols[Group2] = [ i, I, 8, 8 ] }; ++ key { symbols[Group2] = [ o, O, 9, 9 ] }; ++ key { symbols[Group2] = [ p, P, 0, 0 ] }; ++ key { symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] }; ++ ++ // 2. row ++ key { symbols[Group1] = [ Cyrillic_a, Cyrillic_A, asterisk, asterisk ] }; ++ key { symbols[Group1] = [ Cyrillic_es, Cyrillic_ES, plus, plus ] }; ++ key { symbols[Group1] = [ Cyrillic_de, Cyrillic_DE, numbersign, numbersign ] }; ++ key { symbols[Group1] = [ Cyrillic_ef, Cyrillic_EF, minus, minus ] }; ++ key { symbols[Group1] = [ Cyrillic_ghe, Cyrillic_GHE, underscore, underscore ] }; ++ key { symbols[Group1] = [ Cyrillic_ha, Cyrillic_HA, exclam, exclam ] }; ++ key { symbols[Group1] = [ Cyrillic_shorti, Cyrillic_SHORTI, question, question ] }; ++ key { symbols[Group1] = [ Cyrillic_ka, Cyrillic_KA, semicolon, semicolon ] }; ++ key { symbols[Group1] = [ Cyrillic_el, Cyrillic_EL, colon, colon ] }; ++ key { symbols[Group1] = [ Cyrillic_yu, Cyrillic_YU, comma, comma ] }; ++ key { symbols[Group1] = [ Cyrillic_e, Cyrillic_E, period, period ] }; ++ ++ key { symbols[Group2] = [ a, A, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ s, S, plus, plus ] }; ++ key { symbols[Group2] = [ d, D, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ f, F, minus, minus ] }; ++ key { symbols[Group2] = [ g, G, underscore, underscore ] }; ++ key { symbols[Group2] = [ h, H, exclam, exclam ] }; ++ key { symbols[Group2] = [ j, J, question, question ] }; ++ key { symbols[Group2] = [ k, K, semicolon, semicolon ] }; ++ key { symbols[Group2] = [ l, L, colon, colon ] }; ++ key { symbols[Group2] = [ comma, comma, comma, comma ] }; ++ key { symbols[Group2] = [ period, period, period, period ] }; ++ ++ // 3. row ++ key { symbols[Group1] = [ Cyrillic_ze, Cyrillic_ZE, dollar, dollar ] }; ++ key { symbols[Group1] = [ Cyrillic_softsign, Cyrillic_SOFTSIGN, EuroSign, EuroSign ] }; ++ key { symbols[Group1] = [ Cyrillic_tse, Cyrillic_TSE, slash, slash ] }; ++ key { symbols[Group1] = [ Cyrillic_zhe, Cyrillic_ZHE, parenleft, parenleft ] }; ++ key { symbols[Group1] = [ Cyrillic_be, Cyrillic_BE, parenright, parenright ] }; ++ key { symbols[Group1] = [ Cyrillic_en, Cyrillic_EN, quotedbl, quotedbl ] }; ++ key { symbols[Group1] = [ Cyrillic_em, Cyrillic_EM, apostrophe, apostrophe ] }; ++ key { symbols[Group1] = [ Cyrillic_che, Cyrillic_CHE, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; ++ ++ key { symbols[Group2] = [ z, Z, dollar, dollar ] }; ++ key { symbols[Group2] = [ x, X, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ c, C, slash, slash ] }; ++ key { symbols[Group2] = [ v, V, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ b, B, parenright, parenright ] }; ++ key { symbols[Group2] = [ n, N, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ m, M, apostrophe, apostrophe ] }; ++ key { symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; ++}; ++ ++// author: Roman Moravcik ++partial alphanumeric_keys ++xkb_symbols "he_phonetic" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Hebrew - Phonetic"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ hebrew_qoph, hebrew_qoph, 1, 1 ] }; ++ key { symbols[Group2] = [ hebrew_waw, hebrew_waw, 2, 2 ] }; ++ key { symbols[Group2] = [ hebrew_aleph, hebrew_aleph, 3, 3 ] }; ++ key { symbols[Group2] = [ hebrew_resh, hebrew_resh, 4, 4 ] }; ++ key { symbols[Group2] = [ hebrew_taw, hebrew_tet, 5, 5 ] }; ++ key { symbols[Group2] = [ hebrew_ayin, hebrew_ayin, 6, 6 ] }; ++ key { symbols[Group2] = [ hebrew_waw, hebrew_waw, 7, 7 ] }; ++ key { symbols[Group2] = [ hebrew_yod, hebrew_yod, 8, 8 ] }; ++ key { symbols[Group2] = [ hebrew_samech, hebrew_samech, 9, 9 ] }; ++ key { symbols[Group2] = [ hebrew_pe, hebrew_finalpe, 0, 0 ] }; ++ key { symbols[Group2] = [ comma, semicolon, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ hebrew_aleph, hebrew_aleph, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ hebrew_shin, hebrew_shin, plus, plus ] }; ++ key { symbols[Group2] = [ hebrew_dalet, hebrew_dalet, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ hebrew_pe, hebrew_finalpe, minus, minus ] }; ++ key { symbols[Group2] = [ hebrew_gimel, hebrew_gimel, underscore, underscore ] }; ++ key { symbols[Group2] = [ hebrew_he, hebrew_he, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ hebrew_yod, hebrew_yod, parenright, parenright ] }; ++ key { symbols[Group2] = [ hebrew_kaph, hebrew_finalkaph, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ hebrew_lamed, hebrew_lamed, exclam, exclam ] }; ++ key { symbols[Group2] = [ period, colon, question, question ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ hebrew_zain, hebrew_zain, sterling, sterling ] }; ++ key { symbols[Group2] = [ hebrew_chet, hebrew_chet, dollar, dollar ] }; ++ key { symbols[Group2] = [ hebrew_zade, hebrew_finalzade, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ hebrew_waw, hebrew_waw, slash, slash ] }; ++ key { symbols[Group2] = [ hebrew_bet, hebrew_bet, backslash, backslash ] }; ++ key { symbols[Group2] = [ hebrew_nun, hebrew_finalnun, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ hebrew_mem, hebrew_finalmem, apostrophe, apostrophe ] }; ++}; ++ ++// author: Roman Moravcik ++partial alphanumeric_keys ++xkb_symbols "he" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Hebrew"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ hebrew_taw, hebrew_taw, 1, 1 ] }; ++ key { symbols[Group2] = [ hebrew_finalzade, hebrew_finalzade, 2, 2 ] }; ++ key { symbols[Group2] = [ hebrew_qoph, hebrew_qoph, 3, 3 ] }; ++ key { symbols[Group2] = [ hebrew_resh, hebrew_resh, 4, 4 ] }; ++ key { symbols[Group2] = [ hebrew_aleph, hebrew_aleph, 5, 5 ] }; ++ key { symbols[Group2] = [ hebrew_tet, hebrew_tet, 6, 6 ] }; ++ key { symbols[Group2] = [ hebrew_waw, hebrew_waw, 7, 7 ] }; ++ key { symbols[Group2] = [ hebrew_finalnun, hebrew_finalnun, 8, 8 ] }; ++ key { symbols[Group2] = [ hebrew_finalmem, hebrew_finalmem, 9, 9 ] }; ++ key { symbols[Group2] = [ hebrew_pe, hebrew_pe, 0, 0 ] }; ++ key { symbols[Group2] = [ comma, semicolon, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ hebrew_shin, hebrew_shin, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ hebrew_dalet, hebrew_dalet, plus, plus ] }; ++ key { symbols[Group2] = [ hebrew_gimel, hebrew_gimel, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ hebrew_kaph, hebrew_kaph, minus, minus ] }; ++ key { symbols[Group2] = [ hebrew_ayin, hebrew_ayin, underscore, underscore ] }; ++ key { symbols[Group2] = [ hebrew_yod, hebrew_yod, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ hebrew_chet, hebrew_chet, parenright, parenright ] }; ++ key { symbols[Group2] = [ hebrew_lamed, hebrew_lamed, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ hebrew_finalkaph, period, exclam, exclam ] }; ++ key { symbols[Group2] = [ hebrew_finalpe, colon, question, question ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ hebrew_zain, hebrew_zain, sterling, sterling ] }; ++ key { symbols[Group2] = [ hebrew_samech, hebrew_samech, dollar, dollar ] }; ++ key { symbols[Group2] = [ hebrew_bet, hebrew_bet, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ hebrew_he, hebrew_he, slash, slash ] }; ++ key { symbols[Group2] = [ hebrew_nun, hebrew_nun, backslash, backslash ] }; ++ key { symbols[Group2] = [ hebrew_mem, hebrew_mem, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ hebrew_zade, hebrew_zade, apostrophe, apostrophe ] }; ++}; ++ ++// author: David Gegechkori ++partial alphanumeric_keys ++xkb_symbols "ge" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Georgian - Latin"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ 0x010010e5, Q, 1, 1 ] }; ++ key { symbols[Group2] = [ 0x010010ec, 0x010010ed, 2, 2 ] }; ++ key { symbols[Group2] = [ 0x010010d4, E, 3, 3 ] }; ++ key { symbols[Group2] = [ 0x010010e0, 0x010010e6, 4, 4 ] }; ++ key { symbols[Group2] = [ 0x010010e2, 0x010010d7, 5, 5 ] }; ++ key { symbols[Group2] = [ 0x010010e7, Y, 6, 6 ] }; ++ key { symbols[Group2] = [ 0x010010e3, U, 7, 7 ] }; ++ key { symbols[Group2] = [ 0x010010d8, I, 8, 8 ] }; ++ key { symbols[Group2] = [ 0x010010dd, O, 9, 9 ] }; ++ key { symbols[Group2] = [ 0x010010de, P, 0, 0 ] }; ++ key { symbols[Group2] = [ comma, semicolon, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ 0x010010d0, A, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ 0x010010e1, 0x010010e8, plus, plus ] }; ++ key { symbols[Group2] = [ 0x010010d3, D, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ 0x010010e4, F, minus, minus ] }; ++ key { symbols[Group2] = [ 0x010010d2, G, underscore, underscore ] }; ++ key { symbols[Group2] = [ 0x010010f0, H, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ 0x010010ef, 0x010010df, parenright, parenright ] }; ++ key { symbols[Group2] = [ 0x010010d9, K, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ 0x010010da, L, exclam, exclam ] }; ++ key { symbols[Group2] = [ period, colon, question, question ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ 0x010010d6, 0x010010eb, sterling, sterling ] }; ++ key { symbols[Group2] = [ 0x010010ee, X, dollar, dollar ] }; ++ key { symbols[Group2] = [ 0x010010ea, 0x010010e9, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ 0x010010d5, V, slash, slash ] }; ++ key { symbols[Group2] = [ 0x010010d1, B, backslash, backslash ] }; ++ key { symbols[Group2] = [ 0x010010dc, N, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ 0x010010db, M, apostrophe, apostrophe ] }; ++}; ++ ++// author: Eriks Jansons ++partial alphanumeric_keys ++xkb_symbols "lv" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Latvian"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ q, Q, 1, 1 ] }; ++ key { symbols[Group2] = [ w, W, 2, 2 ] }; ++ key { symbols[Group2] = [ emacron, Emacron, 3, 3 ] }; ++ key { symbols[Group2] = [ rcedilla, Rcedilla, 4, 4 ] }; ++ key { symbols[Group2] = [ t, T, 5, 5 ] }; ++ key { symbols[Group2] = [ y, Y, 6, 6 ] }; ++ key { symbols[Group2] = [ umacron, Umacron, 7, 7 ] }; ++ key { symbols[Group2] = [ imacron, Imacron, 8, 8 ] }; ++ key { symbols[Group2] = [ omacron, Omacron, 9, 9 ] }; ++ key { symbols[Group2] = [ p, P, 0, 0 ] }; ++ key { symbols[Group1] = [ ISO_Group_Latch, semicolon, equal, equal], ++ symbols[Group2] = [ comma, semicolon, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ amacron, Amacron, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ scaron, Scaron, plus, plus ] }; ++ key { symbols[Group2] = [ d, D, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ f, F, minus, minus ] }; ++ key { symbols[Group2] = [ gcedilla, Gcedilla, underscore, underscore ] }; ++ key { symbols[Group2] = [ h, H, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ j, J, parenright, parenright ] }; ++ key { symbols[Group2] = [ kcedilla, Kcedilla, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ lcedilla, Lcedilla, exclam, exclam ] }; ++ key { symbols[Group2] = [ period, colon, question, question ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ zcaron, Zcaron, sterling, sterling ] }; ++ key { symbols[Group2] = [ x, X, dollar, dollar ] }; ++ key { symbols[Group2] = [ ccaron, Ccaron, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ v, V, slash, slash ] }; ++ key { symbols[Group2] = [ b, B, backslash, backslash ] }; ++ key { symbols[Group2] = [ ncedilla, Ncedilla, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ m, M, apostrophe, apostrophe ] }; ++}; ++ ++// author: Aleksandar Urosevic ++partial alphanumeric_keys ++xkb_symbols "sr_cyrillic" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Serbian - Cyrillic"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ Cyrillic_lje, Cyrillic_LJE, 1, 1 ] }; ++ key { symbols[Group2] = [ Cyrillic_nje, Cyrillic_NJE, 2, 2 ] }; ++ key { symbols[Group2] = [ Cyrillic_ie, Cyrillic_IE, 3, 3 ] }; ++ key { symbols[Group2] = [ Cyrillic_er, Cyrillic_ER, 4, 4 ] }; ++ key { symbols[Group2] = [ Cyrillic_te, Cyrillic_TE, 5, 5 ] }; ++ key { symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE, 6, 6 ] }; ++ key { symbols[Group2] = [ Cyrillic_u, Cyrillic_U, 7, 7 ] }; ++ key { symbols[Group2] = [ Cyrillic_i, Cyrillic_I, 8, 8 ] }; ++ key { symbols[Group2] = [ Cyrillic_o, Cyrillic_O, 9, 9 ] }; ++ key { symbols[Group2] = [ Cyrillic_pe, Cyrillic_PE, 0, 0 ] }; ++ key { symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA, equal, equal ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Cyrillic_a, Cyrillic_A, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Cyrillic_es, Cyrillic_ES, plus, plus ] }; ++ key { symbols[Group2] = [ Cyrillic_de, Cyrillic_DE, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Cyrillic_ef, Cyrillic_EF, minus, minus ] }; ++ key { symbols[Group2] = [ Cyrillic_ghe, Cyrillic_GHE, underscore, underscore ] }; ++ key { symbols[Group2] = [ Cyrillic_ha, Cyrillic_HA, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Cyrillic_je, Cyrillic_JE, parenright, parenright ] }; ++ key { symbols[Group2] = [ Cyrillic_ka, Cyrillic_KA, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Cyrillic_el, Cyrillic_EL, exclam, exclam ] }; ++ key { symbols[Group2] = [ period, comma, question, question ] }; ++ key { symbols[Group2] = [ Serbian_dje, Serbian_DJE, Up, Up ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE, colon, colon ] }; ++ key { symbols[Group2] = [ Cyrillic_dzhe, Cyrillic_DZHE, semicolon, semicolon ] }; ++ key { symbols[Group2] = [ Cyrillic_tse, Cyrillic_TSE, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Cyrillic_ve, Cyrillic_VE, slash, slash ] }; ++ key { symbols[Group2] = [ Cyrillic_be, Cyrillic_BE, backslash, backslash ] }; ++ key { symbols[Group2] = [ Cyrillic_en, Cyrillic_EN, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Cyrillic_em, Cyrillic_EM, apostrophe, apostrophe ] }; ++ key { symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE, Left, Left ] }; ++ key { symbols[Group2] = [ Serbian_tshe, Serbian_TSHE, Down, Down ] }; ++ key { symbols[Group2] = [ Cyrillic_zhe, Cyrillic_ZHE, Right, Right ] }; ++}; ++ ++// author: Roman Moravcik ++// author: Tarick ++partial alphanumeric_keys ++xkb_symbols "ua_phonetic" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Ukrainian - Phonetic"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group1] = [ q, Q, 1, 1 ] }; ++ key { symbols[Group1] = [ w, W, 2, 2 ] }; ++ key { symbols[Group1] = [ e, E, 3, 3 ] }; ++ key { symbols[Group1] = [ r, R, 4, 4 ] }; ++ key { symbols[Group1] = [ t, T, 5, 5 ] }; ++ key { symbols[Group1] = [ y, Y, 6, 6 ] }; ++ key { symbols[Group1] = [ u, U, 7, 7 ] }; ++ key { symbols[Group1] = [ i, I, 8, 8 ] }; ++ key { symbols[Group1] = [ o, O, 9, 9 ] }; ++ key { symbols[Group1] = [ p, P, 0, 0 ] }; ++ key { symbols[Group1] = [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] }; ++ ++ key { symbols[Group2] = [ Cyrillic_ya, Cyrillic_YA, 1, 1 ] }; ++ key { symbols[Group2] = [ Cyrillic_ve, Cyrillic_VE, 2, 2 ] }; ++ key { symbols[Group2] = [ Cyrillic_ie, Cyrillic_IE, 3, 3 ] }; ++ key { symbols[Group2] = [ Cyrillic_er, Cyrillic_ER, 4, 4 ] }; ++ key { symbols[Group2] = [ Cyrillic_te, Cyrillic_TE, 5, 5 ] }; ++ key { symbols[Group2] = [ Cyrillic_i, Cyrillic_I, 6, 6 ] }; ++ key { symbols[Group2] = [ Cyrillic_u, Cyrillic_U, 7, 7 ] }; ++ key { symbols[Group2] = [ Ukrainian_i, Ukrainian_I, 8, 8 ] }; ++ key { symbols[Group2] = [ Cyrillic_o, Cyrillic_O, 9, 9 ] }; ++ key { symbols[Group2] = [ Cyrillic_pe, Cyrillic_PE, 0, 0 ] }; ++ key { symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] }; ++ ++ // 2. row ++ key { symbols[Group1] = [ a, A, asterisk, asterisk ] }; ++ key { symbols[Group1] = [ s, S, plus, plus ] }; ++ key { symbols[Group1] = [ d, D, numbersign, numbersign ] }; ++ key { symbols[Group1] = [ f, F, minus, minus ] }; ++ key { symbols[Group1] = [ g, G, underscore, underscore ] }; ++ key { symbols[Group1] = [ h, H, exclam, exclam ] }; ++ key { symbols[Group1] = [ j, J, question, question ] }; ++ key { symbols[Group1] = [ k, K, semicolon, semicolon ] }; ++ key { symbols[Group1] = [ l, L, colon, colon ] }; ++ key { symbols[Group1] = [ comma, comma, comma, comma ] }; ++ key { symbols[Group1] = [ period, period, period, period ] }; ++ ++ key { symbols[Group2] = [ Cyrillic_a, Cyrillic_A, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Cyrillic_es, Cyrillic_ES, plus, plus ] }; ++ key { symbols[Group2] = [ Cyrillic_de, Cyrillic_DE, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Cyrillic_ef, Cyrillic_EF, minus, minus ] }; ++ key { symbols[Group2] = [ Cyrillic_ghe, Cyrillic_GHE, underscore, underscore ] }; ++ key { symbols[Group2] = [ Cyrillic_ha, Cyrillic_HA, exclam, exclam ] }; ++ key { symbols[Group2] = [ Cyrillic_shorti, Cyrillic_SHORTI, question, question ] }; ++ key { symbols[Group2] = [ Cyrillic_ka, Cyrillic_KA, semicolon, semicolon ] }; ++ key { symbols[Group2] = [ Cyrillic_el, Cyrillic_EL, colon, colon ] }; ++ key { symbols[Group2] = [ Cyrillic_yu, Cyrillic_YU, comma, comma ] }; ++ key { symbols[Group2] = [ Ukrainin_ie, Ukrainian_IE, period, period ] }; ++ ++ // 3. row ++ key { symbols[Group1] = [ z, Z, dollar, dollar ] }; ++ key { symbols[Group1] = [ x, X, EuroSign, EuroSign ] }; ++ key { symbols[Group1] = [ c, C, slash, slash ] }; ++ key { symbols[Group1] = [ v, V, parenleft, parenleft ] }; ++ key { symbols[Group1] = [ b, B, parenright, parenright ] }; ++ key { symbols[Group1] = [ n, N, quotedbl, quotedbl ] }; ++ key { symbols[Group1] = [ m, M, apostrophe, apostrophe ] }; ++ key { symbols[Group1] = [ Cyrillic_che, Cyrillic_CHE, Ukrainian_yi, Ukrainian_YI ] }; ++ ++ key { symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE, dollar, dollar ] }; ++ key { symbols[Group2] = [ Cyrillic_softsign, Cyrillic_SOFTSIGN, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Cyrillic_tse, Cyrillic_TSE, slash, slash ] }; ++ key { symbols[Group2] = [ Cyrillic_zhe, Cyrillic_ZHE, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Cyrillic_be, Cyrillic_BE, parenright, parenright ] }; ++ key { symbols[Group2] = [ Cyrillic_en, Cyrillic_EN, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Cyrillic_em, Cyrillic_EM, apostrophe, apostrophe ] }; ++ key { symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE, Ukrainian_yi, Ukrainian_YI ] }; ++}; ++ ++ ++// author: Roman Moravcik ++// author: Tarick ++partial alphanumeric_keys ++xkb_symbols "ua" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_2btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Ukrainian"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group1] = [ q, Q, 1, 1 ] }; ++ key { symbols[Group1] = [ w, W, 2, 2 ] }; ++ key { symbols[Group1] = [ e, E, 3, 3 ] }; ++ key { symbols[Group1] = [ r, R, 4, 4 ] }; ++ key { symbols[Group1] = [ t, T, 5, 5 ] }; ++ key { symbols[Group1] = [ y, Y, 6, 6 ] }; ++ key { symbols[Group1] = [ u, U, 7, 7 ] }; ++ key { symbols[Group1] = [ i, I, 8, 8 ] }; ++ key { symbols[Group1] = [ o, O, 9, 9 ] }; ++ key { symbols[Group1] = [ p, P, 0, 0 ] }; ++ key { symbols[Group1] = [ Cyrillic_ha, Cyrillic_HA, Ukrainian_yi, Ukrainian_YI ] }; ++ ++ key { symbols[Group2] = [ Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] }; ++ key { symbols[Group2] = [ Cyrillic_tse, Cyrillic_TSE, 2, 2 ] }; ++ key { symbols[Group2] = [ Cyrillic_u, Cyrillic_U, 3, 3 ] }; ++ key { symbols[Group2] = [ Cyrillic_ka, Cyrillic_KA, 4, 4 ] }; ++ key { symbols[Group2] = [ Cyrillic_ie, Cyrillic_IE, 5, 5 ] }; ++ key { symbols[Group2] = [ Cyrillic_en, Cyrillic_EN, 6, 6 ] }; ++ key { symbols[Group2] = [ Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] }; ++ key { symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA, 8, 8 ] }; ++ key { symbols[Group2] = [ Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] }; ++ key { symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE, 0, 0 ] }; ++ key { symbols[Group2] = [ Cyrillic_ha, Cyrillic_HA, Ukrainian_yi, Ukrainian_YI ] }; ++ ++ // 2. row ++ key { symbols[Group1] = [ a, A, asterisk, asterisk ] }; ++ key { symbols[Group1] = [ s, S, plus, plus ] }; ++ key { symbols[Group1] = [ d, D, numbersign, numbersign ] }; ++ key { symbols[Group1] = [ f, F, minus, minus ] }; ++ key { symbols[Group1] = [ g, G, underscore, underscore ] }; ++ key { symbols[Group1] = [ h, H, exclam, exclam ] }; ++ key { symbols[Group1] = [ j, J, question, question ] }; ++ key { symbols[Group1] = [ k, K, semicolon, semicolon ] }; ++ key { symbols[Group1] = [ l, L, colon, colon ] }; ++ key { symbols[Group1] = [ comma, comma, comma, comma ] }; ++ key { symbols[Group1] = [ period, period, period, period ] }; ++ ++ key { symbols[Group2] = [ Cyrillic_ef, Cyrillic_EF, asterisk, asterisk ] }; ++ key { symbols[Group2] = [ Ukrainian_i, Ukrainian_I, plus, plus ] }; ++ key { symbols[Group2] = [ Cyrillic_ve, Cyrillic_VE, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Cyrillic_a, Cyrillic_A, minus, minus ] }; ++ key { symbols[Group2] = [ Cyrillic_pe, Cyrillic_PE, underscore, underscore ] }; ++ key { symbols[Group2] = [ Cyrillic_er, Cyrillic_ER, exclam, exclam ] }; ++ key { symbols[Group2] = [ Cyrillic_o, Cyrillic_O, question, question ] }; ++ key { symbols[Group2] = [ Cyrillic_el, Cyrillic_EL, semicolon, semicolon ] }; ++ key { symbols[Group2] = [ Cyrillic_de, Cyrillic_DE, colon, colon ] }; ++ key { symbols[Group2] = [ Cyrillic_zhe, Cyrillic_ZHE, comma, comma ] }; ++ key { symbols[Group2] = [ Ukrainian_ie, Ukrainian_IE, period, period ] }; ++ ++ // 3. row ++ key { symbols[Group1] = [ z, Z, dollar, dollar ] }; ++ key { symbols[Group1] = [ x, X, EuroSign, EuroSign ] }; ++ key { symbols[Group1] = [ c, C, slash, slash ] }; ++ key { symbols[Group1] = [ v, V, parenleft, parenleft ] }; ++ key { symbols[Group1] = [ b, B, parenright, parenright ] }; ++ key { symbols[Group1] = [ n, N, quotedbl, quotedbl ] }; ++ key { symbols[Group1] = [ m, M, apostrophe, apostrophe ] }; ++ key { symbols[Group1] = [ Cyrillic_be, Cyrillic_BE, Cyrillic_yu, Cyrillic_YU ] }; ++ ++ key { symbols[Group2] = [ Cyrillic_ya, Cyrillic_YA, dollar, dollar ] }; ++ key { symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE, EuroSign, EuroSign ] }; ++ key { symbols[Group2] = [ Cyrillic_es, Cyrillic_ES, slash, slash ] }; ++ key { symbols[Group2] = [ Cyrillic_em, Cyrillic_EM, parenleft, parenleft ] }; ++ key { symbols[Group2] = [ Cyrillic_i, Cyrillic_I, parenright, parenright ] }; ++ key { symbols[Group2] = [ Cyrillic_te, Cyrillic_TE, quotedbl, quotedbl ] }; ++ key { symbols[Group2] = [ Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] }; ++ key { symbols[Group2] = [ Cyrillic_be, Cyrillic_BE, Cyrillic_yu, Cyrillic_YU ] }; ++}; ++ ++// author: Mihai C. ++// created on 2010-10-31 ++partial alphanumeric_keys ++xkb_symbols "ro" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ ++ name[Group1] = "Romanian"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Up, abreve ] }; ++ key { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, 0x1000219 ] }; ++ key { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Down, 0x100021b ] }; ++ key { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, acircumflex ] }; ++ ++ key { [ z, Z, icircumflex, Icircumflex] }; ++}; ++ ++// author: Thanawit Lertruengpanya ++partial alphanumeric_keys ++xkb_symbols "th" { ++ include "nokia_vndr/nokiarx51(english_base)" ++ include "nokia_vndr/nokiarx51(arrows_4btns)" ++ ++ name[Group1] = "U.S. English"; ++ name[Group2] = "Thai Kedmanee"; ++ ++ key { type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] }; ++ ++ key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC"; ++ ++ // 1. row ++ key { symbols[Group2] = [ Thai_maiyamok, Thai_leksun, Thai_lakkhangyao, plus ] }; ++ key { symbols[Group2] = [ Thai_saraaimaimalai, quotedbl, slash, Thai_leknung ] }; ++ key { symbols[Group2] = [ Thai_saraam, Thai_dochada, minus, Thai_leksong ] }; ++ key { symbols[Group2] = [ Thai_phophan, Thai_thonangmontho, Thai_phosamphao, Thai_leksam ] }; ++ key { symbols[Group2] = [ Thai_saraa, Thai_thothong, Thai_thothung, Thai_leksi ] }; ++ key { symbols[Group2] = [ Thai_maihanakat, Thai_nikhahit, Thai_sarau, Thai_sarauu ] }; ++ key { symbols[Group2] = [ Thai_saraii, Thai_maitri, Thai_saraue, Thai_baht ] }; ++ key { symbols[Group2] = [ Thai_rorua, Thai_nonen, Thai_khokhwai, Thai_lekha ] }; ++ key { symbols[Group2] = [ Thai_nonu, Thai_paiyannoi, Thai_totao, Thai_lekhok ] }; ++ key { symbols[Group2] = [ Thai_yoyak, Thai_yoying, Thai_chochan, Thai_lekchet ] }; ++ key { symbols[Group2] = [ Thai_bobaimai, Thai_thothan, Thai_khokhai, Thai_lekpaet ] }; ++ ++ // 2. row ++ key { symbols[Group2] = [ Thai_fofan, Thai_ru, Thai_chochang, Thai_lekkao ] }; ++ key { symbols[Group2] = [ Thai_hohip, Thai_khorakhang, plus, plus ] }; ++ key { symbols[Group2] = [ Thai_kokai, Thai_topatak, numbersign, numbersign ] }; ++ key { symbols[Group2] = [ Thai_dodek, Thai_sarao, minus, minus ] }; ++ key { symbols[Group2] = [ Thai_sarae, Thai_chochoe, underscore, underscore ] }; ++ key { symbols[Group2] = [ Thai_maitho, Thai_maitaikhu, Thai_ngongu, period ] }; ++ key { symbols[Group2] = [ Thai_maiek, Thai_maichattawa, Thai_loling, comma ] }; ++ key { symbols[Group2] = [ Thai_saraaa, Thai_sorusi, ampersand, ampersand ] }; ++ key { symbols[Group2] = [ Thai_sosua, Thai_sosala, exclam, exclam ] }; ++ key { symbols[Group2] = [ Thai_wowaen, Thai_soso, question, question ] }; ++ ++ // 3. row ++ key { symbols[Group2] = [ Thai_phophung, parenleft, Thai_moma, Thai_thophuthao ] }; ++ key { symbols[Group2] = [ Thai_popla, parenright, Thai_saraaimaimuan, Thai_lochula ] }; ++ key { symbols[Group2] = [ Thai_saraae, Thai_choching, Thai_fofa, Thai_lu ] }; ++ key { symbols[Group2] = [ Thai_oang, Thai_honokhuk, slash, slash ] }; ++ key { symbols[Group2] = [ Thai_sarai, Thai_phinthu, backslash, backslash ] }; ++ key { symbols[Group2] = [ Thai_sarauee, Thai_thanthakhat, Thai_khokhuat, Thai_khokhon ] }; ++ key { symbols[Group2] = [ Thai_thothahan, question, apostrophe, apostrophe ] }; ++}; +diff --git a/symbols/nokia_vndr/nokiasu8w b/symbols/nokia_vndr/nokiasu8w +new file mode 100644 +index 00000000..412ab64d +--- /dev/null ++++ b/symbols/nokia_vndr/nokiasu8w +@@ -0,0 +1,490 @@ ++partial alphanumeric_keys default ++xkb_symbols "no" { ++ ++ include "nokia_vndr/nokiasu8w(base)" ++ ++ name[Group1]= "Norwegian/Danish"; ++ ++ 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, U1E9E, 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, Oslash ] }; ++ 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" { ++ ++ include "nokia_vndr/nokiasu8w(no)" ++ ++ name[Group1] = "Norwegian/Danish (no dead keys)"; ++ ++ key { [ 1, exclam, asciicircum ] }; ++ key { [ acute, grave, backslash ] }; ++ key { [ q, Q, asciicircum ] }; ++}; ++ ++partial alphanumeric_keys default ++xkb_symbols "dk" { ++ include "nokia_vndr/nokiasu8w(no)" ++}; ++ ++partial alphanumeric_keys default ++xkb_symbols "dk_nodeadkeys" { ++ include "nokia_vndr/nokiasu8w(no_nodeadkeys)" ++}; ++ ++ ++ ++partial alphanumeric_keys default ++xkb_symbols "de" { ++ ++ include "nokia_vndr/nokiasu8w(base)" ++ ++ name[Group1]= "German"; ++ ++ 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, U1E9E, 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 ] }; ++ // 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" { ++ ++ include "nokia_vndr/nokiasu8w(de)" ++ ++ name[Group1] = "German (no dead keys)"; ++ ++ key { [ 1, exclam, asciicircum ] }; ++ key { [ acute, grave, backslash ] }; ++ key { [ q, Q, asciicircum ] }; ++}; ++ ++ ++ ++partial alphanumeric_keys default ++xkb_symbols "se" { ++ ++ include "nokia_vndr/nokiasu8w(base)" ++ ++ name[Group1]= "Finnish/Swedish"; ++ ++ 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, U1E9E, 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" { ++ ++ include "nokia_vndr/nokiasu8w(se)" ++ ++ name[Group1] = "Finnish/Swedish (no dead keys)"; ++ ++ 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/nokiasu8w(se)" ++}; ++ ++xkb_symbols "fi_nodeadkeys" { ++ include "nokia_vndr/nokiasu8w(se_nodeadkeys)" ++}; ++ ++ ++ ++partial alphanumeric_keys default ++xkb_symbols "ru" { ++ ++ // Russian layout on first two levels, US layout on third and fourth. ++ ++ include "nokia_vndr/nokiasu8w(base)" ++ ++ name[Group1]= "Russian"; ++ ++ 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" { ++ ++ include "nokia_vndr/nokiasu8w(ru)" ++ ++ name[Group1] = "Russian (no dead keys)"; ++ ++ key { [ 6, asciicircum, ampersand, asciicircum ] }; ++}; ++ ++ ++ ++partial alphanumeric_keys default ++xkb_symbols "us" { ++ ++ include "nokia_vndr/nokiasu8w(base)" ++ ++ name[Group1]= "U.S. English (international)"; ++ ++ 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, Oslash ] }; ++ key { [ semicolon, colon, paragraph, degree ] }; ++ 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" { ++ ++ include "nokia_vndr/nokiasu8w(us)" ++ ++ name[Group1] = "U.S. English (international, no dead keys)"; ++ ++ key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; ++}; ++ ++ ++ ++default partial alphanumeric_keys ++xkb_symbols "base" { ++ ++ // Forked from pc(pc105) -- madness. ++ ++ key { [ Escape ] }; ++ ++ key { [ less, greater, bar, brokenbar ] }; ++ ++ 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 ] }; ++ // This is 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 ] }; ++ ++ 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 ] }; ++ modifier_map Mod5 { }; ++ ++ key { [ ISO_Level5_Shift ] }; ++ modifier_map Mod3 { }; ++ ++ 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 Win 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 ] }; ++}; +diff --git a/types/nokia b/types/nokia +new file mode 100644 +index 00000000..9eaaa4e0 +--- /dev/null ++++ b/types/nokia +@@ -0,0 +1,15 @@ ++default partial xkb_types "default" { ++ ++ // A type that is used by Nokia devices and keyboards. ++ ++ virtual_modifiers LevelThree; ++ ++ type "PC_FN_LEVEL2" { ++ modifiers = LevelThree; ++ map[None] = Level1; ++ map[LevelThree] = Level2; ++ level_name[Level1] = "Base"; ++ level_name[Level2] = "Fn"; ++ }; ++ ++}; +-- +2.50.1 +