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