Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 3rd Edition (Vita Nuova)

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

wm(1)

mux(1)

draw-intro(2)

ir(2)

prefab-intro(2)

tk(2)

DRAW-CONTEXT(2)

NAME

Context − graphics environment

SYNOPSIS

include "draw.m";
draw := load Draw Draw->PATH;
 Context: adt
{
    screen:  ref Screen;
    display: ref Display;
    cir:     chan of int;
    ckbd:    chan of int;
    cptr:    chan of ref Pointer;
    ctoappl: chan of int;
    ctomux:  chan of int;
};

DESCRIPTION

The ­Context type encapsulates the data types and channels used by an interactive application.  A reference to the ­Context is passed as the first argument to an application when it begins execution:

include "draw.m"
 Command: module
{
init: fn(nil: ref Draw->Context; nil: list of string);
};

Most programs do not create ­Contexts but instead inherit one from their parent, typically a shell or window system. 

The wm(1) and mux(1) environments use ­Context differently as regards keyboard and pointer (mouse) I/O.  ­Mux applications are given a set of channels in their ­Context structure.  ­Wm applications provide keyboard and mouse input encoded as Tk events on a channel named via ­Tk->namechan in tk(2), and the channels in the ­Context are unused, and nil. 

Common interface

The following elements of ­Context are used by both ­wm and mux:

­screen The ­Screen adt to which the application is connected; may be nil.  See draw-screen(2).

­display The ­Display adt to which the application is connected; may be nil.  See draw-display(2).

Mux-specific interface

As mentioned above, mux(1) primes an application’s argument ­Context with channels through which ­mux and the application interact.  The channels are used as follows:

­cir A channel of type ­int that delivers events from an infrared remote control device, if one is present.  See the discussion below and ir(2) for more information.

­ckbd A channel of type ­int that delivers keystrokes from a keyboard. 

­cptr A channel of type ­ref ­Pointer that delivers events from a pointing device such as a mouse.  See devpointer(2).

­ctoappl A channel of type ­int that delivers control messages from the mux(1) application multiplexer. One message is defined:

­MAtop Requests an application to make its set of windows fully visible. 

­ctomux A channel of type ­int used by the application to send messages to mux(1) regarding the application’s use of system devices. The defined messages are:

­AMstartir The application is ready to accept ir(2) data on the ­cir channel. 

­AMstartkbd The application is ready to accept keyboard data on the ­ckbd channel. 

­AMnewpin The application needs a PIN. 

­AMstartptr The application is ready to accept ­Pointer data on the ­cptr channel. 

­AMexit An application should send this message before it exits, to allow ­mux to recover resources. 

SEE ALSO

wm(1), mux(1), draw-intro(2), ir(2), prefab-intro(2), tk(2)

Plan 9  —  June 29, 2000

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026