Date: Tue, 29 May 2001 22:03:19 -0700
From: Dima Dorfman <dima@unixfreak.org>
To: Dag-Erling Smorgrav <des@ofug.org>
Cc: arch@freebsd.org
Subject: Re: {kbd,vid}control insanity patch
Message-ID: <20010530050319.9506F3E28@bazooka.unixfreak.org>
In-Reply-To: <xzpg0dowi04.fsf@flood.ping.uio.no>; from des@ofug.org on "29 May 2001 12:45:47 %2B0200"
next in thread | previous in thread | raw e-mail | index | archive | help
Dag-Erling Smorgrav <des@ofug.org> writes:
> Dima Dorfman <dima@unixfreak.org> writes:
> > Dag-Erling Smorgrav <des@ofug.org> writes:
> > > Damn, yet another kbdcontrol bug. This - like every other vty-
> > > specific knob - should be in vidcontrol.
> > Are keymaps vty-specific?
>
> No, they're global.
Okay, then that leaves -f, -F, -b, and -r in kbdcontrol. The patch
attached below moves those to vidcontrol as -F, -G, -B, and -R,
respectively. If this ends up getting committed I'll gladly nuke
allscreens_kbdflags.
Comments?
Thanks,
Dima Dorfman
dima@unixfreak.org
Index: kbdcontrol/kbdcontrol.1
===================================================================
RCS file: /home/ncvs/src/usr.sbin/kbdcontrol/kbdcontrol.1,v
retrieving revision 1.30
diff -u -r1.30 kbdcontrol.1
--- kbdcontrol/kbdcontrol.1 2001/05/28 11:05:26 1.30
+++ kbdcontrol/kbdcontrol.1 2001/05/30 04:59:43
@@ -13,7 +13,7 @@
.\" @(#)kbdcontrol.1
.\" $FreeBSD: src/usr.sbin/kbdcontrol/kbdcontrol.1,v 1.30 2001/05/28 11:05:26 des Exp $
.\"
-.Dd May 27, 2001
+.Dd May 29, 2001
.Dt KBDCONTROL 1
.Os
.Sh NAME
@@ -21,17 +21,8 @@
.Nd keyboard control and configuration utility
.Sh SYNOPSIS
.Nm
-.Op Fl dFKix
-.Oo
-.Fl b
-.Ar duration . Ns Ar pitch | Ar belltype
-.Oc
-.Oo
-.Fl r
-.Ar delay . Ns Ar repeat | Ar speed
-.Oc
+.Op Fl dKix
.Op Fl l Ar keymap_file
-.Op Fl f Ar # Ar string
.Op Fl k Ar keyboard_device
.Op Fl L Ar keymap_file
.Sh DESCRIPTION
@@ -52,45 +43,6 @@
.Pp
The following command line options are supported:
.Bl -tag -width indent
-.It Fl b Xo
-.Ar duration . Ns Ar pitch | Ar belltype
-.Xc
-Set the bell duration in milliseconds and pitch in hertz.
-If a
-.Ar belltype
-argument is specified, it may be one of
-.Cm normal
-which sets sound parameters back to normal values,
-.Cm off
-which disables the bell entirely, or
-.Cm visual
-which sets the bell to visual mode, i.e. flashes the screen instead.
-If
-.Ar belltype
-is preceded by the word
-.Cm quiet. ,
-the bell will not be rung when the ringing process is in the background vty.
-.It Fl r Xo
-.Ar delay . Ns Ar repeat | Ar speed
-.Xc
-Set keyboard
-.Ar delay
-(250, 500, 750, 1000)
-and
-.Ar repeat
-(34, 38, 42, 46, 50, 55, 59, 63, 68, 76, 84, 92, 100, 110, 118, 126,
-136, 152, 168, 184, 200, 220, 236, 252, 272, 304, 336, 368, 400, 440,
-472, 504)
-rates, or if a
-.Ar speed
-argument is specified, it may be one of
-.Cm slow
-(1000.504),
-.Cm fast
-(250.34)
-or
-.Cm normal
-(500.126).
.It Fl l Ar keymap_file
Install keyboard map file from
.Ar keymap_file .
@@ -102,16 +54,6 @@
back to the kernel later by the
.Fl l
option above.
-.It Fl f Ar # Ar string
-Set function key number
-.Ar #
-to send
-.Ar string .
-Refer to the man page for the keyboard driver
-.Pq e.g. Xr atkbd 4
-for available function keys and their numbers.
-.It Fl F
-Set function keys back to the standard definitions.
.It Fl x
Use hexadecimal numbers in keyboard map dump.
.It Fl i
Index: kbdcontrol/kbdcontrol.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/kbdcontrol/kbdcontrol.c,v
retrieving revision 1.41
diff -u -r1.41 kbdcontrol.c
--- kbdcontrol/kbdcontrol.c 2001/05/29 13:59:02 1.41
+++ kbdcontrol/kbdcontrol.c 2001/05/30 04:59:44
@@ -70,40 +70,6 @@
"DCAR",
};
-char fkey_table[96][MAXFK] = {
-/* 01-04 */ "\033[M", "\033[N", "\033[O", "\033[P",
-/* 05-08 */ "\033[Q", "\033[R", "\033[S", "\033[T",
-/* 09-12 */ "\033[U", "\033[V", "\033[W", "\033[X",
-/* 13-16 */ "\033[Y", "\033[Z", "\033[a", "\033[b",
-/* 17-20 */ "\033[c", "\033[d", "\033[e", "\033[f",
-/* 21-24 */ "\033[g", "\033[h", "\033[i", "\033[j",
-/* 25-28 */ "\033[k", "\033[l", "\033[m", "\033[n",
-/* 29-32 */ "\033[o", "\033[p", "\033[q", "\033[r",
-/* 33-36 */ "\033[s", "\033[t", "\033[u", "\033[v",
-/* 37-40 */ "\033[w", "\033[x", "\033[y", "\033[z",
-/* 41-44 */ "\033[@", "\033[[", "\033[\\","\033[]",
-/* 45-48 */ "\033[^", "\033[_", "\033[`", "\033[{",
-/* 49-52 */ "\033[H", "\033[A", "\033[I", "-" ,
-/* 53-56 */ "\033[D", "\033[E", "\033[C", "+" ,
-/* 57-60 */ "\033[F", "\033[B", "\033[G", "\033[L",
-/* 61-64 */ "\177", "\033[J", "\033[~", "\033[}",
-/* 65-68 */ "" , "" , "" , "" ,
-/* 69-72 */ "" , "" , "" , "" ,
-/* 73-76 */ "" , "" , "" , "" ,
-/* 77-80 */ "" , "" , "" , "" ,
-/* 81-84 */ "" , "" , "" , "" ,
-/* 85-88 */ "" , "" , "" , "" ,
-/* 89-92 */ "" , "" , "" , "" ,
-/* 93-96 */ "" , "" , "" , "" ,
- };
-
-const int delays[] = {250, 500, 750, 1000};
-const int repeats[] = { 34, 38, 42, 46, 50, 55, 59, 63,
- 68, 76, 84, 92, 100, 110, 118, 126,
- 136, 152, 168, 184, 200, 220, 236, 252,
- 272, 304, 336, 368, 400, 440, 472, 504};
-const int ndelays = (sizeof(delays) / sizeof(int));
-const int nrepeats = (sizeof(repeats) / sizeof(int));
int hex = 0;
int number;
char letter;
@@ -835,139 +801,6 @@
}
-
-void
-load_default_functionkeys()
-{
- fkeyarg_t fkey;
- int i;
-
- for (i=0; i<NUM_FKEYS; i++) {
- fkey.keynum = i;
- strcpy(fkey.keydef, fkey_table[i]);
- fkey.flen = strlen(fkey_table[i]);
- if (ioctl(0, SETFKEY, &fkey) < 0)
- warn("setting function key");
- }
-}
-
-void
-set_functionkey(char *keynumstr, char *string)
-{
- fkeyarg_t fkey;
-
- if (!strcmp(keynumstr, "load") && !strcmp(string, "default")) {
- load_default_functionkeys();
- return;
- }
- fkey.keynum = atoi(keynumstr);
- if (fkey.keynum < 1 || fkey.keynum > NUM_FKEYS) {
- warnx("function key number must be between 1 and %d",
- NUM_FKEYS);
- return;
- }
- if ((fkey.flen = strlen(string)) > MAXFK) {
- warnx("function key string too long (%d > %d)",
- fkey.flen, MAXFK);
- return;
- }
- strcpy(fkey.keydef, string);
- fkey.keynum -= 1;
- if (ioctl(0, SETFKEY, &fkey) < 0)
- warn("setting function key");
-}
-
-
-void
-set_bell_values(char *opt)
-{
- int bell, duration, pitch;
-
- bell = 0;
- if (!strncmp(opt, "quiet.", 6)) {
- bell = 2;
- opt += 6;
- }
- if (!strcmp(opt, "visual"))
- bell |= 1;
- else if (!strcmp(opt, "normal"))
- duration = 5, pitch = 800;
- else if (!strcmp(opt, "off"))
- duration = 0, pitch = 0;
- else {
- char *v1;
-
- bell = 0;
- duration = strtol(opt, &v1, 0);
- if ((duration < 0) || (*v1 != '.'))
- goto badopt;
- opt = ++v1;
- pitch = strtol(opt, &v1, 0);
- if ((pitch < 0) || (*opt == '\0') || (*v1 != '\0')) {
-badopt:
- warnx("argument to -b must be duration.pitch or [quiet.]visual|normal|off");
- return;
- }
- if (pitch != 0)
- pitch = 1193182 / pitch; /* in Hz */
- duration /= 10; /* in 10 m sec */
- }
-
- ioctl(0, CONS_BELLTYPE, &bell);
- if ((bell & ~2) == 0)
- fprintf(stderr, "[=%d;%dB", pitch, duration);
-}
-
-
-void
-set_keyrates(char *opt)
-{
- int arg[2];
- int repeat;
- int delay;
- int r, d;
-
- if (!strcmp(opt, "slow")) {
- delay = 1000, repeat = 500;
- d = 3, r = 31;
- } else if (!strcmp(opt, "normal")) {
- delay = 500, repeat = 125;
- d = 1, r = 15;
- } else if (!strcmp(opt, "fast")) {
- delay = repeat = 0;
- d = r = 0;
- } else {
- int n;
- char *v1;
-
- delay = strtol(opt, &v1, 0);
- if ((delay < 0) || (*v1 != '.'))
- goto badopt;
- opt = ++v1;
- repeat = strtol(opt, &v1, 0);
- if ((repeat < 0) || (*opt == '\0') || (*v1 != '\0')) {
-badopt:
- warnx("argument to -r must be delay.repeat or slow|normal|fast");
- return;
- }
- for (n = 0; n < ndelays - 1; n++)
- if (delay <= delays[n])
- break;
- d = n;
- for (n = 0; n < nrepeats - 1; n++)
- if (repeat <= repeats[n])
- break;
- r = n;
- }
-
- arg[0] = delay;
- arg[1] = repeat;
- if (ioctl(0, KDSETREPEAT, arg)) {
- if (ioctl(0, KDSETRAD, (d << 5) | r))
- warn("setting keyboard rate");
- }
-}
-
static char
*get_kbd_type_name(int type)
{
@@ -1066,10 +899,8 @@
void
usage()
{
- fprintf(stderr, "%s\n%s\n%s\n",
-"usage: kbdcontrol [-dFKix] [-b duration.pitch | [quiet.]belltype]",
-" [-r delay.repeat | speed] [-l mapfile] [-f # string]",
-" [-k device] [-L mapfile]");
+ fprintf(stderr, "%s\n",
+"usage: kbdcontrol [-dKix] [-l mapfile] [-k device] [-L mapfile]");
exit(1);
}
@@ -1081,9 +912,6 @@
while((opt = getopt(argc, argv, "b:df:iKk:Fl:L:r:x")) != -1)
switch(opt) {
- case 'b':
- set_bell_values(optarg);
- break;
case 'd':
print_keymap();
break;
@@ -1093,13 +921,6 @@
case 'L':
load_keymap(optarg, 1);
break;
- case 'f':
- set_functionkey(optarg,
- nextarg(argc, argv, &optind, 'f'));
- break;
- case 'F':
- load_default_functionkeys();
- break;
case 'i':
show_kbd_info();
break;
@@ -1108,9 +929,6 @@
break;
case 'k':
set_keyboard(optarg);
- break;
- case 'r':
- set_keyrates(optarg);
break;
case 'x':
hex = 1;
Index: vidcontrol/vidcontrol.1
===================================================================
RCS file: /home/ncvs/src/usr.sbin/vidcontrol/vidcontrol.1,v
retrieving revision 1.39
diff -u -r1.39 vidcontrol.1
--- vidcontrol/vidcontrol.1 2001/05/29 18:48:13 1.39
+++ vidcontrol/vidcontrol.1 2001/05/30 04:59:44
@@ -13,7 +13,7 @@
.\" @(#)vidcontrol.1
.\" $FreeBSD: src/usr.sbin/vidcontrol/vidcontrol.1,v 1.39 2001/05/29 18:48:13 sobomax Exp $
.\"
-.Dd May 27, 2001
+.Dd May 29, 2001
.Dt VIDCONTROL 1
.Os
.Sh NAME
@@ -21,9 +21,14 @@
.Nd system console control and configuration utility
.Sh SYNOPSIS
.Nm
-.Op Fl CdLPpx
+.Op Fl CdGLPpx
+.Oo
+.Fl B
+.Ar duration . Ns Ar pitch | Ar belltype
+.Oc
.Op Fl b Ar color
.Op Fl c Ar appearance
+.Op Fl F Ar # Ar string
.Oo
.Fl f
.Op Ar size
@@ -35,6 +40,10 @@
.Op Fl l Ar screen_map
.Op Fl M Ar char
.Op Fl m Cm on | off
+.Oo
+.Fl R
+.Ar delay . Ns Ar repeat | Ar speed
+.Oc
.Op Fl r Ar foreground Ar background
.Op Fl s Ar number
.Op Fl t Ar N | Cm off
@@ -103,6 +112,24 @@
command below to see available colors.
.It Cm show
See the supported colors on a given platform.
+.It Fl B Xo
+.Ar duration . Ns Ar pitch | Ar belltype
+.Xc
+Set the bell duration in milliseconds and pitch in hertz.
+If a
+.Ar belltype
+argument is specified, it may be one of
+.Cm normal
+which sets sound parameters back to normal values,
+.Cm off
+which disables the bell entirely, or
+.Cm visual
+which sets the bell to visual mode, i.e. flashes the screen instead.
+If
+.Ar belltype
+is preceded by the word
+.Cm quiet. ,
+the bell will not be rung when the ringing process is in the background vty.
.It Fl b Ar color
Set border color to
.Ar color .
@@ -120,6 +147,14 @@
The latter is actually a simulation.
.It Fl d
Print out current output screen map.
+.It Fl F Ar # Ar string
+Set function key number
+.Ar #
+to send
+.Ar string .
+Refer to the man page for the keyboard driver
+.Pq e.g. Xr atkbd 4
+for available function keys and their numbers.
.It Xo
.Fl f
.Op Ar size
@@ -152,6 +187,8 @@
.Sx EXAMPLES
below and the man page for
.Xr syscons 4 .
+.It Fl G
+Set function keys back to the standard definitions.
.It Fl g Ar geometry
Set the
.Ar geometry
@@ -207,6 +244,27 @@
but dump contents of the video buffer in a plain text format
ignoring nonprintable characters and information about text
attributes.
+.It Fl R Xo
+.Ar delay . Ns Ar repeat | Ar speed
+.Xc
+Set keyboard
+.Ar delay
+(250, 500, 750, 1000)
+and
+.Ar repeat
+(34, 38, 42, 46, 50, 55, 59, 63, 68, 76, 84, 92, 100, 110, 118, 126,
+136, 152, 168, 184, 200, 220, 236, 252, 272, 304, 336, 368, 400, 440,
+472, 504)
+rates, or if a
+.Ar speed
+argument is specified, it may be one of
+.Cm slow
+(1000.504),
+.Cm fast
+(250.34)
+or
+.Cm normal
+(500.126).
.It Fl r Ar foreground background
Change reverse mode colors to
.Ar foreground
Index: vidcontrol/vidcontrol.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/vidcontrol/vidcontrol.c,v
retrieving revision 1.39
diff -u -r1.39 vidcontrol.c
--- vidcontrol/vidcontrol.c 2001/05/28 11:05:28 1.39
+++ vidcontrol/vidcontrol.c 2001/05/30 04:59:45
@@ -40,6 +40,7 @@
#include <unistd.h>
#include <sys/fbio.h>
#include <sys/consio.h>
+#include <sys/kbio.h>
#include <sys/errno.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -55,12 +56,46 @@
#define DUMP_FMT_REV 1
+char fkey_table[96][MAXFK] = {
+/* 01-04 */ "\033[M", "\033[N", "\033[O", "\033[P",
+/* 05-08 */ "\033[Q", "\033[R", "\033[S", "\033[T",
+/* 09-12 */ "\033[U", "\033[V", "\033[W", "\033[X",
+/* 13-16 */ "\033[Y", "\033[Z", "\033[a", "\033[b",
+/* 17-20 */ "\033[c", "\033[d", "\033[e", "\033[f",
+/* 21-24 */ "\033[g", "\033[h", "\033[i", "\033[j",
+/* 25-28 */ "\033[k", "\033[l", "\033[m", "\033[n",
+/* 29-32 */ "\033[o", "\033[p", "\033[q", "\033[r",
+/* 33-36 */ "\033[s", "\033[t", "\033[u", "\033[v",
+/* 37-40 */ "\033[w", "\033[x", "\033[y", "\033[z",
+/* 41-44 */ "\033[@", "\033[[", "\033[\\","\033[]",
+/* 45-48 */ "\033[^", "\033[_", "\033[`", "\033[{",
+/* 49-52 */ "\033[H", "\033[A", "\033[I", "-" ,
+/* 53-56 */ "\033[D", "\033[E", "\033[C", "+" ,
+/* 57-60 */ "\033[F", "\033[B", "\033[G", "\033[L",
+/* 61-64 */ "\177", "\033[J", "\033[~", "\033[}",
+/* 65-68 */ "" , "" , "" , "" ,
+/* 69-72 */ "" , "" , "" , "" ,
+/* 73-76 */ "" , "" , "" , "" ,
+/* 77-80 */ "" , "" , "" , "" ,
+/* 81-84 */ "" , "" , "" , "" ,
+/* 85-88 */ "" , "" , "" , "" ,
+/* 89-92 */ "" , "" , "" , "" ,
+/* 93-96 */ "" , "" , "" , "" ,
+ };
+
char legal_colors[16][16] = {
"black", "blue", "green", "cyan",
"red", "magenta", "brown", "white",
"grey", "lightblue", "lightgreen", "lightcyan",
"lightred", "lightmagenta", "yellow", "lightwhite"
};
+const int delays[] = {250, 500, 750, 1000};
+const int repeats[] = { 34, 38, 42, 46, 50, 55, 59, 63,
+ 68, 76, 84, 92, 100, 110, 118, 126,
+ 136, 152, 168, 184, 200, 220, 236, 252,
+ 272, 304, 336, 368, 400, 440, 472, 504};
+const int ndelays = (sizeof(delays) / sizeof(int));
+const int nrepeats = (sizeof(repeats) / sizeof(int));
int hex = 0;
int number;
int vesa_cols = _VESA_800x600_DFL_COLS;
@@ -72,11 +107,14 @@
static void
usage()
{
- fprintf(stderr, "%s\n%s\n%s\n%s\n",
-"usage: vidcontrol [-CdLPpx] [-b color] [-c appearance] [-f [size] file]",
-" [-g geometry] [-h size] [-i adapter | mode] [-l screen_map]",
-" [-m on | off] [-M char] [-r foreground background] [-s num]",
-" [-t N | off] [mode] [foreground [background]] [show]");
+ fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
+"usage: vidcontrol [-CdGLPpx] [-B duration.pitch | [quiet.]belltype] ",
+" [-b color] [-c appearance] [-F # string] [-f [size] file]",
+" [-g geometry] [-h size] [-i adapter | mode]",
+" [-l screen_map] [-m on | off] [-M char]",
+" [-R delay.repeat | speed] [-r foreground background]",
+" [-s num] [-t N | off]",
+" [mode] [foreground [background]] [show]");
exit(1);
}
@@ -736,6 +774,136 @@
warn("clear history buffer");
}
+void
+set_bell_values(char *opt)
+{
+ int bell, duration, pitch;
+
+ bell = 0;
+ if (!strncmp(opt, "quiet.", 6)) {
+ bell = 2;
+ opt += 6;
+ }
+ if (!strcmp(opt, "visual"))
+ bell |= 1;
+ else if (!strcmp(opt, "normal"))
+ duration = 5, pitch = 800;
+ else if (!strcmp(opt, "off"))
+ duration = 0, pitch = 0;
+ else {
+ char *v1;
+
+ bell = 0;
+ duration = strtol(opt, &v1, 0);
+ if ((duration < 0) || (*v1 != '.'))
+ goto badopt;
+ opt = ++v1;
+ pitch = strtol(opt, &v1, 0);
+ if ((pitch < 0) || (*opt == '\0') || (*v1 != '\0')) {
+badopt:
+ warnx("argument to -B must be duration.pitch or [quiet.]visual|normal|off");
+ return;
+ }
+ if (pitch != 0)
+ pitch = 1193182 / pitch; /* in Hz */
+ duration /= 10; /* in 10 m sec */
+ }
+
+ ioctl(0, CONS_BELLTYPE, &bell);
+ if ((bell & ~2) == 0)
+ fprintf(stderr, "[=%d;%dB", pitch, duration);
+}
+
+void
+set_keyrates(char *opt)
+{
+ int arg[2];
+ int repeat;
+ int delay;
+ int r, d;
+
+ if (!strcmp(opt, "slow")) {
+ delay = 1000, repeat = 500;
+ d = 3, r = 31;
+ } else if (!strcmp(opt, "normal")) {
+ delay = 500, repeat = 125;
+ d = 1, r = 15;
+ } else if (!strcmp(opt, "fast")) {
+ delay = repeat = 0;
+ d = r = 0;
+ } else {
+ int n;
+ char *v1;
+
+ delay = strtol(opt, &v1, 0);
+ if ((delay < 0) || (*v1 != '.'))
+ goto badopt;
+ opt = ++v1;
+ repeat = strtol(opt, &v1, 0);
+ if ((repeat < 0) || (*opt == '\0') || (*v1 != '\0')) {
+badopt:
+ warnx("argument to -R must be delay.repeat or slow|normal|fast");
+ return;
+ }
+ for (n = 0; n < ndelays - 1; n++)
+ if (delay <= delays[n])
+ break;
+ d = n;
+ for (n = 0; n < nrepeats - 1; n++)
+ if (repeat <= repeats[n])
+ break;
+ r = n;
+ }
+
+ arg[0] = delay;
+ arg[1] = repeat;
+ if (ioctl(0, KDSETREPEAT, arg)) {
+ if (ioctl(0, KDSETRAD, (d << 5) | r))
+ warn("setting keyboard rate");
+ }
+}
+
+void
+load_default_functionkeys()
+{
+ fkeyarg_t fkey;
+ int i;
+
+ for (i=0; i<NUM_FKEYS; i++) {
+ fkey.keynum = i;
+ strcpy(fkey.keydef, fkey_table[i]);
+ fkey.flen = strlen(fkey_table[i]);
+ if (ioctl(0, SETFKEY, &fkey) < 0)
+ warn("setting function key");
+ }
+}
+
+void
+set_functionkey(char *keynumstr, char *string)
+{
+ fkeyarg_t fkey;
+
+ if (!strcmp(keynumstr, "load") && !strcmp(string, "default")) {
+ load_default_functionkeys();
+ return;
+ }
+ fkey.keynum = atoi(keynumstr);
+ if (fkey.keynum < 1 || fkey.keynum > NUM_FKEYS) {
+ warnx("function key number must be between 1 and %d",
+ NUM_FKEYS);
+ return;
+ }
+ if ((fkey.flen = strlen(string)) > MAXFK) {
+ warnx("function key string too long (%d > %d)",
+ fkey.flen, MAXFK);
+ return;
+ }
+ strcpy(fkey.keydef, string);
+ fkey.keynum -= 1;
+ if (ioctl(0, SETFKEY, &fkey) < 0)
+ warn("setting function key");
+}
+
int
main(int argc, char **argv)
{
@@ -749,8 +917,12 @@
/* Not reached */
if (ioctl(0, CONS_GETINFO, &info) < 0)
err(1, "must be on a virtual console");
- while((opt = getopt(argc, argv, "b:Cc:df:g:h:i:l:LM:m:pPr:s:t:x")) != -1)
+ while((opt = getopt(argc, argv,
+ "B:b:Cc:dF:f:Gg:h:i:l:LM:m:pPR:r:s:t:x")) != -1)
switch(opt) {
+ case 'B':
+ set_bell_values(optarg);
+ break;
case 'b':
set_border_color(optarg);
break;
@@ -763,6 +935,10 @@
case 'd':
print_scrnmap();
break;
+ case 'F':
+ set_functionkey(optarg,
+ nextarg(argc, argv, &optind, 'f', 1));
+ break;
case 'f':
type = optarg;
font = nextarg(argc, argv, &optind, 'f', 0);
@@ -772,6 +948,9 @@
}
load_font(type, font);
break;
+ case 'G':
+ load_default_functionkeys();
+ break;
case 'g':
if (sscanf(optarg, "%dx%d", &vesa_cols,
&vesa_rows) != 2) {
@@ -802,6 +981,9 @@
break;
case 'P':
dump_screen(DUMP_TXT);
+ break;
+ case 'R':
+ set_keyrates(optarg);
break;
case 'r':
set_reverse_colors(argc, argv, &optind);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010530050319.9506F3E28>
