[comp.sources.unix] v17i051: MGR, Bellcore window manager, Part50/61

rsalz@uunet.uu.net (Rich Salz) (01/31/89)

Submitted-by: Stephen A. Uhler <sau@bellcore.com>
Posting-number: Volume 17, Issue 51
Archive-name: mgr/part50




#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 50 (of 61)."
# Contents:  doc/usrman/doc.4
# Wrapped by rsalz@papaya.bbn.com on Thu Nov 17 21:05:58 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'doc/usrman/doc.4' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'doc/usrman/doc.4'\"
else
echo shar: Extracting \"'doc/usrman/doc.4'\" \(31915 characters\)
sed "s/^X//" >'doc/usrman/doc.4' <<'END_OF_FILE'
X'\"                        Copyright (c) 1988 Bellcore
X'\"                            All Rights Reserved
X'\"       Permission is granted to copy or use this program, EXCEPT that it
X'\"       may not be sold for profit, the copyright notice must be reproduced
X'\"       on copies, and credit should be given to Bellcore where it is due.
X'\"       BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
X'\"
X'\"	$Header: doc.4,v 4.1 88/06/29 17:04:59 bianchi Exp $
X'\"	$Source: /tmp/mgrsrc/doc/usrman/RCS/doc.4,v $
X.Fh m_nomenu
X.Fs m_nomenu 8 "Unselect a pop-up menu from the middle mouse button"
XDeselect all menus.
XNo menu will pop-up when the middle
Xmouse button is pressed.
XThis call does not delete the menu, it simply disassociates it
Xfrom the button.
X.Fe
X.Fh m_nomenu2
X.Fs m_nomenu2 8 "Unselect a pop-up menu from the end mouse button"
XDeselect all menus.
XNo menu will pop-up when the right
Xmouse button is pressed.
XThis call does not delete the menu, it simply disassociates it
Xfrom the button.  This macro should be combined with
X.Fr m_nomenu
X but is separate for historical reasons.
X.Fe
X.Fh m_othersave id sub name
X.Fs m_othersave 5 "Save another client's window image in a file"
XThe bitmap contents of the window identified as
X.Fi id . sub
Xis saved in the file
X.Fi name
Xin bitmap format (see 
X.I dump.h
Xfor a description of the bitmap format).
XThe
X.I "window id"
Xcan be determined either by calling
X.Fr m_getinfo G_ALL
X or
Xfrom the event
X.SM
X.I  M_ACCEPT
X.LG
X(see
X.Fr m_setevent
X).
XSee also
X.Fr m_windowsave
X and
X.Fr m_bitsave
X\&.
X.Fe
X.Fh m_pagemenu parent child
X.Fs m_pagemenu 8 "Break a large menu into pages"
XConnect menu 
X.Fi child
Xto the bottom of menu 
X.Fi parent
Xto permit
Xa long menu to be paged.
XMousing off the bottom of the
X.Fi parent 
Xmenu automatically pops-up the
X.I child
Xmenu, which
Xin turn may be the parent of another menu.
XSee also
X.Fr m_unpagemenu
X,
X.Fr m_linkmenu
X and
X.Fr m_unlinkmenu
X\&.
X.Fe
X.Fh m_pop
X.Fs m_pop 10 "Pop the window context"
XPop the window context.
XThe last window context saved by calling
X.Fr m_push
X or
X.Fr m_pushsave
X is restored.
XIf no environments have been pushed,
X.Fr m_pop
Xis ignored.
X.Fe
X.Fh m_popall
X.Fs m_popall 10 "Pop all stacked window contexts"
XLike
X.Fr m_pop
Xabove, except all environments pushed since the 
Xfirst call to
X.Fr m_setup
Xare popped.
XThe macro
X.Fr m_popall
X is typically
Xused as part of the clean up before
Xclient program termination.
X.Fe
X.Fh m_printstr string
X.Fs m_printstr 2 "Print a string on the window"
XPrint
X.Fi string
Xon the window at the current character cursor location.
XThis is equivalent to the
X.I stdio
Xfunction
X.I printf
Xwith a 
X.I %s
Xformat specified and the output directed toward the file pointer
X.I m_termout
Xinstead of
X.I stdout .
X.Fe
X.Fh m_push mode
X.Fs m_push 10 "Stack the window context"
XCertain parts (stack modes) of the current window environment may
Xbe moved to a stack, to be restored at a later time with
X.Fr m_pop
Xor
X.Fr m_popall
X\&.
XAny combination of the following pieces of the
Xwindow environment, called a window context,
Xmay be placed on the window stack.
X.RS
X.IP \fBP_BITMAP\fP 0.5i
X.br
XAll currently defined
X.I scratchpad
Xbitmaps
Xare moved to the stack and become undefined in the current window context.
X.IP \fBP_CURSOR\fP 0.5i
X.br
XThe current
X.I character
Xcursor
Xand
X.I "graphics point"
Xpositions are saved on the stack.
X.IP \fBP_EVENT\fP 0.5i
X.br
XAll currently defined events are moved to the stack and
Xbecome undefined in the current window context.
X.IP \fBP_FLAGS\fP 0.5i
X.br
XThe window modes, as set with
X.Fr m_setmode
Xare moved to the stack.
XThe modes revert to their default settings in the current window context.
X.IP \fBP_FONT\fP 0.5i
X.br
XThe current font setting is copied to the stack.
XIf this font is subsequently deleted, by writing over it with a different
Xfont, the original font setting is retained, even if it can no longer
Xbe accessed using
X.Fr m_font
X\&.
X.IP \fBP_MENU\fP 0.5i
X.br
XAll downloaded menus and menu links are moved to the the stack along with
Xthe currently selected menu number.
XThe menus become undefined in the current context.
X.IP \fBP_MOUSE\fP 0.5i
X.br
XThe mouse cursor location
Xis saved on the stack.
XIts current location remains the same.
X.IP \fBP_POSITION\fP 0.5i
X.br
XThe window size and location is saved on the stack.
XThe current size and location are maintained.
X.IP \fBP_TEXT\fP 0.5i
X.br
XThe text region location and size are saved on the stack.
XThe text region in the current context is reset to the entire window.
X.IP \fBP_WINDOW\fP 0.5i
X.br
XThe current image contents of the window is copied to the stack.
XThis is done without altering the current contents of the window.
X.RE
XStack modes are combined by
X.I or -ing
Xthem together
Xto form a saved window context, such as:	
X.Fr m_push P_MENU|P_EVENT 
X which will save all events, and menus but leave everything else
Xalone.
XAll stack modes that
Xrequire client download data revert to their default settings
Xwhen they are
X.I pushed .
XFor example, after
X.Fr m_push P_MENU|P_EVENT|P_MOUSE
X is called, no
Xevents or menus are currently defined,
Xbut the mouse remains where it is.
XThe defined constant
X.SM
X.I P_ALL
X.LG
Xrefers to all of the modes.
X.Fe
X.Fh m_pushsave mode
X.Fs m_pushsave 10 "Stack and save the window context"
XCertain parts (stack modes) of the current window environment may
Xbe copied to a stack, to be restored at a later time with
X.Fr m_pop
Xor
X.Fr m_popall
X\&.
XThe macro
X.Fr m_pushsave
X differs from
X.Fr m_push
Xin that downloaded data, such as
X.I menus
X.I events
Xor
X.I scratchpad
Xbitmaps
Xare copied to the stack instead of moved,
Xand thus remain in effect after the call to
X.Fr m_pushsave
X\&.
XThe current window context is thus unaffected.
XAny combination of the following pieces of the
Xwindow environment may be copied to the window stack.
X.RS
X.IP \fBP_BITMAP\fP 0.5i
X.br
XAll currently defined
X.I scratchpad
Xbitmaps
Xare copied to the stack.
X.IP \fBP_CURSOR\fP 0.5i
X.br
XThe current
X.I character
Xand
X.I graphics
Xcursor positions are saved on the stack.
X.IP \fBP_EVENT\fP 0.5i
X.br
XAll currently defined events are copied to the stack.
X.IP \fBP_FLAGS\fP 0.5i
X.br
XThe window modes, as set with
X.Fr m_setmode
X, are copied to the stack.
X.IP \fBP_FONT\fP 0.5i
X.br
XThe current font setting is copied to the stack.
XIf this font is subsequently deleted, by writing over it with a different
Xfont, the original font setting is retained, even if it can no longer
Xbe accessed using
X.Fr m_font
X\&.
X.IP \fBP_MENU\fP 0.5i
X.br
XAll downloaded menus and menu links are copied to the the stack along with
Xthe currently selected menu number.
X.IP \fBP_MOUSE\fP 0.5i
X.br
XThe mouse cursor location
Xis saved on the stack.
X.IP \fBP_POSITION\fP 0.5i
X.br
XThe window size and location are saved on the stack.
X.IP \fBP_TEXT\fP 0.5i
X.br
XThe text region location and size are saved on the stack.
X.IP \fBP_WINDOW\fP 0.5i
X.br
XThe current image contents of the window is copied to the stack.
X.RE
XStack modes are combined by
X.I or -ing
Xthem together 
Xto form a saved window context, such as:	
X.Fr m_push P_MENU|P_EVENT 
X which will save all events, and menus but leave everything else
Xalone.
X.Fe
X.Fh m_put string
X.Fs m_put 12 "Save characters in the global snarf buffer"
X.Fi String
Xis put into the global
X.I snarf
Xbuffer.
XThere is one common buffer
Xfor all clients programs.
XThe macro
X.Fr m_snarf
X is used to retrieve the contents of the buffer.
XThe \*M system
X.I cut
Xfunction places text in this buffer, whereas 
Xthe system
X.I paste
Xfunction pastes text from this buffer.
X.Fe
X.Fh m_putchar c
X.Fs m_putchar 2 "Put a character on the window"
XThe character
X.Fi c
Xis written in the window at the current character cursor
Xlocation.
XThis function is like the
X.I stdio
X.I putchar(c) ,
Xonly directed toward the client's window.
X.Fe
X.Fh m_rcircle radius
X.Fs m_rcircle 4 "Draw a circle at the graphics point"
XA circle of radius
X.Fi radius
Xis drawn, centered at
Xthe current
X.I "graphics point" .
XThe points at the edge of the circle are
Xset, cleared or inverted
Xdepending upon the last call to
X.Fr m_func
X\&.
XCircles are always drawn as circles, both in
X.I absolute
Xand in
X.I relative
Xwindow coordinates.
XThe
X.Fi radius
Xis scaled based upon the average
X.Fi width
Xand
X.Fi height
Xof the window.
X.Fe
X.Fh m_rellipse radius1 radius2
X.Fs m_rellipse 4 "Draw an ellipse at the graphics point"
XDraw an ellipse centered at
Xthe
X.I "graphics point" .
XThe two radii,
X.Fi radius1
Xand
X.Fi radius2
Xspecify the major and minor axis.
XThe ellipse is either
Xset, cleared, or inverted
Xdetermined by the last call to
X.Fr m_func
X\&.
XIf the window is in
X.I relative
Xcoordinate mode,
X.Fi radius1
Xand
X.Fi radius2
Xare scaled based upon the average
X.Fi width
Xand
X.Fi height
Xof the window.
X.Fe
X.Fh m_resetesc
X.Fs m_resetesc 1 "Restore the \*M escape character to '\\e033'"
XThe \*M
X.I escape
Xcharacter is reset to its to default value ('\e033').
XThis turns off the debugging mode turned on by
X.Fr m_setesc
X\&.
X.Fh m_rfastdraw count data
X.Fs m_rfastdraw 4 "Draw a group of fast vectors at the graphics point"
XThe next
X.Fi count
Xbytes of
X.Fi data
Xare sent to \*M are to be interpreted as lines drawn in
X.I "fast draw"
Xmode,
Xstarting at
XThe current graphics point.
X.I "Fast draw"
Xmode permits the rapid drawing of short vectors
Xby encoding an 
X.I x,y
Xdisplacement location in a single byte.
XThe 
X.I x
Xcoordinate is contained in the most significant
X4 bits, the
X.I y
Xcoordinate in the least significant 4 bits.
XValues for
X.I x
Xand
X.I y
Xrepresent displacements from the previous location, and
Xrange from +7 to -8.
XA 7 is coded as 
X.B 0xff ,
Xa -8 as
X.B 0x00 .
XIf both 
X.I x
Xand
X.I y
Xare zero (i.e.
X.B 0x8080 ).
XThe next coordinate is taken to be a
X.I move
Xinstead of a
X.I draw.
XAn eight bit channel between \*M and the client program is required for
X.I "fast draw"
Xmode.
XSee also
X.Fr m_fastdraw
X\&.
X.Fe
X.Fh m_right n
X.Fs m_right 13 "Move character cursor right by tenths of a character width"
XMove the character cursor right 
X.Fi n
Xtenths of a character width.
XSee also
X.Fr m_left
X.Fr m_down
Xand 
X.Fr m_up
X\&.
X.Fe
X.Fh m_scrollregion first_row last_row
X.Fs m_scrollregion 3 "Set up a VT00 like scrolling region"
XThis sets up a
X.I "text region"
Xas a
X.I  VT100-like
Xscrolling region.
XThe entire width of the window
Xfrom lines
X.Fi first_row
Xto
X.Fi last_row
Xinclusive becomes the 
X.I "text region" .
XSee also
X.Fr m_textregion
X\&.
X.Fe
X.Fh m_selectmenu n
X.Fs m_selectmenu 8 "Select a pop-up menu for the middle mouse button"
XThis macro is used to indicate menu 
X.Fi n
Xpops-up in response to pressing
Xthe
X.I middle
Xmouse button.
XMenus are downloaded (with
X.Fr m_loadmenu
X) first, then selected.
XOnly one menu may be selected at a time on each button.
XIf the button is already down when this call is made, and there is not currently
Xa menu associated with the button, then the menu just selected pops-up
Ximmediately.
XThis last feature may be used to pop up different menus 
Xin a context sensitive way.
X.Fe
X.Fh m_selectmenu2 n
X.Fs m_selectmenu2 8 "Select a pop-up menu for the right mouse button"
XThis macro is used to indicate menu 
X.Fi n
Xpops-up in response to pressing
Xthe
X.I right
Xmouse button.
XMenus are downloaded (with
X.Fr m_loadmenu
X) first, then selected.
XThis macro functions the same as, and should be combined with
X.Fr m_selectmenu
X above, but exists separately for historical reasons.
X.Fe
X.Fh m_selectwin n
X.Fs m_selectwin 11 "Select an alternate window for output"
XSelect alternate window
X.Fi n
Xfor output.
XAlternate windows are
Xfirst created by
X.Fr m_newwin
X\&.
XAll output goes to the selected
Xwindow until either
X.Fr m_selectwin
Xis called to change windows,
Xor the selected window is destroyed.
XIf
X.Fi n
Xis 0 (zero) or the currently selected window is destroyed,
Xthe main, or original window is selected.
XInput from all windows is
Xsend to the client program on the same input channel.
XThe macro
X.Fr m_setevent ACTIVATE
X may be used to help decide what window generated the input
Xby associating a unique string with each window's 
X.SM
X.I ACTIVATE
X.LG
Xevent.
XThe
X.I selected
Xwindow 
Xand the
X.I active
Xwindow are specified independently.
XSelecting a window does not make it the 
X.I active 
Xwindow, and creating a new window, although it is created as the 
X.I active
Xwindow, is not automatically selected.
X.Fe
X.Fh m_sendme string
X.Fs m_sendme 12 "Send string back to self"
XThe argument
X.Fi string
Xis sent back to the client process
Xas if it was typed in at the keyboard.
X.Fe
X.Fh m_sendto n string
X.Fs m_sendto 12 "Send a message to another window"
XThe message
X.Fi string
Xis send to window
X.Fi n .
XA unique window identifier,
X.Fi n 
Xis determined with either
X.Fr m_setevent
X using the 
X.B %w
Xoption,
Xor with
X.Fr m_getinfo
X\&.
XIn general, the window id
X.Fi n
Xis the process id (\c
X.I pid )
Xof the client program started by \*M
Xwhen the window was created.
XIf the target window has turned on
X.SM
X.B ACCEPT
X.LG
Xwith
X.Fr m_setevent
X,
X.Fi string
Xis received by the client program associated with the target window
Xas part of the
X.SM
X.B ACCEPT
X.LG
Xevent.
XGeneral write permissions must be disabled on the target client's
X.I pseudo tty
Xin order for the message to be received, to prevent unsuspecting 
X.I shell s
Xfrom interpreting messages sent by unscrupulous processes as commands.
XSee also
X.Fr m_broadcast
X\&.
X.Fe
X.Fh m_setesc c
X.Fs m_setesc 1 "Change the \*M escape character (for debugging)"
XThis macro call causes the character
X.Fi c
Xto be used as the \*M
Xescape character by the library package (instead of 
X.I '\e033' ).
XThis permits viewing
Xthe output stream to \*M without causing the commands to
Xbe executed.
X.Fe
X.Fh m_setecho
X.Fs m_setecho 1 "Turn on terminal character echo"
XTurn on character echoing, if possible.
XCharacter echoing is normally disabled by clients to inhibit information
Xfrom \*M, as from calls to 
X.Fr m_getinfo
X, from echoing on the window.
X.Fe
X.Fh m_setevent n string
X.Fs m_setevent 9 "Set an event"
XAn event string,
X.Fi string
Xis sent to the client program by \*M upon the
Xoccurrence of the specified event
X.Fi n .
XThe event string is typically
Xread by the client program using
X.Fr m_gets
X\&.
XEvent strings are never sent in response to an event unless specifically
Xrequested by the client program.
XEvents are one of the following types.
X.RS
X.IP \fBACTIVATE\fP 0.5i
X.br
XThe window became the
X.I active
Xwindow.
XIt is at the front of the display, and is currently receiving
Xboth mouse and keyboard input.
X.IP \fBBUTTON_1\fP 0.5i 
X.br
XThe right
Xmouse button was depressed.
XThis event is sent only to the
X.I active
Xwindow.
X.IP \fBBUTTON_1U\fP 0.5i
X.br
XThe right mouse button was released.
XThis event is sent only to the
X.I active
Xwindow.
X.IP \fBBUTTON_2\fP 0.5i
X.br
XThe middle mouse button was depressed.
XThis event is sent only to the
X.I active
Xwindow.
X.IP \fBBUTTON_2U\fP 0.5i
X.br
XThe middle mouse button was released.
XThis event is sent only to the
X.I active
Xwindow.
X.IP \fBCOVERED\fP 0.5i
X.br
XThe window was partially or completely obscured by another window.
X.IP \fBDEACTIVATE\fP 0.5i
X.br
XThe window was deactivated, it is no longer the
X.I active
Xwindow.
X.IP \fBREDRAW\fP 0.5i
X.br
XThe display was redrawn, either by
Xselecting the
X.I redraw
Xoption from the system menu, or by keying
X.I \s-2LEFT\s+2-r
Xfrom the keyboard.
XOnly windows that are exposed receive the 
X.SM
X.I REDRAW
X.LG
Xevent.
XThe images of obscured windows are restored automatically by \*M.
XThe client program is expected to regenerate the contents of its
Xwindow in response to the
X.SM
X.I REDRAW
X.LG
Xevent.
X.IP \fBRESHAPE\fP 0.5i
X.br
XThe window was reshaped.
XIf the user selects the system
X.I reshape
Xoption,
Xthe 
X.SM
X.I RESHAPE
X.LG
Xevent is sent, even if the window stays the same shape.
X.IP \fBUNCOVERED\fP 0.5i
X.br
XThe window, previously obscured, was uncovered.
XIf the window also became the 
X.I active 
Xwindow, the
X.SM
X.I UNCOVERED
X.LG
Xevent is sent
Xbefore the
X.SM
X.I ACTIVATE
X.LG
Xevent.
X.IP \fBMOVE\fP 0.5i
X.br
XThe window was moved.
X.IP \fBDESTROY\fP 0.5i
X.br
XThe window was destroyed.
XOnly
X.I alternate
Xwindows
X(as created by
X.Fr m_newwin
X) cause 
X.SM
X.I DESTROY
X.LG
Xevents to be sent.
XIf the
X.I main 
Xwindow is destroyed,
Xthe client program is sent a
X.I hangup
Xsignal, and its connection
Xto \*M is severed.
X.IP \fBACCEPT\fP 0.5i
X.br
XMessages are accepted from client programs running in other windows
X(see
X.Fr m_sendto
X\&).
XThe content of the message is obtained by specifying the 
X.Fi %m
Xparameter as part of the event string, as is fully described below.
X.IP \fBNOTIFY\fP 0.5i
X.br
XRegister a name with \*M, and make this name available to client programs.
XThis name is available to other clients, either by a call to 
X.Fr m_getinfo G_NOTIFY
X or with the
X.Fi %n
Xparameter described below.
XUnlike the other events, 
Xthe
X.I notify
Xstring is never sent back to the client program by \*M, but is
Xused to register a name for the window.
X.IP \fBSNARFED\fP 0.5i
X.br
XText was put into the snarf buffer either by a client program with
X.Fr m_put
X or by use of the system
X.I cut
Xfunction.
X.IP \fBPASTE\fP 0.5i
X.br
XText is about to arrive as a result of the system
X.I paste function.
X.RE
X
XSome
X.I event
Xstrings may contain substitutable parameters in the
Xmanner of
X.I printf
Xformat specifiers (i.e. %X).
XThese parameters
Xare applicable only to certain types of events.
XIn any case, the
X.B %
Xcharacter may be forced by doubling it, as in
X.B %% .
XWhere more than one data item replaces the format specifier, 
Xthe items are separated by 
Xa
X.I space
Xcharacter.
XFor the event strings
X.Fi BUTTON_1
Xand
X.Fi BUTTON_2 ,
Xseveral parameters cause \*M to sweep out some object in response to
Xmouse movement, and report back the size of the swept object when the button
Xis released.
XAny one of lines, boxes, text, or rectangles may be swept out with 
Xthis mechanism.
XInitial parameters may be associated with a sweep event by listing them
Xas comma separated integers following the 
X.B %
Xand preceding the sweep command character.
XThe parameters (if any) set the initial size of the object to be swept, 
Xin the same coordinate system in which the sweep extend is reported.
X.RS
X.IP \fB%r\fP 0.5i
XDepressing the button causes \*M to
Xsweep out a rectangle in response to moving the mouse,
Xin a manner similar to the system
X.I reshape
Xfunction.
XThe initial parameters set the initial width and height of the rectangle.
XWhen the button is released,
Xthe coordinates of the
X.I starting
Xand
X.I ending
Xpoints of the rectangle in response to moving the mouse, in
X.I window
Xcoordinates,
Xare substituted for the
X.B %r .
X.IP \fB%R\fP 0.5i
XDepressing the button causes \*M to
Xsweep out a rectangle,
Xas in
X.B %r
Xabove,
Xonly the the result is in 
X.I display coordinates.
X.IP \fB%b\fP 0.5i
XDepressing the button causes \*M to
Xmove a rectangle in response to moving the mouse,
Xin a manner similar to the system
X.I move
Xfunction.
XThe initial parameters set the initial width and height of the rectangle
Xto be moved.
XWhen the button is released,
Xthe current coordinates of the box's corner
Xis returned in
X.I window
Xcoordinates,
Xsubstituted for the
X.B %b .
X.IP \fB%B\fP 0.5i
XDepressing the button causes \*M to
Xmove a rectangle in response to moving the mouse,
Xin a manner similar to the system
X.I move
Xfunction.
XThe initial parameters set the initial width and height of the rectangle
Xto be moved.
XWhen the button is released,
Xthe current coordinates of the box's corner
Xis returned in
X.I display
Xcoordinates,
Xsubstituted for the
X.B %b .
X.IP \fB%l\fP 0.5i
XDepressing the button causes \*M to
Xsweep out a line.
XOne end of the line remains fixed at the
X.I "graphics point"
Xwhile the other end of the line tracks the mouse position.
XThe initial end point of the line may be specified as a displacement
Xfrom the graphics point as part of the initial parameters.
XWhen the button is released,
Xthe coordinates of the
X.I starting
Xand
X.I ending
Xpoints of the line, in
X.I window
Xcoordinates,
Xare substituted for the
X.B %l .
X.IP \fB%t\fP 0.5i
XDepressing the button causes \*M to
Xsweep out text, in a manner equivalent to the system
X.I cut
Xfunction.
XUpon the release of the button, the
X.B %t
Xis replaced by the starting character coordinate of the 
X.I cut
Xregion, followed by character distance to the ending point
Xin columns and lines respectively.
XFor example, The event string 
X\fIsweep[\fP\fB%t\fP\fI]\fP
Xmight return
X\fIsweep[\fP\fB17 5 6 0\fP\fI]\fP,
Xindicating the user swept out a six character word on a single
Xline, starting on
X.Fi column
X17,
X.Fi row
X5.
XAn inital size may ber specified in number of rows and number of
Xcolumns.
X.RE
XThe remaining format specifiers are replaced by the information
Xdescribed below No sweep action is performed.
X.RS
X.IP \fB%p\fP 0.5i
XThe
X.B %p
Xis replaced by the current mouse coordinates, in
X.I window
Xcoordinates.
X.IP \fB%P\fP 0.5i
XThe
X.B %P
Xis replaced by the current mouse coordinates, in
X.I character
Xcoordinates.
X.IP \fB%n\fP 0.5i
XIf the mouse cursor is over a window whose
X.SM
X.Fi NOTIFY
X.LG
Xevent is set,
Xthe text of that message is substituted for the
X.B %n .
X.IP \fB%w\fP 0.5i
XIf the mouse cursor is over a window whose
X.SM
X.Fi NOTIFY
X.LG
Xevent is set,
Xthe 
X.Fi window_id
Xof the clicked on window
Xis substituted for the
X.B %w .
XThis
X.Fi window_id
Xmay be used by
X.Fr m_sendto
Xto send the clicked-on window a message.
X.IP \fB%S\fP 0.5i
XIf the mouse cursor is over a window whose
X.SM
X.Fi NOTIFY
X.LG
Xevent is set,
Xthe length of that message is substituted for the
X.B %S .
X.RE
X.sp
XThe 
X.SM
X.Fi ACCEPT
X.LG
Xevent is used to receive messages from other client programs.
XThe following substituteable parameters may be used as part of the
Xevent string.
X.RS
X.IP \fB%f\fP 0.5i
XThe
X.Fi window_id
Xof message sender, as used in
X.Fr m_sendto
X, replaces the
X.B %f .
X.IP \fB%m\fP 0.5i
XThe text of message sent by the other client program
Xreplaces the
X.B %m
X.IP \fB%s\fP 0.5i
XThe length of the message, in characters,
Xreplaces the
X.B %s .
XFor example, a call to
X.TS
Xcenter box;
Xc.
Xm_setevent(ACCEPT,"Message from (\fB%f\fP), (\fB%s\fP) long is: \fB%m\fP")
X.TE
Xmight cause \*M to return
X.TS
Xcenter box;
Xc.
XMessage from (\fB3214\fP), (\fB2\fP) long is: \fBHI\fP
X.TE
Xafter the client program whose
X.I "window id"
Xis
X.I 3214
Xuses
X.Fr m_sendto
Xto send the message
X\fI"HI\|"\fP.
X.IP \fB%p\fP 0.5i
XAs with the 
X.SM
X.Fi BUTTON
X.LG
Xevents above,
X.B %p
Xis replaced by the current mouse position in
X.I window
Xcoordinates.
X.IP \fB%P\fP 0.5i
XAs with the 
X.SM
X.Fi BUTTON
X.LG
Xevents above,
X.B %P
Xis replaced by the current mouse position in
X.I character
Xcoordinates.
X.RE
XFor the
X.SM
X.Fi SNARFED
X.LG
Xevent string,
Xthe following substitution parameters are recognized.
X.RS
X.IP \fB%f\fP 0.5i
XThe 
X.I "window id"
Xof the window filling the
X.I snarf
Xbuffer replaces the
X.B %f .
X.IP \fB%c\fP 0.5i
XThe current length of the
X.I snarf
Xbuffer, in characters,
Xreplaces the
X.B %c .
X.IP \fB%C\fP 0.5i
XThe contents of the 
X.I snarf
Xbuffer replaces the
X.B %C .
XAt present, only the first 250 characters of the 
X.I snarf
Xbuffer may be returned via the
X.B %C
Xparameter.
XUse
X.Fr m_snarf
Xto read the entire buffer.
X.RE
X.sp
XThe
X.SM
X.Fi PASTE
X.LG
Xevent string,
Xrecognizes the
X.B %c
Xspecifier as described under
X.SM
X.I SNARFED
X.LG
Xabove.
X.Fe
X.Fh m_setmode mode
X.Fs m_setmode 6 "Set a window mode"
XVarious window modes may be
X.I set
Xor
X.I cleared
X(see
X.Fr m_clearmode
X)
Xindependently.
XThese modes are:
X.RS
X.IP \fBM_STANDOUT\fP 0.5i
XThe window is put in standout mode.
XAll characters
Xare written with their foreground and background
Xcolors reversed.
X.IP \fBM_WOB\fP 0.5i
XThe sense of
X.I white
Xand
X.I black
Xis reversed for the entire window,
Xnot just for characters as is
X.SM
X.B M_STANDOUT .
X.LG
X.IP \fBM_AUTOEXPOSE\fP 0.5i
XThe next character to be typed on the window
Xcauses it to automatically become the
X.I active
Xwindow.
X.IP \fBM_BACKGROUND\fP 0.5i
XOutput goes to the window even if it is 
Xpartially or totally obscured.
XThe data in exposed portions of the window is seen immediately.
XData in covered portions of the window is saved by \*M and restored 
Xwhen the covered portions are exposed.
X.IP \fBM_NOINPUT\fP 0.5i
XKeyboard input is prohibited.
XAll input from
Xthe keyboard is held buffered by \*M until
Xeither
X.SM
X.B M_NOINPUT
X.LG
Xis cleared, or a different
Xwindow is made the
X.I active
Xwindow.
XIn the latter case
Xthe input goes to the newly activated
Xwindow.
XThis flag is automatically turned
Xoff when the user activates the window.
XThis feature is for client programs that want one of their
Xwindows to come to the front just long enough to notify the
Xuser of some event, but do not want to accidently intercept keyboard
Xinput while the user is merrily typing to some other client.
X.IP \fBM_NOWRAP\fP 0.5i
XThe character cursor does not automatically jump to the left edge of
Xthe next line as it reaches the right edge of its text region.
XAfter the right margin is passed,
Xthe cursor and any subsequent text disappear past the right
Xedge of the window.
X.IP \fBM_OVERSTRIKE\fP 0.5i
XText is written to the window with the mode
Xspecified by
X.Fr m_func
X instead of the normal
Xcopy mode.
XIn copy mode, the characters completely obliterate their destination
Xinstead of combining with it.
X.IP \fBM_ABS\fP 0.5i
X.br
XThe window is set to 
X.I absolute
Xcoordinate mode.
XThe upper left edge of the window, just inside
Xthe border is at position
X.Fr "" 0  0
X\&.
XAll other locations
Xare measured relative to that corner in pixels.
X.IP \fBM_ACTIVATE\fP 0.5i
XThe window is made the
X.I active
Xwindow,  pops to the front of the display,
Xand obtains all keyboard and mouse input.
X.IP \fBM_SNARFLINES\fP 0.5i
XThe system
X.I cut
Xfunction only
Xcuts entire lines.
XIf any text on a line is swept out, the entire line of text
Xis included.
X.IP \fBM_SNARFTABS\fP 0.5i
XThe system
X.I cut
Xfunction attempts to turn
Xwhite space into a minimal combination of spaces and tabs.
XTab are set at every 8 columns.
X.IP \fBM_SNARFHARD\fP 0.5i
XThe system
X.I cut
Xfunction attempts to cut
Xtext even if the window contents have been corrupted.
XUnidentifyable characters are returned as
X.I C_NOCHAR
X(\'?\').
X.IP \fBM_STACK\fP 0.5i
XAny events pushed on the window stack
Xwhen this flag is set will be sent in addition to
Xany currently active events. 
XThis setting is useful for filters which need to receive events, yet
Xstill permit clients running under them to receive events as well.
X.RE
X.Fe
X.Fh m_setnoecho
X.Fs m_setnoecho 1 "Turn off character echo"
XCharacter echoing to the window is disabled if possible.
XCharacter echoing is normally disabled by clients to inhibit information
Xfrom \*M, as from calls to 
X.Fr m_getinfo
X from echoing on the window.
X.Fe
X.Fh m_setnoraw
X.Fs m_setnoraw 1 "Enable normal character input processing (line mode)"
XNormal terminal input processing is in effect.
XInput is buffered by lines, and all normal line editting
Xand keyboard interrupt generation
Xis in effect.
X.Fe
X.Fh m_setraw
X.Fs m_setraw 1 "Disable all character input processing (raw mode)"
XEvery character is available as entered, no input processing is 
Xdone.
XThis is typically called
X.I raw
Xmode.
XRaw mode is not always available, in which case the macro call is
Xignored.
X.Fe
X.Fh m_shapewindow X Y Dwidth Dheight
X.Fs m_shapewindow 6 "Reposition a window"
XThe window is reshaped to
Xposition
X.Fr "" X Y
X and with size
X.Fi Dwidth
Xby
X.Fi Dheight .
XAs only the
X.I active
Xwindow may be reshaped,
X.Fr m_shapewindow
Xactivates the window if it is not already active.
XThe new size of the window is not guaranteed;
Xthe
X.I width
Xor
X.I height
Xmay be truncated to the right or bottom edges of the display.
XThe macro
X.Fr m_getinfo
Xcan be used to determine the actual window size.
X.Fe
X.Fh m_size columns rows
X.Fs m_size 6 "Resize a window to a specified number of rows and columns"
XThe size of the window is changed so that it fits exactly
X.Fi columns
Xby
X.Fi rows
Xof characters in the current font.
XThe window may be truncated at the right or bottom edge of the display
Xif it is too large to fit on the display at its current position.
X.Fe
X.Fh m_sizeall X Y columns rows
X.Fs m_sizeall 6 "Reposition a window with a given number of rows and columns"
XThe window is reshaped to position
X.Fr "" X Y
X on the display, and resized to fit
X.Fi columns
Xand
X.Fi rows
Xof text.
XAs only the
X.I active
Xwindow may be reshaped,
X.Fr m_shapewindow
X activates the window if it is not already active.
XThe new size of the window is not guaranteed;
Xthe
X.I width
Xor
X.I height
Xmay be truncated to the right or bottom edges of the display.
XThe macro 
X.Fr m_getinfo
Xcan be used to determine the actual window size.
X.Fe
X.Fh m_snarf
X.Fs m_snarf 12 "Retrieve the contents of the global snarf buffer"
XThe application is sent the contents of the global snarf buffer,
Xif any, as specified by the last call by a client programs
Xcall to
X.Fr m_put
X or by use of the system
X.I cut
Xfunction.
X.Fe
X.Fh m_sleep
X.Fs m_sleep 13 "Do nothing"
XThis call causes \*M to suspend the processing
Xof characters to the window.
XAfter a chunk of output for all other windows has been processed,
Xoutput processing resumes.
XThis does not normally take very long, making
X.Fr m_sleep
X almost a 
X.I no-op.
X.Fe
X.Fh m_standend
X.Fs m_standend 3 "Turn off reverse video characters"
XInverse video mode as set by
X.Fr m_standout
X is turned off.
XThis is exactly equivalent to
X.Fr m_clearmode M_STANDOUT
X\&.
X.Fe
X.Fh m_standout
X.Fs m_standout 3 "Turn on reverse video characters"
XInverse video mode is turned on.
XThis is exactly equivalent to
X.Fr m_setmode M_STANDOUT
X\&.
XThe color of the characters and their backgrounds are interchanged.
X.Fe
X.Fh m_stringto to x_dst y_dst string
X.Fs m_stringto 4 "Print a string to an scratchpad bitmap"
XThe text
X.Fi string
Xis printed
Xstarting at the location
X.Fr "" x_dst y_dst
X on 
X.I scratchpad
Xbitmap
X.Fi to .
XThe text is clipped to fit in the bitmap, and no special command processing
Xis done on
X.Fi string.
XIf 
X.Fi to
Xis 0 (zero),
XThe text is printed on the window, but
X.I "text region"
Xboundaries are ignored.
XThis is the only way to get text into a window outside of the
X.I "text region" .
X.Fe
X.Fh m_textregion x y wide high
X.fs 3 "create a text region"
XA subregion within the current window
Xstarting at
X.Fr "" x y
X and of size
X.Fi wide
Xby
X.Fi high
Xis defined within which all text is restricted.
XAll functions and information that deals in
X.I character
Xcoordinates views the text region as if it was the entire window.
XAs soon as the text region is defined, the character cursor is
Xmoved to row and column
X.Fr "" 0 0
X,
Xwhich is now located at the point
X.Fr "" x y
X\&.
XGraphics output is not affected by text regions.
X.Fe
X.Fh m_textreset
X.Fs m_textreset 3 "Reset the text region to the entire window"
XThe
X.I "text region"
X(defined by a call to
X.Fr m_textregion
X) is reset to be the entire window.
XThis is the default setting.
X.Fe
X.Fh m_unlinkmenu parent item
X.Fs m_unlinkmenu 8 "Unlink a menu"
XThe menu link associating a child menu with
Xthe menu
X.Fi parent
Xat
X.Fi item
X(counting from zero) is removed
X(see also
X.Fr m_linkmenu
X\&).
XThis function does not change the menus, only their
Xconnections.
X.Fe
X.Fh m_unpagemenu parent
X.Fs m_unpagemenu 8 "Disconnect two pages of a paged menu"
XThe link associating the menu
X.Fi parent
Xwith a
X.I child
Xmenu is removed.
XSee also
X.Fr m_pagemenu
X\&.
X.Fe
X.Fh m_up n
X.Fs m_up 13 "Move character cursor up by tenths of a character height"
XMove the character cursor up 
X.Fi n
Xtenths of a character height.  This may cause the window to scroll down.
XSee also
X.Fr m_left
X.Fr m_right
Xand 
X.Fr m_down
X\&.
X.Fe
X.Fh m_whatsat X Y
X.Fs m_whatsat 7 "Find out what is at a particular display location"
X\*M returns to the client program a line indicating what is at the
X.I display
Xcoordinates
X.Fr "" X Y
X\&.
XIf that location is occupied by a window,
Xa line containing the window's controlling terminal, alternate window number,
Xand
X.I "window id"
Xis returned in a space separated list.
XIf the location
X.Fr "" X Y
X is not in a window, \*M returns a newline.
X.Fe
X.Fh m_windowsave name
X.Fs m_windowsave 5 "Save the window image on a file"
XThe current image contents of the window is saved in the file
X.Fi name
Xon the \*M-host machine in \*M bitmap
Xformat.
XFile names beginning with "./" are evaluated relative to the current directory
Xwhen \*M was started.
XSee also
X.Fr m_othersave
X and
X.Fr m_bitsave
X\&.
X.Fe
END_OF_FILE
# end of 'doc/usrman/doc.4'
fi
echo shar: End of archive 50 \(of 61\).
cp /dev/null ark50isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
	21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 \
	38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 \
	55 56 57 58 59 60 61 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 61 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.