woody@chinacat.Unicom.COM (Woody Baker @ Eagle Signal) (07/14/90)
Here is another one of those off the wall things that I like to write. This one will printout a template for the function keys on an 84 key AT style keyboard. It was done because I lost the template for my copy of MS-word. Enjoy Cheers Woody % % makes function key templates for the pc 10 FKEY keyboard. % (c) copyright 1988 woody baker. All commercial rights reserved. % you are free to use this code to create templates for your own or % department use, but resale of this code is forbidden. % % % this example is for MS-word % % % you may have to change the font name if your printer does not % support Helvetic-Narrow. % % In that case, change it to Helvetica, and change the scalefonts % to makefonts, with a hight of 8 and a width of 6.5 or so.... % /ptsize 8 def /normal {/Helvetica-Narrow findfont ptsize scalefont setfont } def /shifted {/Helvetica-Narrow-Bold findfont ptsize scalefont setfont } def /ctrl {/Helvetica-Narrow-Oblique findfont ptsize scalefont setfont } def /alt {/Helvetica-Narrow-BoldOblique findfont ptsize scalefont setfont } def /bakward {/Helvetica-Narrow findfont [8 0 -2.25 8 0 0 ]makefont setfont } def /inches { 72 mul } def /width 3.0625 inches def % width of template /hite 4.75 inches def % temp height /inwid 1.500 inches def % inner space width /inhite 3.770 inches def % hite of inner space /leftofset 1.360 inches def %left "margin" for inner cutout /botofset .75 inches def % bottom margin for inner cutout /bl 0 def /bw width def /bt hite def /rad 10 def /tmgray 1 def % 1=white /letborder 0 def % black boarder /letback 1 def % white background /lineleft leftofset 2 div def % vertical line left margin /linehite 3.875 inches def /ljtext 3 def /ljtext2 lineleft 3 add def /fhite { gsave newpath % find the height of the character in font 0 0 moveto (1) true charpath flattenpath pathbbox /xhite exch def pop pop pop newpath grestore /xhite 10 def } def % % this routine computes the height of the font % and creates a white box that is a bit taller, centered around % the y coordinate. it will be a bit wider than the text to be % printed so that the text will be set in it. % % parameters in are x y (string) fbox where x and y are the % coordinates for the text to start, and string is the string to % print and fbox is the routine to do the font box % /fbox { /workstring exch def /ycoord exch def /xcoord exch def fhite workstring stringwidth pop /wide exch def % remove this line and /wide wide 1.2 mul def % set wide to a value for all letborder setgray % labels to be same width xhite 1.4 mul setlinewidth % create a line segment width 1 setlinecap xcoord ycoord moveto xcoord wide add ycoord lineto stroke xhite 1.1 mul setlinewidth letback setgray xcoord ycoord moveto xcoord wide add ycoord lineto stroke 0 setgray xcoord ycoord xhite 1.1 mul 3 div sub moveto workstring show } def /box { /br bl bw add def /bh bt bl sub def /bb bt bh sub def /strt br bl add 2 div def strt bt moveto br bt br bb rad arcto br bb bl bb rad arcto % do arced corners with straight lines bl bb bl bt rad arcto bl bt strt bt rad arcto closepath } def 100 100 translate % pick a spot on the page /dotemp { gsave 0 0 moveto box gsave tmgray setgray fill % color the template in grestore 0 setgray stroke /bw inwid def % set up box width /bt inhite def leftofset botofset translate box gsave 1 setgray fill grestore gsave 0 setgray stroke grestore clear grestore gsave lineleft botofset translate 0 0 moveto 0 linehite lineto stroke % vert line grestore 0 1.4 inches moveto leftofset 1.4 inches lineto stroke 0 2.25 inches moveto leftofset 2.25 inches lineto stroke 0 3 inches moveto leftofset 3 inches lineto stroke 0 3.75 inches moveto leftofset 3.75 inches lineto stroke clear } def % % ljtext is left margin for left column % ljtext2 is left margin for 2nd column % /do2blocks { /ver exch def %vertical spot /l1 exch def /l2 exch def % text lines /l3 exch def % simple code is better /l4 exch def /l5 exch def /l21 exch def /l22 exch def /l23 exch def /l24 exch def /l25 exch def normal ljtext ver inches ptsize sub moveto l1 show shifted ljtext ver inches ptsize 2 mul sub moveto l2 show ctrl ljtext ver inches ptsize 3 mul sub moveto l3 show alt ljtext ver inches ptsize 4 mul sub moveto l4 show bakward ljtext ver inches ptsize 5 mul sub moveto l5 show normal ljtext2 ver inches ptsize sub moveto l21 show shifted ljtext2 ver inches ptsize 2 mul sub moveto l22 show ctrl ljtext2 ver inches ptsize 3 mul sub moveto l23 show alt ljtext2 ver inches ptsize 4 mul sub moveto l24 show bakward ljtext2 ver inches ptsize 5 mul sub moveto l25 show } def % % do actual template % dotemp (Prev. Char.) (Record Style) (Save) (Whole Doc) (Next para.) (Next Char) (Text/Graph.) (Repaginate) (Current line) (Prev. para) 1.35 do2blocks % measure is in inches (Next Word)(Font Name) (Print) (Next Sent.) (Next Word) (Prev. Word) (Printer disp.) (Load) (Prev. Sent.) (Prev. Word) 2.20 do2blocks ()(Spell) (Thesaurus) (Col Select) (Ext. Select) ()(Go to Page) (Line Draw) (Outline org.) (Overtype) 2.95 do2blocks ()(Set Margins) (Update List) (Repeat Srch) (Repeat Edit) ()(Copy to Scrap) (Step Macro) (Record Macro) (Glossary) 3.70 do2blocks ()(Footer) (Header) (Outline View) (Calculate) (List Choices)(Set Tab) (Zoom Win.) (Undo) (Next Window) 4.45 do2blocks leftofset 40 moveto normal (Fn only) show leftofset 40 ptsize sub moveto shifted (Fn + Shift) show leftofset 40 ptsize 2 mul sub moveto ctrl (Fn + Ctrl) show leftofset 40 ptsize 3 mul sub moveto alt (Fn + Alt) show leftofset 40 ptsize 4 mul sub moveto bakward (effect in menus or command fields) show showpage stop