gpm: Margins

 
 3.2 How margins are managed
 ===========================
 
 Motion and button-press events are constrained to remain within the
 visible screen.  This means that the 'x' will be within 1 and 80 and 'y'
 will be within 1 and 25 when the console is 80x25 cells.  However, a
 client can keep track of movements outside the screen, by using the 'dx'
 and 'dy' fields, which aren't subject to clipping.
 
    The server helps applications in detecting margin conditions by
 filling the 'margin' field.  Whenever the pointer tries to cross screen
 boundaries, it is forced to remain on the border, but a flag is set in
 'margin'.
 
    A different policy is in force for drag and button-release events.
 In this case the pointer is allowed to go outside the physical screen by
 exactly one position.  This allows, for example, selecting to end of
 line by dragging down-left.  The peculiar situation is nonetheless
 signaled through the 'margin' flags.  The client should be careful to
 fit the values within the screen if needed.  SeeUtility Functions.