#define MAX_INCLUDE_DEPTH 20
static struct infile {
FILE *fd;
- int pipe;
char *filename;
+ int pipe;
int linenr;
YY_BUFFER_STATE buffer;
-
} infile_stack[MAX_INCLUDE_DEPTH];
char *filename = NULL;
-#line 1050 "loadkeys.analyze.c"
+#line 1049 "loadkeys.analyze.c"
#define INITIAL 0
#define RVALUE 1
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 289 "loadkeys.analyze.l"
+#line 288 "loadkeys.analyze.l"
/* To protect from wrong code in the higher level parser (loadkeys.y),
yylval = YYLVAL_UNDEF;
-#line 1249 "loadkeys.analyze.c"
+#line 1248 "loadkeys.analyze.c"
if ( !(yy_init) )
{
case 1:
YY_RULE_SETUP
-#line 304 "loadkeys.analyze.l"
+#line 303 "loadkeys.analyze.l"
{
BEGIN(INCLSTR);
}
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 307 "loadkeys.analyze.l"
+#line 306 "loadkeys.analyze.l"
{
char *s = xstrndup(yytext+1, strlen(yytext)-2);
/* use static pathname to store *s ? */
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
-#line 313 "loadkeys.analyze.l"
+#line 312 "loadkeys.analyze.l"
{
yyerror(_("expected filename between quotes"));
BEGIN(0);
case YY_STATE_EOF(RVALUE):
case YY_STATE_EOF(STR):
case YY_STATE_EOF(INCLSTR):
-#line 317 "loadkeys.analyze.l"
+#line 316 "loadkeys.analyze.l"
{
stack_pop();
if (!YY_CURRENT_BUFFER)
case 4:
/* rule 4 can match eol */
YY_RULE_SETUP
-#line 322 "loadkeys.analyze.l"
+#line 321 "loadkeys.analyze.l"
{
line_nr++;
}
case 5:
/* rule 5 can match eol */
YY_RULE_SETUP
-#line 325 "loadkeys.analyze.l"
+#line 324 "loadkeys.analyze.l"
{
line_nr++;
BEGIN(0);
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 330 "loadkeys.analyze.l"
+#line 329 "loadkeys.analyze.l"
; /* do nothing */
YY_BREAK
case 7:
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 331 "loadkeys.analyze.l"
+#line 330 "loadkeys.analyze.l"
; /* do nothing */
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 332 "loadkeys.analyze.l"
+#line 331 "loadkeys.analyze.l"
{
BEGIN(RVALUE);
rvalct = 0;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 337 "loadkeys.analyze.l"
+#line 336 "loadkeys.analyze.l"
{
BEGIN(RVALUE);
return(STRING);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 341 "loadkeys.analyze.l"
+#line 340 "loadkeys.analyze.l"
{
BEGIN(RVALUE);
return(TO);
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 345 "loadkeys.analyze.l"
+#line 344 "loadkeys.analyze.l"
{
yylval = strtol(yytext + 1, NULL, 16);
if (yylval >= 0xf000)
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 351 "loadkeys.analyze.l"
+#line 350 "loadkeys.analyze.l"
{
yylval = strtol(yytext, NULL, 0);
return(NUMBER);
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 355 "loadkeys.analyze.l"
+#line 354 "loadkeys.analyze.l"
{ return((yylval = ksymtocode(yytext, TO_AUTO)) == -1 ? ERROR : LITERAL); }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 356 "loadkeys.analyze.l"
+#line 355 "loadkeys.analyze.l"
{ return(DASH); }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 357 "loadkeys.analyze.l"
+#line 356 "loadkeys.analyze.l"
{ return(COMMA); }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 358 "loadkeys.analyze.l"
+#line 357 "loadkeys.analyze.l"
{ return(PLUS); }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 359 "loadkeys.analyze.l"
+#line 358 "loadkeys.analyze.l"
{ return(CHARSET); }
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 360 "loadkeys.analyze.l"
+#line 359 "loadkeys.analyze.l"
{ return(KEYMAPS); }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 361 "loadkeys.analyze.l"
+#line 360 "loadkeys.analyze.l"
{ return(KEYCODE); }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 362 "loadkeys.analyze.l"
+#line 361 "loadkeys.analyze.l"
{ return(PLAIN); }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 363 "loadkeys.analyze.l"
+#line 362 "loadkeys.analyze.l"
{ return(SHIFT); }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 364 "loadkeys.analyze.l"
+#line 363 "loadkeys.analyze.l"
{ return(CONTROL); }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 365 "loadkeys.analyze.l"
+#line 364 "loadkeys.analyze.l"
{ return(ALT); }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 366 "loadkeys.analyze.l"
+#line 365 "loadkeys.analyze.l"
{ return(ALTGR); }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 367 "loadkeys.analyze.l"
+#line 366 "loadkeys.analyze.l"
{ return(SHIFTL); }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 368 "loadkeys.analyze.l"
+#line 367 "loadkeys.analyze.l"
{ return(SHIFTR); }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 369 "loadkeys.analyze.l"
+#line 368 "loadkeys.analyze.l"
{ return(CTRLL); }
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 370 "loadkeys.analyze.l"
+#line 369 "loadkeys.analyze.l"
{ return(CTRLR); }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 371 "loadkeys.analyze.l"
+#line 370 "loadkeys.analyze.l"
{ return(CAPSSHIFT); }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 372 "loadkeys.analyze.l"
+#line 371 "loadkeys.analyze.l"
{ return(ALT_IS_META); }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 373 "loadkeys.analyze.l"
+#line 372 "loadkeys.analyze.l"
{ return(STRINGS); }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 374 "loadkeys.analyze.l"
+#line 373 "loadkeys.analyze.l"
{ return(COMPOSE); }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 375 "loadkeys.analyze.l"
+#line 374 "loadkeys.analyze.l"
{ return(AS); }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 376 "loadkeys.analyze.l"
+#line 375 "loadkeys.analyze.l"
{ return(USUAL); }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 377 "loadkeys.analyze.l"
+#line 376 "loadkeys.analyze.l"
{ return(ON); }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 378 "loadkeys.analyze.l"
+#line 377 "loadkeys.analyze.l"
{ return(FOR); }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 379 "loadkeys.analyze.l"
+#line 378 "loadkeys.analyze.l"
{
yylval = strtol(yytext + 2, NULL, 8);
return(CCHAR);
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 383 "loadkeys.analyze.l"
+#line 382 "loadkeys.analyze.l"
{
yylval = (unsigned char) yytext[2];
return(CCHAR);
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 387 "loadkeys.analyze.l"
+#line 386 "loadkeys.analyze.l"
{
yylval = (unsigned char) yytext[1];
return(CCHAR);
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 391 "loadkeys.analyze.l"
+#line 390 "loadkeys.analyze.l"
{
p = (char *) kbs_buf.kb_string;
pmax = p + sizeof(kbs_buf.kb_string) - 1;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 396 "loadkeys.analyze.l"
+#line 395 "loadkeys.analyze.l"
{
if (p >= pmax)
lkfatal(_("string too long"));
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 401 "loadkeys.analyze.l"
+#line 400 "loadkeys.analyze.l"
{
if (p >= pmax)
lkfatal(_("string too long"));
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 406 "loadkeys.analyze.l"
+#line 405 "loadkeys.analyze.l"
{
if (p >= pmax)
lkfatal(_("string too long"));
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 411 "loadkeys.analyze.l"
+#line 410 "loadkeys.analyze.l"
{
if (p >= pmax)
lkfatal(_("string too long"));
case 45:
/* rule 45 can match eol */
YY_RULE_SETUP
-#line 416 "loadkeys.analyze.l"
+#line 415 "loadkeys.analyze.l"
{
char *ptmp = p;
- p += strlen(yytext);
+ p += strlen(yytext);
if (p > pmax)
lkfatal(_("string too long"));
strcpy(ptmp, yytext);
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 423 "loadkeys.analyze.l"
+#line 422 "loadkeys.analyze.l"
{
*p = '\0';
BEGIN(0);
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 428 "loadkeys.analyze.l"
+#line 427 "loadkeys.analyze.l"
{
return(ERROR); /* report any unknown characters */
}
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 431 "loadkeys.analyze.l"
+#line 430 "loadkeys.analyze.l"
ECHO;
YY_BREAK
-#line 1666 "loadkeys.analyze.c"
+#line 1665 "loadkeys.analyze.c"
case YY_END_OF_BUFFER:
{
#define YYTABLES_NAME "yytables"
-#line 431 "loadkeys.analyze.l"
+#line 430 "loadkeys.analyze.l"
extern int line_nr;
extern void stack_push(FILE *fd, int ispipe, char *filename);
-//extern int set_charset(const char *charset);
extern int prefer_unicode;
#include "ksyms.h"
exit(EXIT_FAILURE);
}
-char *dirpath[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+char **dirpath;
+char *dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+char *dirpath2[] = { 0, 0 };
char *suffixes[] = { "", ".kmap", ".map", 0 };
char **args;
/* Line 189 of yacc.c */
-#line 936 "loadkeys.c"
+#line 937 "loadkeys.c"
/* Enabling traces. */
#ifndef YYDEBUG
/* Line 264 of yacc.c */
-#line 1048 "loadkeys.c"
+#line 1049 "loadkeys.c"
#ifdef short
# undef short
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 876, 876, 877, 879, 880, 881, 882, 883, 884,
- 885, 886, 887, 888, 890, 895, 900, 905, 909, 914,
- 919, 920, 922, 928, 933, 942, 946, 951, 952, 954,
- 954, 961, 966, 967, 969, 970, 971, 972, 973, 974,
- 975, 976, 977, 979, 1018, 1019, 1021, 1028, 1029, 1030,
- 1031, 1032, 1033
+ 0, 877, 877, 878, 880, 881, 882, 883, 884, 885,
+ 886, 887, 888, 889, 891, 896, 901, 906, 910, 915,
+ 920, 921, 923, 929, 934, 943, 947, 952, 953, 955,
+ 955, 962, 967, 968, 970, 971, 972, 973, 974, 975,
+ 976, 977, 978, 980, 1019, 1020, 1022, 1029, 1030, 1031,
+ 1032, 1033, 1034
};
#endif
case 14:
/* Line 1464 of yacc.c */
-#line 891 "loadkeys.y"
+#line 892 "loadkeys.y"
{
set_charset((char *) kbs_buf.kb_string);
}
case 15:
/* Line 1464 of yacc.c */
-#line 896 "loadkeys.y"
+#line 897 "loadkeys.y"
{
alt_is_meta = 1;
}
case 16:
/* Line 1464 of yacc.c */
-#line 901 "loadkeys.y"
+#line 902 "loadkeys.y"
{
strings_as_usual();
}
case 17:
/* Line 1464 of yacc.c */
-#line 906 "loadkeys.y"
+#line 907 "loadkeys.y"
{
compose_as_usual((char *) kbs_buf.kb_string);
}
case 18:
/* Line 1464 of yacc.c */
-#line 910 "loadkeys.y"
+#line 911 "loadkeys.y"
{
compose_as_usual(0);
}
case 19:
/* Line 1464 of yacc.c */
-#line 915 "loadkeys.y"
+#line 916 "loadkeys.y"
{
keymaps_line_seen = 1;
}
case 22:
/* Line 1464 of yacc.c */
-#line 923 "loadkeys.y"
+#line 924 "loadkeys.y"
{
int i;
for (i = (yyvsp[(1) - (3)]); i <= (yyvsp[(3) - (3)]); i++)
case 23:
/* Line 1464 of yacc.c */
-#line 929 "loadkeys.y"
+#line 930 "loadkeys.y"
{
addmap((yyvsp[(1) - (1)]),1);
}
case 24:
/* Line 1464 of yacc.c */
-#line 934 "loadkeys.y"
+#line 935 "loadkeys.y"
{
if (KTYP((yyvsp[(2) - (5)])) != KT_FN)
lkfatal(_("'%s' is not a function key symbol"),
case 25:
/* Line 1464 of yacc.c */
-#line 943 "loadkeys.y"
+#line 944 "loadkeys.y"
{
compose((yyvsp[(2) - (6)]), (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]));
}
case 26:
/* Line 1464 of yacc.c */
-#line 947 "loadkeys.y"
+#line 948 "loadkeys.y"
{
compose((yyvsp[(2) - (6)]), (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]));
}
case 27:
/* Line 1464 of yacc.c */
-#line 951 "loadkeys.y"
+#line 952 "loadkeys.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 28:
/* Line 1464 of yacc.c */
-#line 952 "loadkeys.y"
+#line 953 "loadkeys.y"
{ (yyval) = (yyvsp[(1) - (1)]) ^ 0xf000; }
break;
case 29:
/* Line 1464 of yacc.c */
-#line 954 "loadkeys.y"
+#line 955 "loadkeys.y"
{
mod = 0;
}
case 30:
/* Line 1464 of yacc.c */
-#line 958 "loadkeys.y"
+#line 959 "loadkeys.y"
{
addkey((yyvsp[(4) - (7)]), mod, (yyvsp[(6) - (7)]));
}
case 31:
/* Line 1464 of yacc.c */
-#line 962 "loadkeys.y"
+#line 963 "loadkeys.y"
{
addkey((yyvsp[(3) - (6)]), 0, (yyvsp[(5) - (6)]));
}
case 34:
/* Line 1464 of yacc.c */
-#line 969 "loadkeys.y"
+#line 970 "loadkeys.y"
{ mod |= M_SHIFT; }
break;
case 35:
/* Line 1464 of yacc.c */
-#line 970 "loadkeys.y"
+#line 971 "loadkeys.y"
{ mod |= M_CTRL; }
break;
case 36:
/* Line 1464 of yacc.c */
-#line 971 "loadkeys.y"
+#line 972 "loadkeys.y"
{ mod |= M_ALT; }
break;
case 37:
/* Line 1464 of yacc.c */
-#line 972 "loadkeys.y"
+#line 973 "loadkeys.y"
{ mod |= M_ALTGR; }
break;
case 38:
/* Line 1464 of yacc.c */
-#line 973 "loadkeys.y"
+#line 974 "loadkeys.y"
{ mod |= M_SHIFTL; }
break;
case 39:
/* Line 1464 of yacc.c */
-#line 974 "loadkeys.y"
+#line 975 "loadkeys.y"
{ mod |= M_SHIFTR; }
break;
case 40:
/* Line 1464 of yacc.c */
-#line 975 "loadkeys.y"
+#line 976 "loadkeys.y"
{ mod |= M_CTRLL; }
break;
case 41:
/* Line 1464 of yacc.c */
-#line 976 "loadkeys.y"
+#line 977 "loadkeys.y"
{ mod |= M_CTRLR; }
break;
case 42:
/* Line 1464 of yacc.c */
-#line 977 "loadkeys.y"
+#line 978 "loadkeys.y"
{ mod |= M_CAPSSHIFT; }
break;
case 43:
/* Line 1464 of yacc.c */
-#line 980 "loadkeys.y"
+#line 981 "loadkeys.y"
{
int i, j;
case 46:
/* Line 1464 of yacc.c */
-#line 1022 "loadkeys.y"
+#line 1023 "loadkeys.y"
{
if (rvalct >= MAX_NR_KEYMAPS)
lkfatal(_("too many key definitions on one line"));
case 47:
/* Line 1464 of yacc.c */
-#line 1028 "loadkeys.y"
+#line 1029 "loadkeys.y"
{ (yyval) = convert_code((yyvsp[(1) - (1)]), TO_AUTO); }
break;
case 48:
/* Line 1464 of yacc.c */
-#line 1029 "loadkeys.y"
+#line 1030 "loadkeys.y"
{ (yyval) = add_capslock((yyvsp[(2) - (2)])); }
break;
case 49:
/* Line 1464 of yacc.c */
-#line 1030 "loadkeys.y"
+#line 1031 "loadkeys.y"
{ (yyval) = convert_code((yyvsp[(1) - (1)])^0xf000, TO_AUTO); }
break;
case 50:
/* Line 1464 of yacc.c */
-#line 1031 "loadkeys.y"
+#line 1032 "loadkeys.y"
{ (yyval) = add_capslock((yyvsp[(2) - (2)])^0xf000); }
break;
case 51:
/* Line 1464 of yacc.c */
-#line 1032 "loadkeys.y"
+#line 1033 "loadkeys.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 52:
/* Line 1464 of yacc.c */
-#line 1033 "loadkeys.y"
+#line 1034 "loadkeys.y"
{ (yyval) = add_capslock((yyvsp[(2) - (2)])); }
break;
/* Line 1464 of yacc.c */
-#line 2634 "loadkeys.c"
+#line 2635 "loadkeys.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
/* Line 1684 of yacc.c */
-#line 1035 "loadkeys.y"
+#line 1036 "loadkeys.y"
int main(int argc, char *argv[])
for (i = optind; argv[i]; i++) {
FILE *f;
+ char *ev;
+
+ dirpath = dirpath1;
+ if ((ev = getenv("LOADKEYS_KEYMAP_PATH")) != NULL) {
+ if (!quiet && !optm)
+ fprintf(stdout, _("Searching in %s\n"), ev);
+
+ dirpath2[0] = ev;
+ dirpath = dirpath2;
+ }
if (optd) {
/* first read default map - search starts in . */
exit(EXIT_FAILURE);
}
-char *dirpath[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+char **dirpath;
+char *dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+char *dirpath2[] = { 0, 0 };
char *suffixes[] = { "", ".kmap", ".map", 0 };
char **args;
for (i = optind; argv[i]; i++) {
FILE *f;
+ char *ev;
+
+ dirpath = dirpath1;
+ if ((ev = getenv("LOADKEYS_KEYMAP_PATH")) != NULL) {
+ if (!quiet && !optm)
+ fprintf(stdout, _("Searching in %s\n"), ev);
+
+ dirpath2[0] = ev;
+ dirpath = dirpath2;
+ }
if (optd) {
/* first read default map - search starts in . */