Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-07-03 20:00:58 +0400
committerCorinna Vinschen <corinna@vinschen.de>2006-07-03 20:00:58 +0400
commite60e8d3b0ee8b75f3833ba804e385b935b0f4440 (patch)
treef70e65316985af51fb0889f1da4f38dc42a85262 /winsup/utils/setmetamode.c
parent6258d96af8a0181b81d5466d78fb4255f94de009 (diff)
* Makefile.in: Build setmetamode.exe.
* setmetamode.c: New file.
Diffstat (limited to 'winsup/utils/setmetamode.c')
-rw-r--r--winsup/utils/setmetamode.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/winsup/utils/setmetamode.c b/winsup/utils/setmetamode.c
new file mode 100644
index 000000000..65bd02b78
--- /dev/null
+++ b/winsup/utils/setmetamode.c
@@ -0,0 +1,82 @@
+/* setmetamode.c
+
+ Copyright 2006 Red Hat Inc.
+
+ Written by Kazuhiro Fujieda <fujieda@jaist.ac.jp>
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <cygwin/kd.h>
+
+static const char version[] = "$Revision$";
+static char *prog_name;
+
+static void
+usage (void)
+{
+ fprintf (stderr, "Usage: %s [metabit|escprefix]\n"
+ " Without argument, it shows the current meta key mode.\n"
+ " metabit|meta|bit The meta key sets the top bit of the character.\n"
+ " escprefix|esc|prefix The meta key sends an escape prefix.\n",
+ prog_name);
+}
+
+static void
+error (void)
+{
+ fprintf (stderr,
+ "%s: The standard input isn't a console device.\n",
+ prog_name);
+}
+
+int
+main (int ac, char *av[])
+{
+ int param;
+
+ prog_name = strrchr (av[0], '/');
+ if (!prog_name)
+ prog_name = strrchr (av[0], '\\');
+ if (!prog_name)
+ prog_name = av[0];
+ else
+ prog_name++;
+
+ if (ac < 2)
+ {
+ if (ioctl (0, KDGKBMETA, &param) < 0)
+ {
+ error ();
+ return 1;
+ }
+ if (param == 0x03)
+ puts ("metabit");
+ else
+ puts ("escprefix");
+ return 0;
+ }
+ if (!strcmp ("meta", av[1]) || !strcmp ("bit", av[1])
+ || !strcmp ("metabit", av[1]))
+ param = 0x03;
+ else if (!strcmp ("esc", av[1]) || !strcmp ("prefix", av[1])
+ || !strcmp ("escprefix", av[1]))
+ param = 0x04;
+ else
+ {
+ usage ();
+ return 1;
+ }
+ if (ioctl (0, KDSKBMETA, param) < 0)
+ {
+ error ();
+ return 1;
+ }
+ return 0;
+}