From 2b01300337208ea78223582fea744030ca7629a2 Mon Sep 17 00:00:00 2001
From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
Date: Thu, 31 Jul 2025 00:18:52 +0200
Subject: [PATCH] Restore and update Nokia device configs

These were dropped in !672 [0], but the devices are still relatively popular in
the Linux community.

[0] https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/672

Signed-off-By: Sicelo A. Mhlongo <absicsz@gmail.com>
---
 changes/models/+restore-nokia.feature.md |    5 +
 geometry/nokia                           |   53 +
 rules/base.xml                           |   21 +
 rules/rules.in                           |   13 +
 symbols/nokia_vndr/nokiarx44             |  303 +++++
 symbols/nokia_vndr/nokiarx51             | 1385 ++++++++++++++++++++++
 symbols/nokia_vndr/nokiasu8w             |  490 ++++++++
 types/nokia                              |   15 +
 8 files changed, 2285 insertions(+)
 create mode 100644 changes/models/+restore-nokia.feature.md
 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/changes/models/+restore-nokia.feature.md b/changes/models/+restore-nokia.feature.md
new file mode 100644
index 00000000..6ebc5063
--- /dev/null
+++ b/changes/models/+restore-nokia.feature.md
@@ -0,0 +1,5 @@
+Restored configs for Nokia Internet Tablets (N900, N810) and SU-8W Bluetooth keyboard
+
+Relevant discussion: [xkeyboard-config-672]
+
+[xkeyboard-config-672] https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/672#note_2445614
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 { { <LCTL>, "NORM", color="grey20" },
+		   <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+		   <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AB08>,
+		   { <BKSP>, "NORM", color="grey20" }
+	    };
+	};
+	row {
+	    top= 19.5;
+	    keys { { <RALT>, "NORM", color="grey20" },
+		   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+		   <AC06>, <AC07>, <AC08>, <AC09>, <AB09>, <UP>,
+		   { <RTRN>, "NORM", color="grey20" }
+	    };
+	};
+	row {
+	    top= 34.5;
+	    keys { { <LFSH>, "NORM", color="grey20" },
+		   <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>, <AB07>,
+		   { <SPCE>, "SPCE", color="white" },
+		   <LEFT>, <DOWN>, <RGHT>
+	    };
+	};
+    }; // End of "Keys" section
+
+}; // End of "nokiarx51" geometry
diff --git a/rules/base.xml b/rules/base.xml
index 51140ca2..7cdd405e 100644
--- a/rules/base.xml
+++ b/rules/base.xml
@@ -1012,6 +1012,27 @@
         <vendor>NEC</vendor>
       </configItem>
     </model>
+    <model>
+      <configItem>
+        <name>nokiarx44</name>
+        <description>Nokia N810</description>
+        <vendor>Nokia</vendor>
+      </configItem>
+    </model>
+    <model>
+      <configItem>
+        <name>nokiarx51</name>
+        <description>Nokia N900</description>
+        <vendor>Nokia</vendor>
+      </configItem>
+    </model>
+    <model>
+      <configItem>
+        <name>nokiasu8w</name>
+        <description>Nokia Wireless Keyboard SU-8W</description>
+        <vendor>Nokia</vendor>
+      </configItem>
+    </model>
     <model>
       <configItem>
         <name>omnikey101</name>
diff --git a/rules/rules.in b/rules/rules.in
index 610820f4..ccb207dc 100644
--- a/rules/rules.in
+++ b/rules/rules.in
@@ -44,6 +44,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
 
@@ -194,6 +197,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)
@@ -231,6 +235,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)
@@ -263,6 +271,8 @@
   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])
 
@@ -272,6 +282,8 @@
 # endfor
   applealu_iso	 us			=	+macintosh_vndr/us(applealu_iso):%i
  $applealu	$macvendorlayouts	=	+macintosh_vndr/%l[%i]:%i
+  nokiarx51	 cz(qwerty)		=	+nokia_vndr/%m(cz_qwerty):%i
+  nokiarx51	 *			=	+nokia_vndr/%m(%l[%i]%_v[%i]):%i
  $sun		$sun_custom		=	+sun_vndr/%l[%i]:%i
   *		 *			=	+%l[%i]%(v[%i]):%i
 
@@ -385,6 +397,7 @@
 
 ! model		=	types
  $applealu	=	complete+numpad(mac)
+ $nokiamodels	=	complete+nokia
   *		=	complete
 
 ! layout[any]	option					= symbols
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 <AC01>	{	[	a,		A,		exclam,		exclam		]	};
+    key <AC02>	{	[	s,		S,		quotedbl,	quotedbl	]	};
+    key <AC03>	{	[	d,		D,		at,		at		]	};
+    key <AC04>	{	[	f,		F,		numbersign,	numbersign	]	};
+    key <AC05>	{	[	g,		G,		backslash,	backslash	]	};
+    key <AC06>	{	[	h,		H,		slash,		slash		]	};
+    key <AC07>	{	[	j,		J,		parenleft,	parenleft	]	};
+    key <AC08>	{	[	k,		K,		parenright,	parenright	]	};
+    key <AC09>	{	[	l,		L,		asterisk,	asterisk	]	};
+    key <AC11>  {       [       apostrophe,     question,       question,	question	]	};
+
+    key <AB01>	{	[	z,		Z,		yen,		yen		]	};
+    key <AB02>	{	[	x,		X,		asciicircum,	asciicircum	]	};
+    key <AB03>	{	[	c,		C,		asciitilde,	asciitilde	]	};
+    key <AB04>	{	[	v,		V,		percent,	percent		]	};
+    key <AB05>	{	[	b,		B,		ampersand,	ampersand	]	};
+    key <AB06>	{	[	n,		N,		dollar,		dollar		]	};
+    key <AB07>	{	[	m,		M,		EuroSign,	EuroSign	]	};
+    key <AC10>  {       [       semicolon,      colon,          sterling,	sterling	]	};
+    key <AE11>  {       [       minus,          underscore,     underscore,	underscore	]	};
+    key <AE12>  {       [       plus,           equal,          equal,		equal		]	};
+
+    key <AB08>  {       [       comma,          less,           comma,		less		]	};
+    key <AB09>  {       [       period,         greater,        period,		greater		]	};
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fisenoda" {
+    name[Group1] = "Finnish/Swedish/Norwegian/Danish";
+
+    include "nokia_vndr/nokiarx44(base)"
+
+    key <AC01>	{	[	a,		A,		exclam,		exclam		]	};
+    key <AC02>	{	[	s,		S,		quotedbl,	quotedbl	]	};
+    key <AC03>	{	[	d,		D,		at,		at		]	};
+    key <AC04>	{	[	f,		F,		numbersign,	numbersign	]	};
+    key <AC05>	{	[	g,		G,		asterisk,	asterisk	]	};
+    key <AC06>	{	[	h,		H,		backslash,	backslash	]	};
+    key <AC07>	{	[	j,		J,		slash,		slash		]	};
+    key <AC08>	{	[	k,		K,		parenleft,	parenleft	]	};
+    key <AC09>	{	[	l,		L,		parenright,	parenright	]	};
+    key <AC11>  {       [       aring,          Aring,          question,	question	]	};
+
+    key <AB01>	{	[	z,		Z,		EuroSign,	EuroSign	]	};
+    key <AB02>	{	[	x,		X,		asciitilde,	asciitilde	]	};
+    key <AB03>	{	[	c,		C,		percent,	percent		]	};
+    key <AB04>	{	[	v,		V,		ampersand,	ampersand	]	};
+    key <AB05>	{	[	b,		B,		plus,		plus		]	};
+    key <AB06>	{	[	n,		N,		less,		less		]	};
+    key <AB07>	{	[	m,		M,		greater,	greater		]	};
+    key <AC10>  {       type="EIGHT_LEVEL", [       oslash,     Oslash,		equal,		equal,		odiaeresis,		Odiaeresis,	equal,		equal		]       };
+    key <AE11>  {       type="EIGHT_LEVEL", [       ae,		AE,		apostrophe,	apostrophe,	adiaeresis,		Adiaeresis,	apostrophe,	apostrophe	]       };
+    key <AE12>  {       [       minus,          underscore,     underscore,	underscore	]       };
+
+    key <AB08>  {       [       comma,          semicolon,      comma,		semicolon	]       };
+    key <AB09>  {       [       period,         colon,          period,		colon		]       };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "ptes" {
+    name[Group1] = "Portuguese/Spanish";
+
+    include "nokia_vndr/nokiarx44(base)"
+
+    key <AC01>	{	[	a,		A,		exclam,		exclam		]	};
+    key <AC02>	{	[	s,		S,		quotedbl,	quotedbl	]	};
+    key <AC03>	{	[	d,		D,		at,		at		]	};
+    key <AC04>	{	[	f,		F,		numbersign,	numbersign	]	};
+    key <AC05>	{	[	g,		G,		asterisk,	asterisk	]	};
+    key <AC06>	{	[	h,		H,		backslash,	backslash	]	};
+    key <AC07>	{	[	j,		J,		slash,		slash		]	};
+    key <AC08>	{	[	k,		K,		parenleft,	parenleft	]	};
+    key <AC09>	{	[	l,		L,		parenright,	parenright	]	};
+    key <AC11>  {       [       dead_acute,     dead_grave,     dead_diaeresis,	dead_diaeresis	]	};
+
+    key <AB01>	{	[	z,		Z,		EuroSign,	EuroSign	]	};
+    key <AB02>	{	[	x,		X,		percent,	percent 	]	};
+    key <AB03>	{	[	c,		C,		ampersand,	ampersand	]	};
+    key <AB04>	{	[	v,		V,		exclamdown,	exclamdown	]	};
+    key <AB05>	{	[	b,		B,		apostrophe,	apostrophe	]	};
+    key <AB06>	{	[	n,		N,		plus,		plus		]	};
+    key <AB07>	{	[	m,		M,		equal,		equal		]	};
+    key <AC10>  {       [       ccedilla,       Ccedilla,       questiondown,	questiondown	]	};
+    key <AE11>  {       [       ntilde,         Ntilde,         question,	question	]	};
+    key <AE12>  {       [       dead_tilde,     dead_circumflex, dead_circumflex, dead_circumflex ]	};
+
+    key <AB08>  {       [	comma,		semicolon,	minus,		minus		]	};
+    key <AB09>  {       [	period,		colon,		underscore,	underscore	]	};
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fr" {
+    name[Group1] = "French";
+
+    include "nokia_vndr/nokiarx44(base)"
+
+    key <AD01>	{	[	a,		A,		1,              1               ]	};
+    key <AD02>	{	[	z,		Z,		2,              2               ]	};
+
+    key <AC01>	{	[	q,		Q,		at,             at              ]	};
+    key <AC02>	{	[	s,		S,		percent,        percent         ]	};
+    key <AC03>	{	[	d,		D,		ecircumflex,    Ecircumflex	]	};
+    key <AC04>	{	[	f,		F,		eacute,  	Eacute          ]	};
+    key <AC05>	{	[	g,		G,		egrave,    	Egrave          ]	};
+    key <AC06>	{	[	h,		H,		oe,             OE      	]	};
+    key <AC07>	{	[	j,		J,		parenleft,      parenleft   	]	};
+    key <AC08>	{	[	k,		K,		parenright,     parenright	]	};
+    key <AC09>	{	[	l,		L,		agrave,         Agrave      	]	};
+    key <AC11>  {       [       m,              M,              ugrave,         Ugrave          ]       };
+
+    key <AB01>	{	[	w,		w,		EuroSign,       EuroSign	]	};
+    key <AB02>	{	[	x,		X,		numbersign,     numbersign 	]	};
+    key <AB03>	{	[	c,		C,		ccedilla,       Ccedilla	]	};
+    key <AB04>	{	[	v,		V,		plus,           plus	        ]	};
+    key <AB05>	{	[	b,		B,		equal,          equal   	]	};
+    key <AB06>	{	[	n,		N,		quotedbl,       quotedbl	]	};
+    key <AB07>	{	[	comma,		question,       backslash,      backslash	]	};
+    key <AC10>  {       [       semicolon,      period,         minus,          minus           ]       };
+    key <AE11>  {       [       colon,          slash,          underscore,     underscore      ]       };
+    key <AE12>  {       [       apostrophe,     apostrophe,     mu,             mu              ]       };
+
+    key <AB08>  {       [       less,		greater,	less,		greater		]	};
+    key <AB09>  {       [       exclam,		section,	asterisk,	asterisk        ]       };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "de" {
+    name[Group1] = "German";
+
+    include "nokia_vndr/nokiarx44(base)"
+
+    key <AD06>	{	[	z,		Z,		6,		6		]	};
+
+    key <AC01>	{	[	a,		A,		exclam,		exclam		]	};
+    key <AC02>	{	[	s,		S,		quotedbl,	quotedbl	]	};
+    key <AC03>	{	[	d,		D,		at,		at		]	};
+    key <AC04>	{	[	f,		F,		numbersign,	numbersign	]	};
+    key <AC05>	{	[	g,		G,		percent,	percent    	]	};
+    key <AC06>	{	[	h,		H,		backslash,	backslash	]	};
+    key <AC07>	{	[	j,		J,		slash,		slash	  	]	};
+    key <AC08>	{	[	k,		K,		parenleft,	parenleft	]	};
+    key <AC09>	{	[	l,		L,		parenright,	parenright	]	};
+    key <AC11>  {	[       udiaeresis,     Udiaeresis,     question,	question	]       };
+
+    key <AB01>	{	[	y,		Y,		EuroSign,	EuroSign	]	};
+    key <AB02>	{	[	x,		X,		asciitilde,	asciitilde	]	};
+    key <AB03>	{	[	c,		C,		asterisk,	asterisk	]	};
+    key <AB04>	{	[	v,		V,		ampersand,	ampersand	]	};
+    key <AB05>	{	[	b,		B,		plus,		plus		]	};
+    key <AB06>	{	[	n,		N,		less,		less		]	};
+    key <AB07>	{	[	m,		M,		greater,	greater		]	};
+    key <AC10>  {	[       odiaeresis,     Odiaeresis,     equal,		equal		]       };
+    key <AE11>  {	[       adiaeresis,     Adiaeresis,     apostrophe,	apostrophe	]       };
+    key <AE12>  {	[       minus,          underscore,     ssharp,		U1E9E		]       };
+
+    key <AB08>  {       [       comma,          semicolon,      comma,		semicolon	]	};
+    key <AB09>  {       [       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 <AD01>	{	type="EIGHT_LEVEL", [	q,			Q,			1,			1,			Cyrillic_shorti,	Cyrillic_SHORTI,	1,			1			]	};
+    key <AD02>	{	type="EIGHT_LEVEL", [	w,			W,			2,			2,			Cyrillic_tse,	Cyrillic_TSE,	2,			2			]	};
+    key <AD03>	{	type="EIGHT_LEVEL", [	e,			E,			3,			3,			Cyrillic_u,	Cyrillic_U,	3,			3			]	};
+    key <AD04>	{	type="EIGHT_LEVEL", [	r,			R,			4,			4,			Cyrillic_ka,	Cyrillic_KA,	4,			4			]	};
+    key <AD05>	{	type="EIGHT_LEVEL", [	t,			T,			5,			5,			Cyrillic_ie,	Cyrillic_IE,	5,			5			]	};
+    key <AD06>	{	type="EIGHT_LEVEL", [	y,			Y,			6,			6,			Cyrillic_en,	Cyrillic_EN,	6,			6			]	};
+    key <AD07>	{	type="EIGHT_LEVEL", [	u,			U,			7,			7,			Cyrillic_ghe,	Cyrillic_GHE,	7,			7			]	};
+    key <AD08>	{	type="EIGHT_LEVEL", [	i,			I,			8,			8,			Cyrillic_sha,	Cyrillic_SHA,	8,			8			]	};
+    key <AD09>	{	type="EIGHT_LEVEL", [	o,			O,			9,			9,			Cyrillic_shcha,	Cyrillic_SHCHA,	9,			9			]	};
+    key <AD10>	{	type="EIGHT_LEVEL", [	p,			P,			0,			0,			Cyrillic_ze,	Cyrillic_ZE,	0,			0			]	};
+
+    key <AC01>	{	type="EIGHT_LEVEL", [	a,			A,			exclam,			exclam,			Cyrillic_ef,	Cyrillic_EF,	exclam,			exclam			]	};
+    key <AC02>	{	type="EIGHT_LEVEL", [	s,			S,			quotedbl,		quotedbl,		Cyrillic_yeru,	Cyrillic_YERU,	quotedbl,		quotedbl		]	};
+    key <AC03>	{	type="EIGHT_LEVEL", [	d,			D,			at,			at,			Cyrillic_ve,	Cyrillic_VE,	at,			at			]	};
+    key <AC04>	{	type="EIGHT_LEVEL", [	f,			F,			numbersign,		numbersign,		Cyrillic_a,	Cyrillic_A,	numbersign,		numbersign		]	};
+    key <AC05>	{	type="EIGHT_LEVEL", [	g,			G,			backslash,		backslash,		Cyrillic_pe,	Cyrillic_PE,	backslash,		backslash		]	};
+    key <AC06>	{	type="EIGHT_LEVEL", [	h,			H,			slash,			slash,			Cyrillic_er,	Cyrillic_ER,	slash,			slash			]	};
+    key <AC07>	{	type="EIGHT_LEVEL", [	j,			J,			parenleft,		parenleft,		Cyrillic_o,	Cyrillic_O,	parenleft,		parenleft		]	};
+    key <AC08>	{	type="EIGHT_LEVEL", [	k,			K,			parenright,		parenright,		Cyrillic_el,	Cyrillic_EL,	parenright,		parenright		]	};
+    key <AC09>	{	type="EIGHT_LEVEL", [	l,			L,			colon,			colon,			Cyrillic_de,	Cyrillic_DE,	colon,			colon			]	};
+    key <AC11>	{	type="EIGHT_LEVEL", [	NoSymbol,		NoSymbol,		semicolon,		semicolon,		Cyrillic_zhe,	Cyrillic_ZHE,	semicolon,		semicolon		]	};
+
+    key <AB01>	{	type="EIGHT_LEVEL", [	z,			Z,			underscore,		underscore,		Cyrillic_ya,	Cyrillic_YA,	minus,			minus			]	};
+    key <AB02>	{	type="EIGHT_LEVEL", [	x,			X,			percent,		percent,		Cyrillic_che,	Cyrillic_CHE,	percent,		percent			]	};
+    key <AB03>	{	type="EIGHT_LEVEL", [	c,			C,			0x1002116,		0x1002116,		Cyrillic_es,	Cyrillic_ES,	0x1002116,		0x1002116		]	};
+    key <AB04>	{	type="EIGHT_LEVEL", [	v,			V,			equal,			equal,			Cyrillic_em,	Cyrillic_EM,	equal,			equal			]	};
+    key <AB05>	{	type="EIGHT_LEVEL", [	b,			B,			ampersand,		ampersand,		Cyrillic_i,	Cyrillic_I,	ampersand,		ampersand		]	};
+    key <AB06>	{	type="EIGHT_LEVEL", [	n,			N,			asterisk,		asterisk,		Cyrillic_te,	Cyrillic_TE,	asterisk,		asterisk		]	};
+    key <AB07>	{	type="EIGHT_LEVEL", [	m,			M,			apostrophe,		apostrophe,		Cyrillic_softsign,	Cyrillic_SOFTSIGN,	apostrophe,		apostrophe		]	};
+    key <AC10>	{	type="EIGHT_LEVEL", [	NoSymbol,		NoSymbol,		minus,			minus,			Cyrillic_be,	Cyrillic_BE,	minus,			minus			]	};
+    key <AE11>	{	type="EIGHT_LEVEL", [	NoSymbol,		NoSymbol,		question,		question,		Cyrillic_yu,	Cyrillic_YU,	question,		question		]	};
+    key <AE12>	{	type="EIGHT_LEVEL", [	NoSymbol,		NoSymbol,		Cyrillic_hardsign,	Cyrillic_HARDSIGN,	Cyrillic_ha,	Cyrillic_HA,	Cyrillic_hardsign,	Cyrillic_HARDSIGN	]	};
+
+    key <AB08>	{	type="EIGHT_LEVEL", [	period,			comma,			period,			comma,			period,		comma,		period,			comma			]	};
+    key <AB09>	{	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 <AC01>	{	[	a,		A,		exclam,		exclam		]	};
+    key <AC02>	{	[	s,		S,		quotedbl,	quotedbl	]	};
+    key <AC03>	{	[	d,		D,		at,		at		]	};
+    key <AC04>	{	[	f,		F,		numbersign,	numbersign	]	};
+    key <AC05>	{	[	g,		G,		asterisk,	asterisk	]	};
+    key <AC06>	{	[	h,		H,		backslash,	backslash	]	};
+    key <AC07>	{	[	j,		J,		slash,		slash		]	};
+    key <AC08>	{	[	k,		K,		parenleft,	parenleft	]	};
+    key <AC09>	{	[	l,		L,		parenright,	parenright	]	};
+    key <AC11>  {       [       apostrophe,     question,       igrave,         Igrave		]       };
+
+    key <AB01>	{	[	z,		Z,		EuroSign,	EuroSign	]	};
+    key <AB02>	{	[	x,		X,		asciitilde,	asciitilde	]	};
+    key <AB03>	{	[	c,		C,		ampersand,	ampersand	]	};
+    key <AB04>	{	[	v,		V,		equal,		equal		]	};
+    key <AB05>	{	[	b,		B,		less,		less		]	};
+    key <AB06>	{	[	n,		N,		greater,	greater		]	};
+    key <AB07>	{	[	m,		M,		plus,		plus		]	};
+    key <AC10>  {       [       eacute,         Eacute,         ograve,         Ograve          ]       };
+    key <AE11>  {       [       egrave,         Egrave,         agrave,         Agrave          ]       };
+    key <AE12>  {       [       minus,          underscore,     ugrave,         Ugrave          ]       };
+
+    key <AB08>  {       [       comma,          semicolon,      comma,		semicolon	]       };
+    key <AB09>  {       [       period,         colon,          period,		colon		]       };
+};
+
+default partial alphanumeric_keys
+xkb_symbols "base" {
+    key <AD01>	{	[	q,			Q,			1,			1			]	};
+    key <AD02>	{	[	w,			W,			2,			2			]	};
+    key <AD03>	{	[	e,			E,			3,			3			]	};
+    key <AD04>	{	[	r,			R,			4,			4			]	};
+    key <AD05>	{	[	t,			T,			5,			5			]	};
+    key <AD06>	{	[	y,			Y,			6,			6			]	};
+    key <AD07>	{	[	u,			U,			7,			7			]	};
+    key <AD08>	{	[	i,			I,			8,			8			]	};
+    key <AD09>	{	[	o,			O,			9,			9			]	};
+    key <AD10>	{	[	p,			P,			0,			0			]	};
+    key <BKSP>	{	[	BackSpace,		BackSpace,		BackSpace,		BackSpace		]	};
+
+    // broken UI spec.
+    key <RTRN>	{	[	KP_Enter,		KP_Enter,		KP_Enter,		KP_Enter		]	};
+
+    key <COMP>	{	[	Multi_key,		Multi_key,		Multi_key,		Multi_key		]	};
+    key <LFSH>	{	[	Shift_L,		Shift_L,		Shift_L,		Shift_L			]	};
+    key <FN>	{	[	ISO_Level3_Shift,	ISO_Level3_Shift,	ISO_Level3_Shift,	ISO_Level3_Shift	]	};
+    key <SPCE>	{	[	space,			space,			space,			space			]	};
+    key <RCTL>	{	[	Control_R,		Control_R,		Control_R,		Control_R		]	};
+    key <TAB>	{	[	Tab,			Tab,			Tab,			Tab			]	};
+
+    modifier_map Shift { Shift_L };
+    modifier_map Mod5 { ISO_Level3_Shift };
+    modifier_map Control { Control_R };
+
+    key <KPEN>	{	[	Return		]	};
+    key <UP>	{	[	Up		]	};
+    key <DOWN>	{	[	Down		]	};
+    key <LEFT>	{	[	Left		]	};
+    key <RGHT>	{	[	Right		]	};
+
+    key <ESC>	{	[	Escape		]	};
+    key <FK01>	{	[	F1		]	};
+    key <FK02>	{	[	F2		]	};
+    key <FK03>	{	[	F3		]	};
+    key <FK04>	{	[	F4		]	};
+    key <FK05>	{	[	F5		]	};
+    key <FK06>	{	[	F6		]	};
+    key <FK07>	{	[	F7		]	};
+    key <FK08>	{	[	F8		]	};
+    key <FK09>	{	[	F9		]	};
+    key <FK10>	{	[	F10		]	};
+    key <FK11>	{	[	F11		]	};
+    key <FK12>	{	[	F12		]	};
+
+    // generated from the headset, must always be in the map.
+    key <I29>  {	[	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 <BKSP>	{ [	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 <AB09>	{ [	odiaeresis,	Odiaeresis,	exclam,		exclam		] };
+    key <UP>	{ [	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 <AB09>	{ [	oslash,		Oslash,		exclam,		exclam		] };
+    key <UP>	{ [	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 <AB09>	{ [	odiaeresis,	Odiaeresis,	exclam,		exclam,		oslash,		Oslash,		exclam,		exclam		] };
+    key <UP>	{ [	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 <AB08>	{ [	dead_acute,	dead_acute,	dead_grave,	dead_grave	] };
+
+    // 2. row
+    key <AC05>	{ [	g,		G,		exclamdown,	exclamdown	] };
+    key <AC06>	{ [	h,		H,		exclam,		exclam		] };
+    key <AC07>	{ [	j,		J,		questiondown,	questiondown	] };
+    key <AC08>	{ [	k,		K,		question,	question	] };
+    key <AC09>	{ [	l,		L,		dead_diaeresis,	dead_diaeresis	] };
+    key <AB09>	{ [	ntilde,		Ntilde,		dead_tilde,	dead_tilde	] };
+    key <UP>	{ [	ccedilla,	Ccedilla,	dead_circumflex,dead_circumflex	] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		parenleft,	parenleft	] };
+    key <AB02>	{ [	x,		X,		parenright,	parenright 	] };
+    key <AB03>	{ [	c,		C,		slash,		slash		] };
+    key <AB04>	{ [	v,		V,		quotedbl,	quotedbl	] };
+    key <AB05>	{ [	b,		B,		apostrophe,	apostrophe	] };
+    key <AB06>	{ [	n,		N,		colon,		colon		] };
+    key <AB07>	{ [	m,		M,		semicolon,	semicolon	] };
+    key <LEFT>	{ [	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 <AD01>	{ [	a,		A,		1,		1		] };
+    key <AD02>	{ [	z,		Z,		2,		2		] };
+    key <AB08>	{ [	agrave,		Agrave,		ccedilla,	Ccedilla	] };
+
+    // 2. row
+    key <AC01>	{ [	q,		Q,		asterisk,	asterisk	] };
+    key <AC02>	{ [	s,		S,		plus,		plus		] };
+    key <AC03>	{ [	d,		D,		numbersign,	numbersign	] };
+    key <AC04>	{ [	f,		F,		minus,  	minus		] };
+    key <AC05>	{ [	g,		G,		underscore,	underscore	] };
+    key <AC06>	{ [	h,		H,		exclam,		exclam		] };
+    key <AC07>	{ [	j,		J,		question,	question	] };
+    key <AC08>	{ [	k,		K,		colon,		colon		] };
+    key <AC09>	{ [	l,		L,		dead_circumflex,dead_circumflex	] };
+    key <AB09>	{ [	m,		M,		ugrave,		Ugrave		] };
+    key <UP>	{ [	eacute,		Eacute,		egrave,		Egrave		] };
+
+    // 3. row
+    key <AB01>	{ [	w,		W,		EuroSign,       EuroSign	] };
+    key <AB03>	{ [	c,		C,		parenleft,	parenleft	] };
+    key <AB04>	{ [	v,		V,		parenright,	parenright	] };
+    key <AB05>	{ [	b,		B,		slash,		slash		] };
+    key <AB07>	{ [	comma,		comma,		apostrophe,	apostrophe	] };
+    key <LEFT>	{ [	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 <AD06>	{ [	z,		Z,		6,		6		] };
+    key <AB08>	{ [	udiaeresis,	Udiaeresis,	ssharp,		U1E9E		] };
+
+    // 2. row
+    key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
+    key <AC09>	{ [	l,		L,		colon,		colon		] };
+    key <AB09>	{ [	odiaeresis,	Odiaeresis,	exclam,		exclam		] };
+    key <UP>	{ [	adiaeresis,	Adiaeresis,	question,	question	] };
+
+    // 3. row
+    key <AB01>	{ [	y,		Y,		EuroSign,	EuroSign	] };
+    key <AB03>	{ [	c,		C,		equal,		equal		] };
+    key <LEFT>	{ [	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 <AD06>	{ [	z,		Z,		6,		6		] };
+    key <AB08>	{ [	udiaeresis,	Udiaeresis,	egrave,		Egrave		] };
+
+    // 2. row
+    key <AC06>	{ [	h,		H,		equal,		equal		] };
+    key <AC07>	{ [	j,		J,		parenleft,	parenleft	] };
+    key <AC08>	{ [	k,		K,		parenright,	parenright	] };
+    key <AC09>	{ [	l,		L,		colon,		colon		] };
+    key <AB09>	{ [	odiaeresis,	Odiaeresis,	eacute,		Aacute		] };
+    key <UP>	{ [	adiaeresis,	Adiaeresis,	agrave,		Agrave		] };
+
+    // 3. row
+    key <AB01>	{ [	y,		Y,		question,	question	] };
+    key <AB02>	{ [	x,		X,		exclam,		exclam		] };
+    key <AB03>	{ [	c,		C,		ccedilla,	Ccedilla	] };
+    key <LEFT>	{ [	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 <AD01>	{ [	q,		Q,		1,			1,			Cyrillic_shorti,	Cyrillic_SHORTI,	1,			1			] };
+    key <AD02>	{ [	w,		W,		2,			2,			Cyrillic_tse,		Cyrillic_TSE,		2,			2			] };
+    key <AD03>	{ [	e,		E,		3,			3,			Cyrillic_u,		Cyrillic_U,		3,			3			] };
+    key <AD04>	{ [	r,		R,		4,			4,			Cyrillic_ka,		Cyrillic_KA,		4,			4			] };
+    key <AD05>	{ [	t,		T,		5,			5,			Cyrillic_ie,		Cyrillic_IE,		5,			5			] };
+    key <AD06>	{ [	y,		Y,		6,			6,			Cyrillic_en,		Cyrillic_EN,		6,			6			] };
+    key <AD07>	{ [	u,		U,		7,			7,			Cyrillic_ghe,		Cyrillic_GHE,		7,			7			] };
+    key <AD08>	{ [	i,		I,		8,			8,			Cyrillic_sha,		Cyrillic_SHA,		8,			8			] };
+    key <AD09>	{ [	o,		O,		9,			9,			Cyrillic_shcha,		Cyrillic_SHCHA,		9,			9			] };
+    key <AD10>	{ [	p,		P,		0,			0,			Cyrillic_ze,		Cyrillic_ZE,		0,			0			] };
+    key <AB08>  { [	Cyrillic_ha,	Cyrillic_HA,	Cyrillic_hardsign,	Cyrillic_HARDSIGN,	Cyrillic_ha,		Cyrillic_HA,		Cyrillic_hardsign,	Cyrillic_HARDSIGN	] };
+
+    // 2. row
+    key <AC01>	{ [	a,		A,		asterisk,		asterisk,		Cyrillic_ef,		Cyrillic_EF,		asterisk,		asterisk		] };
+    key <AC02>	{ [	s,		S,		plus,			plus,			Cyrillic_yeru,		Cyrillic_YERU,		plus,			plus			] };
+    key <AC03>	{ [	d,		D,		numbersign,		numbersign,		Cyrillic_ve,		Cyrillic_VE,		numbersign,		numbersign		] };
+    key <AC04>	{ [	f,		F,		minus,			minus,			Cyrillic_a,		Cyrillic_A,		minus,			minus			] };
+    key <AC05>	{ [	g,		G,		underscore,		underscore,		Cyrillic_pe,		Cyrillic_PE,		underscore,		underscore		] };
+    key <AC06>	{ [	h,		H,		exclam,			exclam,			Cyrillic_er,		Cyrillic_ER,		exclam,			exclam			] };
+    key <AC07>	{ [	j,		J,		question,		question,		Cyrillic_o,		Cyrillic_O,		question,		question		] };
+    key <AC08>	{ [	k,		K,		semicolon,		semicolon,		Cyrillic_el,		Cyrillic_EL,		semicolon,		semicolon		] };
+    key <AC09>	{ [	l,		L,		colon,			colon,			Cyrillic_de,		Cyrillic_DE,		colon,			colon			] };
+    key <AB09>	{ [	comma,		comma,		comma,			comma,			Cyrillic_zhe,		Cyrillic_ZHE,		comma,			comma			] };
+    key <UP>	{ [	period,		period,		period,			period,			Cyrillic_e,		Cyrillic_E,		period,			period			] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		dollar,			dollar,			Cyrillic_ya,		Cyrillic_YA,		dollar,			dollar			] };
+    key <AB02>	{ [	x,		X,		EuroSign,		EuroSign,		Cyrillic_che,		Cyrillic_CHE,		EuroSign,		EuroSign		] };
+    key <AB03>	{ [	c,		C,		slash,			slash,			Cyrillic_es,		Cyrillic_ES,		slash,			slash			] };
+    key <AB04>	{ [	v,		V,		parenleft,		parenleft,		Cyrillic_em,		Cyrillic_EM,		parenleft,		parenleft		] };
+    key <AB05>	{ [	b,		B,		parenright,		parenright,		Cyrillic_i,		Cyrillic_I,		parenright,		parenright		] };
+    key <AB06>	{ [	n,		N,		quotedbl,		quotedbl,		Cyrillic_te,		Cyrillic_TE,		quotedbl,		quotedbl		] };
+    key <AB07>	{ [	m,		M,		apostrophe,		apostrophe,		Cyrillic_softsign,	Cyrillic_SOFTSIGN,	apostrophe,		apostrophe		] };
+    key <LEFT>	{ [	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 <AB08>	{ [	egrave,		Egrave,		eacute,		Eacute		] };
+
+    // 2. row
+    key <AC06>	{ [	h,		H,		semicolon,	semicolon	] };
+    key <AC07>	{ [	j,		J,		colon,		colon		] };
+    key <AC08>	{ [	k,		K,		exclam,		exclam		] };
+    key <AC09>	{ [	l,		L,		question,	question	] };
+    key <AB09>	{ [	ograve,		Ograve,		igrave,		Igrave		] };
+    key <UP>	{ [	agrave,		Agrave,		ugrave,		Ugrave		] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		EuroSign,	EuroSign	] };
+    key <AB02>	{ [	x,		X,		parenleft,	parenleft	] };
+    key <AB03>	{ [	c,		C,		parenright,	parenright	] };
+    key <LEFT>	{ [	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 <AD06>	{ [	z,		Z,		6,		6		] };
+    key <AB08>	{ [	dead_acute,	dead_acute,	sterling,	sterling	] };
+
+    // 2. row
+    key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
+    key <AC09>	{ [	l,		L,		colon,		colon		] };
+    key <AB09>	{ [	uring,		Uring,		EuroSign,	EuroSign	] };
+    key <UP>	{ [	dead_caron,	dead_caron,	dollar,		dollar		] };
+
+    // 3. row
+    key <AB01>	{ [	y,		Y,		equal,		equal		] };
+    key <AB02>	{ [	x,		X,		slash,		slash		] };
+    key <AB03>	{ [	c,		C,		backslash,	backslash	] };
+    key <AB04>	{ [	v,		V,		apostrophe,	apostrophe	] };
+    key <AB05>	{ [	b,		B,		quotedbl,	quotedbl	] };
+    key <AB06>	{ [	n,		N,		exclam,		exclam		] };
+    key <AB07>	{ [	m,		M,		question,	question	] };
+    key <LEFT>	{ [	period,		comma,		comma,		comma		] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "cz_qwerty" {
+    include "nokia_vndr/nokiarx51(cz)"
+
+    name[Group1] = "Czech - qwerty";
+
+    // 1. row
+    key <AD06>	{ [	y,		Y,		6,		6		] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		percent,	percent		] };
+};
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+partial hidden alphanumeric_keys
+xkb_symbols "nordic_base" {
+    include "nokia_vndr/nokiarx51(english_base)"
+
+    // 1. row
+    key <AB08>	{ [	aring,		Aring,		equal,		equal		] };
+
+    // 2. row
+    key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
+    key <AC09>	{ [	l,		L,		colon,		colon		] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		EuroSign,	EuroSign	] };
+    key <AB03>	{ [	c,		C,		sterling,	sterling	] };
+    key <LEFT>	{ [	period,		comma,		comma,		comma		] };
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "english_base" {
+
+    // 1. row
+    key <AD01>	{ [	q,		Q,		1,		1		] };
+    key <AD02>	{ [	w,		W,		2,		2		] };
+    key <AD03>	{ [	e,		E,		3,		3		] };
+    key <AD04>	{ [	r,		R,		4,		4		] };
+    key <AD05>	{ [	t,		T,		5,		5		] };
+    key <AD06>	{ [	y,		Y,		6,		6		] };
+    key <AD07>	{ [	u,		U,		7,		7		] };
+    key <AD08>	{ [	i,		I,		8,		8		] };
+    key <AD09>	{ [	o,		O,		9,		9		] };
+    key <AD10>	{ [	p,		P,		0,		0		] };
+    key <AB08>	{ [	comma,		semicolon,	equal,		equal		] };
+
+    // 2. row
+    key <AC01>	{ [	a,		A,		asterisk,	asterisk	] };
+    key <AC02>	{ [	s,		S,		plus,		plus		] };
+    key <AC03>	{ [	d,		D,		numbersign,	numbersign	] };
+    key <AC04>	{ [	f,		F,		minus,		minus		] };
+    key <AC05>	{ [	g,		G,		underscore,	underscore	] };
+    key <AC06>	{ [	h,		H,		parenleft,	parenleft	] };
+    key <AC07>	{ [	j,		J,		parenright,	parenright	] };
+    key <AC08>	{ [	k,		K,		ampersand,	ampersand	] };
+    key <AC09>	{ [	l,		L,		exclam,		exclam		] };
+    key <AB09>	{ [	period,		colon,		question,	question	] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		sterling,	sterling	] };
+    key <AB02>	{ [	x,		X,		dollar,		dollar		] };
+    key <AB03>	{ [	c,		C,		EuroSign,	EuroSign	] };
+    key <AB04>	{ [	v,		V,		slash,		slash		] };
+    key <AB05>	{ [	b,		B,		backslash,	backslash	] };
+    key <AB06>	{ [	n,		N,		quotedbl,	quotedbl	] };
+    key <AB07>	{ [	m,		M,		apostrophe,	apostrophe	] };
+    key <SPCE>	{ [	space,		space,		at,		at		] };
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "common_keys" {
+    // all other common keys
+
+    key <BKSP>	{ [	BackSpace	] };
+    key <TAB>	{ [	Tab		] };
+
+    // broken UI spec.
+    key <RTRN>	{ [	KP_Enter	] };
+
+    key <KPEN>	{ [	Return		] };
+    key <ESC>	{ [	Escape		] };
+
+    key <FK01>	{ [	F1	] };
+    key <FK02>	{ [	F2	] };
+    key <FK03>	{ [	F3	] };
+    key <FK04>	{ [	F4	] };
+    key <FK05>	{ [	F5	] };
+    key <FK06>	{ [	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 <FK07>	{ [	F8	] };
+    key <FK08>	{ [	F7	] };
+
+    key <FK09>	{ [	F9	] };
+    key <FK10>	{ [	F10	] };
+    key <FK11>	{ [	F11	] };
+};
+
+partial hidden alphanumeric_keys modifier_keys
+xkb_symbols "modifiers" {
+    // Shift switches between current level and level+1
+    key <LFSH>	{
+	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 <LCTL>	{
+	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 <DOWN>	{ type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [	Left,	Up	] };
+    key <RGHT>	{ 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 <UP>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Up	] };
+    key <LEFT>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Left	] };
+    key <DOWN>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Down	] };
+    key <RGHT>	{ 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 <AD06>	{ [	z,		Z,		6,		6		] };
+    key <AB08>	{ [	dead_acute,	dead_acute,	sterling,	sterling	] };
+
+    // 2. row
+    key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
+    key <AC09>	{ [	l,		L,		colon,		colon		] };
+    key <AB09>	{ [	ocircumflex,	adiaeresis,	EuroSign,	EuroSign	] };
+    key <UP>	{ [	dead_caron,	bar,		dollar,		dollar		] };
+
+    // 3. row
+    key <AB01>	{ [	y,		Y,		equal,		equal		] };
+    key <AB02>	{ [	x,		X,		slash,		slash		] };
+    key <AB03>	{ [	c,		C,		backslash,	backslash	] };
+    key <AB04>	{ [	v,		V,		apostrophe,	apostrophe	] };
+    key <AB05>	{ [	b,		B,		quotedbl,	quotedbl	] };
+    key <AB06>	{ [	n,		N,		exclam,		exclam		] };
+    key <AB07>	{ [	m,		M,		question,	question	] };
+    key <LEFT>	{ [	period,		Tab,		comma,		comma		] };
+};
+
+xkb_symbols "sk_qwerty" {
+    include "nokia_vndr/nokiarx51(sk)"
+
+    name[Group1] = "Slovak QWERTY (CZ hw)";
+
+    // 1. row
+    key <AD06>	{ [	y,		Y,		6,		6		] };
+
+    // 3. row
+    key <AB01>	{ [	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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	Arabic_dad,		Arabic_fatha,		0x1000661,		0x1000661		] };
+    key <AD02>	{ symbols[Group2] = [	Arabic_sad,		Arabic_fathatan,	0x1000662,		0x1000662		] };
+    key <AD03>	{ symbols[Group2] = [	Arabic_theh,		Arabic_damma,		0x1000663,		0x1000663		] };
+    key <AD04>	{ symbols[Group2] = [	Arabic_qaf,		Arabic_dammatan,	0x1000664,		0x1000664		] };
+    key <AD05>	{ symbols[Group2] = [	Arabic_feh,		0x100fef9,		0x1000665,		0x1000665		] };
+    key <AD06>	{ symbols[Group2] = [	Arabic_ghain,		Arabic_hamzaunderalef,	0x1000666,		0x1000666		] };
+    key <AD07>	{ symbols[Group2] = [	Arabic_ain,		rightsinglequotemark,	0x1000667,		0x1000667		] };
+    key <AD08>	{ symbols[Group2] = [	Arabic_ha,		Arabic_tehmarbuta,	0x1000668,		0x1000668		] };
+    key <AD09>	{ symbols[Group2] = [	Arabic_khah,		division,		0x1000669,		0x1000669		] };
+    key <AD10>	{ symbols[Group2] = [	Arabic_hah,		multiply,		0x1000660,		0x1000660		] };
+    key <AB08>	{ symbols[Group2] = [	Arabic_jeem,		period,			equal,			equal			] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Arabic_sheen,		Arabic_kasra,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Arabic_seen,		Arabic_kasratan,	plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Arabic_yeh,		Arabic_alefmaksura,	numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Arabic_beh,		Arabic_hamzaonyeh,	minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Arabic_lam,		0x100fef7,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Arabic_alef,		Arabic_hamzaonalef,	parenright,		parenright		] };
+    key <AC07>	{ symbols[Group2] = [	Arabic_teh,		Arabic_tatweel,		parenleft,		parenleft		] };
+    key <AC08>	{ symbols[Group2] = [	Arabic_noon,		Arabic_comma,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	Arabic_meem,		Arabic_semicolon,	exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	Arabic_kaf,		colon,			Arabic_question_mark,	Arabic_question_mark	] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Arabic_thal,		Arabic_shadda,		sterling,		sterling		] };
+    key <AB02>	{ symbols[Group2] = [	Arabic_dal,		Arabic_sukun,		dollar,			dollar			] };
+    key <AB03>	{ symbols[Group2] = [	Arabic_waw,		Arabic_hamzaonwaw,	EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	Arabic_ra,		0x100fef5,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	Arabic_zain,		0x100fefb,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	Arabic_tah,		Arabic_maddaonalef,	quotedbl,		quotedbl		] };
+    key <AB07>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	Arabic_dad,		Arabic_sukun,		0x10006f1,		0x1000661		] };
+    key <AD02>	{ symbols[Group2] = [	Arabic_sad,		Arabic_dammatan,	0x10006f2,		0x1000662		] };
+    key <AD03>	{ symbols[Group2] = [	Arabic_theh,		Arabic_kasratan,	0x10006f3,		0x1000663		] };
+    key <AD04>	{ symbols[Group2] = [	Arabic_qaf,		Arabic_fathatan,	0x10006f4,		0x1000664		] };
+    key <AD05>	{ symbols[Group2] = [	Arabic_feh,		Arabic_damma,		0x10006f5,		0x1000665		] };
+    key <AD06>	{ symbols[Group2] = [	Arabic_ghain,		Arabic_kasra,		0x10006f6,		0x1000666		] };
+    key <AD07>	{ symbols[Group2] = [	Arabic_ain,		Arabic_fatha,		0x10006f7,		0x1000667		] };
+    key <AD08>	{ symbols[Group2] = [	Arabic_heh,		Arabic_shadda,		0x10006f8,		0x1000668		] };
+    key <AD09>	{ symbols[Group2] = [	Arabic_khah,		0x10006af,		0x10006f9,		0x1000669		] };
+    key <AD10>	{ symbols[Group2] = [	Arabic_hah,		0x1000686,		0x10006f0,		0x1000660		] };
+    key <AB08>	{ symbols[Group2] = [	Arabic_jeem,		Arabic_comma,		comma,			Arabic_semicolon	] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Arabic_sheen,		Arabic_hamzaonwaw,	asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Arabic_seen,		Arabic_hamzaonyeh,	plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	0x10006cc,		period,			numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Arabic_beh,		colon,			minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Arabic_lam,		Arabic_hamzaonalef,	underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Arabic_alef,		Arabic_maddaonalef,	parenleft,		parenleft		] };
+    key <AC07>	{ symbols[Group2] = [	Arabic_teh,		Arabic_tehmarbuta,	parenright,		parenright		] };
+    key <AC08>	{ symbols[Group2] = [	Arabic_noon,		guillemotright,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	Arabic_meem,		guillemotleft,		exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	0x10006a9,		Arabic_waw,		Arabic_question_mark,	colon			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Arabic_zah,		Arabic_kaf,		sterling,		period			] };
+    key <AB02>	{ symbols[Group2] = [	Arabic_tah,		0x1000653,		dollar,			dollar			] };
+    key <AB03>	{ symbols[Group2] = [	Arabic_zain,		0x1000698,		EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	Arabic_ra,		0x1000670,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	Arabic_thal,		0x100200c,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	Arabic_dal,		0x1000654,		quotedbl,		quotedbl		] };
+    key <AB07>	{ 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 <AD01>	{ [	colon,		semicolon,	1,		1		] };
+    key <AD02>	{ [	w,		W,		2,		2		] };
+    key <AD03>	{ [	v,		V,		3,		3		] };
+    key <AD04>	{ [	p,		P,		4,		4		] };
+    key <AD05>	{ [	y,		Y,		5,		5		] };
+    key <AD06>	{ [	f,		F,		6,		6		] };
+    key <AD07>	{ [	g,		G,		7,		7		] };
+    key <AD08>	{ [	c,		C,		8,		8		] };
+    key <AD09>	{ [	r,		R,		9,		9		] };
+    key <AD10>	{ [	l,		L,		0,		0		] };
+    key <AB08>	{ [	period,		comma,		equal,		equal		] };
+
+    // 2. row
+    key <AC01>	{ [	a,		A,		asterisk,	asterisk	] };
+    key <AC02>	{ [	o,		O,		plus,		plus		] };
+    key <AC03>	{ [	e,		E,		numbersign,	numbersign	] };
+    key <AC04>	{ [	u,		U,		minus,		minus		] };
+    key <AC05>	{ [	i,		I,		underscore,	underscore	] };
+    key <AC06>	{ [	d,		D,		exclam,		parenleft	] };
+    key <AC07>	{ [	h,		H,		question,	parenright	] };
+    key <AC08>	{ [	t,		T,		ampersand,	ampersand	] };
+    key <AC09>	{ [	n,		N,		less,		exclam		] };
+    key <AB09>	{ [	s,		S,		greater,	question	] };
+
+    // 3. row
+    key <AB01>	{ [	z,		Z,		asciitilde,	asciitilde	] };
+    key <AB02>	{ [	q,		Q,		dollar,		dollar		] };
+    key <AB03>	{ [	j,		J,		backslash,	bar		] };
+    key <AB04>	{ [	k,		K,		grave,		slash		] };
+    key <AB05>	{ [	x,		X,		parenleft,	backslash	] };
+    key <AB06>	{ [	b,		B,		parenright,	quotedbl	] };
+    key <AB07>	{ [	m,		M,		apostrophe,	apostrophe	] };
+    key <SPCE>	{ [	space,		slash,		at,		at		] };
+};
+
+// author: Porfyras <porfyras@gmail.com>
+// 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	period,			colon,			1,			1		] };
+    key <AD02>	{ symbols[Group2] = [	Greek_finalsmallsigma,	Greek_SIGMA,		2,			2		] };
+    key <AD03>	{ symbols[Group2] = [	Greek_epsilon,		Greek_EPSILON,		3,			3		] };
+    key <AD04>	{ symbols[Group2] = [	Greek_rho,		Greek_RHO,		4,			4		] };
+    key <AD05>	{ symbols[Group2] = [	Greek_tau,		Greek_TAU,		5,			5		] };
+    key <AD06>	{ symbols[Group2] = [	Greek_upsilon,		Greek_UPSILON,		6,			6		] };
+    key <AD07>	{ symbols[Group2] = [	Greek_theta,		Greek_THETA,		7,			7		] };
+    key <AD08>	{ symbols[Group2] = [	Greek_iota,		Greek_IOTA,		8,			8		] };
+    key <AD09>	{ symbols[Group2] = [	Greek_omicron,		Greek_OMICRON,		9,			9		] };
+    key <AD10>	{ symbols[Group2] = [	Greek_pi,		Greek_PI,		0,			0		] };
+    key <AB08>	{ symbols[Group2] = [	comma,			semicolon,		equal,			equal		] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Greek_alpha,		Greek_ALPHA,		asterisk,		asterisk	] };
+    key <AC02>	{ symbols[Group2] = [	Greek_sigma,		Greek_SIGMA,		plus,			plus		] };
+    key <AC03>	{ symbols[Group2] = [	Greek_delta,		Greek_DELTA,		numbersign,		numbersign	] };
+    key <AC04>	{ symbols[Group2] = [	Greek_phi,		Greek_PHI,		minus,			minus		] };
+    key <AC05>	{ symbols[Group2] = [	Greek_gamma,		Greek_GAMMA,		underscore,		underscore	] };
+    key <AC06>	{ symbols[Group2] = [	Greek_eta,		Greek_ETA,		parenleft,		parenleft	] };
+    key <AC07>	{ symbols[Group2] = [	Greek_xi,		Greek_XI,		parenright,		parenright	] };
+    key <AC08>	{ symbols[Group2] = [	Greek_kappa,		Greek_KAPPA,		ampersand,		ampersand	] };
+    key <AC09>	{ symbols[Group2] = [	Greek_lamda,		Greek_LAMDA,		exclam,			exclam		] };
+    key <AB09>	{ symbols[Group2] = [	dead_acute,		dead_diaeresis,		question,		question	] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Greek_zeta,		Greek_ZETA,		sterling,		sterling	] };
+    key <AB02>	{ symbols[Group2] = [	Greek_chi,		Greek_CHI,		dollar,			dollar		] };
+    key <AB03>	{ symbols[Group2] = [	Greek_psi,		Greek_PSI,		EuroSign,		EuroSign	] };
+    key <AB04>	{ symbols[Group2] = [	Greek_omega,		Greek_OMEGA,		slash,			slash		] };
+    key <AB05>	{ symbols[Group2] = [	Greek_beta,		Greek_BETA,		backslash,		backslash	] };
+    key <AB06>	{ symbols[Group2] = [	Greek_nu,		Greek_NU,		quotedbl,		quotedbl	] };
+    key <AB07>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	Cyrillic_ya,		Cyrillic_YA,		1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	Cyrillic_ve,		Cyrillic_VE,		2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	Cyrillic_ie,		Cyrillic_IE,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	Cyrillic_er,		Cyrillic_ER,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	Cyrillic_te,		Cyrillic_TE,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	Cyrillic_hardsign,	Cyrillic_HARDSIGN,	6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	Cyrillic_u,		Cyrillic_U,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	Cyrillic_i,		Cyrillic_I,		8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	Cyrillic_o,		Cyrillic_O,		9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	Cyrillic_pe,		Cyrillic_PE,		0,			0			] };
+    key <AB08>	{ symbols[Group2] = [	comma,			semicolon,		equal,			equal			] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Cyrillic_a,		Cyrillic_A,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Cyrillic_es,		Cyrillic_ES,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Cyrillic_de,		Cyrillic_DE,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Cyrillic_ef,		Cyrillic_EF,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Cyrillic_ghe,		Cyrillic_GHE,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Cyrillic_ha,		Cyrillic_HA,		parenleft,		parenleft		] };
+    key <AC07>	{ symbols[Group2] = [	Cyrillic_shorti,	Cyrillic_SHORTI,	parenright,		parenright		] };
+    key <AC08>	{ symbols[Group2] = [	Cyrillic_ka,		Cyrillic_KA,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	Cyrillic_el,		Cyrillic_EL,		exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	period,			colon,			question,		question		] };
+    key <UP>	{ symbols[Group2] = [	Cyrillic_yu,		Cyrillic_YU,		Up,			Up			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Cyrillic_ze,		Cyrillic_ZE,		sterling,		sterling		] };
+    key <AB02>	{ symbols[Group2] = [	Cyrillic_softsign,	Cyrillic_SOFTSIGN,	dollar,			dollar			] };
+    key <AB03>	{ symbols[Group2] = [	Cyrillic_tse,		Cyrillic_TSE,		EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	Cyrillic_zhe,		Cyrillic_ZHE,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	Cyrillic_be,		Cyrillic_BE,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	Cyrillic_en,		Cyrillic_EN,		quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group2] = [	Cyrillic_em,		Cyrillic_EM,		apostrophe,		apostrophe		] };
+    key <LEFT>	{ symbols[Group2] = [	Cyrillic_sha,		Cyrillic_SHA,		Left,			Left			] };
+    key <DOWN>	{ symbols[Group2] = [	Cyrillic_shcha,		Cyrillic_SHCHA,		Down,			Down			] };
+    key <RGHT>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	Cyrillic_lje,		Cyrillic_LJE,		1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	Cyrillic_nje,		Cyrillic_NJE,		2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	Cyrillic_ie,		Cyrillic_IE,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	Cyrillic_er,		Cyrillic_ER,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	Cyrillic_te,		Cyrillic_TE,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	Macedonia_dse,		Macedonia_DSE,		6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	Cyrillic_u,		Cyrillic_U,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	Cyrillic_i,		Cyrillic_I,		8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	Cyrillic_o,		Cyrillic_O,		9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	Cyrillic_pe,		Cyrillic_PE,		0,			0			] };
+    key <AB08>	{ symbols[Group2] = [	Cyrillic_sha,		Cyrillic_SHA,		equal,			equal			] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Cyrillic_a,		Cyrillic_A,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Cyrillic_es,		Cyrillic_ES,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Cyrillic_de,		Cyrillic_DE,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Cyrillic_ef,		Cyrillic_EF,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Cyrillic_ghe,		Cyrillic_GHE,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Cyrillic_ha,		Cyrillic_HA,		parenleft,		parenleft		] };
+    key <AC07>	{ symbols[Group2] = [	Cyrillic_je,		Cyrillic_JE,		parenright,		parenright		] };
+    key <AC08>	{ symbols[Group2] = [	Cyrillic_ka,		Cyrillic_KA,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	Cyrillic_el,		Cyrillic_EL,		exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	period,			comma,			question,		question		] };
+    key <UP>	{ symbols[Group2] = [	Cyrillic_che,		Cyrillic_CHE,		Up,			Up			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Cyrillic_ze,		Cyrillic_ZE,		colon,			colon			] };
+    key <AB02>	{ symbols[Group2] = [	Cyrillic_dzhe,		Cyrillic_DZHE,		semicolon,		semicolon		] };
+    key <AB03>	{ symbols[Group2] = [	Cyrillic_tse,		Cyrillic_TSE,		EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	Cyrillic_ve,		Cyrillic_VE,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	Cyrillic_be,		Cyrillic_BE,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	Cyrillic_en,		Cyrillic_EN,		quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group2] = [	Cyrillic_em,		Cyrillic_EM,		apostrophe,		apostrophe		] };
+    key <LEFT>	{ symbols[Group2] = [	Macedonia_kje,		Macedonia_KJE,		Left,			Left			] };
+    key <DOWN>	{ symbols[Group2] = [	Cyrillic_zhe,		Cyrillic_ZHE,		Down,			Down			] };
+    key <RGHT>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group1] = [	Cyrillic_ya,		Cyrillic_YA,		1,			1			] };
+    key <AD02>	{ symbols[Group1] = [	Cyrillic_ve,		Cyrillic_VE,		2,			2			] };
+    key <AD03>	{ symbols[Group1] = [	Cyrillic_ie,		Cyrillic_IE,		3,			3			] };
+    key <AD04>	{ symbols[Group1] = [	Cyrillic_er,		Cyrillic_ER,		4,			4			] };
+    key <AD05>	{ symbols[Group1] = [	Cyrillic_te,		Cyrillic_TE,		5,			5			] };
+    key <AD06>	{ symbols[Group1] = [	Cyrillic_yeru,		Cyrillic_YERU,		6,			6			] };
+    key <AD07>	{ symbols[Group1] = [	Cyrillic_u,		Cyrillic_U,		7,			7			] };
+    key <AD08>	{ symbols[Group1] = [	Cyrillic_i,		Cyrillic_I,		8,			8			] };
+    key <AD09>	{ symbols[Group1] = [	Cyrillic_o,		Cyrillic_O,		9,			9			] };
+    key <AD10>	{ symbols[Group1] = [	Cyrillic_pe,		Cyrillic_PE,		0,			0			] };
+    key <AB08>  { symbols[Group1] = [	Cyrillic_sha,		Cyrillic_SHA,		Cyrillic_shcha,		Cyrillic_SHCHA		] };
+
+    key <AD01>	{ symbols[Group2] = [	q,			Q,			1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	w,			W,			2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	e,			E,			3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	r,			R,			4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	t,			T,			5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	y,			Y,			6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	u,			U,			7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	i,			I,			8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	o,			O,			9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	p,			P,			0,			0			] };
+    key <AB08>  { symbols[Group2] = [	Cyrillic_sha,		Cyrillic_SHA,		Cyrillic_shcha,		Cyrillic_SHCHA		] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group1] = [	Cyrillic_a,		Cyrillic_A,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group1] = [	Cyrillic_es,		Cyrillic_ES,		plus,			plus			] };
+    key <AC03>	{ symbols[Group1] = [	Cyrillic_de,		Cyrillic_DE,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group1] = [	Cyrillic_ef,		Cyrillic_EF,		minus,			minus			] };
+    key <AC05>	{ symbols[Group1] = [	Cyrillic_ghe,		Cyrillic_GHE,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group1] = [	Cyrillic_ha,		Cyrillic_HA,		exclam,			exclam			] };
+    key <AC07>	{ symbols[Group1] = [	Cyrillic_shorti,	Cyrillic_SHORTI,	question,		question		] };
+    key <AC08>	{ symbols[Group1] = [	Cyrillic_ka,		Cyrillic_KA,		semicolon,		semicolon		] };
+    key <AC09>	{ symbols[Group1] = [	Cyrillic_el,		Cyrillic_EL,		colon,			colon			] };
+    key <AB09>	{ symbols[Group1] = [	Cyrillic_yu,		Cyrillic_YU,		comma,			comma			] };
+    key <UP>	{ symbols[Group1] = [	Cyrillic_e,		Cyrillic_E,		period,			period			] };
+
+    key <AC01>	{ symbols[Group2] = [	a,			A,			asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	s,			S,			plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	d,			D,			numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	f,			F,			minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	g,			G,			underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	h,			H,			exclam,			exclam			] };
+    key <AC07>	{ symbols[Group2] = [	j,			J,			question,		question		] };
+    key <AC08>	{ symbols[Group2] = [	k,			K,			semicolon,		semicolon		] };
+    key <AC09>	{ symbols[Group2] = [	l,			L,			colon,			colon			] };
+    key <AB09>	{ symbols[Group2] = [	comma,			comma,			comma,			comma			] };
+    key <UP>	{ symbols[Group2] = [	period,			period,			period,			period			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group1] = [	Cyrillic_ze,		Cyrillic_ZE,		dollar,			dollar			] };
+    key <AB02>	{ symbols[Group1] = [	Cyrillic_softsign,	Cyrillic_SOFTSIGN,	EuroSign,		EuroSign		] };
+    key <AB03>	{ symbols[Group1] = [	Cyrillic_tse,		Cyrillic_TSE,		slash,			slash			] };
+    key <AB04>	{ symbols[Group1] = [	Cyrillic_zhe,		Cyrillic_ZHE,		parenleft,		parenleft		] };
+    key <AB05>	{ symbols[Group1] = [	Cyrillic_be,		Cyrillic_BE,		parenright,		parenright		] };
+    key <AB06>	{ symbols[Group1] = [	Cyrillic_en,		Cyrillic_EN,		quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group1] = [	Cyrillic_em,		Cyrillic_EM,		apostrophe,		apostrophe		] };
+    key <LEFT>	{ symbols[Group1] = [	Cyrillic_che,		Cyrillic_CHE,		Cyrillic_hardsign,	Cyrillic_HARDSIGN	] };
+
+    key <AB01>	{ symbols[Group2] = [	z,			Z,			dollar,			dollar			] };
+    key <AB02>	{ symbols[Group2] = [	x,			X,			EuroSign,		EuroSign		] };
+    key <AB03>	{ symbols[Group2] = [	c,			C,			slash,			slash			] };
+    key <AB04>	{ symbols[Group2] = [	v,			V,			parenleft,		parenleft		] };
+    key <AB05>	{ symbols[Group2] = [	b,			B,			parenright,		parenright		] };
+    key <AB06>	{ symbols[Group2] = [	n,			N,			quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group2] = [	m,			M,			apostrophe,		apostrophe		] };
+    key <LEFT>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	hebrew_qoph,		hebrew_qoph,		1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	hebrew_waw,		hebrew_waw,		2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	hebrew_aleph,		hebrew_aleph,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	hebrew_resh,		hebrew_resh,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	hebrew_taw,		hebrew_tet,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	hebrew_ayin,		hebrew_ayin,		6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	hebrew_waw,		hebrew_waw,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	hebrew_yod,		hebrew_yod,		8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	hebrew_samech,		hebrew_samech,		9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	hebrew_pe,		hebrew_finalpe,		0,			0			] };
+    key <AB08>	{ symbols[Group2] = [	comma,          	semicolon,		equal,			equal			] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	hebrew_aleph,		hebrew_aleph,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	hebrew_shin,		hebrew_shin,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	hebrew_dalet,		hebrew_dalet,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	hebrew_pe,		hebrew_finalpe,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	hebrew_gimel,		hebrew_gimel,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	hebrew_he,		hebrew_he,		parenleft,		parenleft		] };
+    key <AC07>	{ symbols[Group2] = [	hebrew_yod,		hebrew_yod,		parenright,		parenright		] };
+    key <AC08>	{ symbols[Group2] = [	hebrew_kaph,		hebrew_finalkaph,	ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	hebrew_lamed,		hebrew_lamed,		exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	period,			colon,			question,		question		] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	hebrew_zain,		hebrew_zain,		sterling,       	sterling		] };
+    key <AB02>	{ symbols[Group2] = [	hebrew_chet,		hebrew_chet,		dollar,         	dollar			] };
+    key <AB03>	{ symbols[Group2] = [	hebrew_zade,		hebrew_finalzade,	EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	hebrew_waw,		hebrew_waw,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	hebrew_bet,		hebrew_bet,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	hebrew_nun,		hebrew_finalnun,	quotedbl,		quotedbl		] };
+    key <AB07>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	hebrew_taw,		hebrew_taw,		1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	hebrew_finalzade,	hebrew_finalzade,	2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	hebrew_qoph,		hebrew_qoph,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	hebrew_resh,		hebrew_resh,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	hebrew_aleph,		hebrew_aleph,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	hebrew_tet,		hebrew_tet,		6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	hebrew_waw,		hebrew_waw,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	hebrew_finalnun,	hebrew_finalnun,	8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	hebrew_finalmem,	hebrew_finalmem,	9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	hebrew_pe,		hebrew_pe,		0,			0			] };
+    key <AB08>	{ symbols[Group2] = [	comma,			semicolon,		equal,			equal			] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	hebrew_shin,		hebrew_shin,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	hebrew_dalet,		hebrew_dalet,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	hebrew_gimel,		hebrew_gimel,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	hebrew_kaph,		hebrew_kaph,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	hebrew_ayin,		hebrew_ayin,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	hebrew_yod,		hebrew_yod,		parenleft,		parenleft		] };
+    key <AC07>	{ symbols[Group2] = [	hebrew_chet,		hebrew_chet,		parenright,		parenright		] };
+    key <AC08>	{ symbols[Group2] = [	hebrew_lamed,		hebrew_lamed,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	hebrew_finalkaph,	period,			exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	hebrew_finalpe,		colon,			question,		question		] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	hebrew_zain,		hebrew_zain,		sterling,		sterling		] };
+    key <AB02>	{ symbols[Group2] = [	hebrew_samech,		hebrew_samech,		dollar,			dollar			] };
+    key <AB03>	{ symbols[Group2] = [	hebrew_bet,		hebrew_bet,		EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	hebrew_he,		hebrew_he,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	hebrew_nun,		hebrew_nun,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	hebrew_mem,		hebrew_mem,		quotedbl,		quotedbl		] };
+    key <AB07>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+   key <AD01> { symbols[Group2] = [ 0x010010e5,		Q,		1,		1		] };
+   key <AD02> { symbols[Group2] = [ 0x010010ec, 	0x010010ed, 	2,		2		] };
+   key <AD03> { symbols[Group2] = [ 0x010010d4,		E,		3,		3		] };
+   key <AD04> { symbols[Group2] = [ 0x010010e0,		0x010010e6,	4,		4		] };
+   key <AD05> { symbols[Group2] = [ 0x010010e2,		0x010010d7,	5,		5		] };
+   key <AD06> { symbols[Group2] = [ 0x010010e7,		Y,		6,		6		] };
+   key <AD07> { symbols[Group2] = [ 0x010010e3,		U,		7,		7		] };
+   key <AD08> { symbols[Group2] = [ 0x010010d8,		I,		8,		8		] };
+   key <AD09> { symbols[Group2] = [ 0x010010dd,		O,		9,		9		] };
+   key <AD10> { symbols[Group2] = [ 0x010010de,		P,		0,		0		] };
+   key <AB08> { symbols[Group2] = [ comma,		semicolon,	equal,		equal		] };
+
+    // 2. row
+   key <AC01> { symbols[Group2] = [ 0x010010d0,		A,		asterisk,	asterisk	] };
+   key <AC02> { symbols[Group2] = [ 0x010010e1,		0x010010e8,	plus,		plus		] };
+   key <AC03> { symbols[Group2] = [ 0x010010d3,		D,		numbersign,	numbersign	] };
+   key <AC04> { symbols[Group2] = [ 0x010010e4,		F,		minus,		minus   	] };
+   key <AC05> { symbols[Group2] = [ 0x010010d2,		G,		underscore,	underscore   	] };
+   key <AC06> { symbols[Group2] = [ 0x010010f0,		H,		parenleft,	parenleft 	] };
+   key <AC07> { symbols[Group2] = [ 0x010010ef,		0x010010df,	parenright,	parenright 	] };
+   key <AC08> { symbols[Group2] = [ 0x010010d9,		K,		ampersand,	ampersand	] };
+   key <AC09> { symbols[Group2] = [ 0x010010da,		L,		exclam,		exclam		] };
+   key <AB09> { symbols[Group2] = [	period,		colon,		question,	question	] };
+
+    // 3. row
+   key <AB01> { symbols[Group2] = [ 0x010010d6,		0x010010eb,	sterling,	sterling	] };
+   key <AB02> { symbols[Group2] = [ 0x010010ee,		X,		dollar,		dollar 		] };
+   key <AB03> { symbols[Group2] = [ 0x010010ea,		0x010010e9,	EuroSign,	EuroSign 	] };
+   key <AB04> { symbols[Group2] = [ 0x010010d5,		V,		slash,		slash   	] };
+   key <AB05> { symbols[Group2] = [ 0x010010d1,		B,		backslash,	backslash	] };
+   key <AB06> { symbols[Group2] = [ 0x010010dc,		N,		quotedbl,	quotedbl	] };
+   key <AB07> { 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>  { symbols[Group2] = [   q,                      Q,                      1,                      1                       ] };
+    key <AD02>  { symbols[Group2] = [   w,                      W,                      2,                      2                       ] };
+    key <AD03>  { symbols[Group2] = [   emacron,                Emacron,                3,                      3                       ] };
+    key <AD04>  { symbols[Group2] = [   rcedilla,               Rcedilla,               4,                      4                       ] };
+    key <AD05>  { symbols[Group2] = [   t,                      T,                      5,                      5                       ] };
+    key <AD06>  { symbols[Group2] = [   y,                      Y,                      6,                      6                       ] };
+    key <AD07>  { symbols[Group2] = [   umacron,                Umacron,                7,                      7                       ] };
+    key <AD08>  { symbols[Group2] = [   imacron,                Imacron,                8,                      8                       ] };
+    key <AD09>  { symbols[Group2] = [   omacron,                Omacron,                9,                      9                       ] };
+    key <AD10>  { symbols[Group2] = [   p,                      P,                      0,                      0                       ] };
+    key <AB08>  { symbols[Group1] = [   ISO_Group_Latch,        semicolon,              equal,                  equal],
+                  symbols[Group2] = [   comma,                  semicolon,              equal,                  equal                   ] };
+
+    // 2. row
+    key <AC01>  { symbols[Group2] = [   amacron,                Amacron,                asterisk,               asterisk                ] };
+    key <AC02>  { symbols[Group2] = [   scaron,                 Scaron,                 plus,                   plus                    ] };
+    key <AC03>  { symbols[Group2] = [   d,                      D,                      numbersign,             numbersign              ] };
+    key <AC04>  { symbols[Group2] = [   f,                      F,                      minus,                  minus                   ] };
+    key <AC05>  { symbols[Group2] = [   gcedilla,               Gcedilla,               underscore,             underscore              ] };
+    key <AC06>  { symbols[Group2] = [   h,                      H,                      parenleft,              parenleft               ] };
+    key <AC07>  { symbols[Group2] = [   j,                      J,                      parenright,             parenright              ] };
+    key <AC08>  { symbols[Group2] = [   kcedilla,               Kcedilla,               ampersand,              ampersand               ] };
+    key <AC09>  { symbols[Group2] = [   lcedilla,               Lcedilla,               exclam,                 exclam                  ] };
+    key <AB09>  { symbols[Group2] = [   period,                 colon,                  question,               question                ] };
+
+    // 3. row
+    key <AB01>  { symbols[Group2] = [   zcaron,                 Zcaron,                 sterling,               sterling                ] };
+    key <AB02>  { symbols[Group2] = [   x,                      X,                      dollar,                 dollar                  ] };
+    key <AB03>  { symbols[Group2] = [   ccaron,                 Ccaron,                 EuroSign,               EuroSign                ] };
+    key <AB04>  { symbols[Group2] = [   v,                      V,                      slash,                  slash                   ] };
+    key <AB05>  { symbols[Group2] = [   b,                      B,                      backslash,              backslash               ] };
+    key <AB06>  { symbols[Group2] = [   ncedilla,               Ncedilla,               quotedbl,               quotedbl                ] };
+    key <AB07>  { 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	Cyrillic_lje,		Cyrillic_LJE,		1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	Cyrillic_nje,		Cyrillic_NJE,		2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	Cyrillic_ie,		Cyrillic_IE,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	Cyrillic_er,		Cyrillic_ER,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	Cyrillic_te,		Cyrillic_TE,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	Cyrillic_ze,		Cyrillic_ZE,		6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	Cyrillic_u,		Cyrillic_U,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	Cyrillic_i,		Cyrillic_I,		8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	Cyrillic_o,		Cyrillic_O,		9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	Cyrillic_pe,		Cyrillic_PE,		0,			0			] };
+    key <AB08>	{ symbols[Group2] = [	Cyrillic_sha,		Cyrillic_SHA,		equal,			equal			] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Cyrillic_a,		Cyrillic_A,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Cyrillic_es,		Cyrillic_ES,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Cyrillic_de,		Cyrillic_DE,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Cyrillic_ef,		Cyrillic_EF,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Cyrillic_ghe,		Cyrillic_GHE,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Cyrillic_ha,		Cyrillic_HA,		parenleft,		parenleft		] };
+    key <AC07>	{ symbols[Group2] = [	Cyrillic_je,		Cyrillic_JE,		parenright,		parenright		] };
+    key <AC08>	{ symbols[Group2] = [	Cyrillic_ka,		Cyrillic_KA,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	Cyrillic_el,		Cyrillic_EL,		exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	period,			comma,			question,		question		] };
+    key <UP>	{ symbols[Group2] = [	Serbian_dje,		Serbian_DJE,		Up,			Up			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Cyrillic_ze,		Cyrillic_ZE,		colon,			colon			] };
+    key <AB02>	{ symbols[Group2] = [	Cyrillic_dzhe,		Cyrillic_DZHE,		semicolon,		semicolon		] };
+    key <AB03>	{ symbols[Group2] = [	Cyrillic_tse,		Cyrillic_TSE,		EuroSign,		EuroSign		] };
+    key <AB04>	{ symbols[Group2] = [	Cyrillic_ve,		Cyrillic_VE,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	Cyrillic_be,		Cyrillic_BE,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	Cyrillic_en,		Cyrillic_EN,		quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group2] = [	Cyrillic_em,		Cyrillic_EM,		apostrophe,		apostrophe		] };
+    key <LEFT>	{ symbols[Group2] = [	Cyrillic_che,		Cyrillic_CHE,		Left,			Left			] };
+    key <DOWN>	{ symbols[Group2] = [	Serbian_tshe,		Serbian_TSHE,		Down,			Down			] };
+    key <RGHT>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group1] = [	q,			Q,			1,			1			] };
+    key <AD02>	{ symbols[Group1] = [	w,			W,			2,			2			] };
+    key <AD03>	{ symbols[Group1] = [	e,			E,			3,			3			] };
+    key <AD04>	{ symbols[Group1] = [	r,			R,			4,			4			] };
+    key <AD05>	{ symbols[Group1] = [	t,			T,			5,			5			] };
+    key <AD06>	{ symbols[Group1] = [	y,			Y,			6,			6			] };
+    key <AD07>	{ symbols[Group1] = [	u,			U,			7,			7			] };
+    key <AD08>	{ symbols[Group1] = [	i,			I,			8,			8			] };
+    key <AD09>	{ symbols[Group1] = [	o,			O,			9,			9			] };
+    key <AD10>	{ symbols[Group1] = [	p,			P,			0,			0			] };
+    key <AB08>  { symbols[Group1] = [	Cyrillic_sha,		Cyrillic_SHA,		Cyrillic_shcha,		Cyrillic_SHCHA		] };
+
+    key <AD01>	{ symbols[Group2] = [	Cyrillic_ya,		Cyrillic_YA,		1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	Cyrillic_ve,		Cyrillic_VE,		2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	Cyrillic_ie,		Cyrillic_IE,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	Cyrillic_er,		Cyrillic_ER,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	Cyrillic_te,		Cyrillic_TE,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	Cyrillic_i,		Cyrillic_I,		6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	Cyrillic_u,		Cyrillic_U,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	Ukrainian_i,		Ukrainian_I,		8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	Cyrillic_o,		Cyrillic_O,		9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	Cyrillic_pe,		Cyrillic_PE,		0,			0			] };
+    key <AB08>  { symbols[Group2] = [	Cyrillic_sha,		Cyrillic_SHA,		Cyrillic_shcha,		Cyrillic_SHCHA		] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group1] = [	a,			A,			asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group1] = [	s,			S,			plus,			plus			] };
+    key <AC03>	{ symbols[Group1] = [	d,			D,			numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group1] = [	f,			F,			minus,			minus			] };
+    key <AC05>	{ symbols[Group1] = [	g,			G,			underscore,		underscore		] };
+    key <AC06>	{ symbols[Group1] = [	h,			H,			exclam,			exclam			] };
+    key <AC07>	{ symbols[Group1] = [	j,			J,			question,		question		] };
+    key <AC08>	{ symbols[Group1] = [	k,			K,			semicolon,		semicolon		] };
+    key <AC09>	{ symbols[Group1] = [	l,			L,			colon,			colon			] };
+    key <AB09>	{ symbols[Group1] = [	comma,			comma,			comma,			comma			] };
+    key <UP>	{ symbols[Group1] = [	period,			period,			period,			period			] };
+
+    key <AC01>	{ symbols[Group2] = [	Cyrillic_a,		Cyrillic_A,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Cyrillic_es,		Cyrillic_ES,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Cyrillic_de,		Cyrillic_DE,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Cyrillic_ef,		Cyrillic_EF,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Cyrillic_ghe,		Cyrillic_GHE,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Cyrillic_ha,		Cyrillic_HA,		exclam,			exclam			] };
+    key <AC07>	{ symbols[Group2] = [	Cyrillic_shorti,	Cyrillic_SHORTI,	question,		question		] };
+    key <AC08>	{ symbols[Group2] = [	Cyrillic_ka,		Cyrillic_KA,		semicolon,		semicolon		] };
+    key <AC09>	{ symbols[Group2] = [	Cyrillic_el,		Cyrillic_EL,		colon,			colon			] };
+    key <AB09>	{ symbols[Group2] = [	Cyrillic_yu,		Cyrillic_YU,		comma,			comma			] };
+    key <UP>	{ symbols[Group2] = [	Ukrainin_ie,		Ukrainian_IE,		period,			period			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group1] = [	z,			Z,			dollar,			dollar			] };
+    key <AB02>	{ symbols[Group1] = [	x,			X,			EuroSign,		EuroSign		] };
+    key <AB03>	{ symbols[Group1] = [	c,			C,			slash,			slash			] };
+    key <AB04>	{ symbols[Group1] = [	v,			V,			parenleft,		parenleft		] };
+    key <AB05>	{ symbols[Group1] = [	b,			B,			parenright,		parenright		] };
+    key <AB06>	{ symbols[Group1] = [	n,			N,			quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group1] = [	m,			M,			apostrophe,		apostrophe		] };
+    key <LEFT>	{ symbols[Group1] = [	Cyrillic_che,		Cyrillic_CHE,		Ukrainian_yi,		Ukrainian_YI		] };
+
+    key <AB01>	{ symbols[Group2] = [	Cyrillic_ze,		Cyrillic_ZE,		dollar,			dollar			] };
+    key <AB02>	{ symbols[Group2] = [	Cyrillic_softsign,	Cyrillic_SOFTSIGN,	EuroSign,		EuroSign		] };
+    key <AB03>	{ symbols[Group2] = [	Cyrillic_tse,		Cyrillic_TSE,		slash,			slash			] };
+    key <AB04>	{ symbols[Group2] = [	Cyrillic_zhe,		Cyrillic_ZHE,		parenleft,		parenleft		] };
+    key <AB05>	{ symbols[Group2] = [	Cyrillic_be,		Cyrillic_BE,		parenright,		parenright		] };
+    key <AB06>	{ symbols[Group2] = [	Cyrillic_en,		Cyrillic_EN,		quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group2] = [	Cyrillic_em,		Cyrillic_EM,		apostrophe,		apostrophe		] };
+    key <LEFT>	{ 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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+     // 1. row
+    key <AD01>	{ symbols[Group1] = [	q,			Q,			1,			1			] };
+    key <AD02>	{ symbols[Group1] = [	w,			W,			2,			2			] };
+    key <AD03>	{ symbols[Group1] = [	e,			E,			3,			3			] };
+    key <AD04>	{ symbols[Group1] = [	r,			R,			4,			4			] };
+    key <AD05>	{ symbols[Group1] = [	t,			T,			5,			5			] };
+    key <AD06>	{ symbols[Group1] = [	y,			Y,			6,			6			] };
+    key <AD07>	{ symbols[Group1] = [	u,			U,			7,			7			] };
+    key <AD08>	{ symbols[Group1] = [	i,			I,			8,			8			] };
+    key <AD09>	{ symbols[Group1] = [	o,			O,			9,			9			] };
+    key <AD10>	{ symbols[Group1] = [	p,			P,			0,			0			] };
+    key <AB08>	{ symbols[Group1] = [	Cyrillic_ha,		Cyrillic_HA,		Ukrainian_yi,		Ukrainian_YI		] };
+
+    key <AD01>	{ symbols[Group2] = [	Cyrillic_shorti,	Cyrillic_SHORTI,	1,			1			] };
+    key <AD02>	{ symbols[Group2] = [	Cyrillic_tse,		Cyrillic_TSE,		2,			2			] };
+    key <AD03>	{ symbols[Group2] = [	Cyrillic_u,		Cyrillic_U,		3,			3			] };
+    key <AD04>	{ symbols[Group2] = [	Cyrillic_ka,		Cyrillic_KA,		4,			4			] };
+    key <AD05>	{ symbols[Group2] = [	Cyrillic_ie,		Cyrillic_IE,		5,			5			] };
+    key <AD06>	{ symbols[Group2] = [	Cyrillic_en,		Cyrillic_EN,		6,			6			] };
+    key <AD07>	{ symbols[Group2] = [	Cyrillic_ghe,		Cyrillic_GHE,		7,			7			] };
+    key <AD08>	{ symbols[Group2] = [	Cyrillic_sha,		Cyrillic_SHA,		8,			8			] };
+    key <AD09>	{ symbols[Group2] = [	Cyrillic_shcha,		Cyrillic_SHCHA,		9,			9			] };
+    key <AD10>	{ symbols[Group2] = [	Cyrillic_ze,		Cyrillic_ZE,		0,			0			] };
+    key <AB08>	{ symbols[Group2] = [	Cyrillic_ha,		Cyrillic_HA,		Ukrainian_yi,		Ukrainian_YI		] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group1] = [	a,			A,			asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group1] = [	s,			S,			plus,			plus			] };
+    key <AC03>	{ symbols[Group1] = [	d,			D,			numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group1] = [	f,			F,			minus,			minus			] };
+    key <AC05>	{ symbols[Group1] = [	g,			G,			underscore,		underscore		] };
+    key <AC06>	{ symbols[Group1] = [	h,			H,			exclam,			exclam			] };
+    key <AC07>	{ symbols[Group1] = [	j,			J,			question,		question		] };
+    key <AC08>	{ symbols[Group1] = [	k,			K,			semicolon,		semicolon		] };
+    key <AC09>	{ symbols[Group1] = [	l,			L,			colon,			colon			] };
+    key <AB09>	{ symbols[Group1] = [	comma,			comma,			comma,			comma			] };
+    key <UP>	{ symbols[Group1] = [	period,			period,			period,			period			] };
+
+    key <AC01>	{ symbols[Group2] = [	Cyrillic_ef,		Cyrillic_EF,		asterisk,		asterisk		] };
+    key <AC02>	{ symbols[Group2] = [	Ukrainian_i,		Ukrainian_I,		plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Cyrillic_ve,		Cyrillic_VE,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Cyrillic_a,		Cyrillic_A,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Cyrillic_pe,		Cyrillic_PE,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Cyrillic_er,		Cyrillic_ER,		exclam,			exclam			] };
+    key <AC07>	{ symbols[Group2] = [	Cyrillic_o,		Cyrillic_O,		question,		question		] };
+    key <AC08>	{ symbols[Group2] = [	Cyrillic_el,		Cyrillic_EL,		semicolon,		semicolon		] };
+    key <AC09>	{ symbols[Group2] = [	Cyrillic_de,		Cyrillic_DE,		colon,			colon			] };
+    key <AB09>	{ symbols[Group2] = [	Cyrillic_zhe,		Cyrillic_ZHE,		comma,			comma			] };
+    key <UP>	{ symbols[Group2] = [	Ukrainian_ie,		Ukrainian_IE,		period,			period			] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group1] = [	z,			Z,			dollar,			dollar			] };
+    key <AB02>	{ symbols[Group1] = [	x,			X,			EuroSign,		EuroSign		] };
+    key <AB03>	{ symbols[Group1] = [	c,			C,			slash,			slash			] };
+    key <AB04>	{ symbols[Group1] = [	v,			V,			parenleft,		parenleft		] };
+    key <AB05>	{ symbols[Group1] = [	b,			B,			parenright,		parenright		] };
+    key <AB06>	{ symbols[Group1] = [	n,			N,			quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group1] = [	m,			M,			apostrophe,		apostrophe		] };
+    key <LEFT>	{ symbols[Group1] = [	Cyrillic_be,		Cyrillic_BE,		Cyrillic_yu,		Cyrillic_YU		] };
+
+    key <AB01>	{ symbols[Group2] = [	Cyrillic_ya,		Cyrillic_YA,		dollar,			dollar			] };
+    key <AB02>	{ symbols[Group2] = [	Cyrillic_che,		Cyrillic_CHE,		EuroSign,		EuroSign		] };
+    key <AB03>	{ symbols[Group2] = [	Cyrillic_es,		Cyrillic_ES,		slash,			slash			] };
+    key <AB04>	{ symbols[Group2] = [	Cyrillic_em,		Cyrillic_EM,		parenleft,		parenleft		] };
+    key <AB05>	{ symbols[Group2] = [	Cyrillic_i,		Cyrillic_I,		parenright,		parenright		] };
+    key <AB06>	{ symbols[Group2] = [	Cyrillic_te,		Cyrillic_TE,		quotedbl,		quotedbl		] };
+    key <AB07>	{ symbols[Group2] = [	Cyrillic_softsign,	Cyrillic_SOFTSIGN,	apostrophe,		apostrophe		] };
+    key <LEFT>	{ 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 <UP>    { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Up, abreve ] };
+    key <LEFT>  { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, 0x1000219 ] };
+    key <DOWN>  { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Down, 0x100021b ] };
+    key <RGHT>  { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, acircumflex ] };
+
+    key <AB01>	{ [	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 <SPCE>	{ type[Group1] = "PC_FN_LEVEL2_BREAK", [ space, at, ISO_Prev_Group, at ] };
+
+    key.type[Group2] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+    // 1. row
+    key <AD01>	{ symbols[Group2] = [	Thai_maiyamok,		Thai_leksun,		Thai_lakkhangyao,	plus			] };
+    key <AD02>	{ symbols[Group2] = [	Thai_saraaimaimalai,	quotedbl,		slash,			Thai_leknung		] };
+    key <AD03>	{ symbols[Group2] = [	Thai_saraam,		Thai_dochada,		minus,			Thai_leksong		] };
+    key <AD04>	{ symbols[Group2] = [	Thai_phophan,		Thai_thonangmontho,	Thai_phosamphao,	Thai_leksam		] };
+    key <AD05>	{ symbols[Group2] = [	Thai_saraa,		Thai_thothong,		Thai_thothung,		Thai_leksi		] };
+    key <AD06>	{ symbols[Group2] = [	Thai_maihanakat,	Thai_nikhahit,		Thai_sarau,		Thai_sarauu		] };
+    key <AD07>	{ symbols[Group2] = [	Thai_saraii,		Thai_maitri,		Thai_saraue,		Thai_baht		] };
+    key <AD08>	{ symbols[Group2] = [	Thai_rorua,		Thai_nonen,		Thai_khokhwai,		Thai_lekha		] };
+    key <AD09>	{ symbols[Group2] = [	Thai_nonu,		Thai_paiyannoi,		Thai_totao,		Thai_lekhok		] };
+    key <AD10>	{ symbols[Group2] = [	Thai_yoyak,		Thai_yoying,		Thai_chochan,		Thai_lekchet		] };
+    key <AB08>	{ symbols[Group2] = [	Thai_bobaimai,		Thai_thothan,		Thai_khokhai,		Thai_lekpaet		] };
+
+    // 2. row
+    key <AC01>	{ symbols[Group2] = [	Thai_fofan,		Thai_ru,		Thai_chochang,		Thai_lekkao		] };
+    key <AC02>	{ symbols[Group2] = [	Thai_hohip,		Thai_khorakhang,	plus,			plus			] };
+    key <AC03>	{ symbols[Group2] = [	Thai_kokai,		Thai_topatak,		numbersign,		numbersign		] };
+    key <AC04>	{ symbols[Group2] = [	Thai_dodek,		Thai_sarao,		minus,			minus			] };
+    key <AC05>	{ symbols[Group2] = [	Thai_sarae,		Thai_chochoe,		underscore,		underscore		] };
+    key <AC06>	{ symbols[Group2] = [	Thai_maitho,		Thai_maitaikhu,		Thai_ngongu,		period			] };
+    key <AC07>	{ symbols[Group2] = [	Thai_maiek,		Thai_maichattawa,	Thai_loling,		comma			] };
+    key <AC08>	{ symbols[Group2] = [	Thai_saraaa,		Thai_sorusi,		ampersand,		ampersand		] };
+    key <AC09>	{ symbols[Group2] = [	Thai_sosua,		Thai_sosala,		exclam,			exclam			] };
+    key <AB09>	{ symbols[Group2] = [	Thai_wowaen,		Thai_soso,		question,		question		] };
+
+    // 3. row
+    key <AB01>	{ symbols[Group2] = [	Thai_phophung,		parenleft,		Thai_moma,		Thai_thophuthao		] };
+    key <AB02>	{ symbols[Group2] = [	Thai_popla,		parenright,		Thai_saraaimaimuan,	Thai_lochula		] };
+    key <AB03>	{ symbols[Group2] = [	Thai_saraae,		Thai_choching,		Thai_fofa,		Thai_lu			] };
+    key <AB04>	{ symbols[Group2] = [	Thai_oang,		Thai_honokhuk,		slash,			slash			] };
+    key <AB05>	{ symbols[Group2] = [	Thai_sarai,		Thai_phinthu,		backslash,		backslash		] };
+    key <AB06>	{ symbols[Group2] = [	Thai_sarauee,		Thai_thanthakhat,	Thai_khokhuat,		Thai_khokhon		] };
+    key <AB07>	{ 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 <AE01> { [ 1,            exclam,         dead_circumflex                       ] };
+    key <AE02> { [ 2,            quotedbl,       at                                    ] };
+    key <AE03> { [ 3,            numbersign,     EuroSign                              ] };
+    key <AE04> { [ 4,            currency,       dollar                                ] };
+    key <AE05> { [ 5,            percent,        sterling                              ] };
+    key <AE06> { [ 6,            ampersand                                             ] };
+    key <AE07> { [ 7,            slash,          braceleft                             ] };
+    key <AE08> { [ 8,            parenleft,      bracketleft                           ] };
+    key <AE09> { [ 9,            parenright,     bracketright                          ] };
+    key <AE10> { [ 0,            equal,          braceright                            ] };
+    key <AE11> { [ plus,         question                                              ] };
+    key <AE12> { [ dead_acute,   dead_grave,     backslash                             ] };
+
+    key <AD01> { [ q,            Q,              dead_circumflex                       ] };
+    key <AD02> { [ w,            W,              at                                    ] };
+    key <AD03> { [ e,            E,              EuroSign                              ] };
+    key <AD04> { [ r,            R,              dollar                                ] };
+    key <AD05> { [ t,            T,              sterling                              ] };
+    key <AD06> { [ y,            Y                                                     ] };
+    key <AD07> { [ u,            U,              braceleft                             ] };
+    key <AD08> { [ i,            I,              bracketleft                           ] };
+    key <AD09> { [ o,            O,              bracketright                          ] };
+    key <AD10> { [ p,            P,              braceright                            ] };
+    key <AD11> { [ aring,        Aring                                                 ] };
+    key <AD12> { [ ssharp,       U1E9E,          backslash                             ] };
+
+    key <AC01> { [ a,            A                                                     ] };
+    key <AC02> { [ s,            S                                                     ] };
+    key <AC03> { [ d,            D                                                     ] };
+    key <AC04> { [ f,            F                                                     ] };
+    key <AC05> { [ g,            G                                                     ] };
+    key <AC06> { [ h,            H                                                     ] };
+    key <AC07> { [ j,            J                                                     ] };
+    key <AC08> { [ k,            K                                                     ] };
+    key <AC09> { [ l,            L                                                     ] };
+    key <AC10> { [ oslash,       Oslash                                                ] };
+    key <AC11> { [ ae,           AE                                                    ] };
+
+    key <AB01> { [ z,            Z                                                     ] };
+    key <AB02> { [ x,            X                                                     ] };
+    key <AB03> { [ c,            C                                                     ] };
+    key <AB04> { [ v,            V                                                     ] };
+    key <AB05> { [ b,            B                                                     ] };
+    key <AB06> { [ n,            N                                                     ] };
+    key <AB07> { [ m,            M                                                     ] };
+    key <AB08> { [ comma,        semicolon,      less                                  ] };
+    key <AB09> { [ period,       colon,          greater                               ] };
+    key <AB10> { [ 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 <AE01> { [ 1,            exclam,         asciicircum                           ] };
+    key <AE12> { [ acute,        grave,          backslash                             ] };
+    key <AD01> { [ 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 <AE01> { [ 1,            exclam,         dead_circumflex                       ] };
+    key <AE02> { [ 2,            quotedbl,       at                                    ] };
+    key <AE03> { [ 3,            numbersign,     EuroSign                              ] };
+    key <AE04> { [ 4,            currency,       dollar                                ] };
+    key <AE05> { [ 5,            percent,        sterling                              ] };
+    key <AE06> { [ 6,            ampersand                                             ] };
+    key <AE07> { [ 7,            slash,          braceleft                             ] };
+    key <AE08> { [ 8,            parenleft,      bracketleft                           ] };
+    key <AE09> { [ 9,            parenright,     bracketright                          ] };
+    key <AE10> { [ 0,            equal,          braceright                            ] };
+    key <AE11> { [ plus,         question                                              ] };
+    key <AE12> { [ dead_acute,   dead_grave,     backslash                             ] };
+
+    key <AD01> { [ q,            Q,              dead_circumflex                       ] };
+    key <AD02> { [ w,            W,              at                                    ] };
+    key <AD03> { [ e,            E,              EuroSign                              ] };
+    key <AD04> { [ r,            R,              dollar                                ] };
+    key <AD05> { [ t,            T,              sterling                              ] };
+    key <AD06> { [ z,            Z                                                     ] };
+    key <AD07> { [ u,            U,              braceleft                             ] };
+    key <AD08> { [ i,            I,              bracketleft                           ] };
+    key <AD09> { [ o,            O,              bracketright                          ] };
+    key <AD10> { [ p,            P,              braceright                            ] };
+    key <AD11> { [ udiaeresis,   Udiaeresis                                            ] };
+    key <AD12> { [ ssharp,       U1E9E,          backslash                             ] };
+
+    key <AC01> { [ a,            A                                                     ] };
+    key <AC02> { [ s,            S                                                     ] };
+    key <AC03> { [ d,            D                                                     ] };
+    key <AC04> { [ f,            F                                                     ] };
+    key <AC05> { [ g,            G                                                     ] };
+    key <AC06> { [ h,            H                                                     ] };
+    key <AC07> { [ j,            J                                                     ] };
+    key <AC08> { [ k,            K                                                     ] };
+    key <AC09> { [ l,            L                                                     ] };
+    key <AC10> { [ odiaeresis,   Odiaeresis                                            ] };
+    key <AC11> { [ adiaeresis,   Adiaeresis                                            ] };
+
+    key <AB01> { [ y,            Y                                                     ] };
+    key <AB02> { [ x,            X                                                     ] };
+    key <AB03> { [ c,            C                                                     ] };
+    key <AB04> { [ v,            V                                                     ] };
+    key <AB05> { [ b,            B                                                     ] };
+    key <AB06> { [ n,            N                                                     ] };
+    key <AB07> { [ m,            M                                                     ] };
+    key <AB08> { [ comma,        semicolon,      less                                  ] };
+    key <AB09> { [ period,       colon,          greater                               ] };
+    // Inexplicably, the diaeresis is dead on other layouts, but not German.  Go figure.
+    key <AB10> { [ 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 <AE01> { [ 1,            exclam,         asciicircum                           ] };
+    key <AE12> { [ acute,        grave,          backslash                             ] };
+    key <AD01> { [ q,            Q,              asciicircum                           ] };
+};
+
+
+
+partial alphanumeric_keys default
+xkb_symbols "se" {
+
+    include "nokia_vndr/nokiasu8w(base)"
+
+    name[Group1]= "Finnish/Swedish";
+
+    key <AE01> { [ 1,            exclam,         dead_circumflex                       ] };
+    key <AE02> { [ 2,            quotedbl,       at                                    ] };
+    key <AE03> { [ 3,            numbersign,     EuroSign                              ] };
+    key <AE04> { [ 4,            currency,       dollar                                ] };
+    key <AE05> { [ 5,            percent,        sterling                              ] };
+    key <AE06> { [ 6,            ampersand                                             ] };
+    key <AE07> { [ 7,            slash,          braceleft                             ] };
+    key <AE08> { [ 8,            parenleft,      bracketleft                           ] };
+    key <AE09> { [ 9,            parenright,     bracketright                          ] };
+    key <AE10> { [ 0,            equal,          braceright                            ] };
+    key <AE11> { [ plus,         question                                              ] };
+    key <AE12> { [ dead_acute,   dead_grave,     backslash                             ] };
+
+    key <AD01> { [ q,            Q,              dead_circumflex                       ] };
+    key <AD02> { [ w,            W,              at                                    ] };
+    key <AD03> { [ e,            E,              EuroSign                              ] };
+    key <AD04> { [ r,            R,              dollar                                ] };
+    key <AD05> { [ t,            T,              sterling                              ] };
+    key <AD06> { [ y,            Y                                                     ] };
+    key <AD07> { [ u,            U,              braceleft                             ] };
+    key <AD08> { [ i,            I,              bracketleft                           ] };
+    key <AD09> { [ o,            O,              bracketright                          ] };
+    key <AD10> { [ p,            P,              braceright                            ] };
+    key <AD11> { [ aring,        Aring                                                 ] };
+    key <AD12> { [ ssharp,       U1E9E,          backslash                             ] };
+
+    key <AC01> { [ a,            A                                                     ] };
+    key <AC02> { [ s,            S                                                     ] };
+    key <AC03> { [ d,            D                                                     ] };
+    key <AC04> { [ f,            F                                                     ] };
+    key <AC05> { [ g,            G                                                     ] };
+    key <AC06> { [ h,            H                                                     ] };
+    key <AC07> { [ j,            J                                                     ] };
+    key <AC08> { [ k,            K                                                     ] };
+    key <AC09> { [ l,            L                                                     ] };
+    key <AC10> { [ odiaeresis,   Odiaeresis                                            ] };
+    key <AC11> { [ adiaeresis,   Adiaeresis                                            ] };
+
+    key <AB01> { [ z,            Z                                                     ] };
+    key <AB02> { [ x,            X                                                     ] };
+    key <AB03> { [ c,            C                                                     ] };
+    key <AB04> { [ v,            V                                                     ] };
+    key <AB05> { [ b,            B                                                     ] };
+    key <AB06> { [ n,            N                                                     ] };
+    key <AB07> { [ m,            M                                                     ] };
+    key <AB08> { [ comma,        semicolon,      less                                  ] };
+    key <AB09> { [ period,       colon,          greater                               ] };
+    key <AB10> { [ 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 <AE01> { [ 1,            exclam,         asciicircum                           ] };
+    key <AE12> { [ acute,        grave,          backslash                             ] };
+    key <AD01> { [ q,            Q,              asciicircum                           ] };
+    key <AB10> { [ 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 <TLDE> { [ Cyrillic_io,          Cyrillic_IO,          grave                        ] };
+    key <AE01> { [ 1,                    exclam,               exclam,        exclam        ] };
+    key <AE02> { [ 2,                    at,                   quotedbl,      at            ] };
+    key <AE03> { [ 3,                    numbersign,           numbersign,    numbersign    ] };
+    key <AE04> { [ 4,                    dollar,               currency,      dollar        ] };
+    key <AE05> { [ 5,                    percent,              percent,       percent       ] };
+    key <AE06> { [ 6,                    dead_circumflex,      ampersand,     asciicircum   ] };
+    key <AE07> { [ 7,                    ampersand,            slash,         ampersand     ] };
+    key <AE08> { [ 8,                    asterisk,             parenleft,     asterisk      ] };
+    key <AE09> { [ 9,                    parenleft,            parenright,    parenleft     ] };
+    key <AE10> { [ 0,                    parenright,           equal,         parenright    ] };
+    key <AE11> { [ minus,                underscore,           plus,          question      ] };
+    key <AE12> { [ equal,                plus,                 equal,         plus          ] };
+
+    key <AD01> { [ Cyrillic_shorti,      Cyrillic_SHORTI,      q,             Q             ] };
+    key <AD02> { [ Cyrillic_tse,         Cyrillic_TSE,         w,             W             ] };
+    key <AD03> { [ Cyrillic_u,           Cyrillic_U,           e,             E             ] };
+    key <AD04> { [ Cyrillic_ka,          Cyrillic_KA,          r,             R             ] };
+    key <AD05> { [ Cyrillic_ie,          Cyrillic_IE,          t,             T             ] };
+    key <AD06> { [ Cyrillic_en,          Cyrillic_EN,          y,             Y             ] };
+    key <AD07> { [ Cyrillic_ghe,         Cyrillic_GHE,         u,             U             ] };
+    key <AD08> { [ Cyrillic_sha,         Cyrillic_SHA,         i,             I             ] };
+    key <AD09> { [ Cyrillic_shcha,       Cyrillic_SHCHA,       o,             O             ] };
+    key <AD10> { [ Cyrillic_ze,          Cyrillic_ZE,          p,             P             ] };
+    key <AD11> { [ Cyrillic_ha,          Cyrillic_HA,          bracketleft,   braceleft     ] };
+    key <AD12> { [ Cyrillic_hardsign,    Cyrillic_HARDSIGN,    bracketright,  braceright    ] };
+
+    key <AC01> { [ Cyrillic_ef,          Cyrillic_EF,          a,             A             ] };
+    key <AC02> { [ Cyrillic_yeru,        Cyrillic_YERU,        s,             S             ] };
+    key <AC03> { [ Cyrillic_ve,          Cyrillic_VE,          d,             D             ] };
+    key <AC04> { [ Cyrillic_a,           Cyrillic_A,           f,             F             ] };
+    key <AC05> { [ Cyrillic_pe,          Cyrillic_PE,          g,             G             ] };
+    key <AC06> { [ Cyrillic_er,          Cyrillic_ER,          h,             H             ] };
+    key <AC07> { [ Cyrillic_o,           Cyrillic_O,           j,             J             ] };
+    key <AC08> { [ Cyrillic_el,          Cyrillic_EL,          k,             K             ] };
+    key <AC09> { [ Cyrillic_de,          Cyrillic_DE,          l,             L             ] };
+    key <AC10> { [ Cyrillic_zhe,         Cyrillic_ZHE,         semicolon,     colon         ] };
+    key <AC11> { [ Cyrillic_e,           Cyrillic_E,           apostrophe,    quotedbl      ] };
+
+    key <AB01> { [ Cyrillic_ya,          Cyrillic_YA,          z,             Z             ] };
+    key <AB02> { [ Cyrillic_che,         Cyrillic_CHE,         x,             X             ] };
+    key <AB03> { [ Cyrillic_es,          Cyrillic_ES,          c,             C             ] };
+    key <AB04> { [ Cyrillic_em,          Cyrillic_EM,          v,             V             ] };
+    key <AB05> { [ Cyrillic_i,           Cyrillic_I,           b,             B             ] };
+    key <AB06> { [ Cyrillic_te,          Cyrillic_TE,          n,             N             ] };
+    key <AB07> { [ Cyrillic_softsign,    Cyrillic_SOFTSIGN,    m,             M             ] };
+    key <AB08> { [ Cyrillic_be,          Cyrillic_BE,          comma,         less          ] };
+    key <AB09> { [ Cyrillic_yu,          Cyrillic_YU,          period,        greater       ] };
+    key <AB10> { [ 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 <AE06> { [ 6,                    asciicircum,          ampersand,     asciicircum   ] };
+};
+
+
+
+partial alphanumeric_keys default
+xkb_symbols "us" {
+
+    include "nokia_vndr/nokiasu8w(base)"
+
+    name[Group1]= "U.S. English (international)";
+
+    key <AE01> { [ 1,            exclam,         exclamdown                            ] };
+    key <AE02> { [ 2,            at,             twosuperior                           ] };
+    key <AE03> { [ 3,            numbersign                                            ] };
+    key <AE04> { [ 4,            dollar,         currency                              ] };
+    key <AE05> { [ 5,            percent,        EuroSign                              ] };
+    key <AE06> { [ 6,            asciicircum,    onequarter                            ] };
+    key <AE07> { [ 7,            ampersand,      onehalf                               ] };
+    key <AE08> { [ 8,            asterisk,       threequarters                         ] };
+    key <AE09> { [ 9,            parenleft,      leftsinglequotemark                   ] };
+    key <AE10> { [ 0,            parenright,     rightsinglequotemark                  ] };
+    key <AE11> { [ minus,        underscore,     yen                                   ] };
+    key <AE12> { [ equal,        plus,           multiply                              ] };
+
+    key <AD01> { [ q,            Q,              adiaeresis,           Adiaeresis      ] };
+    key <AD02> { [ w,            W,              aring,                Aring           ] };
+    key <AD03> { [ e,            E,              eacute,               Eacute          ] };
+    key <AD04> { [ r,            R,              registered                            ] };
+    key <AD05> { [ t,            T,              thorn,                THORN           ] };
+    key <AD06> { [ y,            Y,              udiaeresis,           Udiaeresis      ] };
+    key <AD07> { [ u,            U,              uacute,               Uacute          ] };
+    key <AD08> { [ i,            I,              iacute,               Iacute          ] };
+    key <AD09> { [ o,            O,              oacute,               Oacute          ] };
+    key <AD10> { [ p,            P,              odiaeresis,           Odiaeresis      ] };
+    key <AD11> { [ bracketleft,  braceleft,      guillemotleft                         ] };
+    key <AD12> { [ bracketright, braceright,     guillemotright                        ] };
+
+    key <AC01> { [ a,            A,              aacute,               Aacute          ] };
+    key <AC02> { [ s,            S,              ssharp,               section         ] };
+    key <AC03> { [ d,            D,              eth,                  ETH             ] };
+    key <AC04> { [ f,            F                                                     ] };
+    key <AC05> { [ g,            G                                                     ] };
+    key <AC06> { [ h,            H                                                     ] };
+    key <AC07> { [ j,            J                                                     ] };
+    key <AC08> { [ k,            K                                                     ] };
+    key <AC09> { [ l,            L,              oslash,               Oslash          ] };
+    key <AC10> { [ semicolon,    colon,          paragraph,            degree          ] };
+    key <AC11> { [ dead_acute,   dead_diaeresis, apostrophe,           quotedbl        ] };
+
+    key <AB01> { [ z,            Z,              ae,                   AE              ] };
+    key <AB02> { [ x,            X                                                     ] };
+    key <AB03> { [ c,            C,              copyright                             ] };
+    key <AB04> { [ v,            V                                                     ] };
+    key <AB05> { [ b,            B                                                     ] };
+    key <AB06> { [ n,            N,              ntilde,               Ntilde          ] };
+    key <AB07> { [ m,            M,              mu                                    ] };
+    key <AB08> { [ comma,        less,           ccedilla,             Ccedilla        ] };
+    key <AB09> { [ period,       greater                                               ] };
+    key <AB10> { [ 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 <AC11> { [ apostrophe,    quotedbl,       dead_acute,           dead_diaeresis ] };
+};
+
+
+
+default partial alphanumeric_keys
+xkb_symbols "base" {
+
+    // Forked from pc(pc105) -- madness.
+
+    key <ESC>  {	[ Escape			]	};
+
+    key <LSGT> {	[ less,  greater,	bar,  brokenbar ]	};
+
+    key <BKSL> {	[ backslash,	bar		]	};
+    key <SPCE> {	[  space			]	};
+
+    key <BKSP> { [ BackSpace ] };
+
+    key  <TAB> {	[ Tab,	ISO_Left_Tab	]	};
+    key <RTRN> {	[ Return	]	};
+
+    // We don't ever generate this key, but the VKB needs it always.
+    key <KPEN> {        [ KP_Enter      ]       };
+    // This is generated from the headset, must always be in the map.
+    key <I29>  {        [ XF86Phone     ]       };
+
+    key <CAPS> {	[ Caps_Lock	]	};
+
+    key <NMLK> {	[ Num_Lock, Pointer_EnableKeys		]	};
+
+    key <LFSH> {	[ Shift_L	]	};
+    key <LCTL> {	[ Control_L	]	};
+    key <LALT> {	[ Alt_L,	Meta_L		]	};
+    key <LWIN> {	[ Super_L			]	};
+
+    key <RTSH> {	[ Shift_R	]	};
+    key <RCTL> {	[ Control_R	]	};
+    key <RALT> {	[ Alt_R,	Meta_R		]	};
+    key <RWIN> {	[ Super_R			]	};
+
+    key <MENU> {	[ Menu			]	};
+
+    key <FK01> { [ F1 ] };
+    key <FK02> { [ F2 ] };
+    key <FK03> { [ F3 ] };
+    key <FK04> { [ F4 ] };
+    key <FK05> { [ F5 ] };
+    key <FK06> { [ F6 ] };
+    key <FK07> { [ F7 ] };
+    key <FK08> { [ F8 ] };
+    key <FK09> { [ F9 ] };
+    key <FK10> { [ F11 ] };
+    key <FK11> { [ F10 ] };
+    key <FK12> { [ 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 <LVL3> {	[ ISO_Level3_Shift	]	};
+    modifier_map Mod5   { <LVL3> };
+
+    key <LVL5> {	[ ISO_Level5_Shift	]	};
+    modifier_map Mod3   { <LVL5> };
+
+    key <ALT>  {	[ NoSymbol, Alt_L	]	};
+    modifier_map Mod1   { <ALT>, <LALT> };
+
+    key <META> {	[ NoSymbol, Meta_L	]	};
+    modifier_map Mod1   { <META> };
+
+    key <SUPR> {	[ NoSymbol, Super_L	]	};
+    modifier_map Mod4   { <SUPR> };
+
+    key <HYPR> {	[ NoSymbol, Hyper_L	]	};
+    modifier_map Mod4   { <HYPR> };
+
+    key  <INS> {        [  Insert               ]       };
+    key <DELE> {        [  Delete               ]       };
+    key  <END> {        [  End                  ]       };
+    key   <UP> {	[  Up			]	};
+    key <LEFT> {	[  Left			]	};
+    key <DOWN> {	[  Down			]	};
+    key <RGHT> {	[  Right		]	};
+
+    // True for all layouts (except for ru).
+    key <TLDE> { [ grave, asterisk, asciitilde ] };
+
+    // SU-8W uses 140 for Home, not the normal keycode.  Very useful.
+    key <HOME> {        [       NoSymbol                ]       };
+    // Ditto LWIN/RWIN and Page Up/Page Down.
+    key <PGUP> {        [       none                ]       };
+    key <PGDN> {        [       NoSymbol                ]       };
+
+    // The Win keys correspond to the 'select left' and 'select right' keys.
+    key <LWIN> {	[	Prior		]	};
+    key <RWIN> {	[	Next		]	};
+
+    // <FRNT> = 140 ~ <I140>
+    key <FRNT> {	[	Home			]	};
+    // <PROP> = 138 ~ <I138>
+    key <PROP> {	[	Menu			]	};
+    key <I163> {	[	XF86Mail		]	};
+
+    // Power button.
+    key <I5E> {         [       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";
+    };
+
+};
-- 
GitLab

