chip@ateng.ateng.com (Chip Salzenberg) (02/25/89)
In lieu of a key table, here is a program that modifies any existing key layout to use Alt as a meta key. If you prefer, you can then use "mapkey -d" to generate a text version of the resulting layout. BTW, this program must be setuid root (really!) because of SCO's security restrictions on the keyboard mapping ioctl() call. #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: metakeys.c # Wrapped by chip@ateng on Fri Feb 24 15:07:01 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'metakeys.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'metakeys.c'\" else echo shar: Extracting \"'metakeys.c'\" \(780 characters\) sed "s/^X//" >'metakeys.c' <<'END_OF_FILE' X/* X * metakeys.c X * Version 1.0 X * Define Xenix keyboard so that Alt functions as an Emacs "meta" key. X * X * Written 24 Feb 1989 by Chip Salzenberg, A T Engineering. X * E-Mail complaints and kudos to <chip@ateng.com> or <uunet!ateng!chip>. X */ X X#include <stdio.h> X#include <sys/keyboard.h> X Xkeymap_t map; X Xmain() X{ X int i, j; X struct key_t *k; X X if (ioctl(0, GIO_KEYMAP, &map) == -1) X { X fprintf(stderr, "not a Xenix console\n"); X exit(1); X } X X for (i = 0; i < NUM_KEYS; ++i) X { X k = &map.key[i]; X X for (j = 0; j < ALT; ++j) X { X if (! (k->spcl & (0x80 >> j)) X && ! (k->spcl & (0x80 >> (j + ALT))) ) X k->map[j + ALT] = k->map[j] + 0x80; X } X } X X if (ioctl(0, PIO_KEYMAP, &map) == -1) X { X perror("SIO_KEYMAP"); X exit(1); X } X X exit(0); X} END_OF_FILE if test 780 -ne `wc -c <'metakeys.c'`; then echo shar: \"'metakeys.c'\" unpacked with wrong size! fi # end of 'metakeys.c' fi echo shar: End of shell archive. exit 0 -- Chip Salzenberg <chip@ateng.com> or <uunet!ateng!chip> A T Engineering Me? Speak for my company? Surely you jest! "It's no good. They're tapping the lines."