karl@sugar.UUCP (Karl Lehenbauer) (11/29/87)
This is a context diff of a hack to make MicroEMACS function keys work under Microport Unix System V/286. You also have to replace your ANSI keyboard mappings, defined in '/etc/rc.d/keybrd.rc' with one I've included as a shell archive at the end. Yes, it's gross, but it makes the function, arrow keys, and miscellaneous keypad keys work. Consult keybrd.rc for their definitions. This adds a Microport entry to estruct.h for #if's: *** estruct.orig Fri Nov 27 20:37:19 1987 --- estruct.h Fri Nov 27 20:37:06 1987 *************** *** 49,50 #define FINDER 0 /* Macintosh OS */ --- 49,51 ----- #define FINDER 0 /* Macintosh OS */ + #define MICROPORT 1 /* Sys V/286, set USG too */ This causes uEMACS to recognize ASCII decimal character 31 (^_) as a function key prefix character. It was the only I could figure out that uEMACS didn't use for something that @#$%&* /etc/setkey would accept (/etc/setkey doesn't conform to its manpage, either. Perhaps Microport sysv/286 2.2 will. *** input.orig Thu Nov 26 20:00:35 1987 --- input.c Fri Nov 27 20:29:47 1987 *************** *** 305,306 #if AMIGA --- 305,313 ----- + #if MICROPORT + if (c == 31) { /* Apply SPEC prefix, it's control underscore */ + c = tgetc(); + return(SPEC | c); + } + #endif + #if AMIGA --------------------- Here's the shar for keybrd.rc. There are probably better mappings for some of these. I don't know 'cuz I'm new to EMACS. ------------------- cut here ------------------- : #! /bin/sh # This is a shell archive, created on Sugar Land Unix (..!uunet!nuchat!sugar) # (bbs: 713-933-2440) by karl (Karl Lehenbauer) on Sat Nov 28 16:24:35 1987 # Remove anything before the "#! /bin/sh" line, then unpack it by saving # it into a file and typing "sh file". If you do not have sh, you need # unshar, a dearchiving program which is widely available. In the absolute # wost case, you can crack the files out by hand. # If the archive is complete, you will see the message "End of archive." # at the end. # This archive contains the following files... # 'keybrd.rc' # To extract them, run the following through /bin/sh echo x - keybrd.rc sed 's/^X//' > keybrd.rc << '//END_OF_FILE' X: /bin/sh X# @(#) MicroEMACS keybrd.rc X# set up the keyboard as hacked for MicroEMACS X# X/etc/setkey ins "^C" # insert character X/etc/setkey up "^P" # up cursor X/etc/setkey down "^N" # down cursor X/etc/setkey left "^B" # left (backward) cursor X/etc/setkey right "^F" # right (forward) cursor X/etc/setkey shift left "^[B" # left word X/etc/setkey shift right "^[F" # right word X/etc/setkey home "^[<" # go to start of file X/etc/setkey end "^[>" # go to end of file X/etc/setkey alt ins "^A^M^B" # insert line X/etc/setkey alt del "^A^[ ^N^W" # delete line X/etc/setkey ctrl del "^D" # delete character X/etc/setkey ctrl up "^X^P" # scroll up X/etc/setkey ctrl down "^X^N" # scroll down X/etc/setkey pgup "^Z" # page up X/etc/setkey pgdn "^V" # page down X#/etc/setkey shift tab "^[[Z" # backtab X#/etc/setkey prtsc "^[[i" # copy to primary aux dev (print screen) X/etc/setkey ctrl left "^[3^[B" # jump left X/etc/setkey ctrl right "^[3^[F" # jump right X/etc/setkey f1 "^_;" # function 1 X/etc/setkey f2 "^_<" # function 2 X/etc/setkey f3 "^_=" # function 3 X/etc/setkey f4 "^_>" # function 4 X/etc/setkey f5 "^_?" # function 5 X/etc/setkey f6 "^_@" # function 6 X/etc/setkey f7 "^_A" # function 7 X/etc/setkey f8 "^_B" # function 8 X/etc/setkey f9 "^_C" # function 9 X/etc/setkey f10 "^_D" # function 10 X/etc/setkey shift f1 "^_T" # function 1 shifted X/etc/setkey shift f2 "^_U" # function 2 shifted X/etc/setkey shift f3 "^_V" # function 3 shifted X/etc/setkey shift f4 "^_W" # function 4 shifted X/etc/setkey shift f5 "^_X" # function 5 shifted X/etc/setkey shift f6 "^_Y" # function 6 shifted X/etc/setkey shift f7 "^_Z" # function 7 shifted X/etc/setkey shift f8 "^_[" # function 8 shifted X/etc/setkey shift f9 "^_\\" # function 9 shifted X/etc/setkey shift f10 "^_]" # function 10 shifted X X/etc/setkey alt f10 "^[xhelp^M" # get help //END_OF_FILE echo "End of archive." # end of archive. exit 0 --
manes@dasys1.UUCP (Steve Manes) (12/01/87)
In article <1132@sugar.UUCP> karl@sugar.UUCP (Karl Lehenbauer) writes: >This is a context diff of a hack to make MicroEMACS function keys work under >Microport Unix System V/286. You also have to replace your ANSI keyboard >mappings, defined in '/etc/rc.d/keybrd.rc' with one I've included as a >shell archive at the end. Yes, it's gross, but it makes the function, >arrow keys, and miscellaneous keypad keys work. Consult keybrd.rc >for their definitions. It's not necessary to add a new protocol code character to make uEMACS work with Microport UNIX. I modified Daniel's code to allow it to use Microport's standard ANSI escape codes as follows. This is the beginning of his function 'get1key' in file 'input.c': get1key() int c; #if AMIGA int d; #endif #if UPORT static int gotmeta; #endif /* get a keystroke */ c = tgetc(); #ifdef UPORT if (gotmeta && c == '[' || c == 'O')) { gotmeta = FALSE; return( (c == '[') ? (SPEC | tgetc()) : (META | SPEC | tgetc()) ); } gotmeta = (c == 0x1b) ? TRUE : FALSE; #endif and in the function 'getcmd': ... ... /* process META prefix */ if (c == metac) { c = get1key(); #ifdef UPORT if (c & SPEC) return(c); #endif ... ... This allows Microport function keys to be attached to M-FNx keys. You'll also need to do the 'bind.c' patch mentioned earlier in the discussion to enable both upper and lowercase function key codes. -- +----------------------------------------------------------------------- + Steve Manes Roxy Recorders, Inc. NYC + decvax!philabs!cmcl2!hombre!magpie!manes Magpie BBS: 212-420-0527 + uunet!iuvax!bsu-cs!zoo-hq!magpie!manes 300/1200/2400