[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

console-data: Romanian keyboard standard implemented - please use this



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Subject: Romanian keyboard standard implemented - please use this
Package: console-data
Version: 2:1.0-3
Severity: important
Tags: patch l10n

Hello,


Notes: the severity is important since it is important that Etch is
released with this bug fixed. I am sorry about the length of the mail,
but I am forced to explain this very well to be understood correctly.


WHY THIS IS BUG:

The current Romanian keyboard layout is broken because of several
reasons:
- - does not respect the legalized Romanian layout standard
  SR 13992:2004[0][1]
- - does not provide Romanian quotation marks and there is no way to
  generate correct t/T/s/S comma characters, and the correct quotation
  marks
- - does not generate the character â (a with circumflex accent) when
  pressing AltGr+q


WHAT IS PROVIDED:

The attached files implement the standard (legalized) Romanian layout
for the console. It was generated with ckbcomp (from the xkb layout,
which already respects the standard) and was slightly modified (but
still respects the standard - explanations below).


WHY THE ATTACHMENTS ARE A FIX:

The attached files respect the afore mentioned standard which addresses
all the issues of current layout and even more.


WHY THERE ARE TWO FILES:

The reason is that in Romanian, the correct diacritics for ț/Ț
(t/T comma) and ș/Ș (s/S comma) are the ones with a comma below them
(unicode points U021B,U021A,U0219,U0218), but there was a huge
misunderstanding related to the correct characters and ţ/ţ
(t/T cedilla) and ş/Ş (s cedilla), thanks to Microsoft, and Romanian
ended up in all encoding categorization as being representable in
ISO-8859-2, which is incorrect. Even more, the quotation marks „” «» are
not all representable in ISO-8859-2. The only encoding capable of
encoding all the needed characters is UTF-8 (while ISO-8859-16 was an
attempt from Microsoft to fix this issue).

So, the ro-basic file implements the incorrect (with cedilla) layout,
while the ro-basic-comma implements the correct (with comma) layout.

In spite of the incorrectly generated characters by the basic layout,
this is currently more widely used; also the incorrect diacritics for
t/T/s/S comma are more widely used in translations, but we are in the
course of transitioning to the correct ones, so it is very important for
us to have both of these layouts present so that Etch systems will be
able to generate correct diacritics[*].


HOW TO FIX:

I suggest replacing the current "Standard" Romanian console layout with
the ro-basic one (and keeping the name "Standard"), since it *doesn't*
introduce any incompatible changes, and is consistent with the current
layout name used both in X and in Windows; the ro-basic-comma should be
added as an alternative with the name "comma", also for consistency
reasons with X and Windows implementations of the standard.

Note: the correct names are "default" (actually is name-less) (or
"Programmers") for the basic layout -  which should supersede the
current default layout for the console - and "comma" (or "Programmers
(comma)") for the ro-basic-comma file.


NON-STANDARD (COMPATIBLE) CHANGES:

For the next part, I have to make some introductory remarks related to
Apple laptop keyboards:
- - there aren't 2 Alt keys, but pressing Fn+Alt generates actually AltGr.
- - the numeric keypad is mapped over the { 6789uiopjkl;./ } keys and is
  accesible if Fn+{ <any of the mentioned keys> } is pressed (e.g.: Fn+i
  generates KP_5, Fn+period generates KP_period)
- - pressing Fn+Alt+i generates (internally, at hardware level) AltGr+KP_5
  not AltGr+i; Fn+Alt+. generates AltGr+KP_period.

Thus, I have done also an addition (this is an extension which does not
contradict the standard), in order to be able to type on Apple laptop
keyboards the character î/Î and » (closing  alternative quotation mark).
The attached keyboard layout files generate "Î"/"î" and "»" if the
user presses AltGr+KP_5 and AltGr+KP_period respectively since their
positions on the Apple keyboard corresponds to regular AltGr+I and
AltGr+period and because is not expected that any user of a regular
keyboard to be bothered by this change (I don't even know who would think
to press AltGr+KP_5 or AltGr+KP_period on a regular keyboard :-) ).


TIA and I hope I'll see these changes in Etch :-)



[*] Note that the usage of the correct diacritics in official documents
is on course to be voted in the Romanian Parliament and is currently a
pending law project, so this is of high importance for Romanian users.

[0] http://diacritice.sourceforge.net/tastaturi.html (in Romanian, but
with two nice layout images)
[1]
http://www.asro.ro/romana/standard/STANDARDE%20APROBATE%20IN%20DECEMBRIE%202004.html
the official standards list approved for December 2004 - the keyboard
layout entry is the first one in the list (also in Romanian).

- -- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (900, 'unstable'), (100, 'experimental')
Architecture: powerpc (ppc)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-1-powerpc
Locale: LANG=ro_RO.UTF-8, LC_CTYPE=ro_RO.UTF-8 (charmap=UTF-8)

Versions of packages console-data depends on:
ii  debconf [debconf-2.0]         1.5.5      Debian configuration
management sy
Versions of packages console-data recommends:
ii  console-common             0.7.61        Basic infrastructure for
text cons
ii  console-tools              1:0.2.3dbs-65 Linux console and font
utilities

- -- debconf information excluded



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFINruY8Chqv3NRNoRAlPvAJ4ilQ/l7P5txKUp/0/nbSkMorFKMgCgqKFE
urX7YjOOsOIMQNPrjgj38oQ=
=oUk4
-----END PGP SIGNATURE-----
charset "iso-8859-2"
keymaps 0-4,6,8,10,12,14
keycode 1 = Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape
keycode 2 = U+0031 U+0021 dead_tilde dead_tilde VoidSymbol VoidSymbol Meta_one Meta_one VoidSymbol VoidSymbol
keycode 3 = U+0032 U+0040 dead_caron dead_caron nul nul Meta_two Meta_two Meta_nul Meta_nul
keycode 4 = U+0033 U+0023 dead_circumflex dead_circumflex Escape Escape Meta_three Meta_three Meta_Escape Meta_Escape
keycode 5 = U+0034 U+0024 dead_breve dead_breve Control_backslash Control_backslash Meta_four Meta_four Meta_Control_backslash Meta_Control_backslash
keycode 6 = U+0035 U+0025 U+002a U+002a Control_bracketright Control_bracketright Meta_five Meta_asterisk Meta_Control_bracketright Meta_Control_bracketright
keycode 7 = U+0036 U+005e dead_ogonek dead_ogonek Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_Control_asciicircum Meta_Control_asciicircum
keycode 8 = U+0037 U+0026 dead_grave dead_grave Control_underscore Control_underscore Meta_seven Meta_seven Meta_Control_underscore Meta_Control_underscore
keycode 9 = U+0038 U+002a U+002e U+002e Delete Compose Meta_eight Meta_period Meta_Delete Compose
keycode 10 = U+0039 U+0028 dead_acute dead_acute VoidSymbol VoidSymbol Meta_nine Meta_nine VoidSymbol VoidSymbol
keycode 11 = U+0030 U+0029 dead_doubleacute dead_doubleacute VoidSymbol VoidSymbol Meta_zero Meta_zero VoidSymbol VoidSymbol
keycode 12 = U+002d U+005f dead_diaeresis U+2013 Control_underscore Control_underscore Meta_minus Meta_minus Meta_Control_underscore Meta_Control_underscore
keycode 13 = U+003d U+002b dead_cedilla U+00b1 VoidSymbol VoidSymbol Meta_equal Meta_equal VoidSymbol VoidSymbol
keycode 14 = Delete Delete Delete Delete BackSpace BackSpace Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace
keycode 15 = Tab Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = +U+0071 +U+0051 +U+00e2 +U+00c2 Control_q Control_q Meta_q Meta_q Meta_Control_q Meta_Control_q
keycode 17 = +U+0077 +U+0057 +U+00df +U+00df Control_w Control_w Meta_w Meta_w Meta_Control_w Meta_Control_w
keycode 18 = +U+0065 +U+0045 U+20ac U+20ac Control_e Control_e Meta_e Meta_e Meta_Control_e Meta_Control_e
keycode 19 = +U+0072 +U+0052 +U+0072 +U+0072 Control_r Control_r Meta_r Meta_r Meta_Control_r Meta_Control_r
keycode 20 = +U+0074 +U+0054 +U+0163 +U+0162 Control_t Control_t Meta_t Meta_t Meta_Control_t Meta_Control_t
keycode 21 = +U+0079 +U+0059 +U+0079 +U+0079 Control_y Control_y Meta_y Meta_y Meta_Control_y Meta_Control_y
keycode 22 = +U+0075 +U+0055 +U+0075 +U+0075 Control_u Control_u Meta_u Meta_u Meta_Control_u Meta_Control_u
keycode 23 = +U+0069 +U+0049 +U+00ee +U+00ce Tab Tab Meta_i Meta_i Meta_Tab Meta_Tab
keycode 24 = +U+006f +U+004f +U+006f +U+006f Control_o Control_o Meta_o Meta_o Meta_Control_o Meta_Control_o
keycode 25 = +U+0070 +U+0050 U+00a7 U+00a7 Control_p Control_p Meta_p Meta_p Meta_Control_p Meta_Control_p
keycode 26 = U+005b U+007b U+201e U+201e Escape Escape Meta_bracketleft Meta_bracketleft Meta_Escape Meta_Escape
keycode 27 = U+005d U+007d U+201d U+201d Control_bracketright Control_bracketright Meta_bracketright Meta_bracketright Meta_Control_bracketright Meta_Control_bracketright
keycode 28 = Return Return Return Return Control_m Control_m Meta_Control_m Meta_Control_m Meta_Control_m Meta_Control_m
keycode 29 = Control Control Control Control Control Control Control Control Control Control
keycode 30 = +U+0061 +U+0041 +U+0103 +U+0102 Control_a Control_a Meta_a Meta_a Meta_Control_a Meta_Control_a
keycode 31 = +U+0073 +U+0053 +U+015f +U+015e Control_s Control_s Meta_s Meta_s Meta_Control_s Meta_Control_s
keycode 32 = +U+0064 +U+0044 +U+0111 +U+0110 Control_d Control_d Meta_d Meta_d Meta_Control_d Meta_Control_d
keycode 33 = +U+0066 +U+0046 +U+0066 +U+0066 Control_f Control_f Meta_f Meta_f Meta_Control_f Meta_Control_f
keycode 34 = +U+0067 +U+0047 +U+0067 +U+0067 Control_g Control_g Meta_g Meta_g Meta_Control_g Meta_Control_g
keycode 35 = +U+0068 +U+0048 +U+0068 +U+0068 BackSpace BackSpace Meta_h Meta_h Meta_BackSpace Meta_BackSpace
keycode 36 = +U+006a +U+004a +U+006a +U+006a Linefeed Linefeed Meta_j Meta_j Meta_Linefeed Meta_Linefeed
keycode 37 = +U+006b +U+004b +U+006b +U+006b Control_k Control_k Meta_k Meta_k Meta_Control_k Meta_Control_k
keycode 38 = +U+006c +U+004c +U+0142 +U+0141 Control_l Control_l Meta_l Meta_l Meta_Control_l Meta_Control_l
keycode 39 = U+003b U+003a U+003b U+003b VoidSymbol VoidSymbol Meta_semicolon Meta_semicolon VoidSymbol VoidSymbol
keycode 40 = U+0027 U+0022 U+0027 U+0027 Control_g Control_g Meta_apostrophe Meta_apostrophe Meta_Control_g Meta_Control_g
keycode 41 = U+0060 U+007e U+0060 U+0060 nul nul Meta_grave Meta_grave Meta_nul Meta_nul
keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 43 = U+005c U+007c U+005c U+005c Control_backslash Control_backslash Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash
keycode 44 = +U+007a +U+005a +U+007a +U+007a Control_z Control_z Meta_z Meta_z Meta_Control_z Meta_Control_z
keycode 45 = +U+0078 +U+0058 +U+0078 +U+0078 Control_x Control_x Meta_x Meta_x Meta_Control_x Meta_Control_x
keycode 46 = +U+0063 +U+0043 U+00a9 U+00a9 Control_c Control_c Meta_c Meta_c Meta_Control_c Meta_Control_c
keycode 47 = +U+0076 +U+0056 +U+0076 +U+0076 Control_v Control_v Meta_v Meta_v Meta_Control_v Meta_Control_v
keycode 48 = +U+0062 +U+0042 +U+0062 +U+0062 Control_b Control_b Meta_b Meta_b Meta_Control_b Meta_Control_b
keycode 49 = +U+006e +U+004e +U+006e +U+006e Control_n Control_n Meta_n Meta_n Meta_Control_n Meta_Control_n
keycode 50 = +U+006d +U+004d +U+006d +U+006d Control_m Control_m Meta_m Meta_m Meta_Control_m Meta_Control_m
keycode 51 = U+002c U+003c U+00ab U+00ab VoidSymbol VoidSymbol Meta_comma Meta_comma VoidSymbol VoidSymbol
keycode 52 = U+002e U+003e U+00bb U+00bb Compose Compose Meta_period Meta_period Compose Compose
keycode 53 = U+002f U+003f U+002f U+002f Delete Delete Meta_slash Meta_slash Meta_Delete Meta_Delete
keycode 54 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 55 = KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply
keycode 56 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
keycode 57 = U+0020 U+0020 U+0020 U+0020 nul nul Meta_space Meta_space Meta_nul Meta_nul
keycode 58 = Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock
keycode 59 = F1 F11 F41 F51 F21 F61 Console_1 VoidSymbol Console_1 VoidSymbol
keycode 60 = F2 F12 F42 F52 F22 F62 Console_2 VoidSymbol Console_2 VoidSymbol
keycode 61 = F3 F13 F43 F53 F23 F63 Console_3 VoidSymbol Console_3 VoidSymbol
keycode 62 = F4 F14 F44 F54 F24 F64 Console_4 VoidSymbol Console_4 VoidSymbol
keycode 63 = F5 F15 F45 F55 F25 F65 Console_5 VoidSymbol Console_5 VoidSymbol
keycode 64 = F6 F16 F46 F56 F26 F66 Console_6 VoidSymbol Console_6 VoidSymbol
keycode 65 = F7 F17 F47 F57 F27 F67 Console_7 VoidSymbol Console_7 VoidSymbol
keycode 66 = F8 F18 F48 F58 F28 F68 Console_8 VoidSymbol Console_8 VoidSymbol
keycode 67 = F9 F19 F49 F59 F29 F69 Console_9 VoidSymbol Console_9 VoidSymbol
keycode 68 = F10 F20 F50 F60 F30 F70 Console_10 VoidSymbol Console_10 VoidSymbol
keycode 69 = Num_Lock VoidSymbol Hex_A Num_Lock VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 70 = Scroll_Lock Show_Memory Show_Registers Scroll_Lock Show_State VoidSymbol Scroll_Lock VoidSymbol VoidSymbol VoidSymbol
keycode 71 = KP_7 KP_7 Hex_7 KP_7 KP_7 KP_7 Ascii_7 KP_7 KP_7 KP_7
keycode 72 = KP_8 KP_8 Hex_8 KP_8 KP_8 KP_8 Ascii_8 KP_8 KP_8 KP_8
keycode 73 = KP_9 KP_9 Hex_9 KP_9 KP_9 KP_9 Ascii_9 KP_9 KP_9 KP_9
keycode 74 = KP_Subtract KP_Subtract Hex_D KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract
keycode 75 = KP_4 KP_4 Hex_4 KP_4 KP_4 KP_4 Ascii_4 KP_4 KP_4 KP_4
keycode 76 = KP_5 KP_5 +U+00ee +U+00ce KP_5 KP_5 Ascii_5 KP_5 KP_5 KP_5
keycode 77 = KP_6 KP_6 Hex_6 KP_6 KP_6 KP_6 Ascii_6 KP_6 KP_6 KP_6
keycode 78 = KP_Add KP_Add Hex_E KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add
keycode 79 = KP_1 KP_1 Hex_1 KP_1 KP_1 KP_1 Ascii_1 KP_1 KP_1 KP_1
keycode 80 = KP_2 KP_2 Hex_2 KP_2 KP_2 KP_2 Ascii_2 KP_2 KP_2 KP_2
keycode 81 = KP_3 KP_3 Hex_3 KP_3 KP_3 KP_3 Ascii_3 KP_3 KP_3 KP_3
keycode 82 = KP_0 KP_0 Hex_0 KP_0 KP_0 KP_0 Ascii_0 KP_0 KP_0 KP_0
keycode 83 = KP_Period KP_Period +U+00bb +U+00bb KP_Period Boot KP_Period KP_Period Boot Boot
keycode 86 = U+005c U+007c U+007c U+00a6 Control_backslash Control_backslash Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash
keycode 87 = F11 F21 F51 F61 F31 F71 Console_11 VoidSymbol Console_11 VoidSymbol
keycode 88 = F12 F22 F52 F62 F32 F72 Console_12 VoidSymbol Console_12 VoidSymbol
keycode 102 = Home Home Home Home VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 103 = Up Up Up Up VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 104 = Prior Scroll_Backward Prior Prior VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 105 = Left Left Left Left VoidSymbol VoidSymbol Decr_Console VoidSymbol VoidSymbol VoidSymbol
keycode 106 = Right Right Right Right VoidSymbol VoidSymbol Incr_Console VoidSymbol VoidSymbol VoidSymbol
keycode 107 = End End End End VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 108 = Down Down Down Down VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 109 = Next Scroll_Forward Next Next VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 110 = Insert Insert Insert Insert VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 111 = Remove Remove Remove Remove VoidSymbol Boot VoidSymbol VoidSymbol Boot Boot
keycode 96 = KP_Enter KP_Enter Hex_F KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter
keycode 97 = Control Control Control Control Control Control Control Control Control Control
keycode 119 = Pause Pause Pause Pause Pause Pause Pause Pause Pause Pause
keycode 99 = Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash
keycode 98 = KP_Divide KP_Divide Hex_B KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide
keycode 100 = AltGr Alt AltGr AltGr AltGr AltGr AltGr AltGr AltGr AltGr
keycode 125 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
keycode 126 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
strings as usual
charset "iso-8859-16"
keymaps 0-4,6,8,10,12,14
keycode 1 = Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape
keycode 2 = U+0031 U+0021 dead_tilde dead_tilde VoidSymbol VoidSymbol Meta_one Meta_one VoidSymbol VoidSymbol
keycode 3 = U+0032 U+0040 dead_caron dead_caron nul nul Meta_two Meta_two Meta_nul Meta_nul
keycode 4 = U+0033 U+0023 dead_circumflex dead_circumflex Escape Escape Meta_three Meta_three Meta_Escape Meta_Escape
keycode 5 = U+0034 U+0024 dead_breve dead_breve Control_backslash Control_backslash Meta_four Meta_four Meta_Control_backslash Meta_Control_backslash
keycode 6 = U+0035 U+0025 U+002a U+002a Control_bracketright Control_bracketright Meta_five Meta_asterisk Meta_Control_bracketright Meta_Control_bracketright
keycode 7 = U+0036 U+005e dead_ogonek dead_ogonek Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_Control_asciicircum Meta_Control_asciicircum
keycode 8 = U+0037 U+0026 dead_grave dead_grave Control_underscore Control_underscore Meta_seven Meta_seven Meta_Control_underscore Meta_Control_underscore
keycode 9 = U+0038 U+002a U+002e U+002e Delete Compose Meta_eight Meta_period Meta_Delete Compose
keycode 10 = U+0039 U+0028 dead_acute dead_acute VoidSymbol VoidSymbol Meta_nine Meta_nine VoidSymbol VoidSymbol
keycode 11 = U+0030 U+0029 dead_doubleacute dead_doubleacute VoidSymbol VoidSymbol Meta_zero Meta_zero VoidSymbol VoidSymbol
keycode 12 = U+002d U+005f dead_diaeresis U+2013 Control_underscore Control_underscore Meta_minus Meta_minus Meta_Control_underscore Meta_Control_underscore
keycode 13 = U+003d U+002b dead_cedilla U+00b1 VoidSymbol VoidSymbol Meta_equal Meta_equal VoidSymbol VoidSymbol
keycode 14 = Delete Delete Delete Delete BackSpace BackSpace Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace
keycode 15 = Tab Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = +U+0071 +U+0051 +U+00e2 +U+00c2 Control_q Control_q Meta_q Meta_q Meta_Control_q Meta_Control_q
keycode 17 = +U+0077 +U+0057 +U+00df +U+00df Control_w Control_w Meta_w Meta_w Meta_Control_w Meta_Control_w
keycode 18 = +U+0065 +U+0045 U+20ac U+20ac Control_e Control_e Meta_e Meta_e Meta_Control_e Meta_Control_e
keycode 19 = +U+0072 +U+0052 +U+0072 +U+0072 Control_r Control_r Meta_r Meta_r Meta_Control_r Meta_Control_r
keycode 20 = +U+0074 +U+0054 +U+021b +U+021a Control_t Control_t Meta_t Meta_t Meta_Control_t Meta_Control_t
keycode 21 = +U+0079 +U+0059 +U+0079 +U+0079 Control_y Control_y Meta_y Meta_y Meta_Control_y Meta_Control_y
keycode 22 = +U+0075 +U+0055 +U+0075 +U+0075 Control_u Control_u Meta_u Meta_u Meta_Control_u Meta_Control_u
keycode 23 = +U+0069 +U+0049 +U+00ee +U+00ce Tab Tab Meta_i Meta_i Meta_Tab Meta_Tab
keycode 24 = +U+006f +U+004f +U+006f +U+006f Control_o Control_o Meta_o Meta_o Meta_Control_o Meta_Control_o
keycode 25 = +U+0070 +U+0050 U+00a7 U+00a7 Control_p Control_p Meta_p Meta_p Meta_Control_p Meta_Control_p
keycode 26 = U+005b U+007b U+201e U+201e Escape Escape Meta_bracketleft Meta_bracketleft Meta_Escape Meta_Escape
keycode 27 = U+005d U+007d U+201d U+201d Control_bracketright Control_bracketright Meta_bracketright Meta_bracketright Meta_Control_bracketright Meta_Control_bracketright
keycode 28 = Return Return Return Return Control_m Control_m Meta_Control_m Meta_Control_m Meta_Control_m Meta_Control_m
keycode 29 = Control Control Control Control Control Control Control Control Control Control
keycode 30 = +U+0061 +U+0041 +U+0103 +U+0102 Control_a Control_a Meta_a Meta_a Meta_Control_a Meta_Control_a
keycode 31 = +U+0073 +U+0053 +U+0219 +U+0218 Control_s Control_s Meta_s Meta_s Meta_Control_s Meta_Control_s
keycode 32 = +U+0064 +U+0044 +U+0111 +U+0110 Control_d Control_d Meta_d Meta_d Meta_Control_d Meta_Control_d
keycode 33 = +U+0066 +U+0046 +U+0066 +U+0066 Control_f Control_f Meta_f Meta_f Meta_Control_f Meta_Control_f
keycode 34 = +U+0067 +U+0047 +U+0067 +U+0067 Control_g Control_g Meta_g Meta_g Meta_Control_g Meta_Control_g
keycode 35 = +U+0068 +U+0048 +U+0068 +U+0068 BackSpace BackSpace Meta_h Meta_h Meta_BackSpace Meta_BackSpace
keycode 36 = +U+006a +U+004a +U+006a +U+006a Linefeed Linefeed Meta_j Meta_j Meta_Linefeed Meta_Linefeed
keycode 37 = +U+006b +U+004b +U+006b +U+006b Control_k Control_k Meta_k Meta_k Meta_Control_k Meta_Control_k
keycode 38 = +U+006c +U+004c +U+0142 +U+0141 Control_l Control_l Meta_l Meta_l Meta_Control_l Meta_Control_l
keycode 39 = U+003b U+003a U+003b U+003b VoidSymbol VoidSymbol Meta_semicolon Meta_semicolon VoidSymbol VoidSymbol
keycode 40 = U+0027 U+0022 U+0027 U+0027 Control_g Control_g Meta_apostrophe Meta_apostrophe Meta_Control_g Meta_Control_g
keycode 41 = U+0060 U+007e U+0060 U+0060 nul nul Meta_grave Meta_grave Meta_nul Meta_nul
keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 43 = U+005c U+007c U+005c U+005c Control_backslash Control_backslash Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash
keycode 44 = +U+007a +U+005a +U+007a +U+007a Control_z Control_z Meta_z Meta_z Meta_Control_z Meta_Control_z
keycode 45 = +U+0078 +U+0058 +U+0078 +U+0078 Control_x Control_x Meta_x Meta_x Meta_Control_x Meta_Control_x
keycode 46 = +U+0063 +U+0043 U+00a9 U+00a9 Control_c Control_c Meta_c Meta_c Meta_Control_c Meta_Control_c
keycode 47 = +U+0076 +U+0056 +U+0076 +U+0076 Control_v Control_v Meta_v Meta_v Meta_Control_v Meta_Control_v
keycode 48 = +U+0062 +U+0042 +U+0062 +U+0062 Control_b Control_b Meta_b Meta_b Meta_Control_b Meta_Control_b
keycode 49 = +U+006e +U+004e +U+006e +U+006e Control_n Control_n Meta_n Meta_n Meta_Control_n Meta_Control_n
keycode 50 = +U+006d +U+004d +U+006d +U+006d Control_m Control_m Meta_m Meta_m Meta_Control_m Meta_Control_m
keycode 51 = U+002c U+003c U+00ab U+00ab VoidSymbol VoidSymbol Meta_comma Meta_comma VoidSymbol VoidSymbol
keycode 52 = U+002e U+003e U+00bb U+00bb Compose Compose Meta_period Meta_period Compose Compose
keycode 53 = U+002f U+003f U+002f U+002f Delete Delete Meta_slash Meta_slash Meta_Delete Meta_Delete
keycode 54 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 55 = KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply
keycode 56 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
keycode 57 = U+0020 U+0020 U+0020 U+0020 nul nul Meta_space Meta_space Meta_nul Meta_nul
keycode 58 = Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock Shift_Lock
keycode 59 = F1 F11 F41 F51 F21 F61 Console_1 VoidSymbol Console_1 VoidSymbol
keycode 60 = F2 F12 F42 F52 F22 F62 Console_2 VoidSymbol Console_2 VoidSymbol
keycode 61 = F3 F13 F43 F53 F23 F63 Console_3 VoidSymbol Console_3 VoidSymbol
keycode 62 = F4 F14 F44 F54 F24 F64 Console_4 VoidSymbol Console_4 VoidSymbol
keycode 63 = F5 F15 F45 F55 F25 F65 Console_5 VoidSymbol Console_5 VoidSymbol
keycode 64 = F6 F16 F46 F56 F26 F66 Console_6 VoidSymbol Console_6 VoidSymbol
keycode 65 = F7 F17 F47 F57 F27 F67 Console_7 VoidSymbol Console_7 VoidSymbol
keycode 66 = F8 F18 F48 F58 F28 F68 Console_8 VoidSymbol Console_8 VoidSymbol
keycode 67 = F9 F19 F49 F59 F29 F69 Console_9 VoidSymbol Console_9 VoidSymbol
keycode 68 = F10 F20 F50 F60 F30 F70 Console_10 VoidSymbol Console_10 VoidSymbol
keycode 69 = Num_Lock VoidSymbol Hex_A Num_Lock VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 70 = Scroll_Lock Show_Memory Show_Registers Scroll_Lock Show_State VoidSymbol Scroll_Lock VoidSymbol VoidSymbol VoidSymbol
keycode 71 = KP_7 KP_7 Hex_7 KP_7 KP_7 KP_7 Ascii_7 KP_7 KP_7 KP_7
keycode 72 = KP_8 KP_8 Hex_8 KP_8 KP_8 KP_8 Ascii_8 KP_8 KP_8 KP_8
keycode 73 = KP_9 KP_9 Hex_9 KP_9 KP_9 KP_9 Ascii_9 KP_9 KP_9 KP_9
keycode 74 = KP_Subtract KP_Subtract Hex_D KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract
keycode 75 = KP_4 KP_4 Hex_4 KP_4 KP_4 KP_4 Ascii_4 KP_4 KP_4 KP_4
keycode 76 = KP_5 KP_5 +U+00ee +U+00ce KP_5 KP_5 Ascii_5 KP_5 KP_5 KP_5
keycode 77 = KP_6 KP_6 Hex_6 KP_6 KP_6 KP_6 Ascii_6 KP_6 KP_6 KP_6
keycode 78 = KP_Add KP_Add Hex_E KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add
keycode 79 = KP_1 KP_1 Hex_1 KP_1 KP_1 KP_1 Ascii_1 KP_1 KP_1 KP_1
keycode 80 = KP_2 KP_2 Hex_2 KP_2 KP_2 KP_2 Ascii_2 KP_2 KP_2 KP_2
keycode 81 = KP_3 KP_3 Hex_3 KP_3 KP_3 KP_3 Ascii_3 KP_3 KP_3 KP_3
keycode 82 = KP_0 KP_0 Hex_0 KP_0 KP_0 KP_0 Ascii_0 KP_0 KP_0 KP_0
keycode 83 = KP_Period KP_Period +U+00bb +U+00bb KP_Period Boot KP_Period KP_Period Boot Boot
keycode 86 = U+005c U+007c U+007c U+00a6 Control_backslash Control_backslash Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash
keycode 87 = F11 F21 F51 F61 F31 F71 Console_11 VoidSymbol Console_11 VoidSymbol
keycode 88 = F12 F22 F52 F62 F32 F72 Console_12 VoidSymbol Console_12 VoidSymbol
keycode 102 = Home Home Home Home VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 103 = Up Up Up Up VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 104 = Prior Scroll_Backward Prior Prior VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 105 = Left Left Left Left VoidSymbol VoidSymbol Decr_Console VoidSymbol VoidSymbol VoidSymbol
keycode 106 = Right Right Right Right VoidSymbol VoidSymbol Incr_Console VoidSymbol VoidSymbol VoidSymbol
keycode 107 = End End End End VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 108 = Down Down Down Down VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 109 = Next Scroll_Forward Next Next VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 110 = Insert Insert Insert Insert VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 111 = Remove Remove Remove Remove VoidSymbol Boot VoidSymbol VoidSymbol Boot Boot
keycode 96 = KP_Enter KP_Enter Hex_F KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter
keycode 97 = Control Control Control Control Control Control Control Control Control Control
keycode 119 = Pause Pause Pause Pause Pause Pause Pause Pause Pause Pause
keycode 99 = Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash Control_backslash
keycode 98 = KP_Divide KP_Divide Hex_B KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide
keycode 100 = AltGr Alt AltGr AltGr AltGr AltGr AltGr AltGr AltGr AltGr
keycode 125 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
keycode 126 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
strings as usual

Reply to: