RFC 336 UNKNOWN GRAPHICS · INPUT · PROTOCOL

Level 0 Graphic Input Protocol

A protocol for how input devices send information to graphics systems.

On rfc-editor.org ↗
PUBLISHED
May 1972
AUTHORS
I.W. Cotton
STREAM
Legacy
INPUT TYPES
Text and simple position
DEVICE CODES
8 types defined (0 to 8)
POSITION COORDINATE BYTES
4 bytes at Level 0
TEXT ENCODING
Network ASCII
DOI
10.17487/RFC0336

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
NIC 9929                                                Ira Cotton
NWG/RFC #336                                            Mitre
Level 0 Graphic Input Protocol                          5 May 1972

        Level 0 Graphic Input Protocol

           At its meeting on April 16-18 the network Graphics working
           group began to consider the definition of levels of protocol
           for graphic Input Protocol.  The following describes the
           Level 0 graphics input protocol.

           The philosophy guiding the establishment of this protocol is
           the same as suggested in RFC #178, "Network Graphic Attention
           Handling." Briefly, all input will be described by type,
           origin, and length, followed by the actual data.

           Only two types of input are defined at Level 0: text and
           simple position.

              Text Input

                  Text input will be conveyed in the following format:

                   TEXTIN : DEVICE : COUNT: Text String



                 TEXTIN is a protocol code indicating the nature of this
                 input string.  For the present this code is defined to
                 be 1.

                 DEVICE is a code indicating the device from which the
                 input originated.  The following codes are presently
                 defined:

                      0 - unspecified device
                      1 - primary keyboard
                      2 - tablet
                      3 - mouse
                      4 - joystick
                      5 - lightpen
                      6 - cursor
                      7 - keyset
                      8 - mouse & keyset

NIC 9929
NWG/RFC# 336
Level 0 Graphic Input Protocol

                 Count is an integer number indicating the number of
                 characters (bytes) which follow.

                 Text String is a string of "Count" bytes of characters
                 in network ASCII.

              Position Input

                   Simple position data will be conveyed in the
              following format:

                   POSIT : DEVICE : COUNT : x : y

                 POSIT is a protocol code indicating that this string
                 contains position data.  For the present this code is
                 defined to be 2.

                 DEVICE is a code indicating the input device on which
                 this data was generated.  The codes are as defined
                 above.

                 COUNT is an integer number indicating the number of
                 bytes of data which follow.  This includes data for
                 both x and y coordinates.  Thus, the number of bytes of
                 x coordinate data is COUNT divided by 2.  At level 0,
                 COUNT should always be 4, since at this level all
                 coordinates are expressed in 2 bytes of data.

                 x and y coordinate data are represented as signed
                 fractions in the same fashion that position data is
                 represented in the Level 0 graphic output protocol.

           It should be emphasized that input data from a level 0
           graphics user which is not in a format described above should
           be sent on a different link than the graphics input link.
           This may be desirable for certain applications to avoid the
           overhead of the protocol.

       [ This RFC was put into machine readable form for entry ]
       [ into the online RFC archives by BBN Corp. under the   ]
       [ direction of Alex McKenzie.                   12/96   ]

AI ELI5

On this page
PROBLEMGraphics systems need a standard way to communicate input from devices like keyboards, mice and tablets over the network.
MECHANISMLevel 0 Graphic Input Protocol defines a simple format: each input is described by a type code, a device code, a length, and then the actual data.
WHAT IT COVERSTwo input types are defined: text (from keyboards, joysticks and other text sources) and simple position (mouse or tablet coordinates as signed fractions).

§1Introduction

RFC 336 defines the Level 0 Graphic Input Protocol, created by the Network Graphics Working Group. The protocol is a simple way to describe input from devices connected to a graphics system. Drawing programs and remote graphics systems need a standard format to understand what a user did: typed text, clicked a button, or moved a stylus.

The protocol uses a consistent structure: every input is described by a type code (what kind of input), an origin code (which device sent it), a length (how many bytes follow), and then the actual data. This simple three-part header makes the protocol easy to parse and extend.

Imagine sending a postcard that always has the same format: first say what you drew or wrote, then say where you drew it with, then the actual picture or text. Any mail carrier can handle it.

§2Two Input Types

Level 0 defines exactly two kinds of input: text and simple position (coordinates). Text input uses type code 1 and sends keyboard characters in network ASCII. Simple position input uses type code 2 and sends x and y coordinates as signed fractions (always 4 bytes total at this level).

Each input also includes a device code to identify where it came from. Defined devices are: primary keyboard, tablet, mouse, joystick, lightpen, cursor controls, keyset, and combined mouse-keyset. Device code 0 marks an unspecified device when the source is unknown.

The protocol handles two things: words (text from a keyboard) and locations (where you touched with a mouse or stylus). Each message also says which tool made the input, like keyboard or mouse.

Text and position input formats
Level 0 Input Message Structure
FieldNameSizeValueDescription
TYPEType Code1 byte1 for text, 2 for position
DEVICEDevice Code1 byte0 unspecified, 1 keyboard, 2 tablet, 3 mouse, 4 joystick, 5 lightpen, 6 cursor, 7 keyset, 8 mouse-keyset
COUNTLength2 bytesByte count of data following

§3Format Details

A text input message is formatted as: TEXTIN:DEVICE:COUNT:Text String. TEXTIN is code 1; DEVICE is the device code; COUNT is the number of bytes in the text string; the text follows in network ASCII format.

A position input message is formatted as: POSIT:DEVICE:COUNT:x:y. POSIT is code 2; DEVICE is the device code; COUNT is the total byte count for both coordinates (4 bytes at Level 0); x and y are signed fractions.

Data that does not fit this format should be sent on a separate connection rather than through the graphics input link, to avoid protocol overhead.

Text messages put the type, device, count and text in order. Position messages put the type, device, count and the two coordinates in order. If something does not fit, use a different channel.

§4References