Added 'dumpkmap' to allow people to dump a binary keymap, which can then be

loaded in by 'loadkmap' -- submitted by Arne Bernin <arne@matrix.loopback.org>
 -Erik
This commit is contained in:
Eric Andersen 2000-07-11 17:29:36 +00:00
parent df5f6ba115
commit 61dc057183
11 changed files with 248 additions and 14 deletions

View File

@ -41,6 +41,9 @@
couldn't maintain it very well, so including it was not really couldn't maintain it very well, so including it was not really
very appropriate. Those wanting an fdisk are invited to very appropriate. Those wanting an fdisk are invited to
grab a copy from util-linux. grab a copy from util-linux.
* Added 'dumpkmap' to allow people to dump a binary keymap, which can
then be loaded in by 'loadkmap' -- submitted by
Arne Bernin <arne@matrix.loopback.org>
* Fixed NFS so it supports 2.4.x kernels and NFSv3. * Fixed NFS so it supports 2.4.x kernels and NFSv3.

View File

@ -87,6 +87,9 @@ const struct BB_applet applets[] = {
#ifdef BB_DU #ifdef BB_DU
{"du", du_main, _BB_DIR_BIN}, {"du", du_main, _BB_DIR_BIN},
#endif #endif
#ifdef BB_DUMPKMAP
{"dumpkmap", dumpkmap_main, _BB_DIR_BIN},
#endif
#ifdef BB_DUTMP #ifdef BB_DUTMP
{"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, {"dutmp", dutmp_main, _BB_DIR_USR_SBIN},
#endif #endif

View File

@ -87,6 +87,9 @@ const struct BB_applet applets[] = {
#ifdef BB_DU #ifdef BB_DU
{"du", du_main, _BB_DIR_BIN}, {"du", du_main, _BB_DIR_BIN},
#endif #endif
#ifdef BB_DUMPKMAP
{"dumpkmap", dumpkmap_main, _BB_DIR_BIN},
#endif
#ifdef BB_DUTMP #ifdef BB_DUTMP
{"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, {"dutmp", dutmp_main, _BB_DIR_USR_SBIN},
#endif #endif

View File

@ -25,6 +25,7 @@
#define BB_DMESG #define BB_DMESG
#define BB_DUTMP #define BB_DUTMP
#define BB_DU #define BB_DU
#define BB_DUMPKMAP
#define BB_ECHO #define BB_ECHO
#define BB_FBSET #define BB_FBSET
#define BB_FDFLUSH #define BB_FDFLUSH

100
console-tools/dumpkmap.c Normal file
View File

@ -0,0 +1,100 @@
/* vi: set sw=4 ts=4: */
/*
* Mini dumpkmap implementation for busybox
*
* Copyright (C) Arne Bernin <arne@matrix.loopback.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include "internal.h"
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/ioctl.h>
/* From <linux/kd.h> */
struct kbentry {
unsigned char kb_table;
unsigned char kb_index;
unsigned short kb_value;
};
#define KDGKBENT 0x4B46 /* gets one entry in translation table */
/* From <linux/keyboard.h> */
#define NR_KEYS 128
#define MAX_NR_KEYMAPS 256
static const char dumpkmap_usage[] = "dumpkmap\n"
#ifndef BB_FEATURE_TRIVIAL_HELP
"\nPrints out a binary keyboard translation table to standard input.\n"
#endif
;
int dumpkmap_main(int argc, char **argv)
{
struct kbentry ke;
int i, j, fd;
char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap";
if (argc>=2 && *argv[1]=='-') {
usage(dumpkmap_usage);
}
fd = open("/dev/tty0", O_RDWR);
if (fd < 0) {
fprintf(stderr, "Error opening /dev/tty0: %s\n", strerror(errno));
return 1;
}
write(1, magic, 7);
for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0;
flags[0]=1;
flags[1]=1;
flags[2]=1;
flags[4]=1;
flags[5]=1;
flags[6]=1;
flags[8]=1;
flags[9]=1;
flags[10]=1;
flags[12]=1;
/* dump flags */
for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1);
for (i = 0; i < MAX_NR_KEYMAPS; i++) {
if (flags[i] == 1) {
for (j = 0; j < NR_KEYS; j++) {
ke.kb_index = j;
ke.kb_table = i;
if (ioctl(fd, KDGKBENT, &ke) < 0) {
fprintf(stderr, "ioctl returned: %s, %s, %s, %xqq\n",strerror(errno),(char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value);
}
else {
write(1,&ke.kb_value,2);
}
}
}
}
close(fd);
return 0;
}

View File

@ -41,7 +41,7 @@ struct kbentry {
static const char loadkmap_usage[] = "loadkmap\n" static const char loadkmap_usage[] = "loadkmap\n"
#ifndef BB_FEATURE_TRIVIAL_HELP #ifndef BB_FEATURE_TRIVIAL_HELP
"Loads a binary keyboard translation table from standard input.\n" "\nLoads a binary keyboard translation table from standard input.\n"
#endif #endif
; ;

View File

@ -56,7 +56,7 @@ terse runtime description of their behavior.
Currently defined functions include: Currently defined functions include:
ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date, ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date,
dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset, dc, dd, deallocvt, df, dirname, dmesg, du, dumpkmap, dutmp, echo, false, fbset,
fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt, fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt,
head, hostid, hostname, id, init, insmod, kill, killall, length, ln, head, hostid, hostname, id, init, insmod, kill, killall, length, ln,
loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir, loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir,
@ -440,6 +440,14 @@ Example:
------------------------------- -------------------------------
=item dumpkmap
Usage: dumpkmap
Prints out a binary keyboard translation table to standard input.
-------------------------------
=item dutmp =item dutmp
Usage: dutmp [FILE] Usage: dutmp [FILE]
@ -2020,4 +2028,4 @@ Enrique Zanardi <ezanardi@ull.es>
=cut =cut
# $Id: busybox.pod,v 1.55 2000/07/08 00:09:30 andersen Exp $ # $Id: busybox.pod,v 1.56 2000/07/11 17:29:36 andersen Exp $

View File

@ -132,16 +132,19 @@
</para> </para>
<para> <para>
ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date, ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear,
dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset, cp, cut, date, dc, dd, deallocvt, df, dirname, dmesg, du,
fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt, dumpkmap, dutmp, echo, false, fbset, fdflush, find, free,
head, hostid, hostname, id, init, insmod, kill, killall, length, ln, freeramdisk, fsck.minix, grep, gunzip, gzip, halt, head,
loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir, hostid, hostname, id, init, insmod, kill, killall, length, ln,
mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc, loadacm, loadfont, loadkmap, logger, logname, ls, lsmod,
nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed, makedevs, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp,
setkeycodes, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail, more, mount, mt, mv, nc, nslookup, ping, poweroff, printf, ps,
tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update, pwd, reboot, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [ sort, swapoff, swapon, sync, syslogd, tail, tar, tee, telnet,
test, touch, tr, true, tty, umount, uname, uniq, update,
uptime, usleep, uudecode, uuencode, wc, which, whoami, yes,
zcat, [
</para> </para>
</sect1> </sect1>
@ -783,6 +786,18 @@
</para> </para>
</sect1> </sect1>
<sect1 id="dumpkmap">
<title>dumpkmap</title>
<para>
Usage: dumpkmap
</para>
<para>
Prints out a binary keyboard translation table to standard input.
</para>
</sect1>
<sect1 id="dutmp"> <sect1 id="dutmp">
<title>dutmp</title> <title>dutmp</title>

100
dumpkmap.c Normal file
View File

@ -0,0 +1,100 @@
/* vi: set sw=4 ts=4: */
/*
* Mini dumpkmap implementation for busybox
*
* Copyright (C) Arne Bernin <arne@matrix.loopback.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include "internal.h"
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/ioctl.h>
/* From <linux/kd.h> */
struct kbentry {
unsigned char kb_table;
unsigned char kb_index;
unsigned short kb_value;
};
#define KDGKBENT 0x4B46 /* gets one entry in translation table */
/* From <linux/keyboard.h> */
#define NR_KEYS 128
#define MAX_NR_KEYMAPS 256
static const char dumpkmap_usage[] = "dumpkmap\n"
#ifndef BB_FEATURE_TRIVIAL_HELP
"\nPrints out a binary keyboard translation table to standard input.\n"
#endif
;
int dumpkmap_main(int argc, char **argv)
{
struct kbentry ke;
int i, j, fd;
char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap";
if (argc>=2 && *argv[1]=='-') {
usage(dumpkmap_usage);
}
fd = open("/dev/tty0", O_RDWR);
if (fd < 0) {
fprintf(stderr, "Error opening /dev/tty0: %s\n", strerror(errno));
return 1;
}
write(1, magic, 7);
for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0;
flags[0]=1;
flags[1]=1;
flags[2]=1;
flags[4]=1;
flags[5]=1;
flags[6]=1;
flags[8]=1;
flags[9]=1;
flags[10]=1;
flags[12]=1;
/* dump flags */
for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1);
for (i = 0; i < MAX_NR_KEYMAPS; i++) {
if (flags[i] == 1) {
for (j = 0; j < NR_KEYS; j++) {
ke.kb_index = j;
ke.kb_table = i;
if (ioctl(fd, KDGKBENT, &ke) < 0) {
fprintf(stderr, "ioctl returned: %s, %s, %s, %xqq\n",strerror(errno),(char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value);
}
else {
write(1,&ke.kb_value,2);
}
}
}
}
close(fd);
return 0;
}

View File

@ -117,6 +117,7 @@ extern int deallocvt_main(int argc, char** argv);
extern int df_main(int argc, char** argv); extern int df_main(int argc, char** argv);
extern int dmesg_main(int argc, char** argv); extern int dmesg_main(int argc, char** argv);
extern int du_main(int argc, char** argv); extern int du_main(int argc, char** argv);
extern int dumpkmap_main(int argc, char** argv);
extern int dutmp_main(int argc, char** argv); extern int dutmp_main(int argc, char** argv);
extern int echo_main(int argc, char** argv); extern int echo_main(int argc, char** argv);
extern int false_main(int argc, char** argv); extern int false_main(int argc, char** argv);

View File

@ -41,7 +41,7 @@ struct kbentry {
static const char loadkmap_usage[] = "loadkmap\n" static const char loadkmap_usage[] = "loadkmap\n"
#ifndef BB_FEATURE_TRIVIAL_HELP #ifndef BB_FEATURE_TRIVIAL_HELP
"Loads a binary keyboard translation table from standard input.\n" "\nLoads a binary keyboard translation table from standard input.\n"
#endif #endif
; ;