Level 0 Graphic Input Protocol
A protocol for how input devices send information to graphics systems.
Cotton, I.W., "Level 0 Graphic Input Protocol", RFC 336, DOI 10.17487/RFC0336, May 1972, <https://www.rfc-editor.org/info/rfc336>.
@misc{rfc336,
series = {Request for Comments},
number = 336,
howpublished = {RFC 336},
publisher = {RFC Editor},
doi = {10.17487/RFC0336},
url = {https://www.rfc-editor.org/info/rfc336},
author = {I.W. Cotton},
title = {{Level 0 Graphic Input Protocol}},
pagetotal = 2,
year = 1972,
month = may,
} RFC text
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
§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.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
TYPE | Type Code | 1 byte | 1 for text, 2 for position | |
DEVICE | Device Code | 1 byte | 0 unspecified, 1 keyboard, 2 tablet, 3 mouse, 4 joystick, 5 lightpen, 6 cursor, 7 keyset, 8 mouse-keyset | |
COUNT | Length | 2 bytes | Byte 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.