-----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