XEROX COMMWINDOW 2 4 1 COMMWINDOW 1 4 By: Larry Masinter, Stan Lanning, Nick Briggs, Richard Burton (Masinter.pa@Xerox.com, Lanning.PA@Xerox.COM, Briggs.PA@Xerox.com, Burton.pa@Xerox.com) Uses: COURIERSERVE This document last edited on 2-Apr-87 17:49:35 INTRODUCTION This is a demonstration of communication capabilities. The COMMWINDOW module implements a "remote window" capability, where one user can watch (with slow update) a region of another users screen. Both participants need to have COMMWINDOW loaded. To show someone else a piece of your screen, call (SEND-BITS partner &OPTIONAL frame) [Function] The partner is the name of the machine you want to talk to. (The watcher has to be registered in the clearinghouse database; this is a NS protocol name.) frame, if supplied, is a screen region to show. If it is omitted, send-bits will prompt the (sender) for a frame of the screen. The sender has complete control over the frame. The frame appears as a gray frame around the area shown, like this: a000EVTDD0EUUUUUUUUUUUUUUUUUTDD0UUUUUUUUUUUUUUUZ00EVTDD0EUUUUUUUUUUUUUUUUUTDD0UUUUUUUUUUUUUUUZ00WDDDDDDETDD0T DDDDDDETDD0 0 0T DDDDDDETDD0T DDDDDDETDD0 0 0T DDDDDDETDD0T DDDDDDETDD0 0 0T DDDDDDETDD0T DDDDDDETDD0 0 0T DDDDDDETDD0WDDDDDDETDD000WDDDDDDETDD0WDDDDDDETDD000WDDDDDDETDD0WDDDDDDETDD000WDDDDDDETDD0WDDDDDDETDD0 0 0T DDDDDDETDD0!T DDDDDDETDD0" 0.p@ 01T@ DDDDDDETDD0!T`_0"0"@0!Tp@_0T_0fz00fLɓ$:?0TfLɓ$5Y?0TfLɓ$5Y?0fLɓ$:?0fL&3?0T_0T_00 0T""""""%R""0T ^?0 0  * 0T""'+&%S?"0T D E^ 0 Ɍ0 "1 0T""'S?0T P000UUUUUUUUUUUUUUUUUP0UUUUUUUUUUUUUUUUUQ0 00UUUUUUUUUUUUUUUUUT0UUUUUUUUUUUUUUUUUTy0 @  0 @Hb0 H!0 0 0 0 0 '0  !0  B000 (The frame consists really of 4 thin windows, so that you can really type/button inside it.) The frame can be moved by left buttoning anywhere on it. Right buttoning on it makes it go away temporarily. (Reshaping the frame can be accomplished by left buttoning the frame while the shift key is depressed. This doesn't reshape the remote window currently, so this isn't very useful.) Since this is an experiment, there are a couple of parameters you can vary. The function (mode-menu) will bring up a window that lets you control any and all of these parameters. The first is the shape of the areas sent in each packet. Currently available shapes are: square: a square of bits as big as will fit in a single packet rectangle: 4 times wider than it is high. horizontal: as wide as the frame, and then as high can be vertical: as high as the frame and as wide as can be h3: this is a funny mode, where the update is in horizontal chunks, but spread out. PARAMETERS The parameter \ETHERLIGHTNING lets you tell the low-level ethernet code to randomly drop packets. This parameter can be used to study the effects of noisy communication lines on transmision protocol. Another parameter gives you some local control over the region within the frame that is updated. There are three available values: Sender: Update near the sender's cursor, when it has moved, ASAP. Viewer: Update near the viewer's cursor, when it has moved, ASAP. NIL: don't do anything special. Another parameter lets lets you prune out sending packets that update regions of the display that have not changed. The tradeoff here between the cost of sending the packets vs testing a region to see if it has changed. A recent addition was the following part of the protocol: when the mouse on the sender is moving, it will send a square around the mouse interleaved with any other transmission ongoing. That means you can make sure a remote area is being updated by wiggling the mouse. The sender's mouse is also tracked in the remote viewers viewpoint (the cursor shape is currently not tracked, however). The mouse coordinates are sent every packet, so that mouse position always updates. The viewer has a limited option to place a pointer back on the sender's screen: if the viewer holds the shift key down while the viewer's mouse is in the view point window, a little pointer (@&@6@<@??><80@ @) will appear in the senders window and track the viewers cursor. (The pointer is in fact a little icon window.) When the viewer releases the shift key, the pointer icon disappears. CAUTIONS: Don't move the frame off the screen. It will just signal an error. The "don't change unsent tiles" parameter doesn't seem to work. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))) .H1 (. ((8(8D PAGEHEADING RUNNINGHEAD( (MODERN MODERN MODERNMODERN MODERN LOGO  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN   HRULE.GETFNMODERN  HRULE.GETFNMODERN 0 32  {t $ BMOBJ.GETFN3MODERN ]n9 @+;6U == \ BMOBJ.GETFN3 C@  kz