kbd: complete dead keys definitions
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 3 Jun 2018 18:18:58 +0000 (20:18 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jul 2018 15:41:38 +0000 (17:41 +0200)
This completes dead keys definitions for internationalization
completeness on the console.  The representatives have been chosen
coherently with libx11 compose sequences, which avoid symetry conflicts
(e.g. there is U with caron, but no c with breve).

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/s390/char/keyboard.c
drivers/tty/vt/keyboard.c
include/uapi/linux/keyboard.h

index 79eb609..eda2458 100644 (file)
@@ -39,8 +39,34 @@ static const int kbd_max_vals[] = {
 };
 static const int KBD_NR_TYPES = ARRAY_SIZE(kbd_max_vals);
 
-static unsigned char ret_diacr[NR_DEAD] = {
-       '`', '\'', '^', '~', '"', ','
+static const unsigned char ret_diacr[NR_DEAD] = {
+       '`',    /* dead_grave */
+       '\'',   /* dead_acute */
+       '^',    /* dead_circumflex */
+       '~',    /* dead_tilda */
+       '"',    /* dead_diaeresis */
+       ',',    /* dead_cedilla */
+       '_',    /* dead_macron */
+       'U',    /* dead_breve */
+       '.',    /* dead_abovedot */
+       '*',    /* dead_abovering */
+       '=',    /* dead_doubleacute */
+       'c',    /* dead_caron */
+       'k',    /* dead_ogonek */
+       'i',    /* dead_iota */
+       '#',    /* dead_voiced_sound */
+       'o',    /* dead_semivoiced_sound */
+       '!',    /* dead_belowdot */
+       '?',    /* dead_hook */
+       '+',    /* dead_horn */
+       '-',    /* dead_stroke */
+       ')',    /* dead_abovecomma */
+       '(',    /* dead_abovereversedcomma */
+       ':',    /* dead_doublegrave */
+       'n',    /* dead_invertedbreve */
+       ';',    /* dead_belowcomma */
+       '$',    /* dead_currency */
+       '@',    /* dead_greek */
 };
 
 /*
index d5b4a2b..c0f5802 100644 (file)
@@ -690,7 +690,35 @@ static void k_dead2(struct vc_data *vc, unsigned char value, char up_flag)
  */
 static void k_dead(struct vc_data *vc, unsigned char value, char up_flag)
 {
-       static const unsigned char ret_diacr[NR_DEAD] = {'`', '\'', '^', '~', '"', ',' };
+       static const unsigned char ret_diacr[NR_DEAD] = {
+               '`',    /* dead_grave */
+               '\'',   /* dead_acute */
+               '^',    /* dead_circumflex */
+               '~',    /* dead_tilda */
+               '"',    /* dead_diaeresis */
+               ',',    /* dead_cedilla */
+               '_',    /* dead_macron */
+               'U',    /* dead_breve */
+               '.',    /* dead_abovedot */
+               '*',    /* dead_abovering */
+               '=',    /* dead_doubleacute */
+               'c',    /* dead_caron */
+               'k',    /* dead_ogonek */
+               'i',    /* dead_iota */
+               '#',    /* dead_voiced_sound */
+               'o',    /* dead_semivoiced_sound */
+               '!',    /* dead_belowdot */
+               '?',    /* dead_hook */
+               '+',    /* dead_horn */
+               '-',    /* dead_stroke */
+               ')',    /* dead_abovecomma */
+               '(',    /* dead_abovereversedcomma */
+               ':',    /* dead_doublegrave */
+               'n',    /* dead_invertedbreve */
+               ';',    /* dead_belowcomma */
+               '$',    /* dead_currency */
+               '@',    /* dead_greek */
+       };
 
        k_deadunicode(vc, ret_diacr[value], up_flag);
 }
index ab4108c..4846716 100644 (file)
 #define K_DTILDE       K(KT_DEAD,3)
 #define K_DDIERE       K(KT_DEAD,4)
 #define K_DCEDIL       K(KT_DEAD,5)
+#define K_DMACRON      K(KT_DEAD,6)
+#define K_DBREVE       K(KT_DEAD,7)
+#define K_DABDOT       K(KT_DEAD,8)
+#define K_DABRING      K(KT_DEAD,9)
+#define K_DDBACUTE     K(KT_DEAD,10)
+#define K_DCARON       K(KT_DEAD,11)
+#define K_DOGONEK      K(KT_DEAD,12)
+#define K_DIOTA                K(KT_DEAD,13)
+#define K_DVOICED      K(KT_DEAD,14)
+#define K_DSEMVOICED   K(KT_DEAD,15)
+#define K_DBEDOT       K(KT_DEAD,16)
+#define K_DHOOK                K(KT_DEAD,17)
+#define K_DHORN                K(KT_DEAD,18)
+#define K_DSTROKE      K(KT_DEAD,19)
+#define K_DABCOMMA     K(KT_DEAD,20)
+#define K_DABREVCOMMA  K(KT_DEAD,21)
+#define K_DDBGRAVE     K(KT_DEAD,22)
+#define K_DINVBREVE    K(KT_DEAD,23)
+#define K_DBECOMMA     K(KT_DEAD,24)
+#define K_DCURRENCY    K(KT_DEAD,25)
+#define K_DGREEK       K(KT_DEAD,26)
 
-#define NR_DEAD                6
+#define NR_DEAD                27
 
 #define K_DOWN         K(KT_CUR,0)
 #define K_LEFT         K(KT_CUR,1)