From: Alexey Gladkov <gladkov.alexey@gmail.com>
To: kbd@lists.altlinux.org
Subject: Re: [kbd] New vt_mode tool for kbd?
Date: Fri, 25 Mar 2011 16:20:19 +0300 [thread overview]
Message-ID: <4D8C9693.9040006@gmail.com> (raw)
In-Reply-To: <20110321214236.GA13370@graeme>
[-- Attachment #1: Type: text/plain, Size: 563 bytes --]
22.03.2011 00:42, Michael Schutte wrote:
> Hi Alexey,
>
> The console-setup package in Debian needs a way to check for the
> text/graphics mode of the active VT (from a shell script). This can be
> done with “setfont -v -o /dev/null”, for example, but that isn’t very
> elegant. Julien Cristau has proposed a small utility (which I’m calling
> “vt_mode” for now) to report this information in a canonical fashion.
May be something like this (see attachment) ?
I thing this utility is more script-friendly and more extensible.
--
Rgrds, legion
[-- Attachment #2: kbdinfo.c --]
[-- Type: text/plain, Size: 2187 bytes --]
#include <stdio.h>
#include <errno.h>
#include <error.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <getopt.h>
#include "getfd.h"
#include "nls.h"
#include "version.h"
#define RETURN_BASE 100
#define GETMODE 10
#define GKBMODE 20
#define GKBMETA 30
static void attr_noreturn
usage(int code) {
fprintf(stderr, _("Usage: kbdinfo [-C DEVICE] GETMODE | GKBMODE | GKBMETA\n"));
exit(code);
}
int
main(int argc, char *argv[]) {
int fd, mode, c, rc;
int quiet = 0;
char *console = NULL;
set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE_NAME, LOCALEDIR);
textdomain(PACKAGE_NAME);
while ((c = getopt(argc, argv, "C:qhV")) != EOF) {
switch (c) {
case 'C':
if (optarg == NULL || optarg[0] == '\0')
usage(1);
console = optarg;
break;
case 'q':
quiet = 1;
break;
case 'V':
print_version_and_exit();
break;
case 'h':
usage(0);
break;
default:
usage(1);
}
}
if (argc == optind)
usage(1);
fd = getfd(console);
rc = EXIT_FAILURE;
#define answer(typ,text,code) { \
if (!quiet) \
printf("%s\n", text); \
rc = (RETURN_BASE + typ + code); \
};
if (!strcasecmp("GETMODE", argv[optind])) {
if (ioctl(fd, KDGETMODE, &mode) == -1)
error(EXIT_FAILURE, errno, "ioctl");
switch (mode) {
case KD_TEXT: answer(GETMODE, "text", 1); break;
case KD_GRAPHICS: answer(GETMODE, "graphics", 2); break;
}
return rc;
}
if (!strcasecmp("GKBMODE", argv[optind])) {
if (ioctl(fd, KDGKBMODE, &mode) == -1)
error(EXIT_FAILURE, errno, "ioctl");
switch (mode) {
case K_RAW: answer(GKBMODE, "raw", 1); break;
case K_XLATE: answer(GKBMODE, "xlate", 2); break;
case K_MEDIUMRAW: answer(GKBMODE, "mediumraw", 3); break;
case K_UNICODE: answer(GKBMODE, "unicode", 4); break;
}
return rc;
}
if (!strcasecmp("GKBMETA", argv[optind])) {
if (ioctl(fd, KDGKBMETA, &mode) == -1)
error(EXIT_FAILURE, errno, "ioctl");
switch (mode) {
case K_METABIT: answer(GKBMETA, "metabit", 1); break;
case K_ESCPREFIX: answer(GKBMETA, "escprefix", 2); break;
}
return rc;
}
return rc;
}
next prev parent reply other threads:[~2011-03-25 13:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-21 21:42 [kbd] New vt_mode tool for kbd? Michael Schutte
2011-03-21 22:13 ` Dmitry V. Levin
2011-03-21 22:25 ` Michael Schutte
2011-03-25 13:20 ` Alexey Gladkov [this message]
2011-03-26 17:33 ` Michael Schutte
2011-03-26 22:33 ` Dmitry V. Levin
2011-03-27 9:33 ` Alexey Gladkov
2011-03-28 10:55 ` Alexey Gladkov
2011-03-28 11:19 ` Dmitry V. Levin
2011-03-28 11:26 ` Alexey Gladkov
2011-03-28 21:07 ` Alexey Gladkov
2011-03-29 21:51 ` Dmitry V. Levin
2011-03-29 22:27 ` Alexey Gladkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D8C9693.9040006@gmail.com \
--to=gladkov.alexey@gmail.com \
--cc=kbd@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.