allow to set multiple keyboard "variants" simultanously.

Follows PR kern/8456 by Michael Eriksson <eramore@era-t.ericsson.se>,
implemented diffently.
This commit is contained in:
drochner 1999-11-10 16:49:38 +00:00
parent bebf6897b4
commit 3bc4cec200
2 changed files with 31 additions and 15 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: util.c,v 1.4 1998/12/30 19:15:11 augustss Exp $ */
/* $NetBSD: util.c,v 1.5 1999/11/10 16:49:38 drochner Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@ -85,7 +85,11 @@ static struct nameint dpytype_tab[] = {
};
static struct nameint kbdenc_tab[] = {
KB_NAMETAB
KB_ENCTAB
};
static struct nameint kbdvar_tab[] = {
KB_VARTAB
};
static struct field *field_tab;
@ -171,6 +175,8 @@ pr_field(f, sep)
char *sep;
{
char *p;
u_int flags;
int i;
if (sep)
printf("%s%s", f->name, sep);
@ -199,10 +205,14 @@ pr_field(f, sep)
kbdenc_tab, TABLEN(kbdenc_tab));
printf("%s", p);
p = int2name(KB_VARIANT(*((u_int *) f->valp)), 0,
kbdenc_tab, TABLEN(kbdenc_tab));
if (p)
flags = KB_VARIANT(*((u_int *) f->valp));
for (i = 0; i < 32; i++) {
if (!(flags & (1 << i)))
continue;
p = int2name(flags & (1 << i), 1,
kbdvar_tab, TABLEN(kbdvar_tab));
printf(".%s", p);
}
break;
case FMT_KBMAP:
print_kmap((struct wskbd_map_data *) f->valp);
@ -245,13 +255,17 @@ rd_field(f, val, merge)
errx(1, "%s: not a valid encoding", val);
*((u_int *) f->valp) = i;
if (p == NULL)
break;
i = name2int(p, kbdenc_tab, TABLEN(kbdenc_tab));
while (p) {
val = p;
p = strchr(p, '.');
if (p != NULL)
*p++ = '\0';
i = name2int(val, kbdvar_tab, TABLEN(kbdvar_tab));
if (i == -1)
errx(1, "%s: not a valid variant", val);
*((u_int *) f->valp) |= i;
}
printf("enc: %x\n", *((u_int *) f->valp));
break;
case FMT_KBMAP:
if (! merge)

View File

@ -1,4 +1,4 @@
/* $NetBSD: wsksymdef.h,v 1.25 1999/05/11 09:21:07 drochner Exp $ */
/* $NetBSD: wsksymdef.h,v 1.26 1999/11/10 16:49:39 drochner Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -475,7 +475,7 @@
#define KB_SWAPCTRLCAPS 0x0008 /* Swap Control-L and Caps-Lock */
#define KB_DVORAK 0x0010 /* Dvorak layout */
#define KB_NAMETAB \
#define KB_ENCTAB \
{ KB_USER, "user" }, \
{ KB_US, "us" }, \
{ KB_DE, "de" }, \
@ -484,7 +484,9 @@
{ KB_FR, "fr" }, \
{ KB_UK, "uk" }, \
{ KB_JP, "jp" }, \
{ KB_SV, "sv" }, \
{ KB_SV, "sv" }
#define KB_VARTAB \
{ KB_NODEAD, "nodead" }, \
{ KB_DECLK, "declk" }, \
{ KB_LK401, "lk401" }, \