Home | History | Annotate | Line # | Download | only in nokia_vndr
rx-51 revision 1.1
      1 default partial alphanumeric_keys
      2 xkb_symbols "common" {
      3     include "nokia_vndr/rx-51(common_keys)"
      4     include "nokia_vndr/rx-51(modifiers)"
      5 
      6     // This section should not be included by any other section.
      7     // It's referenced only once by rule file to allow multiple layout configurations.
      8 
      9     // More than one layout at the same time could be set for instance as follows:
     10     // setxkbmap -rules evdev \
     11     //           -model nokiarx51 \
     12     //           -option grp:ctrl_shift_toggle \
     13     //           -layout us,cz \
     14     //           -variant ",qwerty"
     15 
     16     // Notice the similarity:
     17     //   "pc+us+cz(qwerty):2+grp:XYZ" vs.
     18     //   "nokia_vndr/rx-51(common)+nokia_vndr/rx-51(us)+nokia_vndr/rx-51(cz_qwerty):2+grp:XYZ"
     19     // where XYZ is one of xkb_symbols section usually located in file symbols/group.
     20 
     21     // Bear in mind that option XYZ could replace current keys configuration!!!
     22 
     23     // For instance using symbols/group(ctrl_shift_toggle) redefines LCTL and LFSH keys
     24     // which may disallow opening of virtual symbol table (Multi_key).
     25     // Fortunately the Multi_key is defined in 3rd and 4th level a ctrl_shift_toggle
     26     // redefines first two levels only. But RX-51 has not right Ctrl nor Shift therefore
     27     // pressing Ctrl+Shift will switch to previous layout, not to the next one.
     28 
     29     // For RX-51 device there is a lot of restrictions if more than one layout is
     30     // is configured at the same time because some modifiers and special cases are
     31     // handled by hildon layer (especially with eight-level layout):
     32     //  - settings may be done from terminal only (GUI doesn't and won't support it)
     33     //  - virtual symbol table is not updated according to current layout
     34     //  - for unknown reasons the eight-level layout (nordic,ru) works properly
     35     //    only if it's configured as first layout (e.g. "ru,us,cz" not "us,cz,ru")
     36     //    otherwise it's not possible to access levels 5-8
     37     //  - Ctrl+Space related problems:
     38     //     - If eight-level layout is used as first layout one of eight-level layouts has to
     39     //       be also chosen in GUI - otherwise the Ctrl+Space "switch" is disabled
     40     //     - Ctrl+Space has no effect if only four-level layouts are chosen
     41     //       (don't forget the layout configured in GUI - despite of it's not reachable)
     42     //     - a few keys in 2nd layer could be mixed with other layouts when Ctrl+Space is "turned on" (why?)
     43     //       in case eight- and four-level layouts are configured simultaneously
     44     //     - Ctrl+Space is "turned on" by default and has to be "turned off" for four-level layouts
     45     //       in case eight- and four-level layouts are configured simultaneously
     46     //     - four-level layout on first place doesn't work at all when Ctrl+Space is "turned on"
     47     //       in case the 2nd, 3rd or 4th layout is eight-level layout
     48 };
     49 
     50 ////////////////////////////////////////////////////////////////////////////////
     51 
     52 partial alphanumeric_keys
     53 xkb_symbols "us" {
     54     include "nokia_vndr/rx-51(english_base)"
     55     include "nokia_vndr/rx-51(arrows_4btns)"
     56 
     57     name[Group1] = "U.S. English";
     58 };
     59 
     60 
     61 
     62 partial alphanumeric_keys
     63 xkb_symbols "pl" {
     64     include "nokia_vndr/rx-51(english_base)"
     65     include "nokia_vndr/rx-51(arrows_4btns)"
     66 
     67     name[Group1] = "Polish";
     68 };
     69 
     70 
     71 
     72 partial alphanumeric_keys
     73 xkb_symbols "fise" {
     74     include "nokia_vndr/rx-51(nordic_base)"
     75     include "nokia_vndr/rx-51(arrows_2btns)"
     76 
     77     name[Group1] = "Finnish/Swedish";
     78 
     79     // 2. row
     80     key <AB09>	{ [	odiaeresis,	Odiaeresis,	exclam,		exclam		] };
     81     key <UP>	{ [	adiaeresis,	Adiaeresis,	question,	question	] };
     82 };
     83 
     84 
     85 
     86 partial alphanumeric_keys
     87 xkb_symbols "dano" {
     88     include "nokia_vndr/rx-51(nordic_base)"
     89     include "nokia_vndr/rx-51(arrows_2btns)"
     90 
     91     name[Group1] = "Danish/Norwegian";
     92 
     93     // 2. row
     94     key <AB09>	{ [	oslash,		Oslash,		exclam,		exclam		] };
     95     key <UP>	{ [	ae,		AE,		question,	question	] };
     96 };
     97 
     98 
     99 
    100 partial alphanumeric_keys
    101 xkb_symbols "nordic" {
    102     include "nokia_vndr/rx-51(nordic_base)"
    103     include "nokia_vndr/rx-51(arrows_2btns)"
    104 
    105     name[Group1] = "Danish/Finnish/Norwegian/Swedish";
    106 
    107     key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
    108 
    109     // 2. row
    110     key <AB09>	{ [	odiaeresis,	Odiaeresis,	exclam,		exclam,		oslash,		Oslash,		exclam,		exclam		] };
    111     key <UP>	{ [	adiaeresis,	Adiaeresis,	question,	question,	ae,		AE,		question,	question	] };
    112 };
    113 
    114 
    115 
    116 partial alphanumeric_keys
    117 xkb_symbols "ptes" {
    118     include "nokia_vndr/rx-51(english_base)"
    119     include "nokia_vndr/rx-51(arrows_2btns)"
    120 
    121     name[Group1] = "Portuguese/Spanish";
    122 
    123     // 1. row
    124     key <AB08>	{ [	dead_acute,	dead_acute,	dead_grave,	dead_grave	] };
    125 
    126     // 2. row
    127     key <AC05>	{ [	g,		G,		exclamdown,	exclamdown	] };
    128     key <AC06>	{ [	h,		H,		exclam,		exclam		] };
    129     key <AC07>	{ [	j,		J,		questiondown,	questiondown	] };
    130     key <AC08>	{ [	k,		K,		question,	question	] };
    131     key <AC09>	{ [	l,		L,		dead_diaeresis,	dead_diaeresis	] };
    132     key <AB09>	{ [	ntilde,		Ntilde,		dead_tilde,	dead_tilde	] };
    133     key <UP>	{ [	ccedilla,	Ccedilla,	dead_circumflex,dead_circumflex	] };
    134 
    135     // 3. row
    136     key <AB01>	{ [	z,		Z,		parenleft,	parenleft	] };
    137     key <AB02>	{ [	x,		X,		parenright,	parenright 	] };
    138     key <AB03>	{ [	c,		C,		slash,		slash		] };
    139     key <AB04>	{ [	v,		V,		quotedbl,	quotedbl	] };
    140     key <AB05>	{ [	b,		B,		apostrophe,	apostrophe	] };
    141     key <AB06>	{ [	n,		N,		colon,		colon		] };
    142     key <AB07>	{ [	m,		M,		semicolon,	semicolon	] };
    143     key <LEFT>	{ [	period,		comma,		comma,		comma		] };
    144 };
    145 
    146 
    147 
    148 partial alphanumeric_keys
    149 xkb_symbols "fr" {
    150     include "nokia_vndr/rx-51(english_base)"
    151     include "nokia_vndr/rx-51(arrows_2btns)"
    152 
    153     name[Group1] = "French";
    154 
    155     // 1. row
    156     key <AD01>	{ [	a,		A,		1,		1		] };
    157     key <AD02>	{ [	z,		Z,		2,		2		] };
    158     key <AB08>	{ [	agrave,		Agrave,		ccedilla,	Ccedilla	] };
    159 
    160     // 2. row
    161     key <AC01>	{ [	q,		Q,		asterisk,	asterisk	] };
    162     key <AC02>	{ [	s,		S,		plus,		plus		] };
    163     key <AC03>	{ [	d,		D,		numbersign,	numbersign	] };
    164     key <AC04>	{ [	f,		F,		minus,  	minus		] };
    165     key <AC05>	{ [	g,		G,		underscore,	underscore	] };
    166     key <AC06>	{ [	h,		H,		exclam,		exclam		] };
    167     key <AC07>	{ [	j,		J,		question,	question	] };
    168     key <AC08>	{ [	k,		K,		colon,		colon		] };
    169     key <AC09>	{ [	l,		L,		dead_circumflex,dead_circumflex	] };
    170     key <AB09>	{ [	m,		M,		ugrave,		Ugrave		] };
    171     key <UP>	{ [	eacute,		Eacute,		egrave,		Egrave		] };
    172 
    173     // 3. row
    174     key <AB01>	{ [	w,		W,		EuroSign,       EuroSign	] };
    175     key <AB03>	{ [	c,		C,		parenleft,	parenleft	] };
    176     key <AB04>	{ [	v,		V,		parenright,	parenright	] };
    177     key <AB05>	{ [	b,		B,		slash,		slash		] };
    178     key <AB07>	{ [	comma,		comma,		apostrophe,	apostrophe	] };
    179     key <LEFT>	{ [	semicolon,	period,		period,		period		] };
    180 };
    181 
    182 
    183 
    184 partial alphanumeric_keys
    185 xkb_symbols "de" {
    186     include "nokia_vndr/rx-51(english_base)"
    187     include "nokia_vndr/rx-51(arrows_2btns)"
    188 
    189     name[Group1] = "German";
    190 
    191     // 1. row
    192     key <AD06>	{ [	z,		Z,		6,		6		] };
    193     key <AB08>	{ [	udiaeresis,	Udiaeresis,	ssharp,		ssharp		] };
    194 
    195     // 2. row
    196     key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
    197     key <AC09>	{ [	l,		L,		colon,		colon		] };
    198     key <AB09>	{ [	odiaeresis,	Odiaeresis,	exclam,		exclam		] };
    199     key <UP>	{ [	adiaeresis,	Adiaeresis,	question,	question	] };
    200 
    201     // 3. row
    202     key <AB01>	{ [	y,		Y,		EuroSign,	EuroSign	] };
    203     key <AB03>	{ [	c,		C,		equal,		equal		] };
    204     key <LEFT>	{ [	period,		comma,		comma,		comma		] };
    205 };
    206 
    207 
    208 
    209 partial alphanumeric_keys
    210 xkb_symbols "ch" {
    211     include "nokia_vndr/rx-51(english_base)"
    212     include "nokia_vndr/rx-51(arrows_2btns)"
    213 
    214     name[Group1] = "Swiss";
    215 
    216     // 1. row
    217     key <AD06>	{ [	z,		Z,		6,		6		] };
    218     key <AB08>	{ [	udiaeresis,	Udiaeresis,	egrave,		Egrave		] };
    219 
    220     // 2. row
    221     key <AC06>	{ [	h,		H,		equal,		equal		] };
    222     key <AC07>	{ [	j,		J,		parenleft,	parenleft	] };
    223     key <AC08>	{ [	k,		K,		parenright,	parenright	] };
    224     key <AC09>	{ [	l,		L,		colon,		colon		] };
    225     key <AB09>	{ [	odiaeresis,	Odiaeresis,	eacute,		Aacute		] };
    226     key <UP>	{ [	adiaeresis,	Adiaeresis,	agrave,		Agrave		] };
    227 
    228     // 3. row
    229     key <AB01>	{ [	y,		Y,		question,	question	] };
    230     key <AB02>	{ [	x,		X,		exclam,		exclam		] };
    231     key <AB03>	{ [	c,		C,		ccedilla,	Ccedilla	] };
    232     key <LEFT>	{ [	period,		comma,		comma,		comma		] };
    233 };
    234 
    235 
    236 
    237 // Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons.
    238 partial alphanumeric_keys
    239 xkb_symbols "ru" {
    240     include "nokia_vndr/rx-51(english_base)"
    241     include "nokia_vndr/rx-51(arrows_2btns)"
    242 
    243     name[Group1] = "Russian";
    244 
    245     key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
    246 
    247     // 1. row
    248     key <AD01>	{ [	q,		Q,		1,			1,			Cyrillic_shorti,	Cyrillic_SHORTI,	1,			1			] };
    249     key <AD02>	{ [	w,		W,		2,			2,			Cyrillic_tse,		Cyrillic_TSE,		2,			2			] };
    250     key <AD03>	{ [	e,		E,		3,			3,			Cyrillic_u,		Cyrillic_U,		3,			3			] };
    251     key <AD04>	{ [	r,		R,		4,			4,			Cyrillic_ka,		Cyrillic_KA,		4,			4			] };
    252     key <AD05>	{ [	t,		T,		5,			5,			Cyrillic_ie,		Cyrillic_IE,		5,			5			] };
    253     key <AD06>	{ [	y,		Y,		6,			6,			Cyrillic_en,		Cyrillic_EN,		6,			6			] };
    254     key <AD07>	{ [	u,		U,		7,			7,			Cyrillic_ghe,		Cyrillic_GHE,		7,			7			] };
    255     key <AD08>	{ [	i,		I,		8,			8,			Cyrillic_sha,		Cyrillic_SHA,		8,			8			] };
    256     key <AD09>	{ [	o,		O,		9,			9,			Cyrillic_shcha,		Cyrillic_SHCHA,		9,			9			] };
    257     key <AD10>	{ [	p,		P,		0,			0,			Cyrillic_ze,		Cyrillic_ZE,		0,			0			] };
    258     key <AB08>  { [	Cyrillic_ha,	Cyrillic_HA,	Cyrillic_hardsign,	Cyrillic_HARDSIGN,	Cyrillic_ha,		Cyrillic_HA,		Cyrillic_hardsign,	Cyrillic_HARDSIGN	] };
    259 
    260     // 2. row
    261     key <AC01>	{ [	a,		A,		asterisk,		asterisk,		Cyrillic_ef,		Cyrillic_EF,		asterisk,		asterisk		] };
    262     key <AC02>	{ [	s,		S,		plus,			plus,			Cyrillic_yeru,		Cyrillic_YERU,		plus,			plus			] };
    263     key <AC03>	{ [	d,		D,		numbersign,		numbersign,		Cyrillic_ve,		Cyrillic_VE,		numbersign,		numbersign		] };
    264     key <AC04>	{ [	f,		F,		minus,			minus,			Cyrillic_a,		Cyrillic_A,		minus,			minus			] };
    265     key <AC05>	{ [	g,		G,		underscore,		underscore,		Cyrillic_pe,		Cyrillic_PE,		underscore,		underscore		] };
    266     key <AC06>	{ [	h,		H,		exclam,			exclam,			Cyrillic_er,		Cyrillic_ER,		exclam,			exclam			] };
    267     key <AC07>	{ [	j,		J,		question,		question,		Cyrillic_o,		Cyrillic_O,		question,		question		] };
    268     key <AC08>	{ [	k,		K,		semicolon,		semicolon,		Cyrillic_el,		Cyrillic_EL,		semicolon,		semicolon		] };
    269     key <AC09>	{ [	l,		L,		colon,			colon,			Cyrillic_de,		Cyrillic_DE,		colon,			colon			] };
    270     key <AB09>	{ [	comma,		comma,		comma,			comma,			Cyrillic_zhe,		Cyrillic_ZHE,		comma,			comma			] };
    271     key <UP>	{ [	period,		period,		period,			period,			Cyrillic_e,		Cyrillic_E,		period,			period			] };
    272 
    273     // 3. row
    274     key <AB01>	{ [	z,		Z,		dollar,			dollar,			Cyrillic_ya,		Cyrillic_YA,		dollar,			dollar			] };
    275     key <AB02>	{ [	x,		X,		EuroSign,		EuroSign,		Cyrillic_che,		Cyrillic_CHE,		EuroSign,		EuroSign		] };
    276     key <AB03>	{ [	c,		C,		slash,			slash,			Cyrillic_es,		Cyrillic_ES,		slash,			slash			] };
    277     key <AB04>	{ [	v,		V,		parenleft,		parenleft,		Cyrillic_em,		Cyrillic_EM,		parenleft,		parenleft		] };
    278     key <AB05>	{ [	b,		B,		parenright,		parenright,		Cyrillic_i,		Cyrillic_I,		parenright,		parenright		] };
    279     key <AB06>	{ [	n,		N,		quotedbl,		quotedbl,		Cyrillic_te,		Cyrillic_TE,		quotedbl,		quotedbl		] };
    280     key <AB07>	{ [	m,		M,		apostrophe,		apostrophe,		Cyrillic_softsign,	Cyrillic_SOFTSIGN,	apostrophe,		apostrophe		] };
    281     key <LEFT>	{ [	Cyrillic_be,	Cyrillic_BE,	Cyrillic_yu,		Cyrillic_YU,		Cyrillic_be,		Cyrillic_BE,		Cyrillic_yu,		Cyrillic_YU		] };
    282 };
    283 
    284 
    285 
    286 partial alphanumeric_keys
    287 xkb_symbols "it" {
    288     include "nokia_vndr/rx-51(english_base)"
    289     include "nokia_vndr/rx-51(arrows_2btns)"
    290 
    291     name[Group1] = "Italian";
    292 
    293     // 1. row
    294     key <AB08>	{ [	egrave,		Egrave,		eacute,		Eacute		] };
    295 
    296     // 2. row
    297     key <AC06>	{ [	h,		H,		semicolon,	semicolon	] };
    298     key <AC07>	{ [	j,		J,		colon,		colon		] };
    299     key <AC08>	{ [	k,		K,		exclam,		exclam		] };
    300     key <AC09>	{ [	l,		L,		question,	question	] };
    301     key <AB09>	{ [	ograve,		Ograve,		igrave,		Igrave		] };
    302     key <UP>	{ [	agrave,		Agrave,		ugrave,		Ugrave		] };
    303 
    304     // 3. row
    305     key <AB01>	{ [	z,		Z,		EuroSign,	EuroSign	] };
    306     key <AB02>	{ [	x,		X,		parenleft,	parenleft	] };
    307     key <AB03>	{ [	c,		C,		parenright,	parenright	] };
    308     key <LEFT>	{ [	period,		comma,		comma,		comma		] };
    309 };
    310 
    311 
    312 
    313 partial alphanumeric_keys
    314 xkb_symbols "cz" {
    315     include "nokia_vndr/rx-51(english_base)"
    316     include "nokia_vndr/rx-51(arrows_2btns)"
    317 
    318     name[Group1] = "Czech";
    319 
    320     // 1. row
    321     key <AD06>	{ [	z,		Z,		6,		6		] };
    322     key <AB08>	{ [	dead_acute,	dead_acute,	sterling,	sterling	] };
    323 
    324     // 2. row
    325     key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
    326     key <AC09>	{ [	l,		L,		colon,		colon		] };
    327     key <AB09>	{ [	uring,		Uring,		EuroSign,	EuroSign	] };
    328     key <UP>	{ [	dead_caron,	dead_caron,	dollar,		dollar		] };
    329 
    330     // 3. row
    331     key <AB01>	{ [	y,		Y,		equal,		equal		] };
    332     key <AB02>	{ [	x,		X,		slash,		slash		] };
    333     key <AB03>	{ [	c,		C,		backslash,	backslash	] };
    334     key <AB04>	{ [	v,		V,		apostrophe,	apostrophe	] };
    335     key <AB05>	{ [	b,		B,		quotedbl,	quotedbl	] };
    336     key <AB06>	{ [	n,		N,		exclam,		exclam		] };
    337     key <AB07>	{ [	m,		M,		question,	question	] };
    338     key <LEFT>	{ [	period,		comma,		comma,		comma		] };
    339 };
    340 
    341 partial alphanumeric_keys
    342 xkb_symbols "cz_qwerty" {
    343     include "nokia_vndr/rx-51(cz)"
    344 
    345     name[Group1] = "Czech - qwerty";
    346 
    347     // Do not use the layout "cz_qwerty" directly if it is the only layout and compat rules enabled.
    348     // There is one compat rule that converts "cz_qwerty" to "pc+cz(qwerty)" which is not correct for RX-51.
    349     // Use either the layout "cz(qwerty)" or the general "cz" with variant "qwerty".
    350 
    351     // 1. row
    352     key <AD06>	{ [	y,		Y,		6,		6		] };
    353 
    354     // 3. row
    355     key <AB01>	{ [	z,		Z,		percent,	percent		] };
    356 };
    357 
    358 
    359 
    360 ////////////////////////////////////////////////////////////////////////////////
    361 
    362 partial hidden alphanumeric_keys
    363 xkb_symbols "nordic_base" {
    364     include "nokia_vndr/rx-51(english_base)"
    365 
    366     // 1. row
    367     key <AB08>	{ [	aring,		Aring,		equal,		equal		] };
    368 
    369     // 2. row
    370     key <AC08>	{ [	k,		K,		semicolon,	semicolon	] };
    371     key <AC09>	{ [	l,		L,		colon,		colon		] };
    372 
    373     // 3. row
    374     key <AB01>	{ [	z,		Z,		EuroSign,	EuroSign	] };
    375     key <AB03>	{ [	c,		C,		sterling,	sterling	] };
    376     key <LEFT>	{ [	period,		comma,		comma,		comma		] };
    377 };
    378 
    379 partial hidden alphanumeric_keys
    380 xkb_symbols "english_base" {
    381 
    382     // 1. row
    383     key <AD01>	{ [	q,		Q,		1,		1		] };
    384     key <AD02>	{ [	w,		W,		2,		2		] };
    385     key <AD03>	{ [	e,		E,		3,		3		] };
    386     key <AD04>	{ [	r,		R,		4,		4		] };
    387     key <AD05>	{ [	t,		T,		5,		5		] };
    388     key <AD06>	{ [	y,		Y,		6,		6		] };
    389     key <AD07>	{ [	u,		U,		7,		7		] };
    390     key <AD08>	{ [	i,		I,		8,		8		] };
    391     key <AD09>	{ [	o,		O,		9,		9		] };
    392     key <AD10>	{ [	p,		P,		0,		0		] };
    393     key <AB08>	{ [	comma,		semicolon,	equal,		equal		] };
    394 
    395     // 2. row
    396     key <AC01>	{ [	a,		A,		asterisk,	asterisk	] };
    397     key <AC02>	{ [	s,		S,		plus,		plus		] };
    398     key <AC03>	{ [	d,		D,		numbersign,	numbersign	] };
    399     key <AC04>	{ [	f,		F,		minus,		minus		] };
    400     key <AC05>	{ [	g,		G,		underscore,	underscore	] };
    401     key <AC06>	{ [	h,		H,		parenleft,	parenleft	] };
    402     key <AC07>	{ [	j,		J,		parenright,	parenright	] };
    403     key <AC08>	{ [	k,		K,		ampersand,	ampersand	] };
    404     key <AC09>	{ [	l,		L,		exclam,		exclam		] };
    405     key <AB09>	{ [	period,		colon,		question,	question	] };
    406 
    407     // 3. row
    408     key <AB01>	{ [	z,		Z,		sterling,	sterling	] };
    409     key <AB02>	{ [	x,		X,		dollar,		dollar		] };
    410     key <AB03>	{ [	c,		C,		EuroSign,	EuroSign	] };
    411     key <AB04>	{ [	v,		V,		slash,		slash		] };
    412     key <AB05>	{ [	b,		B,		backslash,	backslash	] };
    413     key <AB06>	{ [	n,		N,		quotedbl,	quotedbl	] };
    414     key <AB07>	{ [	m,		M,		apostrophe,	apostrophe	] };
    415     key <SPCE>	{ [	space,		space,		at,		at		] };
    416 };
    417 
    418 partial hidden alphanumeric_keys
    419 xkb_symbols "common_keys" {
    420     // all other common keys
    421 
    422     key <BKSP>	{ [	BackSpace	] };
    423     key <TAB>	{ [	Tab		] };
    424 
    425     // broken UI spec.
    426     key <RTRN>	{ [	KP_Enter	] };
    427 
    428     key <KPEN>	{ [	Return		] };
    429     key <ESC>	{ [	Escape		] };
    430 
    431     key <FK01>	{ [	F1	] };
    432     key <FK02>	{ [	F2	] };
    433     key <FK03>	{ [	F3	] };
    434     key <FK04>	{ [	F4	] };
    435     key <FK05>	{ [	F5	] };
    436     key <FK06>	{ [	F6	] };
    437 
    438     // Swap +/- keys intentionally. The VOL+/VOL- keys are located physically
    439     // on left/right and up/down in landscape/portrait orientation. This does
    440     // not feel natural for the user and therefore we want the VOL+/VOL- keys
    441     // map to -/+.
    442     //
    443     // The only exception is an active call in portrait mode where we want to
    444     // use the real meanings of the keys. This special case and management of
    445     // +/- keys in general is handled in maemo-statusmenu-volume.
    446     key <FK07>	{ [	F8	] };
    447     key <FK08>	{ [	F7	] };
    448 
    449     key <FK09>	{ [	F9	] };
    450     key <FK10>	{ [	F10	] };
    451     key <FK11>	{ [	F11	] };
    452 };
    453 
    454 partial hidden alphanumeric_keys modifier_keys
    455 xkb_symbols "modifiers" {
    456     // Shift switches between current level and level+1
    457     key <LFSH>	{
    458 	type[Group1] = "ONE_LEVEL",
    459 	symbols[Group1] = [	Shift_L	]
    460     };
    461     modifier_map Shift { Shift_L };
    462 
    463     // Fn+Ctrl virtual symbol table (Multi_key)
    464     // Ctrl+Space switches between 1st and 5th level (hardcoded in hildon)
    465     key <LCTL>	{
    466 	type[Group1] = "FOUR_LEVEL",
    467 	symbols[Group1] = [	Control_L,	Control_L,	Multi_key,	Multi_key	]
    468     };
    469     modifier_map Control { Control_L };
    470 
    471     // Fn key (right alt) switches to 3rd level
    472     include "level3(ralt_switch)"
    473 };
    474 
    475 partial hidden alphanumeric_keys
    476 xkb_symbols "arrows_2btns" {
    477     // rx-51 specific arrows mapping
    478     // normal 2nd level must not be enumerated to allow text selection with Shift key
    479     key <DOWN>	{ type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [	Left,	Up	] };
    480     key <RGHT>	{ type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [	Right,	Down	] };
    481 };
    482 
    483 partial hidden alphanumeric_keys
    484 xkb_symbols "arrows_4btns" {
    485     // standard arrows mapping
    486     // normal 2nd level must not be enumerated to allow text selection with Shift key
    487     key <UP>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Up	] };
    488     key <LEFT>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Left	] };
    489     key <DOWN>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Down	] };
    490     key <RGHT>	{ type[Group1] = "ONE_LEVEL", symbols[Group1] = [	Right	] };
    491 };
    492