1 default partial alphanumeric_keys
3 include "nokia_vndr/rx-51(common_keys)"
4 include "nokia_vndr/rx-51(modifiers)"
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.
9 // More than one layout at the same time could be set for instance as follows:
10 // setxkbmap -rules evdev \
12 // -option grp:ctrl_shift_toggle \
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.
21 // Bear in mind that option XYZ could replace current keys configuration!!!
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.
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
50 ////////////////////////////////////////////////////////////////////////////////
52 partial alphanumeric_keys
54 include "nokia_vndr/rx-51(english_base)"
55 include "nokia_vndr/rx-51(arrows_4btns)"
57 name[Group1] = "U.S. English";
62 partial alphanumeric_keys
64 include "nokia_vndr/rx-51(english_base)"
65 include "nokia_vndr/rx-51(arrows_4btns)"
67 name[Group1] = "Polish";
72 partial alphanumeric_keys
74 include "nokia_vndr/rx-51(nordic_base)"
75 include "nokia_vndr/rx-51(arrows_2btns)"
77 name[Group1] = "Finnish/Swedish";
80 key <AB09> { [ odiaeresis, Odiaeresis, exclam, exclam ] };
81 key <UP> { [ adiaeresis, Adiaeresis, question, question ] };
86 partial alphanumeric_keys
88 include "nokia_vndr/rx-51(nordic_base)"
89 include "nokia_vndr/rx-51(arrows_2btns)"
91 name[Group1] = "Danish/Norwegian";
94 key <AB09> { [ oslash, Oslash, exclam, exclam ] };
95 key <UP> { [ ae, AE, question, question ] };
100 partial alphanumeric_keys
101 xkb_symbols "nordic" {
102 include "nokia_vndr/rx-51(nordic_base)"
103 include "nokia_vndr/rx-51(arrows_2btns)"
105 name[Group1] = "Danish/Finnish/Norwegian/Swedish";
107 key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
110 key <AB09> { [ odiaeresis, Odiaeresis, exclam, exclam, oslash, Oslash, exclam, exclam ] };
111 key <UP> { [ adiaeresis, Adiaeresis, question, question, ae, AE, question, question ] };
116 partial alphanumeric_keys
118 include "nokia_vndr/rx-51(english_base)"
119 include "nokia_vndr/rx-51(arrows_2btns)"
121 name[Group1] = "Portuguese/Spanish";
124 key <AB08> { [ dead_acute, dead_acute, dead_grave, dead_grave ] };
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 ] };
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 ] };
148 partial alphanumeric_keys
150 include "nokia_vndr/rx-51(english_base)"
151 include "nokia_vndr/rx-51(arrows_2btns)"
153 name[Group1] = "French";
156 key <AD01> { [ a, A, 1, 1 ] };
157 key <AD02> { [ z, Z, 2, 2 ] };
158 key <AB08> { [ agrave, Agrave, ccedilla, Ccedilla ] };
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 ] };
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 ] };
184 partial alphanumeric_keys
186 include "nokia_vndr/rx-51(english_base)"
187 include "nokia_vndr/rx-51(arrows_2btns)"
189 name[Group1] = "German";
192 key <AD06> { [ z, Z, 6, 6 ] };
193 key <AB08> { [ udiaeresis, Udiaeresis, ssharp, ssharp ] };
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 ] };
202 key <AB01> { [ y, Y, EuroSign, EuroSign ] };
203 key <AB03> { [ c, C, equal, equal ] };
204 key <LEFT> { [ period, comma, comma, comma ] };
209 partial alphanumeric_keys
211 include "nokia_vndr/rx-51(english_base)"
212 include "nokia_vndr/rx-51(arrows_2btns)"
214 name[Group1] = "Swiss";
217 key <AD06> { [ z, Z, 6, 6 ] };
218 key <AB08> { [ udiaeresis, Udiaeresis, egrave, Egrave ] };
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 ] };
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 ] };
237 // Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons.
238 partial alphanumeric_keys
240 include "nokia_vndr/rx-51(english_base)"
241 include "nokia_vndr/rx-51(arrows_2btns)"
243 name[Group1] = "Russian";
245 key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
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 ] };
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 ] };
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 ] };
286 partial alphanumeric_keys
288 include "nokia_vndr/rx-51(english_base)"
289 include "nokia_vndr/rx-51(arrows_2btns)"
291 name[Group1] = "Italian";
294 key <AB08> { [ egrave, Egrave, eacute, Eacute ] };
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 ] };
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 ] };
313 partial alphanumeric_keys
315 include "nokia_vndr/rx-51(english_base)"
316 include "nokia_vndr/rx-51(arrows_2btns)"
318 name[Group1] = "Czech";
321 key <AD06> { [ z, Z, 6, 6 ] };
322 key <AB08> { [ dead_acute, dead_acute, sterling, sterling ] };
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 ] };
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 ] };
341 partial alphanumeric_keys
342 xkb_symbols "cz_qwerty" {
343 include "nokia_vndr/rx-51(cz)"
345 name[Group1] = "Czech - qwerty";
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".
352 key <AD06> { [ y, Y, 6, 6 ] };
355 key <AB01> { [ z, Z, percent, percent ] };
360 ////////////////////////////////////////////////////////////////////////////////
362 partial hidden alphanumeric_keys
363 xkb_symbols "nordic_base" {
364 include "nokia_vndr/rx-51(english_base)"
367 key <AB08> { [ aring, Aring, equal, equal ] };
370 key <AC08> { [ k, K, semicolon, semicolon ] };
371 key <AC09> { [ l, L, colon, colon ] };
374 key <AB01> { [ z, Z, EuroSign, EuroSign ] };
375 key <AB03> { [ c, C, sterling, sterling ] };
376 key <LEFT> { [ period, comma, comma, comma ] };
379 partial hidden alphanumeric_keys
380 xkb_symbols "english_base" {
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 ] };
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 ] };
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 ] };
418 partial hidden alphanumeric_keys
419 xkb_symbols "common_keys" {
420 // all other common keys
422 key <BKSP> { [ BackSpace ] };
423 key <TAB> { [ Tab ] };
426 key <RTRN> { [ KP_Enter ] };
428 key <KPEN> { [ Return ] };
429 key <ESC> { [ Escape ] };
431 key <FK01> { [ F1 ] };
432 key <FK02> { [ F2 ] };
433 key <FK03> { [ F3 ] };
434 key <FK04> { [ F4 ] };
435 key <FK05> { [ F5 ] };
436 key <FK06> { [ F6 ] };
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
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 ] };
449 key <FK09> { [ F9 ] };
450 key <FK10> { [ F10 ] };
451 key <FK11> { [ F11 ] };
454 partial hidden alphanumeric_keys modifier_keys
455 xkb_symbols "modifiers" {
456 // Shift switches between current level and level+1
458 type[Group1] = "ONE_LEVEL",
459 symbols[Group1] = [ Shift_L ]
461 modifier_map Shift { Shift_L };
463 // Fn+Ctrl virtual symbol table (Multi_key)
464 // Ctrl+Space switches between 1st and 5th level (hardcoded in hildon)
466 type[Group1] = "FOUR_LEVEL",
467 symbols[Group1] = [ Control_L, Control_L, Multi_key, Multi_key ]
469 modifier_map Control { Control_L };
471 // Fn key (right alt) switches to 3rd level
472 include "level3(ralt_switch)"
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 ] };
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 ] };