[comp.sys.apollo] Emacs-like key bindings for the DM

Ram-Ashwin@YALE.ARPA (Ashwin Ram) (04/01/88)

There seemed to be sufficient interest in response to my article
<25722@yale-celray.yale.UUCP> to justify my posting this package.  The following
is a SHAR file containing a bunch of files that emulate a set of Emacs-like key
bindings for the DM.  The basic control, ESC and ^X key sequences are
implemented.  Of course, there are little differences here and there (e.g., DM's
undo works differently; successive kills don't get appended to the kill-buffer),
but overall it seems to do a reasonable emulation.

To install:
-----------
Save the following file, then unpack it by running it as a /bin/sh shell script
in a directory ~/k (i.e., k in your home directory).  I needed a short name; 'k'
stands for 'keys'.

To use:
-------
CMDF the file ~/k/keys.  You can put this in your login sequence.

Documentation:
--------------
The Readme file describes the setup;  keys.hlp describes the key bindings (of
course, you could redefine stuff to look like your favorite Emacs if some of
these bindings are different from the ones you're used to);  the key sequence
^X? will print a brief description of a key sequence (e.g., to find out what
^X^V does, type ^X?^X^V).  This feature may be incomplete.

To gripe:
---------
Send e-mail to me -- ARPA:    Ram-Ashwin@cs.yale.edu
                     UUCP:    {decvax,ucbvax,harvard,cmcl2,...}!yale!Ram-Ashwin
                     BITNET:  Ram@yalecs
I appreciate feedback of all kinds -- comments, bug reports, suggestion, improvements.

---------------------------------   cut   -------------------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	Readme
#	c
#	ck
#	e
#	keys
#	keys.hlp
#	lk
#	shift_again
#	special_keys
#	uc
#	ue
#	ueb
#	uei
#	ux
#	uxb
#	uxd
#	uxi
#	x
#	xd
#	xde
#	xdx
# This archive created: Thu Mar 31 12:42:21 1988
export PATH; PATH=/bin:$PATH
echo shar: extracting "'Readme'" '(1867 characters)'
if test -f 'Readme'
then
	echo shar: will not over-write existing file "'Readme'"
else
sed 's/^	X//' << \SHAR_EOF > 'Readme'
	XA set of Emacs-like key bindings for the DM.
	X--------------------------------------------
	XCopyright (c) Ashwin Ram, 1987.
	XFree distribution permitted.
	X
	XDirect queries, bugs and suggestions to <Ram-Ashwin@cs.yale.edu> or <Ram@yalecs.bitnet>.
	X
	XThis directory should be called ~/k (I needed a short name; 'k' stands for
	X'keys'.)  To set up the key bindings, do a CMDF ~/K/KEYS.  This can be done
	Xduring your login sequence.
	X
	XThe directory should contain the following files:
	X
	XReadme                      This file
	Xkeys.hlp                    Documentation and help file for normal keys
	X
	Xkeys                        The NORMAL keymap - initial key bindings
	Xck                          Default control keys (C- commands)
	Xlk                          Default letter keys (self-insert commands)
	Xspecial_keys                Put your L, R, F, N and mouse key bindings here.
	X
	Xe                           Puts you in the ESCAPE keymap (M- commands)
	Xue                          Returns you back to the NORMAL keymap
	Xuei                         Unimplemented escape keys
	Xueb                         Unbound escape keys
	X
	Xx                           Puts you in the EXTENDED keymap (^X commands)
	Xux                          Returns you back to the NORMAL keymap
	Xuxi                         Unimplemented extended keys
	Xuxb                         Unbound extended keys
	X
	Xxd                          Describe key (handles ^X? command)
	Xxdx                         Describe extended keys
	Xxde                         Describe escape keys
	Xuxd                         Returns you back to the NORMAL keymap
	X
	Xc                           Puts you in the MODE-SPECIFIC keymap (^C commands)
	Xuc                          Returns you back to the NORMAL keymap
	X
	XNaming conventions:
	Xk = key
	Xe = escape (ESC or M-)
	Xx = extended (^X)
	Xu = undo (back to normal)
	Xb = unbound
	Xi = unimplemented
	Xd = describe
SHAR_EOF
if test 1867 -ne "`wc -c < 'Readme'`"
then
	echo shar: error transmitting "'Readme'" '(should have been 1867 characters)'
fi
chmod +x 'Readme'
fi # end of overwriting check
echo shar: extracting "'c'" '(213 characters)'
if test -f 'c'
then
	echo shar: will not over-write existing file "'c'"
else
sed 's/^	X//' << \SHAR_EOF > 'c'
	Xmsg '^C-'
	X
	Xkd ^G cmdf ~/k/uc;msg'Aborted' ke
	X
	Xkd ^C cmdf ~/k/uc;xc ke
	X
	Xkd 'e' cmdf ~/k/uc;xc;(19,985)tr;cms;dr;xp;pb;tb;tr ke
	Xkd ^E  cmdf ~/k/uc;\%[ ]*@@n\;ad;cms;dr;/%[ ]*@@n/;xc;(19,985)tr;cms;dr;xp;pb;tb;tr ke
SHAR_EOF
if test 213 -ne "`wc -c < 'c'`"
then
	echo shar: error transmitting "'c'" '(should have been 213 characters)'
fi
chmod +x 'c'
fi # end of overwriting check
echo shar: extracting "'ck'" '(554 characters)'
if test -f 'ck'
then
	echo shar: will not over-write existing file "'ck'"
else
sed 's/^	X//' << \SHAR_EOF > 'ck'
	Xkd ^X  cmdf ~/k/x ke
	Xkd ESC cmdf ~/k/e ke
	X
	Xkd ^A tl ke
	Xkd ^B \[~@@f]\ ke
	Xkd ^C cmdf ~/k/c ke
	Xkd ^D ed ke
	Xkd ^E tr ke
	Xkd ^F /[~@@f]/ ke
	Xkd ^G abrt ke
	Xkd ^H \[~@@f]\;ed ke
	Xkd ^I th ke
	Xkd ^J en;tl ke
	Xkd ^K cms;dr;tr;xc;rm;gm;rm;so/??*/|/;ed;dr;tl;gm ke
	Xkd ^L rs ke
	Xkd ^M en;tl ke
	Xkd ^N ad ke
	Xkd ^O en;au;tr ke
	Xkd ^P au ke
	Xkd ^Q dq ke
	Xkd ^R tdm;tl;dr;tr;xd dm_save;rm;es'\';xp search;tr;es'\';en ke
	Xkd ^S tdm;tl;dr;tr;xd dm_save;rm;es'/';xp search;tr;es'/';en ke
	Xkd ^T cms;dr;echo ke
	Xkd ^U pp -0.5 ke
	Xkd ^V pp 0.5 ke
	Xkd ^W xd;cms ke
	Xkd ^Y xp ke
	Xkd ^Z eef ke
SHAR_EOF
if test 554 -ne "`wc -c < 'ck'`"
then
	echo shar: error transmitting "'ck'" '(should have been 554 characters)'
fi
chmod +x 'ck'
fi # end of overwriting check
echo shar: extracting "'e'" '(2076 characters)'
if test -f 'e'
then
	echo shar: will not over-write existing file "'e'"
else
sed 's/^	X//' << \SHAR_EOF > 'e'
	Xmsg 'ESC-'
	X
	Xkd ESC cmdf ~/k/uei ke
	Xkd ^G  cmdf ~/k/ue;msg'Aborted' ke
	X
	Xkd 'a' cmdf ~/k/ue;\[.?!][~a-zA-Z0-9]\ ke
	Xkd 'b' cmdf ~/k/ue;\[a-zA-Z0-9]\;\[~a-zA-Z0-9]\;/[a-zA-Z0-9]/ ke
	Xkd 'c' cmdf ~/k/ue;xc @&'Copy to buffer: ' ke
	Xkd 'd' cmdf ~/k/ue;cms;dr;/[~a-zA-Z0-9]/;xd ke
	Xkd 'e' cmdf ~/k/ue;/[.?!][~a-zA-Z0-9]/;/[a-zA-Z0-9]/ ke
	Xkd 'f' cmdf ~/k/ue;/[~a-zA-Z0-9]/;/[a-zA-Z0-9]/ ke
	Xkd 'g' cmdf ~/k/ue;@&'Go to line: ' ke
	Xkd 'h' cmdf ~/k/ue;cms;dr;\[a-zA-Z0-9]\;\[~a-zA-Z0-9]\;/[a-zA-Z0-9]/;xd ke
	Xkd 'i' cmdf ~/k/ueb ke
	Xkd 'j' cmdf ~/k/ueb ke
	Xkd 'k' cmdf ~/k/ue;cms;dr;tr;xd @&'Delete to buffer: ';tl;gm;cms ke
	Xkd 'l' cmdf ~/k/ueb ke
	Xkd 'm' cmdf ~/k/ue;ro ke
	Xkd 'n' cmdf ~/k/ue;/%[ ]*@@n/;ad ke
	Xkd 'o' cmdf ~/k/ue;ei ke
	Xkd 'p' cmdf ~/k/ue;au;\%[ ]*@@n\;ad ke
	Xkd 'q' cmdf ~/k/ue;cmdf ~k/qr ke
	Xkd 'r' cmdf ~/k/ue;tdm;tl;dr;tr;xd dm_save;rm;es'@&'Reverse search for: @'';tl;dr;tr;xd search;rm;es'\';xp search;tr;es'\';en ke
	Xkd 's' cmdf ~/k/ue;tdm;tl;dr;tr;xd dm_save;rm;es'@&'Forward search for: @'';tl;dr;tr;xd search;rm;es'/';xp search;tr;es'/';en ke
	Xkd 't' cmdf ~/k/ueb ke
	Xkd 'u' cmdf ~/k/ue;undo ke
	Xkd 'v' cmdf ~/k/ue;pv -1 ke
	Xkd 'w' cmdf ~/k/ue;xd @&'Delete to buffer: ';cms ke
	Xkd 'x' cmdf ~/k/ue;tdm;ph -1000;tb;tr ke
	Xkd 'y' cmdf ~/k/ue;xp @&'Yank from buffer: ' ke
	Xkd 'z' cmdf ~/k/ueb ke
	X
	Xkd ' ' cmdf ~/k/ue;gm ke
	Xkd CR  cmdf ~/k/ue;es'|';al;en;tl;s/%[ ]*|[ ]*/|/;au;es'|';al;dr;/[~ ]/;xc indent;tl;ed;ad;xp indent;ed;\$\;/|/;ed ke
	Xkd TAB cmdf ~/k/ue;[,@&'Go to column: '] ke
	Xkd '$' cmdf ~/k/ue;cmdf ~/user_data/start_shell ke
	Xkd '^' cmdf ~/k/uei ke
	Xkd '!' cmdf ~/k/uei ke
	Xkd '?' cmdf ~/k/ue;(0,110)dr;(1279,996)cv ~/k/keys.hlp ke
	Xkd ',' cmdf ~/k/ue;pt;tt;tl ke
	Xkd '.' cmdf ~/k/ue;pb;tb;tr ke
	Xkd '<' cmdf ~/k/ue;tt;tl ke
	Xkd '>' cmdf ~/k/ue;tb;tl ke
	Xkd '@'' cmdf ~/k/eq ke
	X
	Xkd ';' cmdf ~k/ue;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;s/@%/@;@; / ke
	Xkd '#' cmdf ~k/ue;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;s/@%/@# / ke
	Xkd '*' cmdf ~k/ue;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;s/@%/@* / ke
	Xkd '%' cmdf ~k/ue;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;s/@%/@% / ke
	X
	Xkd 'i' cmdf ~/k/ue; icon ke
	X
SHAR_EOF
if test 2076 -ne "`wc -c < 'e'`"
then
	echo shar: error transmitting "'e'" '(should have been 2076 characters)'
fi
chmod +x 'e'
fi # end of overwriting check
echo shar: extracting "'keys'" '(875 characters)'
if test -f 'keys'
then
	echo shar: will not over-write existing file "'keys'"
else
sed 's/^	X//' << \SHAR_EOF > 'keys'
	X;# Top level key bindings file for Emacs emulation on DM.
	X;# Ashwin Ram, 1987.
	X
	Xmsg 'Keys...'
	Xcmdf /sys/dm/std_keys3          ;# standard key defs
	X
	X;# Ascii keys.
	X
	Xkd ')' bl () ke
	Xkd '}' bl {} ke
	Xkd ']' bl [] ke
	X
	X;# Common special-function keys.
	X
	Xkd BS \[~@@f]\;ed ke            ;# ^H
	Xkd CR en;tl ke                  ;# ^M
	Xkd DEL \[~@@f]\;ed ke           ;# ^?
	Xkd TAB th ke                    ;# ^I
	Xkd STAB thl ke                  ;# shift-TAB
	Xkd ^TAB ke                      ;# control-TAB
	X
	X;# Weird control keys.
	X
	Xkd '^?' \[~@@f]\;ed ke          ;# DELETE
	Xkd '^[' cmdf ~/k/e ke           ;# ESCAPE
	X# kd '^]' ke
	X# kd '^|' ke
	X# kd '^~' ke
	X
	X;# Control keys.
	X
	Xkd '^\' msg'Undo!'; undo ke
	Xcmdf ~/k/ck
	X
	X;# Keymaps.
	X
	Xkd ^X  cmdf ~/k/x ke            ;# "eXtended"
	Xkd ESC cmdf ~/k/e ke            ;# "ESCape"
	X
	X;# Special keys (irrelevant to Emacs emulation).
	X
	Xcmdf ~/k/special_keys
SHAR_EOF
if test 875 -ne "`wc -c < 'keys'`"
then
	echo shar: error transmitting "'keys'" '(should have been 875 characters)'
fi
chmod +x 'keys'
fi # end of overwriting check
echo shar: extracting "'keys.hlp'" '(18033 characters)'
if test -f 'keys.hlp'
then
	echo shar: will not over-write existing file "'keys.hlp'"
else
sed 's/^	X//' << \SHAR_EOF > 'keys.hlp'
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                                                  Moving around.
	X        ___________________________________________________________________________________________________________________________________
	X        
	X        
	X                                                                         ^
	X                                                       < is visual left  |  esc < = beginning of page
	X                                                       , is under <      |  esc , = beginning of file
	X                                                                         |
	X        
	X                                                                         ^
	X                                                                U for Up |  ^U    = scroll upwards one page/screen
	X                                                                         |  esc ^ = move current line to top of page
	X                                                                         |
	X                                                                         |
	X        
	X                                                                         ^
	X                                                         P for Previous  |  ^P    = previous line
	X                                                                         |  esc P = previous paragraph
	X                                                                         |  ^X ^P = previous window
	X                                                                         |
	X                                                                         |
	X           |  A is the beginning              B for Backward             |   F for Forward                     E for End               |
	X           |<-----------------------------  <--------------------------  =  -------------------------->  ----------------------------->|
	X           | ^A    = beginning of line       ^B    = backward-character  |  ^F    = forward-character         ^E    = end of line      |
	X             esc A = beginning of sentence   esc B = backward-word       |  esc F = forward-word              esc E = end of sentence
	X                                                                         |
	X                                                                         |  esc TAB = tab to column n
	X                                                             G for Goto  |  esc G   = go to line n
	X                                                                         |
	X                                                             N for Next  |  ^N    = next line
	X                                                                         |  esc N = next paragraph
	X                                                                         |  ^X ^N = next window
	X                                                                         v
	X        
	X                                                                         |
	X                                                                         |
	X                                                         V for Vertical  |  ^V    = scroll downwards one page/screen
	X                                                                         v
	X        
	X                                                                         |
	X                                                      > is visual right  |  esc > = end of page
	X                                                      . is under >       |  esc . = end of file
	X                                                                         v
	X        
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                                      Insertion, deletion, mark, cut and paste
	X        ___________________________________________________________________________________________________________________________________
	X        
	X        
	X                                                                         ^
	X                                                                         |
	X           |                                ^H is ascii backspace        |   D for Delete                  K for Kill                  |
	X           |<----------------------------  <---------------------------  =  --------------------------->  ---------------------------->|
	X           |                                ^H    = delete previous char |  ^D    = delete next char       ^K    = kill to end of line |
	X                                            esc H = delete previous word |  esc D = delete next word       esc K = .. into named buffer
	X                                                                         |  ^X ^D = delete whitespace
	X                                                                         |
	X                                                                         |
	X                                                   ^M is ascii return    |  ^M     = newline (RETURN)
	X                                                                         |  esc ^M = newline and indent to suitable column (esc RETURN)
	X                                                    O for Open           |  ^O     = open line (newline and backup)
	X                                                                         |  esc O  = open line (split line vertically)
	X                                                                         v
	X        
	X        
	X                                                                        MARK
	X        
	X                                                       ^@ or ^space      = mark/select (^T on the Apollos)
	X                                                       ^X^@ or ^X^space  = mark current paragraph (^X-space on the Apollos)
	X                                                       esc space         = escape to mark (exchange mark and cursor)
	X        
	X        
	X                        WIPE/CUT                                        COPY                                  YANK/PASTE
	X        
	X                     ^W    = wipe region                      ^C or ^C^C = copy region                      ^Y    = yank 
	X                     esc W = .. into named buffer                  esc C = .. into named buffer             esc Y = .. from named buffer
	X                                                                                                            ^X^Y = yank earlier kill(s)
	X        
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                                                 Search and replace
	X        ___________________________________________________________________________________________________________________________________
	X        
	X        
	X                                                               ^G = abort/quit search
	X        
	X           |                                 R for Reverse                   S for Search                                              |
	X           |<----------------------------  <---------------------------  =  --------------------------->  ---------------------------->|
	X           |                                esc R = reverse search       |  esc S = search                                             |
	X                                            ^R    = repeat ..            |  ^S    = repeat ..
	X                                                 or,                     |       or,
	X                                            ^R    = reverse isearch      |  ^S    = incremental search
	X                                            esc^R = reverse re-isearch   |  esc^S = reverse regexp incremental search
	X                                                                         |
	X                                                            Q for Query  |  esc Q = query replace from cursor till end of file
	X                                                                         |          options: space/return/Yes/Replace
	X                                                                         |                   No/Skip
	X                                                                         |                   !/Go/All
	X                                                                         |                   ^G/Quit/Abort
	X                                                                         |                   ./Exit
	X                                                                         |                   ?/Help
	X                                                                         |  esc ^Q = query replace w/ regular expressions (for Emacs)
	X                                                                         v
	X        
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                                             Windows, files and buffers
	X        ___________________________________________________________________________________________________________________________________
	X        
	X        KEY         MNEMONIC                       FUNCTION
	X        
	X        ^X ^P       P for Previous                 change to previous window
	X        ^X ^N       N for Next                     change to next window
	X        ^X 2        make 2 windows                 split current window in two
	X        ^X 1        make this window the only 1    delete all other windows
	X        ^X 0        make this window non-existent  delete current window
	X        ^X +        + for bigger                   make this window bigger
	X        ^X -        - for smaller                  make this window smaller
	X        
	X        ^X^Z        ^Z is usually exit; ^Z is eof  exit after writing all changed buffers
	X        ^X^Q        Q for Quit; ^Q is interrupt    abort or quit editor without writing out any buffers
	X        ^X^S        S for Save-file                save current file without exiting
	X        ^X^V        V for Visit-file               go to and edit (or read) another file (prompt for file name; CR = previous)
	X        ^C^V        V for Visit                    go to and edit file in which given thing is defined
	X        ^X^O        O for Other/Open               visit file in other window
	X        ^C^O        O for Other                    go to and edit file in other window in which given thing is defined
	X        ^X^B        B for Buffer                   go to another buffer (prompt for buffer name; CR = previous)
	X        ^X^I        I for Insert                   insert a file into current buffer at this point
	X        ^X^R        R for Read                     read new file into current buffer (erasing current contents)
	X        ^X^W        W for Write                    write current buffer to named file (prompt for file name)
	X        ^X B        B for Buffer                   list all the buffers
	X        ^X^K        K for Kill                     kill current buffer
	X        
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                                                  Text formatting
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                    WORD                                                  REGION
	X        
	X              ^X^L = convert current word to Lower case                   ^X L = convert marked region to Lower case
	X              ^X^U = convert current word to Upper case                   ^X U = convert marked region to Upper case
	X              ^X^C = Capitalize current word                              ^X C = Capitalize marked region
	X        
	X                                  PARAGRAPH                                               REGION
	X        
	X              ^X^F = Fill current paragraph                               ^X F = Fill marked region
	X              ^X^J = Justify current paragraph                            ^X J = Justify marked region
	X              ^X^T = Text process current paragraph (prompt for command)  ^X T = Text process marked region (prompt for command)
	X                     Commands:  Fill, Justify, Underline, Center, Spell, Count, ...
	X                     esc =      Complete current word by looking up in a dictionary
	X        
	X        ___________________________________________________________________________________________________________________________________
	X        
	X                                                                   Miscellaneous
	X        ___________________________________________________________________________________________________________________________________
	X        
	X        
	X                   KEY         MNEMONIC                       FUNCTION
	X                   
	X        Quote      esc '       escape-to-quote                quote next character (insert next character literally into file)
	X                   ^Q          Q for Quote                    quote next character (insert next character literally into file)
	X                   
	X        Modes      esc O       O for Overwrite                toggle between insert and overwrite modes
	X                   esc M       M for Mode                     toggle between read-only (browse) and read-write (edit) modes
	X                   esc T       T for Text                     text processing mode (word wrap on, etc.)
	X                   
	X                   ^X M        M for Mode                     add mode (prompt for mode name)
	X                   ^X^M        M for Mode                     delete mode (prompt for mode name)
	X        
	X                   ^C          C for Command prefix           prefixes mode-specific commands in special modes
	X
	X        Undo       ^\          Slash back-wards               undo last command
	X                   esc U       U for Undo                     undo last command (in case terminal doesn't have ^\)
	X        
	X        Trouble?   ^G          ^G is BELL in ascii            cancel/abort current command (^G always gets you out of trouble)
	X                   ^L          ^L is ascii formfeed/newpage   refresh/redraw screen
	X                   esc ?       ? for help                     help (same as ^X?)
	X                   ^X ?        ? for help                     help
	X                   ^X ? ?      ? for help                     help on help (tells you how to get help)
	X                   ^X ? a      A for Apropos                  help - apropos (list everything matching what you type in)
	X                   ^X ? b      B for Bindings                 help - describe bindings (list all key bindings)
	X                   ^X ? f      F for Function                 help - describe function (type in function you want described)
	X                   ^X ? k      K for Key                      help - describe key (hit the key you want described)
	X                   ^X ? m      M for Mode                     help - describe mode (describe the current mode you're in)
	X                   ^X ? v      V for Variable                 help - describe variable (type in variable you want described)
	X        
	X        Macros     ^X (        ( for start                    start recording keyboard macro
	X                   ^X )        ) for end                      stop recording keyboard macro
	X                   ^X^E        E for Execute                  execute keyboard macro
	X        
	X        Commands   esc X       X for eXecute                  execute a typed in command line
	X                   esc ^X      X for eXecute                  repeat previous (or earlier) command
	X                   esc esc                                    eval emacs lisp expression
	X        Arguments  esc <n>     n = numeric argument           repeat next command <n> times; pass <n> as an argument to next command
	X                   ^X ^A       A for Argument                 universal argument (may alter behavior of next command)
	X        
	X        Cursor     ^X =                                       position report (show cursor position)
	X        
	X        Comments   esc ;                                      comment current paragraph with ; in first column (for T, etc.)
	X                   esc #                                      comment current paragraph with # in first column (for DM and shell, etc.)
	X                   esc *                                      comment current paragraph with * in first column (for Fortran, etc.)
	X                   esc %                                      comment current paragraph with % in first column (for Tex, etc.)
	X        
	X        OS/Shell   esc $       $ is the usual shell prompt    send a shell command to the operating system or start a shell process
	X                   ^Q          Q for Quit                     interrupt (AEGIS convention)
	X                   ^C          C for Cancel                   interrupt (UNIX convention)
	X                   ^Y                                         interrupt (VMS convention)
	X                   ^Z          Z is the end                   end-of-file (common convention in many OS's)
	X                   ^S          S for Stop Scrolling           stop scrolling
	X                   ^Q                                         restart scrolling
	X
	X        User keys  ^Z          (easy to hit)                  slot for user-defined keys (define them as ^Z-something)
	X                   ^C          C for Command prefix           prefixes mode-specific commands in special modes (commands are ^C-something)
	X        ___________________________________________________________________________________________________________________________________
	X
SHAR_EOF
if test 18033 -ne "`wc -c < 'keys.hlp'`"
then
	echo shar: error transmitting "'keys.hlp'" '(should have been 18033 characters)'
fi
chmod +x 'keys.hlp'
fi # end of overwriting check
echo shar: extracting "'lk'" '(261 characters)'
if test -f 'lk'
then
	echo shar: will not over-write existing file "'lk'"
else
sed 's/^	X//' << \SHAR_EOF > 'lk'
	Xkd 'a' ke
	Xkd 'b' ke
	Xkd 'c' ke
	Xkd 'd' ke
	Xkd 'e' ke
	Xkd 'f' ke
	Xkd 'g' ke
	Xkd 'h' ke
	Xkd 'i' ke
	Xkd 'j' ke
	Xkd 'k' ke
	Xkd 'l' ke
	Xkd 'm' ke
	Xkd 'n' ke
	Xkd 'o' ke
	Xkd 'p' ke
	Xkd 'q' ke
	Xkd 'r' ke
	Xkd 's' ke
	Xkd 't' ke
	Xkd 'u' ke
	Xkd 'v' ke
	Xkd 'w' ke
	Xkd 'x' ke
	Xkd 'y' ke
	Xkd 'z' ke
	X
SHAR_EOF
if test 261 -ne "`wc -c < 'lk'`"
then
	echo shar: error transmitting "'lk'" '(should have been 261 characters)'
fi
chmod +x 'lk'
fi # end of overwriting check
echo shar: extracting "'shift_again'" '(1587 characters)'
if test -f 'shift_again'
then
	echo shar: will not over-write existing file "'shift_again'"
else
sed 's/^	X//' << \SHAR_EOF > 'shift_again'
	X# Borrowed shift-AGAIN from Eric Jones.
	X# Fixed to work on following prompts ending in > (for T, AZ), $ (for Aegis shells), % (for Unix shells).
	X# Fixed to work on prompts of one or more characters.
	X# Ashwin Ram, 2/16/87.
	X
	X# kd R2s cms                    ;# This is replaced by a GM for successive shift-AGAINs, to get successively earlier inputs.
	X#        au;tr;\[~@n >$%]\;     ;# Find first non-empty input line with some non-prompt character in it.
	X#        \%[~ ]*[>$%] \;dr;     ;# Search up for corresponding prompt, mark it for successive shift-AGAINs.
	X#        / /;/?/;               ;# Search for input line to copy (may be on a later line than the prompt).
	X#        dr;tr;xc again;rm;tl;  ;# Copy the line.
	X#        ti;dr;tr;xd junk;rm;   ;# Delete junk from the input line. This is replaced by an UNDO in successive shift-AGAINs to restore the original input window.
	X#        xp again;tr            ;# Paste in the newly retrieved line.
	X# ke                            ;#
	X# kd CR
	X#       ...                     ;# Redefine shift-AGAIN for successive shift-AGAINs.
	X#       ..                      ;# CR to redefine both shift-AGAIN and CR back to their earlier definitions.
	X# ke
	X
	Xkd R2s cms;au;tr;\[~@@n >$%]\;\%[~ ]*[>$%] \;dr;/ /;/?/;dr;tr;xc again;rm;tl;ti;dr;tr;xd junk;rm;xp again;tr ke
	X
	Xkd R2u kd R2s gm;au;tr;\[~@@@@n >$%]\;\%[~ ]*[>$%] \;dr;/ /;/?/;dr;tr;xc again;rm;tl;ti;undo;tr;xp again;tr ke@;
	X   kd cr kd R2s cms;au;tr;\[~@@@@@@@@n >$%]\;\%[~ ]*[>$%] \;dr;/ /;/?/;dr;tr;xc again;rm;tl;ti;dr;tr;xd junk;rm;xp again;tr ke@@;
	X         kd cr en;tl ke@@;en;tl ke ke
	X
SHAR_EOF
if test 1587 -ne "`wc -c < 'shift_again'`"
then
	echo shar: error transmitting "'shift_again'" '(should have been 1587 characters)'
fi
chmod +x 'shift_again'
fi # end of overwriting check
echo shar: extracting "'special_keys'" '(11519 characters)'
if test -f 'special_keys'
then
	echo shar: will not over-write existing file "'special_keys'"
else
sed 's/^	X//' << \SHAR_EOF > 'special_keys'
	X;####################################################################################################
	X;# Key bindings for L, R, F and N keys.
	X;####################################################################################################
	X
	Xcmdf ~/dm/keys/alt                                  ;# f0 is "alt" key
	X
	X;####################################################################################################
	X;# Left keypad.
	X
	Xkd L1 cms;dr;echo ke                                      ;# MARK                  = ^T
	Xkd L1s cms;dr;echo -r ke                                  ;# shift-MARK = rectangular cut/paste
	Xkd L2 cms;tl;xd ke                                        ;# LINE DEL              = ^A ^N ^W
	Xkd L2s xp ke                                              ;# shift LINE DEL        = ^Y (undo LINE DEL)
	Xkd L3 ed ke                                               ;# CHAR DEL              = ^D
	Xkd L3s ed ke                                              ;# shift CHAR DEL        = ^D
	Xkd L1a xc ke                                              ;# COPY                  = ^C
	Xkd L1as xd ke                                             ;# CUT                   = ^W
	Xkd L2a cms;dr;xp ke                                       ;# PASTE                 = ^Y
	Xkd L2as msg'Undo!';undo ke                                ;# UNDO                  = ^\ and esc-u
	Xkd L3a abrt;wge ke                                        ;# GROW                  = window grow
	Xkd L3as abrt;wme ke                                       ;# MOVE                  = window move
	Xkd L4 tl ke                                               ;# |<--                  = ^A
	Xkd L4s pt;tt;tl ke                                        ;# shift |<--            = esc <
	Xkd L5 tdm;ph -1000;tb;tr ke                               ;# CMD                   = esc x
	Xkd L5s cmdf ~/user_data/start_shell ke                    ;# SHELL                 = start shell
	Xkd L6 tr ke                                               ;# -->|                  = ^E
	Xkd L6s pb;tb;tr ke                                        ;# shift -->|            = esc >
	Xkd L7 ph -10 ke                                           ;# left-box-arrow        = scroll left
	Xkd L7s \[a-zA-Z0-9]\; \[~a-zA-Z0-9]\; /[a-zA-Z0-9]/ ke    ;# shift left-box-arrow  = esc b
	Xkd L9 ph 10 ke                                            ;# right-box-arrow       = scroll right
	Xkd L9s /[~a-zA-Z0-9]/; /[a-zA-Z0-9]/ ke                   ;# shift right-box-arrow = esc f
	Xkd LB tn ke                                               ;# NEXT WINDOW           = ^X ^N
	Xkd LBs tlw ke                                             ;# shift NEXT WINDOW     = ^X ^P
	X
	X;####################################################################################################
	X;# Right keypad.
	X
	Xkd R1 wp ke                                               ;# POP                   = pop window
	Xkd R1s tni ke                                             ;# shift-POP             = to next icon
	Xkd R2 dr;tr;xc;tl;ti;tb;tr;xp;tr ke                       ;# AGAIN                 = resubmit line pointed to
	Xcmdf ~/k/shift_again                                      ;# shift AGAIN           = resubmit latest shell command (like doing AGAIN but saves you going up in transcript window)
	Xkd R3 cms;(550,110)dr;(1279,996)cv '@&'Read file: '' ke   ;# READ                  = read file (prompt for filename)
	Xkd R3s cmdf ~/dm/keys/shift_read ke                       ;# shift READ            = read file pointed to (incl. ` at beginning, and -)without destroying contents of DM command window
	Xkd R4 cms;(550,110)dr;(1279,996)ce '@&'Edit file: '' ke   ;# EDIT                  = ^X^V
	Xkd R4s msg'Saving...';pw;msg'' ke                         ;# SAVE                  = ^X^S
	Xkd R5 msg'Saving...';pw;msg'';wc -q ke                    ;# EXIT                  = ^X^F
	Xkd R5s wc -q ke                                           ;# ABORT                 = ^X^C
	Xkd R6 wh ke                                               ;# HOLD                  = toggle hold mode (window display freeze)
	X
	Xkd R6s cms; (550,110)dr;(1279,996)
	X       cv /sys/help/@&'Help on: '.hlp
	Xke                                                        ;# HELP                  = help on shell or dm command
	X
	X# kd R6s tdm;tl;dr;tr;xd dm_save;rm;es'@&'Help on: @'';tl;dr;tr;xd help;rm;
	X#        es'cv /sys/help/';xp help;tr;es'.hlp';en;
	X#        es'cv /usr/man/cat1/';xp help;tr;es'.1';en
	X# ke                                                        ;# HELP                  = help on shell or dm command
	X
	X;####################################################################################################
	X;# Function keypad.
	X
	X;##### Alternate keys (see ~/k/alt):
	X    ;#  f0  Alt-
	X
	X;##### Move cursor to preset locations on screen (leave mark at previous position):
	X    ;#  f1  command line of primary_shell or t_shell (lower left)
	X    ;#  f2  center of edit window (right)
	X    ;#  f3  command line of mail, msgs, etc. or end of edit window (lower right)
	X    ;#  f4  command line of login_shell (upper right)
	X
	Xkd f1 dr;(19,985)pb;tb;tr ke
	Xkd f2 dr;(910,585) ke
	Xkd f3 dr;(1277,994)pb;tb;tr ke
	Xkd f4 dr;(1193,103)pb;tb;tr ke
	X
	X;##### Move/grow/reshape windows to preset positions/sizes/shapes.
	X    ;#  ^f1  expand edit window incrementally (80 columns, 120 columns, etc.)
	X    ;#  ^f2  contract edit window incrementally
	X    ;#  ^f3
	X    ;#  ^f4
	X
	Xkd ^f1 (1000,762);tl;as 162;dr;al;wg;as;tl ke
	Xkd ^f2 (1000,762);tl;as 152;dr;ar;wg;as;tl ke
	Xkd ^f3 ke
	Xkd ^f4 ke
	X
	X;##### Paragraphs and word processing.
	X    ;#  f5    mark current paragraph
	X    ;#  f5s   justify marked region
	X    ;# ^f5    fill marked region
	X    
	Xkd f5 \%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;ad ke
	Xkd f5s xd -f ~/dm_format.in; rm; wi -w dm_format; es 'f 78'; en ke
	Xkd ^f5 xd -f ~/dm_format.in; rm; wi -w dm_format; es 'j 78'; en ke
	X
	X;##### Paren balancing.
	X    ;# f6s is right above ) which is shift-9.
	X
	Xkd f6s es')' ke
	X
	Xkd f6 ke
	Xkd ^f6 ke
	X
	X;##### Process control.
	X    ;#  f7   icon send_listener window
	X    ;# ^f7   kill send_alarm window
	X    ;#  f7s  icon/pop emacs window
	X
	Xkd f7 dr;icon -c 'l' send_listener;gm ke
	Xkd ^f7 dr;(573,94)wc -q;gm ke
	Xkd f7s icon -c 'e' emacs ke
	X
	X;##### Indentation commands.
	X    ;#  f8   indent block of text to column of cursor (like ^f8 but for a whole procedure)
	X    ;#               (insert working line and mark desired column
	X    ;#                move to column in working line below beginning of text
	X    ;#                spaces to be inserted are now marked -- cut and delete line
	X    ;#                mark to end of procedure (who knows why extra au's needed?)
	X    ;#                create shell command to indent)
	X    ;#  f8s  unindent ditto (i.e., leftwards)
	X    ;#                (put spaces to delete in paste buffer
	X    ;#                 mark to end of procedure
	X    ;#                 create shell cmd to unindent)
	X    ;#  f9   newline-and-indent (same as ^J) (move to next line and indent to under start of previous line)
	X    ;#                (it's f8 because that's where the linefeed key usually is; also, it's near return)
	X    ;#                 (I inserted one | so that this doesn't break if I'm at the end of the file)
	X    ;#                 (I inserted the other | so that this doesn't break if I have to indent to the first column)
	X    ;#  f9s   fix indentation (change indentation of line to location of cursor and move to the next line)
	X    ;#                (insert a working line
	X    ;#                 cut spaces out of working line up to column of cursor
	X    ;#                 delete leading spaces from old line
	X    ;#                 paste new spaces in and delete working line)
	X
	Xkd f8 cms;dr;tr;en;gm;ad;al;es' ';dr;
	X      tl;au;/[~ ]/;ad;
	X      xc indent;tl;xd junk;dr;
	X      tdm;es's/@@@@n/@@@@n';xp indent;tr;es'/;gm';
	X      gm;au;au;tr;dr;echo;/%[ ]*@@n/;au ke
	X
	Xkd f8s cms;dr;/[~ ]/;xc indent;
	X       tdm;es's/@@@@n';xp indent;tr;es'/@@@@n/;gm';
	X       gm;au;tr;dr;echo;/%[ ]*@@n/;au ke
	X
	X# kd f9 es'|'; al; en; tl; s/%[ ]*|[ ]*/|/;
	X#       au; es'|'; al; dr; /[~ ]/; xc indent; tl; ed;
	X#       ad; xp indent; ed;
	X#       \$\; /|/; ed ke
	X
	Xkd f9 es' ';al;dr;tr;xd indent;en;au;tl;es' ';tl;/[~ ]/;ee;ad;xp indent;ed ke
	X
	Xkd f9s dr;tr;en;gm;
	X       ad;al;es' ';dr;tl;xc indent;
	X       au;s/%[ ]*//;
	X       xp indent;ad;tl;xd indent;gm ke
	X
	X;##### case conversion
	X    ;#  f3   convert current word to lower-case
	X    ;#  f3s  convert current word to upper-case
	X    ;# ^f3   convert current word to upper-lower-case (Capitalized)
	X    
	X;# kd f3  dr;
	X;#            \[~a-zA-Z0-9._@@-]\; /[a-zA-Z0-9._@@-]/;
	X;#            dr;
	X;#                /[~a-zA-Z0-9_@@-]/;
	X;#                case -l;
	X;#        gm
	X;# ke
	X
	X;# kd f3s dr;
	X;#            \[~a-zA-Z0-9._@@-]\; /[a-zA-Z0-9._@@-]/;
	X;#            dr;
	X;#                /[~a-zA-Z0-9._@@-]/;
	X;#                case -u;
	X;#        gm
	X;# ke
	X
	X;# bug: why does ^f3 not get me back to my original cursor position, when
	X;# f3 and f3s do?  For now, I'll end up at the next word.  This actually
	X;# turns out to be kind of nice.
	X
	X;# kd ^f3 dr;
	X;#            \[~a-zA-Z0-9._@@-]\; /[a-zA-Z0-9._@@-]/;
	X;#            /?/;
	X;#            dr;
	X;#                /[~a-zA-Z0-9._@@-]/;
	X;#                case -l;
	X;#            \[~a-zA-Z0-9._@@-]\; /[a-zA-Z0-9._@@-]/;
	X;#            dr;
	X;#               /?/; case -u;
	X;#        gm;
	X;#        /[~a-zA-Z0-9._@@-]/; /[a-zA-Z0-9._@@-]/
	X;# ke
	X
	X;####################################################################################################
	X;# Numeric keypad.
	X
	Xkd npe tl;es'$ ';tr;en;tl ke     ;# "Recognize" (name completion)
	X
	X;####################################################################################################
	X;# Mouse and touchpad.
	X
	Xkd m1  icon ke
	Xkd m1u ke
	Xkd m2  wp ke
	Xkd m2u ke
	Xkd m3  cmdf ~/dm/keys/shift_read ke
	Xkd m3u ke
	X
	X;####################################################################################################
	X;# Tabs.
	X
	Xts 5 -r
	X
	X;####################################################################################################
	X;# Unused but possibly useful stuff.
	X
	X;##### justification keys
	X    ;# insert carriage return (^j) or "tab return" (^k)
	X    ;# delete trailing blanks on this line (line x)
	X    ;# reduce leading blanks to one on line x+1
	X    ;# go back to line x, delete carriage return at end of line
	X    ;# find last blank before column 80
	X    ;# ^h starts the process from anywhere in a short line
	X    ;# ^l starts the process from anywhere in a long line
	X
	X;# kd ^j en;s/[ ]*$//;ad;s/%[ ]*/ /;au;tr;ed;[,80];\ \;ar ke
	X;# kd ^k en;s/%[ ]*//;au;dr;/[~ ]/;xc;tl;ad;xp;
	X;#       s/[ ]*$//;ad;s/%[ ]*/ /;au;tr;ed;[,80];\ \ ke
	X;# kd ^h tl;s/[ ]*$//;ad;s/%[ ]*/ /;au;tr;ed;[,80];\ \;ar ke
	X;# kd ^l [,80];\ \;ar ke
	X
	X;##### submit current pararaph to primary_shell or t_shell
	X
	X;# kd ^f5 \%[ ]*@@n\;ad;cms;dr;/%[ ]*@@n/;xc;(19,762)tr;cms;dr;xp;pb;tb;tr ke
	X
	X;#### jim: wd if dir, otherwise ce or cv (according to rights).  See ~/com/jim.
	X
	X;# kd ^f6 /[~a-zA-Z._:$0-9@@/@@\~]/dr; \[~a-zA-Z._:$0-9@@/@@\~]\;/?/
	X;#    xc cv_file;
	X;#    ti;tl;xd junk;
	X;#    es 'jim ';xp cv_file;
	X;#    tr;en ke
	X
	X;##### indentation stuff
	X    ;#  f8s  soft cr (insert a | in the line to mark the start of the previous line, 
	X    ;#                and then search it for a non-blank. Then delete the |. To get the start 
	X    ;#                of a line right, insert one space and then delete that too. 
	X
	X;# kd f8s tl;/[~ ]/;ad;es '|';tl;es ' ';tl;/[~ ]/;al;so/|//;/[~ ]/;al;ed ke
	X
	X;####################################################################################################
SHAR_EOF
if test 11519 -ne "`wc -c < 'special_keys'`"
then
	echo shar: error transmitting "'special_keys'" '(should have been 11519 characters)'
fi
chmod +x 'special_keys'
fi # end of overwriting check
echo shar: extracting "'uc'" '(119 characters)'
if test -f 'uc'
then
	echo shar: will not over-write existing file "'uc'"
else
sed 's/^	X//' << \SHAR_EOF > 'uc'
	Xmsg ''
	X
	Xkd ^G abrt ke
	X
	Xkd ^C cmdf ~/k/c ke
	X
	Xkd 'e' ke
	Xkd ^E tr ke
	X
	Xkd ^A tl ke
	Xkd ^Z eef ke
	X
	Xkd ^V pp 0.5 ke
	Xkd 'v' ke
SHAR_EOF
if test 119 -ne "`wc -c < 'uc'`"
then
	echo shar: error transmitting "'uc'" '(should have been 119 characters)'
fi
chmod +x 'uc'
fi # end of overwriting check
echo shar: extracting "'ue'" '(229 characters)'
if test -f 'ue'
then
	echo shar: will not over-write existing file "'ue'"
else
sed 's/^	X//' << \SHAR_EOF > 'ue'
	Xmsg ''
	X
	Xcmdf ~/k/lk
	X
	Xkd ESC cmdf ~/k/e ke
	Xkd ^G  abrt ke
	X
	Xkd ' ' ke
	Xkd CR  en;tl ke
	Xkd TAB th ke
	Xkd '$' ke
	Xkd '^' ke
	Xkd '!' ke
	Xkd '?' ke
	Xkd ',' ke
	Xkd '.' ke
	Xkd '<' ke
	Xkd '>' ke
	Xkd '@'' ke
	X
	Xkd ';' ke
	Xkd '#' ke
	Xkd '*' ke
	Xkd '%' ke
SHAR_EOF
if test 229 -ne "`wc -c < 'ue'`"
then
	echo shar: error transmitting "'ue'" '(should have been 229 characters)'
fi
chmod +x 'ue'
fi # end of overwriting check
echo shar: extracting "'ueb'" '(25 characters)'
if test -f 'ueb'
then
	echo shar: will not over-write existing file "'ueb'"
else
sed 's/^	X//' << \SHAR_EOF > 'ueb'
	Xcmdf ~/k/ue;msg'Unbound'
SHAR_EOF
if test 25 -ne "`wc -c < 'ueb'`"
then
	echo shar: error transmitting "'ueb'" '(should have been 25 characters)'
fi
chmod +x 'ueb'
fi # end of overwriting check
echo shar: extracting "'uei'" '(31 characters)'
if test -f 'uei'
then
	echo shar: will not over-write existing file "'uei'"
else
sed 's/^	X//' << \SHAR_EOF > 'uei'
	Xcmdf ~/k/ue;msg'Unimplemented'
SHAR_EOF
if test 31 -ne "`wc -c < 'uei'`"
then
	echo shar: error transmitting "'uei'" '(should have been 31 characters)'
fi
chmod +x 'uei'
fi # end of overwriting check
echo shar: extracting "'ux'" '(139 characters)'
if test -f 'ux'
then
	echo shar: will not over-write existing file "'ux'"
else
sed 's/^	X//' << \SHAR_EOF > 'ux'
	Xmsg ''
	X
	Xcmdf ~/k/ck
	Xcmdf ~/k/lk
	X
	Xkd ' ' ke
	Xkd '0' ke
	Xkd '1' ke
	Xkd '2' ke
	Xkd '+' ke
	Xkd '-' ke
	Xkd '?' ke
	Xkd '(' ke
	Xkd ')' bl () ke
	Xkd '=' ke
SHAR_EOF
if test 139 -ne "`wc -c < 'ux'`"
then
	echo shar: error transmitting "'ux'" '(should have been 139 characters)'
fi
chmod +x 'ux'
fi # end of overwriting check
echo shar: extracting "'uxb'" '(25 characters)'
if test -f 'uxb'
then
	echo shar: will not over-write existing file "'uxb'"
else
sed 's/^	X//' << \SHAR_EOF > 'uxb'
	Xcmdf ~/k/ux;msg'Unbound'
SHAR_EOF
if test 25 -ne "`wc -c < 'uxb'`"
then
	echo shar: error transmitting "'uxb'" '(should have been 25 characters)'
fi
chmod +x 'uxb'
fi # end of overwriting check
echo shar: extracting "'uxd'" '(283 characters)'
if test -f 'uxd'
then
	echo shar: will not over-write existing file "'uxd'"
else
sed 's/^	X//' << \SHAR_EOF > 'uxd'
	Xcmdf ~/k/ck
	Xcmdf ~/k/lk
	X
	Xkd ' ' ke
	Xkd '0' ke
	Xkd '1' ke
	Xkd '2' ke
	Xkd '+' ke
	Xkd '-' ke
	Xkd '?' ke
	Xkd '(' ke
	Xkd ')' bl () ke
	Xkd '=' ke
	X
	Xkd CR  en;tl ke
	Xkd TAB th ke
	Xkd '$' ke
	Xkd '!' ke
	Xkd '?' ke
	Xkd ',' ke
	Xkd '.' ke
	Xkd '<' ke
	Xkd '>' ke
	Xkd '@'' ke
	X
	Xkd ';' ke
	Xkd '#' ke
	Xkd '*' ke
	Xkd '%' ke
SHAR_EOF
if test 283 -ne "`wc -c < 'uxd'`"
then
	echo shar: error transmitting "'uxd'" '(should have been 283 characters)'
fi
chmod +x 'uxd'
fi # end of overwriting check
echo shar: extracting "'uxi'" '(31 characters)'
if test -f 'uxi'
then
	echo shar: will not over-write existing file "'uxi'"
else
sed 's/^	X//' << \SHAR_EOF > 'uxi'
	Xcmdf ~/k/ux;msg'Unimplemented'
SHAR_EOF
if test 31 -ne "`wc -c < 'uxi'`"
then
	echo shar: error transmitting "'uxi'" '(should have been 31 characters)'
fi
chmod +x 'uxi'
fi # end of overwriting check
echo shar: extracting "'x'" '(2489 characters)'
if test -f 'x'
then
	echo shar: will not over-write existing file "'x'"
else
sed 's/^	X//' << \SHAR_EOF > 'x'
	Xmsg '^X-'
	X
	Xkd ^G  cmdf ~/k/ux;msg'Aborted' ke
	X
	Xkd 'a' cmdf ~/k/uxb ke
	Xkd 'b' cmdf ~/k/uxi ke
	Xkd 'c' cmdf ~/k/uxi ke
	Xkd 'd' cmdf ~/k/uxb ke
	Xkd 'e' cmdf ~/k/uxb ke
	Xkd 'f' cmdf ~/k/ux;xd -f ~/dm_format.in;rm;wi -w dm_format;es 'f 78';en ke
	Xkd 'g' cmdf ~/k/uxb ke
	Xkd 'h' cmdf ~/k/uxb ke
	Xkd 'i' cmdf ~/k/uxb ke
	Xkd 'j' cmdf ~/k/ux;xd -f ~/dm_format.in;rm;wi -w dm_format;es 'j 78';en ke
	Xkd 'k' cmdf ~/k/uxi ke
	Xkd 'l' cmdf ~/k/ux;case -l ke
	Xkd 'm' cmdf ~/k/uxi ke
	Xkd 'n' cmdf ~/k/uxb ke
	Xkd 'o' cmdf ~/k/uxb ke
	Xkd 'p' cmdf ~/k/uxb ke
	Xkd 'q' cmdf ~/k/uxb ke
	Xkd 'r' cmdf ~/k/uxi ke
	Xkd 's' cmdf ~/k/uxb ke
	Xkd 't' cmdf ~/k/ux;xd -f ~/dm_format.in;rm;wi -w dm_format;es '@&@'Format: @'';en ke
	Xkd 'u' cmdf ~/k/ux;case -u ke
	Xkd 'v' cmdf ~/k/uxb ke
	Xkd 'w' cmdf ~/k/uxb ke
	Xkd 'x' cmdf ~/k/uxb ke
	Xkd 'y' cmdf ~/k/uxb ke
	Xkd 'z' cmdf ~/k/uxb ke
	X
	Xkd ^A cmdf ~/k/uxi ke
	Xkd ^B cmdf ~/k/uxi ke
	Xkd ^C cmdf ~/k/ux;\[~a-zA-Z0-9._@@-]\;/[a-zA-Z0-9._@@-]/;/?/dr;/[~a-zA-Z0-9._@@-]/case -l;\[~a-zA-Z0-9._@@-]\;/[a-zA-Z0-9._@@-]/dr;/?/case -u;gm;/[~a-zA-Z0-9._@@-]/;/[a-zA-Z0-9._@@-]/ ke
	Xkd ^D cmdf ~/k/ux;\[~@@ ]\;/?/dr;/[~@@ ]/;\?\;xd junk ke
	Xkd ^E cmdf ~/k/uxi ke
	Xkd ^F cmdf ~/k/ux;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;ad;xd -f ~/dm_format.in;rm;wi -w dm_format;es 'f 78';en ke
	Xkd ^H cmdf ~/k/uxb ke
	Xkd ^I cmdf ~/k/ux;xp -f '@&'Insert file: '' ke
	Xkd ^J cmdf ~/k/ux;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;ad;xd -f ~/dm_format.in;rm;wi -w dm_format;es 'j 78';en ke
	Xkd ^K cmdf ~/k/ux;wc -q ke
	Xkd ^L cmdf ~/k/ux;\[~a-zA-Z0-9._@@-]\;/[a-zA-Z0-9._@@-]/dr;/[~a-zA-Z0-9_@@-]/;case -l;gm;/[~a-zA-Z0-9._@@-]/;/[a-zA-Z0-9._@@-]/ ke
	Xkd ^M cmdf ~/k/uxi ke
	Xkd ^N cmdf ~/k/ux;tn ke
	Xkd ^O cmdf ~/k/uxb ke
	Xkd ^P cmdf ~/k/ux;tlw ke
	Xkd ^Q cmdf ~/k/ux;wc -q ke
	Xkd ^R cmdf ~/k/uxi ke
	Xkd ^S cmdf ~/k/ux;msg'Saving...';pw;msg'' ke
	Xkd ^T cmdf ~/k/ux;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;ad;xd -f ~/dm_format.in;rm;wi -w dm_format;es '@&@'Format: @'';en ke
	Xkd ^U cmdf ~/k/ux;\[~a-zA-Z0-9._@@-]\;/[a-zA-Z0-9._@@-]/dr;/[~a-zA-Z0-9_@@-]/;case -u;gm;/[~a-zA-Z0-9._@@-]/;/[a-zA-Z0-9._@@-]/ ke
	Xkd ^V cmdf ~/k/ux;cms;(550,110)dr;(1279,996)ce '@&'Visit file: '' ke
	Xkd ^W cmdf ~/k/uxi ke
	Xkd ^X cmdf ~/k/uxb ke
	Xkd ^Y cmdf ~/k/uxb ke
	Xkd ^Z cmdf ~/k/ux;msg'Saving...';pw;msg'';wc -q ke
	X
	Xkd ' ' cmdf ~/k/ux;\%[ ]*@@n\;ad;cms;dr;echo;/%[ ]*@@n/;ad ke
	Xkd '0' cmdf ~/k/uxi ke
	Xkd '1' cmdf ~/k/uxi ke
	Xkd '2' cmdf ~/k/uxi ke
	Xkd '+' cmdf ~/k/uxi ke
	Xkd '-' cmdf ~/k/uxi ke
	Xkd '?' cmdf ~/k/xd ke
	Xkd '(' cmdf ~/k/uxi ke
	Xkd ')' cmdf ~/k/uxi ke
	Xkd '=' cmdf ~/k/ux;= ke
SHAR_EOF
if test 2489 -ne "`wc -c < 'x'`"
then
	echo shar: error transmitting "'x'" '(should have been 2489 characters)'
fi
chmod +x 'x'
fi # end of overwriting check
echo shar: extracting "'xd'" '(2760 characters)'
if test -f 'xd'
then
	echo shar: will not over-write existing file "'xd'"
else
sed 's/^	X//' << \SHAR_EOF > 'xd'
	Xdr;msg'';tdm;tl;dr;tr;xd dm_save;rm;es'### Describe key sequence: '
	X
	Xkd 'a' cmdf ~/k/ux;es'a';msg'Types an @'a@'';gm ke
	Xkd 'b' cmdf ~/k/ux;es'b';msg'Types an @'b@'';gm ke
	Xkd 'c' cmdf ~/k/ux;es'c';msg'Types an @'c@'';gm ke
	Xkd 'd' cmdf ~/k/ux;es'd';msg'Types an @'d@'';gm ke
	Xkd 'e' cmdf ~/k/ux;es'e';msg'Types an @'e@'';gm ke
	Xkd 'f' cmdf ~/k/ux;es'f';msg'Types an @'f@'';gm ke
	Xkd 'g' cmdf ~/k/ux;es'g';msg'Types an @'g@'';gm ke
	Xkd 'h' cmdf ~/k/ux;es'h';msg'Types an @'h@'';gm ke
	Xkd 'i' cmdf ~/k/ux;es'i';msg'Types an @'i@'';gm ke
	Xkd 'j' cmdf ~/k/ux;es'j';msg'Types an @'j@'';gm ke
	Xkd 'k' cmdf ~/k/ux;es'k';msg'Types an @'k@'';gm ke
	Xkd 'l' cmdf ~/k/ux;es'l';msg'Types an @'l@'';gm ke
	Xkd 'm' cmdf ~/k/ux;es'm';msg'Types an @'m@'';gm ke
	Xkd 'n' cmdf ~/k/ux;es'n';msg'Types an @'n@'';gm ke
	Xkd 'o' cmdf ~/k/ux;es'o';msg'Types an @'o@'';gm ke
	Xkd 'p' cmdf ~/k/ux;es'p';msg'Types an @'p@'';gm ke
	Xkd 'q' cmdf ~/k/ux;es'q';msg'Types an @'q@'';gm ke
	Xkd 'r' cmdf ~/k/ux;es'r';msg'Types an @'r@'';gm ke
	Xkd 's' cmdf ~/k/ux;es's';msg'Types an @'s@'';gm ke
	Xkd 't' cmdf ~/k/ux;es't';msg'Types an @'t@'';gm ke
	Xkd 'u' cmdf ~/k/ux;es'u';msg'Types an @'u@'';gm ke
	Xkd 'v' cmdf ~/k/ux;es'v';msg'Types an @'v@'';gm ke
	Xkd 'w' cmdf ~/k/ux;es'w';msg'Types an @'w@'';gm ke
	Xkd 'x' cmdf ~/k/ux;es'x';msg'Types an @'x@'';gm ke
	Xkd 'y' cmdf ~/k/ux;es'y';msg'Types an @'y@'';gm ke
	Xkd 'z' cmdf ~/k/ux;es'z';msg'Types an @'z@'';gm ke
	X
	Xkd ^A cmdf ~/k/ux;es'^A';msg'Beginning of line';gm ke
	Xkd ^B cmdf ~/k/ux;es'^B';msg'Backward character';gm ke
	Xkd ^C cmdf ~/k/ux;es'^C';msg'Copy region';gm ke
	Xkd ^D cmdf ~/k/ux;es'^D';msg'Delete next character';gm ke
	Xkd ^E cmdf ~/k/ux;es'^E';msg'End of line';gm ke
	Xkd ^F cmdf ~/k/ux;es'^F';msg'Forward character';gm ke
	Xkd ^G cmdf ~/k/ux;es'^G';msg'Abort';gm ke
	Xkd ^H cmdf ~/k/ux;es'^H';msg'Delete previous character';gm ke
	Xkd ^I cmdf ~/k/ux;es'^I';msg'Tab forward';gm ke
	Xkd ^J cmdf ~/k/ux;es'^J';msg'Newline and indent';gm ke
	Xkd ^K cmdf ~/k/ux;es'^K';msg'Kill to end of line';gm ke
	Xkd ^L cmdf ~/k/ux;es'^L';msg'Redraw screen';gm ke
	Xkd ^M cmdf ~/k/ux;es'^M';msg'Newline';gm ke
	Xkd ^N cmdf ~/k/ux;es'^N';msg'Next line';gm ke
	Xkd ^O cmdf ~/k/ux;es'^O';msg'Open line (newline and backup)';gm ke
	Xkd ^P cmdf ~/k/ux;es'^P';msg'Previous line';gm ke
	Xkd ^Q cmdf ~/k/ux;es'^Q';msg'Interrupt';gm ke
	Xkd ^R cmdf ~/k/ux;es'^R';msg'Repeat reverse search';gm ke
	Xkd ^S cmdf ~/k/ux;es'^S';msg'Repeat forward search';gm ke
	Xkd ^T cmdf ~/k/ux;es'^T';msg'Touch/mark/select';gm ke
	Xkd ^U cmdf ~/k/ux;es'^U';msg'Scroll up';gm ke
	Xkd ^V cmdf ~/k/ux;es'^V';msg'Scroll vertically (down)';gm ke
	Xkd ^W cmdf ~/k/ux;es'^W';msg'Wipe region (cut)';gm ke
	Xkd ^Y cmdf ~/k/ux;es'^Y';msg'Yank region (paste)';gm ke
	Xkd ^Z cmdf ~/k/ux;es'^Z';msg'End of file';gm ke
	X
	Xkd ESC cmdf ~/k/xde ke
	Xkd ^X cmdf ~/k/xdx ke
SHAR_EOF
if test 2760 -ne "`wc -c < 'xd'`"
then
	echo shar: error transmitting "'xd'" '(should have been 2760 characters)'
fi
chmod +x 'xd'
fi # end of overwriting check
echo shar: extracting "'xde'" '(3726 characters)'
if test -f 'xde'
then
	echo shar: will not over-write existing file "'xde'"
else
sed 's/^	X//' << \SHAR_EOF > 'xde'
	Xes'ESC-';msg'Escape keys; hit next key for more'
	X
	Xkd 'a' cmdf ~/k/uxd;es'a';msg'Beginning of sentence';gm ke
	Xkd 'b' cmdf ~/k/uxd;es'b';msg'Previous word';gm ke
	Xkd 'c' cmdf ~/k/uxd;es'c';msg'Copy region to named buffer';gm ke
	Xkd 'd' cmdf ~/k/uxd;es'd';msg'Delete next word';gm ke
	Xkd 'e' cmdf ~/k/uxd;es'e';msg'End of sentence';gm ke
	Xkd 'f' cmdf ~/k/uxd;es'f';msg'Forward word';gm ke
	Xkd 'g' cmdf ~/k/uxd;es'g';msg'Go to line';gm ke
	Xkd 'h' cmdf ~/k/uxd;es'h';msg'Delete previous word';gm ke
	Xkd 'i' cmdf ~/k/uxd;es'i';msg'Unbound';gm ke
	Xkd 'j' cmdf ~/k/uxd;es'j';msg'Unbound';gm ke
	Xkd 'k' cmdf ~/k/uxd;es'k';msg'Kill to end of line into named buffer';gm ke
	Xkd 'l' cmdf ~/k/uxd;es'l';msg'Unbound';gm ke
	Xkd 'm' cmdf ~/k/uxd;es'm';msg'Toggle read-only/read-write mode';gm ke
	Xkd 'n' cmdf ~/k/uxd;es'n';msg'Next paragraph';gm ke
	Xkd 'o' cmdf ~/k/uxd;es'o';msg'Toggle overwrite/insert mode';gm ke
	Xkd 'p' cmdf ~/k/uxd;es'p';msg'Previous paragraph';gm ke
	Xkd 'q' cmdf ~/k/uxd;es'q';msg'Query replace';gm ke
	Xkd 'r' cmdf ~/k/uxd;es'r';msg'Reverse search';gm ke
	Xkd 's' cmdf ~/k/uxd;es's';msg'Search forward';gm ke
	Xkd 't' cmdf ~/k/uxd;es't';msg'Unbound';gm ke
	Xkd 'u' cmdf ~/k/uxd;es'u';msg'Scroll up one line';gm ke
	Xkd 'v' cmdf ~/k/uxd;es'v';msg'Scroll vertically one line (down)';gm ke
	Xkd 'w' cmdf ~/k/uxd;es'w';msg'Wipe/cut region into named buffer';gm ke
	Xkd 'x' cmdf ~/k/uxd;es'x';msg'Execute named command';gm ke
	Xkd 'y' cmdf ~/k/uxd;es'y';msg'Yank/paste from named buffer';gm ke
	Xkd 'z' cmdf ~/k/uxd;es'z';msg'Unbound';gm ke
	X
	Xkd ^A cmdf ~/k/uxd;es'^A';msg'Unbound';gm ke
	Xkd ^B cmdf ~/k/uxd;es'^B';msg'Unbound';gm ke
	Xkd ^C cmdf ~/k/uxd;es'^C';msg'Unbound';gm ke
	Xkd ^D cmdf ~/k/uxd;es'^D';msg'Unbound';gm ke
	Xkd ^E cmdf ~/k/uxd;es'^E';msg'Unbound';gm ke
	Xkd ^F cmdf ~/k/uxd;es'^F';msg'Unbound';gm ke
	Xkd ^G cmdf ~/k/uxd;es'^G';msg'Abort';gm ke
	Xkd ^H cmdf ~/k/uxd;es'^H';msg'Unbound';gm ke
	Xkd ^I cmdf ~/k/uxd;es'^I';msg'Unbound';gm ke
	Xkd ^J cmdf ~/k/uxd;es'^J';msg'Unbound';gm ke
	Xkd ^K cmdf ~/k/uxd;es'^K';msg'Unbound';gm ke
	Xkd ^L cmdf ~/k/uxd;es'^L';msg'Unbound';gm ke
	Xkd ^M cmdf ~/k/uxd;es'^M';msg'Unbound';gm ke
	Xkd ^N cmdf ~/k/uxd;es'^N';msg'Unbound';gm ke
	Xkd ^O cmdf ~/k/uxd;es'^O';msg'Unbound';gm ke
	Xkd ^P cmdf ~/k/uxd;es'^P';msg'Unbound';gm ke
	Xkd ^Q cmdf ~/k/uxd;es'^Q';msg'Unbound';gm ke
	Xkd ^R cmdf ~/k/uxd;es'^R';msg'Unbound';gm ke
	Xkd ^S cmdf ~/k/uxd;es'^S';msg'Unbound';gm ke
	Xkd ^T cmdf ~/k/uxd;es'^T';msg'Unbound';gm ke
	Xkd ^U cmdf ~/k/uxd;es'^U';msg'Unbound';gm ke
	Xkd ^V cmdf ~/k/uxd;es'^V';msg'Unbound';gm ke
	Xkd ^W cmdf ~/k/uxd;es'^W';msg'Unbound';gm ke
	Xkd ^X cmdf ~/k/uxd es'^X';msg'Unbound';gm ke
	Xkd ^Y cmdf ~/k/uxd;es'^Y';msg'Unbound';gm ke
	Xkd ^Z cmdf ~/k/uxd;es'^Z';msg'Unbound';gm ke
	X
	Xkd ESC cmdf ~/k/uxd;es'esc';msg'Unbound';gm ke
	X
	Xkd ' ' cmdf ~/k/uxd;es'<space>';msg'Go to mark';gm ke
	Xkd CR  cmdf ~/k/uxd;es'^M';msg'Soft return';gm ke
	Xkd TAB cmdf ~/k/uxd;es'^I';msg'Go to column';gm ke
	Xkd '$' cmdf ~/k/uxd;es'$';msg'Shell command';gm ke
	Xkd '!' cmdf ~/k/uxd;es'!';msg'Current line to top of page (unimplemented)';gm ke
	Xkd '?' cmdf ~/k/uxd;es'?';msg'Help (describe;gm key bindings)';gm ke
	Xkd ',' cmdf ~/k/uxd;es',';msg'Beginning of file';gm ke
	Xkd '.' cmdf ~/k/uxd;es'.';msg'End of file';gm ke
	Xkd '<' cmdf ~/k/uxd;es'<';msg'Beginning of page';gm ke
	Xkd '>' cmdf ~/k/uxd;es'>';msg'End of page';gm ke
	Xkd '@'' cmdf ~/k/uxd;es'@@@'';msg'Quote next character';gm ke
	X
	Xkd ';' cmdf ~/k/uxd;es'@@@;';msg'Comment current paragraph with @@@';@@@'';gm ke
	Xkd '#' cmdf ~/k/uxd;es'@@@#';msg'Comment current paragraph with @@@'@@@#@@@'';gm ke
	Xkd '*' cmdf ~/k/uxd;es'*';msg'Comment current paragraph with @@@'*@@@'';gm ke
	Xkd '%' cmdf ~/k/uxd;es'%';msg'Comment current paragraph with @@@'%@@@'';gm ke
	X
	Xkd 'i' cmdf ~/k/uxd;es'i';msg'Icon window';gm ke
SHAR_EOF
if test 3726 -ne "`wc -c < 'xde'`"
then
	echo shar: error transmitting "'xde'" '(should have been 3726 characters)'
fi
chmod +x 'xde'
fi # end of overwriting check
echo shar: extracting "'xdx'" '(3483 characters)'
if test -f 'xdx'
then
	echo shar: will not over-write existing file "'xdx'"
else
sed 's/^	X//' << \SHAR_EOF > 'xdx'
	Xes'^X-';msg'Extended keys; hit next key for more'
	X
	Xkd 'a' cmdf ~/k/uxd;es'a';msg'Unbound';gm ke
	Xkd 'b' cmdf ~/k/uxd;es'b';msg'List buffers (unimplemented)';gm ke
	Xkd 'c' cmdf ~/k/uxd;es'c';msg'Capitalize region (unimplemented)';gm ke
	Xkd 'd' cmdf ~/k/uxd;es'd';msg'Unbound';gm ke
	Xkd 'e' cmdf ~/k/uxd;es'e';msg'Unbound';gm ke
	Xkd 'f' cmdf ~/k/uxd;es'f';msg'Fill region';gm ke
	Xkd 'g' cmdf ~/k/uxd;es'g';msg'Unbound';gm ke
	Xkd 'h' cmdf ~/k/uxd;es'h';msg'Unbound';gm ke
	Xkd 'i' cmdf ~/k/uxd;es'i';msg'Unbound';gm ke
	Xkd 'j' cmdf ~/k/uxd;es'j';msg'Justify region';gm ke
	Xkd 'k' cmdf ~/k/uxd;es'k';msg'Unbound';gm ke
	Xkd 'l' cmdf ~/k/uxd;es'l';msg'Lower case region';gm ke
	Xkd 'm' cmdf ~/k/uxd;es'm';msg'Add mode (unimplemented)';gm ke
	Xkd 'n' cmdf ~/k/uxd;es'n';msg'Unbound';gm ke
	Xkd 'o' cmdf ~/k/uxd;es'o';msg'Unbound';gm ke
	Xkd 'p' cmdf ~/k/uxd;es'p';msg'Unbound';gm ke
	Xkd 'q' cmdf ~/k/uxd;es'q';msg'Unbound';gm ke
	Xkd 'r' cmdf ~/k/uxd;es'r';msg'Unbound';gm ke
	Xkd 's' cmdf ~/k/uxd;es's';msg'Unbound';gm ke
	Xkd 't' cmdf ~/k/uxd;es't';msg'Text format region';gm ke
	Xkd 'u' cmdf ~/k/uxd;es'u';msg'Upper case region';gm ke
	Xkd 'v' cmdf ~/k/uxd;es'v';msg'Unbound';gm ke
	Xkd 'w' cmdf ~/k/uxd;es'w';msg'Unbound';gm ke
	Xkd 'x' cmdf ~/k/uxd;es'x';msg'Unbound';gm ke
	Xkd 'y' cmdf ~/k/uxd;es'y';msg'Unbound';gm ke
	Xkd 'z' cmdf ~/k/uxd;es'z';msg'Unbound';gm ke
	X
	Xkd ^A cmdf ~/k/uxd;es'^A';msg'Unbound';gm ke
	Xkd ^B cmdf ~/k/uxd;es'^B';msg'Visit buffer (unimplemented)';gm ke
	Xkd ^C cmdf ~/k/uxd;es'^C';msg'Capitalize word';gm ke
	Xkd ^D cmdf ~/k/uxd;es'^D';msg'Unbound';gm ke
	Xkd ^E cmdf ~/k/uxd;es'^E';msg'Unbound';gm ke
	Xkd ^F cmdf ~/k/uxd;es'^F';msg'Fill paragraph';gm ke
	Xkd ^G cmdf ~/k/uxd;es'^G';msg'Abort';gm ke
	Xkd ^H cmdf ~/k/uxd;es'^H';msg'Unbound';gm ke
	Xkd ^I cmdf ~/k/uxd;es'^I';msg'Insert file';gm ke
	Xkd ^J cmdf ~/k/uxd;es'^J';msg'Justify paragraph';gm ke
	Xkd ^K cmdf ~/k/uxd;es'^K';msg'Unbound';gm ke
	Xkd ^L cmdf ~/k/uxd;es'^L';msg'Lower case word';gm ke
	Xkd ^M cmdf ~/k/uxd;es'^M';msg'Delete mode (unimplemented)';gm ke
	Xkd ^N cmdf ~/k/uxd;es'^N';msg'Next window';gm ke
	Xkd ^O cmdf ~/k/uxd;es'^O';msg'Unbound';gm ke
	Xkd ^P cmdf ~/k/uxd;es'^P';msg'Previous window';gm ke
	Xkd ^Q cmdf ~/k/uxd;es'^Q';msg'Quit file without writing (abort)';gm ke
	Xkd ^R cmdf ~/k/uxd;es'^R';msg'Read from named file (unimplemented)';gm ke
	Xkd ^S cmdf ~/k/uxd;es'^S';msg'Save file';gm ke
	Xkd ^T cmdf ~/k/uxd;es'^T';msg'Text format region';gm ke
	Xkd ^U cmdf ~/k/uxd;es'^U';msg'Uppercase region';gm ke
	Xkd ^V cmdf ~/k/uxd;es'^V';msg'Visit file';gm ke
	Xkd ^W cmdf ~/k/uxd;es'^W';msg'Write to named file (unimplemented)';gm ke
	Xkd ^X cmdf ~/k/uxd es'^X';msg'Execute;gm keyboard macro (unimplemented)';gm ke
	Xkd ^Y cmdf ~/k/uxd;es'^Y';msg'Unbound';gm ke
	Xkd ^Z cmdf ~/k/uxd;es'^Z';msg'Write file and exit';gm ke
	X
	Xkd ESC cmdf ~/k/uxd;es'esc';msg'Unbound';gm ke
	X
	Xkd ' ' cmdf ~/k/uxd;es' ';msg'Mark paragraph';gm ke
	Xkd '0' cmdf ~/k/uxd;es'0';msg'Delete this window (unimplemented)';gm ke
	Xkd '1' cmdf ~/k/uxd;es'1';msg'Make this the only window (unimplemented)';gm ke
	Xkd '2' cmdf ~/k/uxd;es'2';msg'Split window into two (unimplemented)';gm ke
	Xkd '+' cmdf ~/k/uxd;es'+';msg'Grow window (unimplemented)';gm ke
	Xkd '-' cmdf ~/k/uxd;es'-';msg'Shrink window (unimplemented)';gm ke
	Xkd '?' cmdf ~/k/uxd;es'?';msg'Describe;gm key';gm ke
	Xkd '(' cmdf ~/k/uxd;es'(';msg'Start recording;gm keyboard macro (unimplemented)';gm ke
	Xkd ')' cmdf ~/k/uxd;es')';msg'Stop recording;gm keyboard macro (unimplemented)';gm ke
	Xkd '=' cmdf ~/k/uxd;es'=';msg'Show cursor position';gm ke
SHAR_EOF
if test 3483 -ne "`wc -c < 'xdx'`"
then
	echo shar: error transmitting "'xdx'" '(should have been 3483 characters)'
fi
chmod +x 'xdx'
fi # end of overwriting check
#	End of shell archive
exit 0
---------------------------------   cut   -------------------------------------------

-- Ashwin Ram --

ARPA:    Ram-Ashwin@cs.yale.edu
UUCP:    {decvax,ucbvax,harvard,cmcl2,...}!yale!Ram-Ashwin
BITNET:  Ram@yalecs