analyze.l: Add warning for on U+xxxx keysym specifications >= 0xf000
authorAlexey Gladkov <legion@altlinux.org>
Tue, 18 Nov 2008 12:50:35 +0000 (15:50 +0300)
committerAlexey Gladkov <legion@altlinux.org>
Tue, 18 Nov 2008 12:50:35 +0000 (15:50 +0300)
Signed-off-by: Alexey Gladkov <legion@altlinux.org>
src/analyze.c
src/analyze.l

index 103338d..8d8c057 100644 (file)
@@ -1,5 +1,6 @@
+#line 2 "analyze.c"
 
-#line 3 "<stdout>"
+#line 4 "analyze.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -363,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 47
-#define YY_END_OF_BUFFER 48
+#define YY_NUM_RULES 48
+#define YY_END_OF_BUFFER 49
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -372,58 +373,64 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[452] =
+static yyconst flex_int16_t yy_accept[504] =
     {   0,
-        0,    0,    0,    0,   44,   44,    0,    0,   48,   46,
-        6,    5,   46,   39,   46,   11,   10,    9,   13,   13,
-        8,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-       46,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+        0,    0,    0,    0,   45,   45,    0,    0,   49,   47,
+        6,    5,   47,   40,   47,   11,   10,    9,   13,   13,
+        8,   47,   47,   47,   47,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
+       47,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   44,   45,   47,    3,   47,    6,    0,    7,    0,
-        0,   13,    0,   13,    0,   31,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
-        0,    0,    0,    0,   33,    0,    0,    0,    4,    0,
+       14,   45,   46,   48,    3,   48,    6,    0,    7,    0,
+        0,   13,    0,   13,    0,   32,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   35,
+        0,    0,    0,    0,    0,    0,   34,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+        4,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   44,   41,   40,
-       42,   43,    0,    3,   38,    0,   38,    0,   13,   22,
-        0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
-       35,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   22,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   45,   42,   41,   43,   44,    0,    3,
+       39,    0,   39,    0,   13,   22,    0,   22,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   36,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   40,    2,   37,   36,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       14,   14,   14,   14,   14,   14,   14,   14,   41,    2,
+       38,   37,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-
-       14,   14,   14,   14,   14,   14,   14,   14,   40,   36,
-        0,    0,   23,    0,    0,    0,   26,   27,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   19,   20,
-        0,   20,    0,    0,   32,    0,    0,    0,    0,    0,
-        0,   20,    0,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   41,   37,    0,    0,
+       23,    0,    0,    0,    0,   26,   27,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   19,
+       20,    0,   20,    0,    0,   33,    0,    0,    0,    0,
+        0,    0,    0,   20,    0,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   24,   25,
-       18,   18,   12,    0,    0,    0,    0,    0,    0,   18,
 
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   24,   25,   18,
+       18,   12,    0,    0,    0,    0,    0,    0,    0,   18,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,    0,   15,   30,   21,   17,
-       16,   29,    1,   14,   14,   14,   14,   14,   14,   14,
-        1,    0,    1,   14,    0,   14,    0,   14,   28,   14,
-        0
+       14,   14,   14,   14,   14,   14,   14,   14,   14,    0,
+        0,   15,   31,   21,    0,    0,   17,   16,   30,    0,
+        1,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,    1,    0,    0,    0,    0,    0,    1,   14,
+       14,   14,   14,   14,    0,   28,   14,   14,    0,   14,
+
+       29,   14,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -468,117 +475,129 @@ static yyconst flex_int32_t yy_meta[58] =
         5,    5,    5,    5,    5,    5,    5
     } ;
 
-static yyconst flex_int16_t yy_base[465] =
+static yyconst flex_int16_t yy_base[517] =
     {   0,
-        0,    0,   57,    0,  110,  111,  663,  662,  666,  669,
-      663,  669,  661,  669,  626,  669,  669,  669,  106,  108,
-      669,   96,  101,   98,  112,  101,  107,  120,  106,  128,
-      659,  113,  113,  610,  610,  617,  608,  609,  114,  605,
-      601,  140,    0,  141,  111,  157,  143,  147,  156,  151,
-      171,  158,  132,  603,  603,  610,  601,  602,  136,  598,
-      594,    0,  669,  193,  669,  121,  645,  643,  669,  638,
-      202,  126,    0,  204,  152,  669,  164,  629,  193,  612,
-      603,  173,  588,  609,  586,  602,  580,  669,  621,  596,
-      611,  602,  586,  578,  669,    0,  596,  573,  669,  177,
-
-      185,  589,  177,  574,  573,  585,  567,  584,  576,  568,
-      564,    0,  191,    0,  195,  604,  206,  587,  578,  186,
-      563,  584,  561,  577,  555,    0,  596,  571,  586,  577,
-      561,  553,    0,  571,  548,  196,  198,  564,  188,  549,
-      548,  560,  542,  559,  551,  543,  539,    0,  669,  230,
-      669,  669,  140,  669,  669,  587,  586,  237,    0,  235,
-      229,  237,  561,  561,  557,  563,  535,  535,  531,  537,
-      669,  173,  237,  561,  537,  562,  558,  537,  533,    0,
-      563,  538,  245,  523,  523,  519,  525,  524,  212,  525,
-      527,  523,  529,  247,  249,  250,  536,  536,  532,  538,
-
-      510,  510,  506,  512,    0,  245,  252,  536,  512,  537,
-      533,  512,  508,  538,  513,  253,  498,  498,  494,  500,
-      499,  225,  500,  502,  498,  504,  284,  669,  669,  669,
-      291,  247,  511,  488,  487,  507,  509,  506,  273,  246,
-      485,  482,  279,  505,  518,  481,  492,  479,  490,  500,
-      477,  493,  497,  469,  473,    0,  496,  473,  467,  465,
-      467,  464,  258,  460,  464,  475,  463,  457,  461,  462,
-      478,  261,  455,  454,  474,  476,  473,  282,  258,  452,
-      449,  283,  472,  485,  448,  459,  446,  457,  467,  444,
-      460,  464,  436,  440,  463,  440,  434,  432,  434,  431,
-
-      267,  427,  431,  442,  430,  424,  428,  429,  669,  669,
-      469,  284,  669,  456,  442,  444,  669,  669,  430,  429,
-      416,  418,  450,  437,  425,  413,  423,  411,  669,  291,
-      441,  292,  417,    0,  669,  418,  405,  407,  416,  415,
-      403,  271,  410,    0,  289,  434,  420,  422,    0,    0,
-      408,  407,  394,  396,  428,  415,  403,  391,  401,  389,
-        0,  299,  419,  300,  395,    0,  396,  383,  385,  394,
-      393,  381,  279,  388,  318,  398,  411,  403,  373,  372,
-      384,  377,  405,  391,  380,  367,  378,  365,  669,  669,
-      386,  363,  669,  361,  373,  366,  371,  370,  357,  356,
-
-      319,  376,  389,  381,  351,  347,  351,  337,  348,  334,
-      323,  307,  312,  299,    0,    0,  320,  297,  295,  307,
-      300,  305,  304,  291,  286,  306,  669,  669,  669,  669,
-      669,  669,  332,  309,    0,    0,    0,    0,    0,    0,
-      280,  318,  278,  320,  308,  309,  320,  329,  669,    0,
-      669,  368,  373,  378,  383,  385,  390,  395,  400,  272,
-      262,  204,  128,  121
+        0,    0,   57,    0,  110,  111,  721,  720,  724,  727,
+      721,  727,  719,  727,  684,  727,  727,  727,  106,  108,
+      727,   96,  110,   94,  110,   96,  105,  118,  105,  122,
+      717,  110,  123,  668,  668,  675,  666,  667,   82,  663,
+      659,  134,    0,  157,  106,  150,  131,  141,  158,  142,
+      162,  151,  156,  661,  661,  668,  659,  660,  130,  656,
+      652,    0,  727,  209,  727,  195,  703,  701,  727,  696,
+      211,  172,    0,  213,  154,  727,  164,  672,  686,  200,
+      669,  647,  659,  180,  644,  665,  642,  658,  636,  727,
+      677,  652,  667,  658,  642,  634,  727,    0,  652,  629,
+
+      727,  177,  182,  632,  644,  184,  629,  628,  640,  622,
+      639,  631,  623,  619,    0,  184,    0,  198,  644,  658,
+      208,  641,  619,  631,  191,  616,  637,  614,  630,  608,
+        0,  649,  624,  639,  630,  614,  606,    0,  624,  601,
+      205,  209,  604,  616,  194,  601,  600,  612,  594,  611,
+      603,  595,  591,    0,  727,  236,  727,  727,  201,  727,
+      727,  639,  638,  238,    0,  241,  242,  244,  612,  612,
+      612,  608,  614,  585,  585,  585,  581,  587,  727,  239,
+      241,  611,  587,  612,  608,  587,  583,    0,  613,  588,
+      245,  572,  572,  572,  568,  574,  573,   93,  574,  576,
+
+      572,  578,  253,  247,  257,  584,  584,  584,  580,  586,
+      557,  557,  557,  553,  559,    0,  244,  259,  583,  559,
+      584,  580,  559,  555,  585,  560,  259,  544,  544,  544,
+      540,  546,  545,  235,  546,  548,  544,  550,  261,  727,
+      727,  727,  293,  247,  557,  534,  533,  553,  552,  554,
+      551,  261,  262,  264,  530,  527,  276,  550,  563,  526,
+      537,  524,  535,  545,  522,  538,  542,  514,  518,    0,
+      541,  518,  512,  510,  509,  511,  508,  258,  504,  508,
+      519,  507,  501,  505,  506,  522,  275,  499,  498,  518,
+      517,  519,  516,  283,  278,  280,  495,  492,  289,  515,
+
+      528,  491,  502,  489,  500,  510,  487,  503,  507,  479,
+      483,  506,  483,  477,  475,  474,  476,  473,  269,  469,
+      473,  484,  472,  466,  470,  471,  727,  727,  511,  281,
+      727,  495,  497,  483,  485,  727,  727,  468,  467,  469,
+      468,  455,  457,  489,  476,  464,  452,  462,  450,  727,
+      293,  480,  297,  456,    0,  727,  454,  456,  443,  445,
+      454,  453,  441,  277,  448,    0,  294,  469,  471,  457,
+      459,    0,    0,  442,  441,  443,  442,  429,  431,  463,
+      450,  438,  426,  436,  424,    0,  305,  454,  307,  430,
+        0,  428,  430,  417,  419,  428,  427,  415,  289,  422,
+
+      317,  442,  431,  444,  436,  415,  414,  404,  403,  415,
+      408,  436,  422,  411,  398,  409,  396,  727,  727,  417,
+      394,  727,  401,  391,  403,  396,  401,  400,  387,  386,
+      319,  416,  405,  418,  410,  389,  388,  378,  377,  389,
+      382,  410,  396,  385,  372,  383,  370,    0,    0,  391,
+      368,  375,  365,  377,  370,  375,  374,  361,  360,  312,
+      393,  727,  727,  727,  369,  368,  727,  727,  727,  364,
+      396,  313,  370,    0,    0,    0,  329,  327,    0,    0,
+        0,  326,  363,  322,  330,  305,  304,  303,  354,  324,
+      321,  298,  297,  296,  312,  727,  313,    0,  332,  334,
+
+      727,    0,  727,  373,  378,  383,  388,  390,  395,  400,
+      405,  346,  340,  273,  134,  122
     } ;
 
-static yyconst flex_int16_t yy_def[465] =
+static yyconst flex_int16_t yy_def[517] =
     {   0,
-      451,    1,  451,    3,  452,  452,  453,  453,  451,  451,
-      451,  451,  454,  451,  455,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  457,  451,  451,  451,  458,  451,  454,  451,  451,
-      459,  451,  460,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  461,  451,  451,  451,  451,
-
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  457,  451,  451,
-      451,  451,  458,  451,  451,  451,  451,  451,  460,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  462,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  456,  456,  456,  456,  456,  456,  456,
-
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  463,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-
-      456,  456,  456,  456,  456,  456,  456,  456,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  464,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
-      456,  456,  456,  456,  456,  451,  451,  451,  451,  451,
-      451,  451,  451,  456,  456,  456,  456,  456,  456,  456,
-      456,  451,  451,  456,  451,  456,  451,  456,  451,  456,
-        0,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451
+      503,    1,  503,    3,  504,  504,  505,  505,  503,  503,
+      503,  503,  506,  503,  507,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  509,  503,  503,  503,  510,  503,  506,  503,  503,
+      511,  503,  512,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  513,  503,  503,
+
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  509,  503,  503,  503,  503,  510,  503,
+      503,  503,  503,  503,  512,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  514,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+
+      503,  503,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  515,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  516,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  503,  503,  503,  503,  503,  503,  508,
+      508,  508,  508,  508,  503,  503,  508,  508,  503,  508,
+
+      503,  508,    0,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503
     } ;
 
-static yyconst flex_int16_t yy_nxt[727] =
+static yyconst flex_int16_t yy_nxt[785] =
     {   0,
        10,   11,   12,   13,   14,   13,   15,   16,   17,   18,
        19,   20,   20,   21,   22,   10,   23,   10,   10,   24,
@@ -593,76 +612,82 @@ static yyconst flex_int16_t yy_nxt[727] =
 
        43,   43,   55,   56,   43,   43,   43,   57,   58,   43,
        59,   60,   61,   43,   63,   63,   72,   72,   74,   74,
-       74,   75,   78,  154,  393,  154,   84,   76,   88,   79,
-       86,  334,   89,   80,   95,   96,   72,   72,  100,  122,
-       73,   91,  154,   77,  228,   81,   64,   64,   85,   76,
-       88,   82,   92,   87,   90,   83,   95,  102,  109,   97,
-      101,  123,  116,  103,   93,  113,   76,  104,  110,  117,
-      126,  114,  127,  118,   94,  124,  138,  129,   96,  133,
-      145,   98,  139,  136,  160,  119,  140,  115,  130,  244,
-      146,  120,  126,  114,  128,  121,  161,  149,  125,  245,
-
-      131,  133,  134,  150,  150,  137,  161,  256,  157,  161,
-      132,  114,  158,  158,   74,   74,   74,  161,  162,  164,
-      165,  168,  169,  194,  135,  185,  186,  195,  195,  151,
-      195,  161,  198,  199,  202,  203,  218,  219,  232,  183,
-      227,  227,  152,  230,  232,  195,  232,  231,  231,  196,
-      195,  265,  216,  246,  232,  233,  232,  234,  232,  232,
-      266,  283,  232,  247,  303,  180,  232,  271,  285,  312,
-      273,  284,  232,  304,  232,  159,  248,  319,  286,  443,
-      235,  443,  232,  345,  272,  249,  272,  272,  259,  351,
-      272,  287,  312,  274,  309,  309,  297,  310,  317,  320,
-
-      288,  311,  311,  318,  317,  317,  345,  349,  349,  318,
-      318,  352,  350,  350,  349,  375,  389,  389,  389,  350,
-      401,  390,  390,  390,  415,  415,  415,  426,  426,  416,
-      416,  416,  442,  443,  449,  444,  445,  375,  446,  440,
-      447,  448,  401,  450,  439,  438,  441,  437,  436,  435,
-      440,  440,  439,  438,  442,  426,  434,  444,  449,  445,
-      439,  446,  447,  448,  438,  439,  438,  450,   62,   62,
-       62,   62,   62,   65,   65,   65,   65,   65,   68,   68,
-       68,   68,   68,   70,  437,   70,   70,   70,  112,  112,
-      148,  148,  436,  148,  148,  153,  153,  153,  153,  153,
-
-      156,  435,  156,  156,  156,  435,  437,  436,  435,  432,
-      431,  430,  433,  429,  428,  427,  432,  432,  431,  430,
-      431,  430,  431,  430,  429,  428,  427,  427,  429,  428,
-      427,  425,  424,  423,  422,  421,  420,  419,  418,  417,
-      414,  413,  412,  411,  410,  409,  408,  407,  406,  405,
-      404,  403,  402,  400,  399,  398,  397,  396,  395,  394,
-      392,  391,  388,  387,  386,  385,  384,  383,  382,  381,
-      380,  379,  378,  377,  376,  310,  366,  374,  373,  361,
-      372,  371,  370,  369,  368,  367,  344,  366,  366,  365,
-      364,  363,  362,  361,  361,  360,  359,  358,  357,  356,
-
-      355,  354,  353,  348,  347,  346,  344,  344,  344,  335,
-      343,  342,  329,  341,  340,  339,  338,  337,  336,  313,
-      335,  335,  333,  332,  331,  330,  329,  329,  328,  327,
-      326,  325,  324,  323,  322,  321,  316,  315,  314,  313,
-      313,  313,  308,  307,  306,  305,  302,  301,  300,  299,
-      298,  296,  295,  294,  293,  292,  291,  290,  289,  282,
-      281,  280,  279,  278,  277,  276,  275,  270,  269,  268,
-      267,  264,  263,  262,  261,  260,  258,  257,  255,  254,
-      253,  252,  251,  250,  243,  242,  241,  240,  239,  238,
-      237,  236,  229,  229,  226,  225,  224,  223,  222,  221,
-
-      205,  220,  217,  215,  214,  213,  212,  211,  210,  209,
-      208,  207,  206,  205,  205,  204,  201,  200,  197,  193,
-      192,  191,  190,  189,  188,  171,  187,  184,  182,  181,
-      179,  178,  177,  176,  175,  174,  173,  172,  171,  171,
-      170,  167,  166,  163,  155,   69,   67,  147,  133,  144,
-      126,  143,  142,  141,  111,   95,  108,   88,  107,  106,
-      105,   99,   71,   69,   67,  451,   66,   66,    9,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451
+       74,   75,   86,   90,   78,  422,  112,   76,   88,   98,
+       91,   79,  280,   97,  127,  102,  113,  355,   80,   93,
+       73,  281,   81,   77,   87,   90,   64,   64,   82,   76,
+       94,   89,   92,   99,   83,   97,  128,  103,  131,  116,
+       84,  104,   95,   76,   85,  117,  132,  105,  129,   98,
+      138,  119,   96,  106,  151,  100,  141,  107,  120,  134,
+      131,  118,   72,   72,  152,  121,  166,  117,  133,  122,
+      135,  130,  138,  139,  143,  123,  167,  160,  142,  160,
+
+      144,  124,  136,  160,  117,  240,  145,  125,  167,  167,
+      146,  126,  137,  155,  167,  140,  203,  163,  168,  156,
+      156,  164,  164,   74,   74,   74,  171,  172,  176,  177,
+      204,  167,  194,  195,  208,  209,  191,  204,  204,  213,
+      214,  204,  230,  231,  242,  157,  239,  239,  243,  243,
+      244,  244,  205,  244,  244,  258,  244,  260,  158,  204,
+      300,  245,  244,  227,  246,  259,  244,  261,  244,  330,
+      301,  327,  327,  286,  321,  302,  270,  288,  244,  244,
+      262,  244,  244,  322,  287,  303,  336,  247,  273,  263,
+      287,  337,  330,  338,  287,  340,  287,  367,  304,  328,
+
+      289,  336,  314,  329,  329,  336,  337,  305,  372,  374,
+      337,  376,  401,  373,  372,  339,  372,  341,  418,  373,
+      367,  373,  418,  419,  418,  431,  460,  419,  460,  419,
+      448,  375,  448,  377,  401,  449,  448,  449,  484,  490,
+      495,  449,  497,  188,  499,  500,  501,  431,  502,  165,
+      498,  498,  498,  498,  460,  489,  472,  496,  496,  496,
+      484,  490,  496,  495,  489,  497,  499,  500,  494,  493,
+      501,  492,  502,   62,   62,   62,   62,   62,   65,   65,
+       65,   65,   65,   68,   68,   68,   68,   68,   70,  491,
+       70,   70,   70,  115,  115,  154,  154,  489,  154,  154,
+
+      159,  159,  159,  159,  159,  162,  488,  162,  162,  162,
+      487,  486,  485,  481,  480,  479,  483,  476,  475,  474,
+      482,  481,  481,  480,  479,  480,  479,  480,  479,  476,
+      475,  474,  474,  478,  477,  476,  475,  474,  473,  469,
+      468,  467,  471,  464,  463,  462,  470,  469,  469,  468,
+      467,  468,  467,  468,  467,  464,  463,  462,  462,  466,
+      465,  464,  463,  462,  461,  459,  458,  457,  456,  455,
+      454,  453,  452,  451,  450,  447,  446,  445,  444,  443,
+      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
+      432,  430,  429,  428,  427,  426,  425,  424,  423,  421,
+
+      420,  417,  416,  415,  414,  413,  412,  411,  410,  409,
+      408,  407,  406,  405,  404,  403,  402,  328,  391,  400,
+      399,  386,  398,  397,  396,  395,  394,  393,  392,  366,
+      391,  391,  390,  389,  388,  387,  386,  386,  385,  384,
+      383,  382,  381,  380,  379,  378,  371,  370,  369,  368,
+      366,  366,  366,  356,  365,  364,  350,  363,  362,  361,
+      360,  359,  358,  357,  331,  356,  356,  354,  353,  352,
+      351,  350,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  335,  334,  333,  332,  331,  331,  331,  326,  325,
+      324,  323,  320,  319,  318,  317,  316,  315,  313,  312,
+
+      311,  310,  309,  308,  307,  306,  299,  298,  297,  296,
+      295,  294,  293,  292,  291,  290,  285,  284,  283,  282,
+      279,  278,  277,  276,  275,  274,  272,  271,  269,  268,
+      267,  266,  265,  264,  257,  256,  255,  254,  253,  252,
+      251,  250,  249,  248,  241,  241,  238,  237,  236,  235,
+      234,  233,  216,  232,  229,  228,  226,  225,  224,  223,
+      222,  221,  220,  219,  218,  217,  216,  216,  215,  212,
+      211,  210,  207,  206,  202,  201,  200,  199,  198,  197,
+      179,  196,  193,  192,  190,  189,  187,  186,  185,  184,
+      183,  182,  181,  180,  179,  179,  178,  175,  174,  173,
+
+      170,  169,  161,   69,   67,  153,  138,  150,  131,  149,
+      148,  147,  114,   97,  111,   90,  110,  109,  108,  101,
+       71,   69,   67,  503,   66,   66,    9,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503
     } ;
 
-static yyconst flex_int16_t yy_chk[727] =
+static yyconst flex_int16_t yy_chk[785] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -677,73 +702,79 @@ static yyconst flex_int16_t yy_chk[727] =
 
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    5,    6,   19,   19,   20,   20,
-       20,   22,   23,   66,  464,   66,   24,   22,   26,   23,
-       25,  463,   27,   23,   29,   30,   72,   72,   32,   45,
-       19,   28,  153,   22,  153,   23,    5,    6,   24,   22,
-       26,   23,   28,   25,   27,   23,   29,   33,   39,   30,
-       32,   45,   44,   33,   28,   42,   32,   33,   39,   44,
-       47,   42,   48,   44,   28,   46,   53,   49,   51,   50,
-       59,   30,   53,   52,   75,   44,   53,   42,   49,  172,
-       59,   44,   47,   42,   48,   44,   77,   64,   46,  172,
-
-       49,   50,   51,   64,   64,   52,   75,  462,   71,  100,
-       49,   52,   71,   71,   74,   74,   74,  101,   77,   79,
-       79,   82,   82,  113,   51,  103,  103,  115,  136,   64,
-      137,  100,  117,  117,  120,  120,  139,  139,  161,  101,
-      150,  150,   64,  158,  160,  113,  162,  158,  158,  115,
-      136,  189,  137,  173,  183,  160,  194,  162,  195,  196,
-      189,  206,  216,  173,  222,  461,  161,  194,  207,  232,
-      196,  206,  160,  222,  162,  460,  173,  240,  207,  443,
-      162,  441,  183,  272,  194,  173,  195,  196,  183,  279,
-      216,  207,  232,  196,  227,  227,  216,  231,  239,  240,
-
-      207,  231,  231,  239,  243,  263,  272,  278,  282,  243,
-      263,  279,  278,  282,  301,  312,  330,  332,  342,  301,
-      345,  330,  332,  342,  362,  364,  373,  375,  401,  362,
-      364,  373,  426,  433,  447,  434,  442,  312,  444,  425,
-      445,  446,  345,  448,  424,  423,  422,  421,  420,  419,
-      418,  417,  414,  413,  426,  375,  401,  434,  447,  442,
-      412,  444,  445,  446,  411,  410,  409,  448,  452,  452,
-      452,  452,  452,  453,  453,  453,  453,  453,  454,  454,
-      454,  454,  454,  455,  408,  455,  455,  455,  456,  456,
-      457,  457,  407,  457,  457,  458,  458,  458,  458,  458,
-
-      459,  406,  459,  459,  459,  405,  404,  403,  402,  400,
-      399,  398,  397,  396,  395,  394,  392,  391,  388,  387,
-      386,  385,  384,  383,  382,  381,  380,  379,  378,  377,
-      376,  374,  372,  371,  370,  369,  368,  367,  365,  363,
-      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      348,  347,  346,  343,  341,  340,  339,  338,  337,  336,
-      333,  331,  328,  327,  326,  325,  324,  323,  322,  321,
-      320,  319,  316,  315,  314,  311,  308,  307,  306,  305,
-      304,  303,  302,  300,  299,  298,  297,  296,  295,  294,
-      293,  292,  291,  290,  289,  288,  287,  286,  285,  284,
-
-      283,  281,  280,  277,  276,  275,  274,  273,  271,  270,
-      269,  268,  267,  266,  265,  264,  262,  261,  260,  259,
-      258,  257,  255,  254,  253,  252,  251,  250,  249,  248,
-      247,  246,  245,  244,  242,  241,  238,  237,  236,  235,
-      234,  233,  226,  225,  224,  223,  221,  220,  219,  218,
-      217,  215,  214,  213,  212,  211,  210,  209,  208,  204,
-      203,  202,  201,  200,  199,  198,  197,  193,  192,  191,
-      190,  188,  187,  186,  185,  184,  182,  181,  179,  178,
-      177,  176,  175,  174,  170,  169,  168,  167,  166,  165,
-      164,  163,  157,  156,  147,  146,  145,  144,  143,  142,
-
-      141,  140,  138,  135,  134,  132,  131,  130,  129,  128,
-      127,  125,  124,  123,  122,  121,  119,  118,  116,  111,
-      110,  109,  108,  107,  106,  105,  104,  102,   98,   97,
-       94,   93,   92,   91,   90,   89,   87,   86,   85,   84,
-       83,   81,   80,   78,   70,   68,   67,   61,   60,   58,
-       57,   56,   55,   54,   41,   40,   38,   37,   36,   35,
-       34,   31,   15,   13,   11,    9,    8,    7,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451
+       20,   22,   24,   26,   23,  516,   39,   22,   25,   30,
+       27,   23,  198,   29,   45,   32,   39,  515,   23,   28,
+       19,  198,   23,   22,   24,   26,    5,    6,   23,   22,
+       28,   25,   27,   30,   23,   29,   45,   32,   47,   42,
+       23,   33,   28,   32,   23,   42,   48,   33,   46,   51,
+       50,   44,   28,   33,   59,   30,   52,   33,   44,   49,
+       47,   42,   72,   72,   59,   44,   75,   42,   48,   44,
+       49,   46,   50,   51,   53,   44,   77,   66,   52,   66,
+
+       53,   44,   49,  159,   52,  159,   53,   44,   75,  102,
+       53,   44,   49,   64,  103,   51,  116,   71,   77,   64,
+       64,   71,   71,   74,   74,   74,   80,   80,   84,   84,
+      118,  102,  106,  106,  121,  121,  103,  141,  116,  125,
+      125,  142,  145,  145,  164,   64,  156,  156,  164,  164,
+      166,  167,  118,  168,  191,  180,  204,  181,   64,  141,
+      217,  166,  203,  142,  168,  180,  205,  181,  227,  244,
+      217,  239,  239,  203,  234,  218,  514,  205,  166,  167,
+      181,  168,  191,  234,  204,  218,  252,  168,  191,  181,
+      203,  252,  244,  253,  205,  254,  227,  287,  218,  243,
+
+      205,  257,  227,  243,  243,  278,  257,  218,  294,  295,
+      278,  296,  330,  294,  299,  253,  319,  254,  351,  299,
+      287,  319,  353,  351,  364,  367,  401,  353,  431,  364,
+      387,  295,  389,  296,  330,  387,  399,  389,  460,  472,
+      484,  399,  490,  513,  495,  497,  499,  367,  500,  512,
+      494,  493,  492,  491,  401,  489,  431,  488,  487,  486,
+      460,  472,  485,  484,  483,  490,  495,  497,  482,  478,
+      499,  477,  500,  504,  504,  504,  504,  504,  505,  505,
+      505,  505,  505,  506,  506,  506,  506,  506,  507,  473,
+      507,  507,  507,  508,  508,  509,  509,  471,  509,  509,
+
+      510,  510,  510,  510,  510,  511,  470,  511,  511,  511,
+      466,  465,  461,  459,  458,  457,  456,  455,  454,  453,
+      452,  451,  450,  447,  446,  445,  444,  443,  442,  441,
+      440,  439,  438,  437,  436,  435,  434,  433,  432,  430,
+      429,  428,  427,  426,  425,  424,  423,  421,  420,  417,
+      416,  415,  414,  413,  412,  411,  410,  409,  408,  407,
+      406,  405,  404,  403,  402,  400,  398,  397,  396,  395,
+      394,  393,  392,  390,  388,  385,  384,  383,  382,  381,
+      380,  379,  378,  377,  376,  375,  374,  371,  370,  369,
+      368,  365,  363,  362,  361,  360,  359,  358,  357,  354,
+
+      352,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  335,  334,  333,  332,  329,  326,  325,
+      324,  323,  322,  321,  320,  318,  317,  316,  315,  314,
+      313,  312,  311,  310,  309,  308,  307,  306,  305,  304,
+      303,  302,  301,  300,  298,  297,  293,  292,  291,  290,
+      289,  288,  286,  285,  284,  283,  282,  281,  280,  279,
+      277,  276,  275,  274,  273,  272,  271,  269,  268,  267,
+      266,  265,  264,  263,  262,  261,  260,  259,  258,  256,
+      255,  251,  250,  249,  248,  247,  246,  245,  238,  237,
+      236,  235,  233,  232,  231,  230,  229,  228,  226,  225,
+
+      224,  223,  222,  221,  220,  219,  215,  214,  213,  212,
+      211,  210,  209,  208,  207,  206,  202,  201,  200,  199,
+      197,  196,  195,  194,  193,  192,  190,  189,  187,  186,
+      185,  184,  183,  182,  178,  177,  176,  175,  174,  173,
+      172,  171,  170,  169,  163,  162,  153,  152,  151,  150,
+      149,  148,  147,  146,  144,  143,  140,  139,  137,  136,
+      135,  134,  133,  132,  130,  129,  128,  127,  126,  124,
+      123,  122,  120,  119,  114,  113,  112,  111,  110,  109,
+      108,  107,  105,  104,  100,   99,   96,   95,   94,   93,
+       92,   91,   89,   88,   87,   86,   85,   83,   82,   81,
+
+       79,   78,   70,   68,   67,   61,   60,   58,   57,   56,
+       55,   54,   41,   40,   38,   37,   36,   35,   34,   31,
+       15,   13,   11,    9,    8,    7,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+      503,  503,  503,  503
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -784,7 +815,7 @@ extern void open_include(char *s);
 
 
 
-#line 788 "<stdout>"
+#line 819 "analyze.c"
 
 #define INITIAL 0
 #define RVALUE 1
@@ -940,7 +971,7 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
     
-#line 59 "analyze.l"
+#line 60 "analyze.l"
 
 
 /* To protect from wrong code in the higher level parser (loadkeys.y), 
@@ -955,7 +986,7 @@ YY_DECL
  * yylval to YYLVAL_UNDEF. Then it might be overwritten by specific rules. */
   yylval = YYLVAL_UNDEF;
 
-#line 959 "<stdout>"
+#line 990 "analyze.c"
 
        if ( !(yy_init) )
                {
@@ -1008,13 +1039,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 452 )
+                               if ( yy_current_state >= 504 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 669 );
+               while ( yy_base[yy_current_state] != 727 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1040,12 +1071,12 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 73 "analyze.l"
+#line 74 "analyze.l"
 {BEGIN(INCLSTR);}
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 74 "analyze.l"
+#line 75 "analyze.l"
 { int l; char *s;
                         l = strlen(yytext);
                         s = xmalloc(l);
@@ -1058,7 +1089,7 @@ YY_RULE_SETUP
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 82 "analyze.l"
+#line 83 "analyze.l"
 {
                          yyerror("expected filename between quotes");
                          BEGIN(0); }
@@ -1066,18 +1097,18 @@ YY_RULE_SETUP
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 85 "analyze.l"
+#line 86 "analyze.l"
 {line_nr++;}
        YY_BREAK
 case 5:
 /* rule 5 can match eol */
 YY_RULE_SETUP
-#line 86 "analyze.l"
+#line 87 "analyze.l"
 {line_nr++;BEGIN(0);return(EOL);}
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 87 "analyze.l"
+#line 88 "analyze.l"
 ; /* do nothing */
        YY_BREAK
 case 7:
@@ -1086,214 +1117,219 @@ case 7:
 (yy_c_buf_p) = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 88 "analyze.l"
+#line 89 "analyze.l"
 ; /* do nothing */
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 89 "analyze.l"
+#line 90 "analyze.l"
 {BEGIN(RVALUE);rvalct=0;return(EQUALS);}
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 90 "analyze.l"
+#line 91 "analyze.l"
 {return(DASH);}
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 91 "analyze.l"
+#line 92 "analyze.l"
 {return(COMMA);}
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 92 "analyze.l"
+#line 93 "analyze.l"
 {return(PLUS);}
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 93 "analyze.l"
-{yylval=strtol(yytext+1,NULL,16);return(UNUMBER);}
+#line 94 "analyze.l"
+{yylval=strtol(yytext+1,NULL,16);if(yylval>=0xf000)lkfatal1("unicode keysym out of range: %s",yytext);return(UNUMBER);}
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 94 "analyze.l"
+#line 95 "analyze.l"
 {yylval=strtol(yytext,NULL,0);return(NUMBER);}
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 95 "analyze.l"
+#line 96 "analyze.l"
 {return((yylval=ksymtocode(yytext))==-1?ERROR:LITERAL);}
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 96 "analyze.l"
+#line 97 "analyze.l"
 {return(CHARSET);}
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 97 "analyze.l"
+#line 98 "analyze.l"
 {return(KEYMAPS);}
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 98 "analyze.l"
+#line 99 "analyze.l"
 {return(KEYCODE);}
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 99 "analyze.l"
+#line 100 "analyze.l"
 {BEGIN(RVALUE);return(STRING);}
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 100 "analyze.l"
+#line 101 "analyze.l"
 {return(PLAIN);}
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 101 "analyze.l"
+#line 102 "analyze.l"
 {return(SHIFT);}
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 102 "analyze.l"
+#line 103 "analyze.l"
 {return(CONTROL);}
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 103 "analyze.l"
+#line 104 "analyze.l"
 {return(ALT);}
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 104 "analyze.l"
+#line 105 "analyze.l"
 {return(ALTGR);}
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 105 "analyze.l"
+#line 106 "analyze.l"
 {return(SHIFTL);}
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 106 "analyze.l"
+#line 107 "analyze.l"
 {return(SHIFTR);}
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 107 "analyze.l"
+#line 108 "analyze.l"
 {return(CTRLL);}
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 108 "analyze.l"
+#line 109 "analyze.l"
 {return(CTRLR);}
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 109 "analyze.l"
-{return(ALT_IS_META);}
+#line 110 "analyze.l"
+{return(CAPSSHIFT);}
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 110 "analyze.l"
-{return(STRINGS);}
+#line 111 "analyze.l"
+{return(ALT_IS_META);}
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 111 "analyze.l"
-{return(COMPOSE);}
+#line 112 "analyze.l"
+{return(STRINGS);}
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 112 "analyze.l"
-{return(AS);}
+#line 113 "analyze.l"
+{return(COMPOSE);}
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 113 "analyze.l"
-{return(USUAL);}
+#line 114 "analyze.l"
+{return(AS);}
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 114 "analyze.l"
-{BEGIN(RVALUE); return(TO);}
+#line 115 "analyze.l"
+{return(USUAL);}
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 115 "analyze.l"
-{return(ON);}
+#line 116 "analyze.l"
+{BEGIN(RVALUE); return(TO);}
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 116 "analyze.l"
-{return(FOR);}
+#line 117 "analyze.l"
+{return(ON);}
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 117 "analyze.l"
-{yylval = strtol(yytext+2,NULL,8); return(CCHAR);}
+#line 118 "analyze.l"
+{return(FOR);}
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 118 "analyze.l"
-{yylval = yytext[2]; return(CCHAR);}
+#line 119 "analyze.l"
+{yylval = strtol(yytext+2,NULL,8); return(CCHAR);}
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 119 "analyze.l"
-{yylval = yytext[1]; return(CCHAR);}
+#line 120 "analyze.l"
+{yylval = yytext[2]; return(CCHAR);}
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 120 "analyze.l"
+#line 121 "analyze.l"
+{yylval = yytext[1]; return(CCHAR);}
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 122 "analyze.l"
 {p=(char *) kbs_buf.kb_string;
                                pmax=p+sizeof(kbs_buf.kb_string)-1;
                                BEGIN(STR);}
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 123 "analyze.l"
+#line 125 "analyze.l"
 {if(p>=pmax)stringovfl();*p++=strtol(yytext+1,NULL,8);}
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 124 "analyze.l"
+#line 126 "analyze.l"
 {if(p>=pmax)stringovfl();*p++='"';}
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 125 "analyze.l"
+#line 127 "analyze.l"
 {if(p>=pmax)stringovfl();*p++='\\';}
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 126 "analyze.l"
+#line 128 "analyze.l"
 {if(p>=pmax)stringovfl();*p++='\n';}
        YY_BREAK
-case 44:
-/* rule 44 can match eol */
+case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-#line 127 "analyze.l"
+#line 129 "analyze.l"
 {char *ptmp=p;p+=strlen(yytext);
                                if(p>pmax)stringovfl();strcpy(ptmp,yytext);}
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 129 "analyze.l"
+#line 131 "analyze.l"
 {*p='\0';BEGIN(0);return(STRLITERAL);}
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 130 "analyze.l"
+#line 132 "analyze.l"
 {return(ERROR); /* report any unknown characters */}
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 131 "analyze.l"
+#line 133 "analyze.l"
 ECHO;
        YY_BREAK
-#line 1297 "<stdout>"
+#line 1333 "analyze.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(RVALUE):
 case YY_STATE_EOF(STR):
@@ -1580,7 +1616,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 452 )
+                       if ( yy_current_state >= 504 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1608,11 +1644,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 452 )
+               if ( yy_current_state >= 504 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 451);
+       yy_is_jam = (yy_current_state == 503);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2282,7 +2318,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 131 "analyze.l"
+#line 133 "analyze.l"
 
 
 #include "ksyms.h"
index adb9474..41104cc 100644 (file)
@@ -91,7 +91,7 @@ To                      to|To|TO
 \-                     {return(DASH);}
 \,                     {return(COMMA);}
 \+                     {return(PLUS);}
-{Unicode}              {yylval=strtol(yytext+1,NULL,16);return(UNUMBER);}
+{Unicode}              {yylval=strtol(yytext+1,NULL,16);if(yylval>=0xf000)lkfatal1("unicode keysym out of range: %s",yytext);return(UNUMBER);}
 {Decimal}|{Octal}|{Hex}        {yylval=strtol(yytext,NULL,0);return(NUMBER);}
 <RVALUE>{Literal}      {return((yylval=ksymtocode(yytext))==-1?ERROR:LITERAL);}
 {Charset}              {return(CHARSET);}