2 * setmetamode.c - aeb, 940130
4 * Call: setmetamode { metabit | escprefix }
5 * and report the setting before and after.
6 * Without arguments setmetamode will only report.
12 #include <sys/ioctl.h>
16 static void attr_noreturn
21 " setmetamode [ metabit | meta | bit | escprefix | esc | prefix ]\n"
22 "Each vt has his own copy of this bit. Use\n"
23 " setmetamode [arg] < /dev/ttyn\n"
24 "to change the settings of another vt.\n"
25 "The setting before and after the change are reported.\n"
36 s = _("Meta key sets high order bit\n");
39 s = _("Meta key gives Esc prefix\n");
42 s = _("Strange mode for Meta key?\n");
51 { "metabit", K_METABIT },
52 { "meta", K_METABIT },
54 { "escprefix", K_ESCPREFIX },
55 { "esc", K_ESCPREFIX },
56 { "prefix", K_ESCPREFIX }
59 #define SIZE(a) (sizeof(a)/sizeof(a[0]))
62 main(int argc, char **argv) {
66 set_progname(argv[0]);
68 setlocale(LC_ALL, "");
69 bindtextdomain(PACKAGE_NAME, LOCALEDIR);
70 textdomain(PACKAGE_NAME);
72 if (argc == 2 && !strcmp(argv[1], "-V"))
73 print_version_and_exit();
75 if (ioctl(0, KDGKBMETA, &ometa)) {
78 _("Error reading current setting. Maybe stdin is not a VT?\n"));
87 nmeta = 0; /* make gcc happy */
88 for (mp = metas; (unsigned) (mp-metas) < SIZE(metas); mp++) {
89 if(!strcmp(argv[1], mp->name)) {
94 fprintf(stderr, _("unrecognized argument: _%s_\n\n"), argv[1]);
98 printf(_("old state: "));
100 if (ioctl(0, KDSKBMETA, nmeta)) {
104 printf(_("new state: "));