parent
7270d417a3
commit
2652544653
@ -0,0 +1,463 @@ |
||||
<!doctype html> |
||||
<html> |
||||
<meta charset="UTF-8"> |
||||
<title>Locator Input Model for ANSI Terminals (sixth revision)</title> |
||||
</head> |
||||
<style> |
||||
body { |
||||
background: white; |
||||
color: black; |
||||
width: 800px; |
||||
margin:0 auto; |
||||
font-family:monospace; |
||||
white-space: pre; |
||||
line-height: 1.35em; |
||||
font-size: 12pt; |
||||
} |
||||
</style> |
||||
|
||||
<body> |
||||
|
||||
<p><b>Locator Input Model for ANSI Terminals (sixth revision)</b> |
||||
<hr><p><i>File originally captured 3 Jan, 2011 |
||||
at http://web.eecs.utk.edu/~shuford/terminal/dec_vt_mouse.html</i> |
||||
<p><i>Retrieved from archive and restored by Ondřej Hruška <ondra@ondrovo.com>, 2017</i> |
||||
<hr> |
||||
<p>This information has been circulated to other terminal vendors |
||||
and people outside of Digital, but I'm not sure whether it has |
||||
been formally published (the DECterm manual includes some of it). |
||||
<p>I hope you find this helpful. |
||||
<p>- - Peter Sichel |
||||
<p> C&P VT Architecture |
||||
<p> Digital Equipment Corp |
||||
<p><tt> _ _ _ _ _ _ _ </tt> |
||||
<tt> | | | | | | | | </tt> |
||||
<tt> |d|i|g|i|t|a|l| INTEROFFICE MEMORANDUM</tt> |
||||
<tt> |_|_|_|_|_|_|_|</tt> |
||||
<p> TO: Locator Support on DATE: 23 Jun 1989 |
||||
<p> Terminals Interest List FROM: Peter Sichel |
||||
<p> DEPT: Video Architecture |
||||
<p> DTN: 223-5162 |
||||
<p> LOC: PKO3-1/10C |
||||
<p> NET: VIDEO::SICHEL<hr> |
||||
|
||||
<p><a href="#Overview">Overview</a> |
||||
<p><a href="#LOCATOR_INPUT_MODEL">Locator Input Model</a> |
||||
<p><a href="#Enabling_Locator_Reporting">Enabling Locator Reporting</a> |
||||
<p><a href="#Locator_Position_Reporting">Locator Position Reporting</a> |
||||
<p><a href="#Selecting_Locator_Events">Selecting Locator Events</a> |
||||
<p><a href="#LOCATOR_SUPPORT_FOR_GRAPHICS">LOCATOR SUPPORT FOR GRAPHICS</a> |
||||
<p><a href="#Locator_Key_Definition">Locator Key Definition (DECLKD)</a> |
||||
<p><a href="#Locator_Key_Definition">DECLKD - DEC Locator Key Definition</a> |
||||
<p><a href="#LOCATOR_DEVICE_SUPPORT">LOCATOR DEVICE SUPPORT</a> |
||||
<p><a href="#Locator_Device_Status_Report_DSR_">Locator Device Status Report (DSR)</a> |
||||
<p><a href="#Locator_Controller_Mode">Locator Controller Mode</a> |
||||
<p><isindex> |
||||
<hr> |
||||
|
||||
<p>SUBJECT: Locator Input Model for ANSI Terminals (sixth revision) |
||||
<p>This memo defines support for locator input devices on ANSI text |
||||
and graphics terminals. The goal is to make terminals able to |
||||
support the same class of applications popular on PCs and Workstations. |
||||
This is not meant to imply terminals must be compatible with |
||||
workstations, some limitations are unavoidable. The intent is |
||||
to provide a minimal set of locator functions which make sense |
||||
for terminals. Comments are welcome. |
||||
<p><b><a name="Overview">Overview</a></b> |
||||
<p>The terminal is supplied with a locator port which can be used |
||||
to connect an optional <i>mouse</i> or tablet. When locator reporting |
||||
is enabled, a seperate input cursor appears, and the terminal |
||||
tracks the locator locally with no host intervention. Individual |
||||
locator events such as locator button transitions or movement |
||||
may be programmed to send locator reports to the host. |
||||
<p>Each locator report includes the specific event which initiated |
||||
the report, the current state of the locator keys, and the coordinates |
||||
of the input cursor at the time of the event. |
||||
<p>The locator is treated as a manual input device similar to a keyboard. |
||||
Locater events are queued in the keyboard input silo along with |
||||
keystrokes. |
||||
<p><b><a name="LOCATOR_INPUT_MODEL">LOCATOR INPUT MODEL</a></b> |
||||
<p><i><a name="Enabling_Locator_Reporting"></a>Enabling Locator Reporting</i> |
||||
<p>Locator reporting can be selectively enabled from the host using |
||||
a DEC private control sequence. When disabled (the power up default), |
||||
the locator cursor does not appear, and the locator buttons are |
||||
inactive. When enabled, the locator cursor is visible, and the |
||||
terminal tracks the locator locally with no host intervention. |
||||
Individual locator events such as locator button transitions |
||||
or movement may be programmed to send locator reports to the host. |
||||
<p>DECELR - DEC Enable Locator Reports |
||||
<p>CSI Ps ; Pu ' z |
||||
<p> 2/7 7/10 |
||||
<p>Ps may assume the following values |
||||
<p> 0 locator disabled (default) |
||||
<p> 1 locator reports enabled |
||||
<p> 2 one shot (allow one report, then disable) |
||||
<p>Pu specifies the coordinate units for locator reports |
||||
<p> 0 (or omitted) default to character cells |
||||
<p> 1 device physical pixels |
||||
<p> 2 character cells |
||||
<p>One shot mode is provided for applications that desire simple |
||||
graphics input similar to Tektronix GIN mode (no unsolicited reports). |
||||
If parameter value 2 is selected, the next trigger event that |
||||
occurs will generate a single locator report. No further locator |
||||
reports will occur (the locator will be disabled), until another |
||||
DECELR sequence is received. |
||||
<p>The coordinate units for locator position reports may be selected |
||||
to either of two coordinate systems used by terminal software |
||||
at the lowest level. Physical pixels is the "least common |
||||
denominator", and is useful for computing sixel positions. |
||||
<p><i><a name="Locator_Position_Reporting">Locator Position Reporting</a></i> |
||||
<p>When a selected trigger event occurs such as a button press or |
||||
release, the terminal transmits a locator position report as follows. |
||||
<p> DECLRP - DEC Locator Report |
||||
<p> CSI Pe ; Pb ; Pr ; Pc ; Pp & w |
||||
<p> 2/6 7/7 |
||||
<p> Pe is the event code |
||||
<p> Pb is the button code |
||||
<p> Pr is the row coordinate |
||||
<p> Pc is the column coordinate |
||||
<p> Pp is the third coordinate (page number) |
||||
<p>Pe, the event code indicates what event caused this |
||||
report to be generated. The following event codes are defined: |
||||
<p> 0 - request, the terminal received an explicit request |
||||
<p> for a locator report, but the locator is unavailable |
||||
<p> 1 - request, the terminal received an explicit |
||||
<p> request for a locator report |
||||
<p> 2 - left button down |
||||
<p> 3 - left button up |
||||
<p> 4 - middle button down |
||||
<p> 5 - middle button up |
||||
<p> 6 - right button down |
||||
<p> 7 - right button up |
||||
<p> 8 - fourth button down |
||||
<p> 9 - fourth button up |
||||
<p> 10 - locator outside filter rectangle |
||||
<p>Pb is the button code, ASCII decimal 0-15 indicating which buttons |
||||
are down if any. The state of the four buttons on the locator |
||||
correspond to the low four bits of the decimal value, "1" |
||||
means button depressed |
||||
<p> 0 - no buttons down |
||||
<p> 1 - right |
||||
<p> 2 - middle |
||||
<p> 4 - left |
||||
<p> 8 - fourth |
||||
<p>Pr is the row coordinate of the locator position in the page, |
||||
encoded as an ASCII decimal value. If Pr is omitted, the locator |
||||
position is undefined (outside the terminal window for example). |
||||
<p>Pc is the column coordinate of the locator position in the page, |
||||
encoded as an ASCII decimal value. If Pc is omitted, the locator |
||||
position is undefined (outside the terminal window for example). |
||||
<p>Pp is the page coordinate of the locator position encoded as an |
||||
ASCII decimal value. The page coordinate may be omitted if the |
||||
locator is on page one (the default). |
||||
<p>Each locator report includes both the specific transition which |
||||
caused this event, and the current button state. This allows |
||||
software to determine what event just occured and which buttons |
||||
are down without keeping track of previous events or button state. |
||||
In a multiprocess shared locator environment, an application |
||||
may not know the previous button state. This dual reporting also |
||||
allows applications to recover from lost locator reports. |
||||
<p>Each locator event generates a single report. In the rare situation |
||||
where two events occur simultaneously (within a single sampling |
||||
period), the terminal will report this as two separate events. |
||||
The order of reporting shall be by increasing event code number |
||||
(left button first). |
||||
<p>Locator events are queued in the keyboard input silo just like |
||||
keystrokes. Each locator event occupies one position in the silo |
||||
(the keyboard silo currently must have at least 9 positions). |
||||
If the input silo becomes full, the locator and keyboard are |
||||
locked until there is again room in the silo. The sequential |
||||
order of keystroke and locator events is strictly maintained. |
||||
<p>It is the responsibility of the host to accept data fast enough |
||||
to avoid locking the locator unintentionally. The limited buffering |
||||
inside the terminal gives the host a little more time to process |
||||
locator events smoothly. |
||||
<p>When the keyboard is locked, the "wait" indicator on |
||||
the keyboard turns on. The keyboard is automatically locked any |
||||
time the keyboard input silo is full. The keyboard can be locked |
||||
explicitly using the keyboard action mode (KAM) control function. |
||||
<p>When the locator is locked, the terminal continues to track the |
||||
locator, but the input cursor changes shape to appear as a wristwatch |
||||
(or other shape indicating to wait). The wristwatch cursor indicates |
||||
that locator button transitions will be ignored, but allows the |
||||
user to continue positioning in anticipation of the locator being |
||||
unlocked. The locator is automatically locked any time the input |
||||
silo is full. |
||||
<p>Locator-ahead, analogous to keyboard type-ahead is supported by |
||||
having each report include the locator position at the time of |
||||
the event, and maintaining the sequential order of keystroke and |
||||
locator events. |
||||
<p>A final implication of using the keyboard silo to buffer text |
||||
locator events is that locator and keyboard input should be associated |
||||
with the same session at all times. The session to receive these |
||||
events is sometimes called the "active session" or "input |
||||
focus". In a multi-session windowing environment, the input |
||||
cursor is allowed to roam freely over the entire screen in response |
||||
to locator movement. The input cursor is never occluded when |
||||
locator reporting is enabled in one or more sessions. Each session |
||||
enables locator reporting independently. The following cases |
||||
describe the locator interaction with session viewports and scroll |
||||
regions. |
||||
<p>1. The input cursor is within the active session's viewport. |
||||
Pressing a button on the locator sends a locator report when enabled. |
||||
<p>2. The input cursor is inside the active session's viewport, |
||||
but outside the range of defined coordinates for that session. |
||||
Pressing a button on the locator will generate a report with omitted |
||||
coordinates (position undefined). An example would be when the |
||||
input cursor is outside the active scrolling region, and the origin |
||||
mode has been set to relative. To use the locator to adjust scroll |
||||
margins, the origin mode must be absolute. |
||||
<p>3. The input cursor is not contained in any viewport. Pressing |
||||
a button on the locator will have no effect. To support "pop |
||||
up" menus anywhere on the screen, the entire screen must |
||||
be a viewport for at least one session. |
||||
<p>4. The input cursor is within a viewport of a session which is |
||||
not the active session. Pressing a button on the locator will |
||||
normally make the session containing the input cursor the active |
||||
session (possibly changing the occlusion order of viewports, and |
||||
the shape of the locator). This case is the responsibility of |
||||
the "window manager" which is free to define its own |
||||
user interface. Two recommendations are: (1) No locator report |
||||
should be sent to the previous active session, since the locator |
||||
is not in its viewport; and (2) If locator reporting is enabled |
||||
in the new session, a locator report should not be transmitted |
||||
to avoid application side affects when selecting another window. |
||||
<p>Requesting A Locator Position Report |
||||
<p>The host may explicitly request a locator position report any |
||||
time locator reporting is enabled (DECELR). Upon receiving such |
||||
a request, the terminal will immediately send a single locator |
||||
report (DECLRP) with event code 1 indicating the current locator |
||||
position. |
||||
<p>If the session receiving the request is the active session, but |
||||
the locator is not within the defined coordinate range for that |
||||
session, the terminal will respond with omitted coordinates (locator |
||||
position undefined). |
||||
<p>If the session receiving the request is not currently active (the |
||||
locator is being used in another session), the report will specify |
||||
event code 0 (locator unavailable). Locator state from the active |
||||
session should not be made available to inactive sessions. |
||||
<p>If the locator is disabled (DECELR), the terminal should still |
||||
respond with event code 0 (to avoid timing out the application). |
||||
<p> DECRQLP - DEC Request Locator Position |
||||
<p>CSI Ps ' | |
||||
<p> 2/7 7/12 |
||||
<p>Ps: |
||||
<p> 0 (or omitted) default to 1 |
||||
<p> 1 transmit a single DECLRP locator report all |
||||
others ignored |
||||
<p>Filter Rectangles |
||||
<p>Filter Rectangles add filtered movement events to the list of |
||||
locator transitions that can generate reports. |
||||
<p>DECEFR - DEC Enable Filter Rectangle |
||||
<p> CSI Pt ; Pl ; Pb ; Pr ' w |
||||
<p> 2/7 7/7 |
||||
<p> Pt - Top boundary of filter rectangle |
||||
<p> Pl - Left boundary of filter rectangle |
||||
<p> Pb - Bottom boundary of filter rectangle |
||||
<p> Pr - Right boundary of filter rectangle |
||||
<p>The DECEFR control sequence defines the coordinates of a filter |
||||
rectangle, and activates it. Anytime the locator is detected |
||||
to be outside a filter rectangle, an outside rectangle event is |
||||
generated and the rectangle is disabled. Filter rectangles are |
||||
always treated as "one-shot" events. Defining a new |
||||
rectangle re-activates it. |
||||
<p>Applications can re-define the rectangle at any time even if its |
||||
already active. If a rectangle which does not contain the locator |
||||
is specified, the terminal will generate an outside rectangle |
||||
report immediately and deactivate it. |
||||
<p>Pt, Pl, Pb, and Pr are in coordinates units specified by the last |
||||
DECELR sequence. The filter rectangle includes the boundaries |
||||
(similar to other rectangular area operations). The origin is |
||||
coordinate pair 1:1 in the upper left corner. If any parameters |
||||
are omitted, they are defaulted to the current locator position. |
||||
Sending DECEFR with no parameters will cause the application to |
||||
be notified for any locator movement ("unfiltered movement |
||||
event"). |
||||
<p>DECELR always cancels any previous filter rectangle definition. |
||||
This gaurantees that when an application enables locator reports, |
||||
there will never be an outstanding filter rectangle. |
||||
<p>If a filter rectangle lies on the edge of the defined coordinate |
||||
space for the active session, and the locator crosses that edge, |
||||
the rectangle may be triggered to send a report with omitted coordinates |
||||
(locator position undefined). |
||||
<p>If the active session receives a filter rectangle with explicit |
||||
coordinates while the locator is outside the defined coordinate |
||||
space, the rectangle will be triggered to send a report with omitted |
||||
coordinates. |
||||
<p>If the active session receives a filter rectangle with omitted |
||||
coordinates (that is, use the current position) while the locator |
||||
is outside the defined coordinate space (position undefined), |
||||
the rectangle will be triggered the next time the locator is within |
||||
the defined coordinate space. |
||||
<p>If a session which is not the active session receives a filter |
||||
rectangle with explicit coordinates, it should trigger immediately |
||||
with position undefined. If a session which is not the active |
||||
session receives a rectangle with omitted coordinates, it should |
||||
trigger the next time the locator is within the defined coordinate |
||||
space for that session, which cannot happen until the session |
||||
becomes active. |
||||
<p><i><a name="Selecting_Locator_Events">Selecting Locator Events</a></i> |
||||
<p>The locator events which are allowed to generate unsolicited reports |
||||
may be individually selected using the Select Locator Events control. |
||||
The locator is capable of reporting both up and down transitions |
||||
for those situations where the exact sequence of button activiations |
||||
is significant. This control allows application software to select |
||||
which events it wants reported. |
||||
<p>DECSLE - Select Locator Events |
||||
<p> CSI P...P ' { |
||||
<p> 2/7 7/11 |
||||
<p> P...P is one or more selective parameters which may |
||||
assume the following values: |
||||
<p> 0 respond only to explicit host requests |
||||
<p> (default, also cancels any pending filter rectangle) |
||||
<p> 1 report button down transitions |
||||
<p> 2 do not report button down transitions |
||||
<p> 3 report button up transitions |
||||
<p> 4 do not report button up transitions |
||||
<p><b><a name="LOCATOR_SUPPORT_FOR_GRAPHICS">LOCATOR SUPPORT FOR |
||||
GRAPHICS</a></b> |
||||
<p>The locator can be used in REGIS, and in Tektronix GIN mode during |
||||
Tektronix 401x emulation. |
||||
<p>REGIS One-shot Graphics Input Mode is provided for backward compatibility |
||||
with the VT240. When an application requests graphics input, |
||||
a cross hair cursor appears which may be positioned using either |
||||
the arrow keys (as on the VT240), or a locator device. Pressing |
||||
any non-arrow key on the keyboard which is not dead or a button |
||||
on the locator will cause the following actions: |
||||
<p>1. The ASCII code or codes for the non-arrow key that was pressed |
||||
is sent to the host. Each locator button can be programmed to |
||||
send a sequence of 0 to 6 characters. This allows the locator |
||||
to be programmed to work with existing applications (see DECLKD |
||||
below). |
||||
<p>2. The coordinates of the input cursor at the time that the non-arrow |
||||
key was depressed are sent to the host, expressed as an absolute |
||||
bracketed extent in user coordinates. |
||||
<p>3. The graphics input cursor disappears from the screen and the |
||||
terminal exits graphics input mode. |
||||
<p>While the terminal is in graphics input mode, no further data |
||||
from the application is processed until the locator input is complete |
||||
and a report is generated. |
||||
<p>The mouse and arrow keys may be intermixed freely in REGIS One-Shot |
||||
Graphics Input Mode. Since the tablet is an absolute positioning |
||||
device, use of the arrow keys in combination with the tablet would |
||||
cause inconsistent and confusing behavior. The arrow keys are |
||||
disabled for input cursor positioning when the tablet is in proximity |
||||
because the tablet establishes a unique screen position. |
||||
<p><i><a name="Locator_Key_Definition">Locator Key Definition</a> |
||||
(DECLKD)</i> |
||||
<p>The DECLKD device control string down line loads one or more definitions |
||||
for use by the Locator device during REGIS One-shot Graphics Input. |
||||
These definitions are called Locator Key Definitions (LKDs). |
||||
<p>DECLKD is intended for older applications that use ReGIS one-shot |
||||
input mode with keystroke commands like "A", "B", |
||||
"C", etc. These commands can be re-bound to buttons |
||||
on the mouse by sending DECLKD (possibly before running the application). |
||||
<p>There are six bytes available to each of the locator keys (upto |
||||
four). A power-up restart or RIS will cause the LKDs to be set |
||||
to their default value. LKDs are not affected by DECSTR. |
||||
<p>Default Locator Key Definitions |
||||
<p> No button transition ESC [ 240 ~ |
||||
<p> Ky1 down transition ESC [ 241 ~ |
||||
<p> Ky2 down transition ESC [ 243 ~ |
||||
<p> Ky3 down transition ESC [ 245 ~ |
||||
<p> Ky4 down transition ESC [ 247 ~ |
||||
<p>Where: |
||||
<p> Ky1 = B1 = Left = barrel button |
||||
<p> Ky2 = B2 = Middle = tip button |
||||
<p> Ky3 = B3 = Right |
||||
<p> Ky4 = B4 (tablet cursor only) |
||||
<p>Up Transitions are ignored by default. |
||||
<p><i>DECLKD - DEC Locator Key Definition</i> |
||||
<p> DCS Pc $ w Ky1 / Std1 / Stu1 ; ... ; Kyn / Stnd |
||||
/ Stnu ST |
||||
<p> 2/4 7/7 |
||||
<p> Where: |
||||
<p>Pc - Clear parameter |
||||
<p>0 (or omitted) Clear all LKDs before loading new values. All button |
||||
definition strings are empty (not the default). |
||||
<p>1 Clear old definition only for keys that are redefined. Kyn / |
||||
Stnd / Stnu - Key selection code n, slash delimeter, and string |
||||
parameter n for down and up key transitions. |
||||
<p>Kyn is a single ASCII digit, and Std/Stu is a series of ASCII |
||||
hex pairs. If Std or Stu is omitted, the corresponding button |
||||
string will be empty. Key definition strings are delimited with |
||||
a semicolon (";"). |
||||
<p>Graphics and ANSI Locator Input |
||||
<p>Support for graphics input in REGIS is extended by allowing ANSI |
||||
locator input to operate normally regardless of whether the host |
||||
output stream is being interpreted as ANSI or REGIS. If ANSI |
||||
locator reporting is enabled, keystrokes and locator position |
||||
reports may be generated without being solicited from the host. |
||||
Characters received from the host are executed instead of buffered, |
||||
so graphics output and graphics input may occur simultaneously. |
||||
<p>If one-shot graphics input mode is entered (REGIS report position |
||||
interactive) while ANSI locator reporting is enabled, the locator |
||||
cursor will change to a cross-hair. Pressing a non-arrow key |
||||
on the keyboard will send the character for that key followed |
||||
by the REGIS user coordinates as a bracketed extent. If a locator |
||||
button had been pressed instead, the characters for the locator |
||||
button (if any) would be sent followed by the REGIS position report, |
||||
and finally the ANSI locator report (DECLRP) if enabled. Upon |
||||
sending the REGIS position report, the terminal exits one-shot |
||||
input mode, and the input cursor returns to its previous state. |
||||
<p>The ANSI locator report should still be sent in the above situation |
||||
(if enabled) to keep the two modes independent. This allows filter |
||||
rectangles to continue operating, and also keeps the ANSI state |
||||
(last DECLRP seen) consistent with the last button transition. |
||||
<p>The order of reports is chosen to allow a subroutine to send |
||||
R(P(I)) and read the REGIS response that follows without regard |
||||
to whether ANSI locator reports are enabled. |
||||
<p>Since the ANSI locator report is in the form of a control sequence, |
||||
it should not inferfere with REGIS reports. No special procedure |
||||
is used to indicate REGIS data from the terminal. This is backward |
||||
compatible with the VT240 since ANSI locator reports can only |
||||
occur if ANSI locator reporting is enabled. |
||||
<p>The suspension of graphics output during REGIS one-shot graphics |
||||
input remains the same. This is necessary to support rubber-band |
||||
cursors. Rubber-band cursors use the REGIS output position as |
||||
one reference point, and the locator input position as the other. |
||||
Rubber-band cursors are specified as an option on the REGIS report |
||||
position interactive command. |
||||
<p><b><a name="LOCATOR_DEVICE_SUPPORT">LOCATOR DEVICE SUPPORT</a></b> |
||||
<p>Locator support is currently planned as an extension to the level |
||||
3 character cell architecture. The primary device attributes |
||||
response will report the locator extension as parameter value |
||||
15 (locator port), and 29 (text locator). |
||||
<p>Host software may request a Device Status Report (DSR) to determine |
||||
whether a locator is available. Upon receiving the appropriate |
||||
DSR request, the terminal will respond to indicate the locator |
||||
is ready if a locator device is plugged in, and has transmitted |
||||
a successful self test message. |
||||
<p><i><a name="Locator_Device_Status_Report_DSR_">Locator Device |
||||
Status Report (DSR)</a></i> |
||||
<p>Host request locator device status CSI ? 55 n |
||||
<p>No locator CSI ? 53 n |
||||
<p>Locator ready CSI ? 50 n |
||||
<p>Locator busy CSI ? 58 n |
||||
<p>The locator busy response can occur when an alternate session |
||||
has selected locator controller mode (see below). |
||||
<p><i><a name="Locator_Controller_Mode"></a>Locator Controller Mode</i> |
||||
<p>Locator Controller Mode allows the host to communicate directly |
||||
with the locator device without terminal intervention (similar |
||||
to printer controller mode). When locator controller mode is |
||||
set, all data received at the host port is transferred directly |
||||
to the locator port without interpretation by the display terminal. |
||||
<p>The only exceptions are the communications control characters |
||||
XON/XOFF (if enabled), and the control sequence to disabled locator |
||||
controller mode. All characters received at locator port are |
||||
transferred to the host port without interpretation. The host |
||||
assumes full responsibility for the locator device. |
||||
<p>Locator controller mode is desirable for two reasons: |
||||
<p>1. It allows the host to explicitly initialize or configure locator |
||||
devices. A foriegn locator device might not wake up in DEC format |
||||
for example. |
||||
<p>2. It allows the locator port to be used for other auxilliary |
||||
input devices. A bar code reader could be interfaced to the locator |
||||
port for example, allowing the terminal to support a bar code |
||||
reader without pre-empting the printer port. |
||||
<p>Turn off locator controller mode (MC) CSI 6 i |
||||
<p>Turn on locator controller mode (MC) CSI 7 i |
||||
<p><i>[End of memo]</i> |
||||
</body> |
||||
|
||||
</html> |
@ -0,0 +1,238 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head> |
||||
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> |
||||
|
||||
<meta name="generator" content="HTML Tidy for Linux/x86 (vers 1st March 2002), see www.w3.org"><title>VT100 escape codes</title></head><body> |
||||
<h1 align="center">VT100 escape codes</h1> |
||||
|
||||
<p>This document describes how to control a VT100 terminal. The |
||||
entries are of the form "name, description, escape code".</p> |
||||
|
||||
<p>The name isn't important, and the description is just to |
||||
help you find what you're looking for. What you have to do is |
||||
send the "escape code" to the screen. These codes are often |
||||
several characters long, but they all begin with <tt>^[</tt>. |
||||
This isn't the two characters <tt>^</tt> and <tt>[</tt>, but |
||||
rather a representation of the ASCII code ESC (which is why |
||||
these are called escape codes).</p> |
||||
|
||||
<p>ESC has the decimal value 27 and should be sent before the rest of the code, which is simply an ASCII string.</p> |
||||
|
||||
<p>As an example of how to use this information, here's how |
||||
to clear the screen in C, using the VT100 escape codes:</p> |
||||
|
||||
<pre> #define ASCII_ESC 27 |
||||
printf( "%c[2J", ASCII_ESC ); |
||||
|
||||
<i>or</i> |
||||
|
||||
puts( "\033[2J" ); |
||||
|
||||
</pre> |
||||
<hr> |
||||
<pre>Name Description Esc Code |
||||
</pre> |
||||
<hr> |
||||
<pre>setnl LMN Set new line mode ^[[20h |
||||
setappl DECCKM Set cursor key to application ^[[?1h |
||||
setansi DECANM Set ANSI (versus VT52) none |
||||
setcol DECCOLM Set number of columns to 132 ^[[?3h |
||||
setsmooth DECSCLM Set smooth scrolling ^[[?4h |
||||
setrevscrn DECSCNM Set reverse video on screen ^[[?5h |
||||
setorgrel DECOM Set origin to relative ^[[?6h |
||||
setwrap DECAWM Set auto-wrap mode ^[[?7h |
||||
setrep DECARM Set auto-repeat mode ^[[?8h |
||||
setinter DECINLM Set interlacing mode ^[[?9h |
||||
|
||||
setlf LMN Set line feed mode ^[[20l |
||||
setcursor DECCKM Set cursor key to cursor ^[[?1l |
||||
setvt52 DECANM Set VT52 (versus ANSI) ^[[?2l |
||||
resetcol DECCOLM Set number of columns to 80 ^[[?3l |
||||
setjump DECSCLM Set jump scrolling ^[[?4l |
||||
setnormscrn DECSCNM Set normal video on screen ^[[?5l |
||||
setorgabs DECOM Set origin to absolute ^[[?6l |
||||
resetwrap DECAWM Reset auto-wrap mode ^[[?7l |
||||
resetrep DECARM Reset auto-repeat mode ^[[?8l |
||||
resetinter DECINLM Reset interlacing mode ^[[?9l |
||||
|
||||
altkeypad DECKPAM Set alternate keypad mode ^[= |
||||
numkeypad DECKPNM Set numeric keypad mode ^[> |
||||
|
||||
setukg0 Set United Kingdom G0 character set ^[(A |
||||
setukg1 Set United Kingdom G1 character set ^[)A |
||||
setusg0 Set United States G0 character set ^[(B |
||||
setusg1 Set United States G1 character set ^[)B |
||||
setspecg0 Set G0 special chars. & line set ^[(0 |
||||
setspecg1 Set G1 special chars. & line set ^[)0 |
||||
setaltg0 Set G0 alternate character ROM ^[(1 |
||||
setaltg1 Set G1 alternate character ROM ^[)1 |
||||
setaltspecg0 Set G0 alt char ROM and spec. graphics ^[(2 |
||||
setaltspecg1 Set G1 alt char ROM and spec. graphics ^[)2 |
||||
|
||||
setss2 SS2 Set single shift 2 ^[N |
||||
setss3 SS3 Set single shift 3 ^[O |
||||
|
||||
modesoff SGR0 Turn off character attributes ^[[m |
||||
modesoff SGR0 Turn off character attributes ^[[0m |
||||
bold SGR1 Turn bold mode on ^[[1m |
||||
lowint SGR2 Turn low intensity mode on ^[[2m |
||||
underline SGR4 Turn underline mode on ^[[4m |
||||
blink SGR5 Turn blinking mode on ^[[5m |
||||
reverse SGR7 Turn reverse video on ^[[7m |
||||
invisible SGR8 Turn invisible text mode on ^[[8m |
||||
|
||||
setwin DECSTBM Set top and bottom line#s of a window ^[[<v>;<v>r |
||||
|
||||
cursorup(n) CUU Move cursor up n lines ^[[<n>A |
||||
cursordn(n) CUD Move cursor down n lines ^[[<n>B |
||||
cursorrt(n) CUF Move cursor right n lines ^[[<n>C |
||||
cursorlf(n) CUB Move cursor left n lines ^[[<n>D |
||||
cursorhome Move cursor to upper left corner ^[[H |
||||
cursorhome Move cursor to upper left corner ^[[;H |
||||
cursorpos(v,h) CUP Move cursor to screen location v,h ^[[<v>;<h>H |
||||
hvhome Move cursor to upper left corner ^[[f |
||||
hvhome Move cursor to upper left corner ^[[;f |
||||
hvpos(v,h) CUP Move cursor to screen location v,h ^[[<v>;<h>f |
||||
index IND Move/scroll window up one line ^[D |
||||
revindex RI Move/scroll window down one line ^[M |
||||
nextline NEL Move to next line ^[E |
||||
savecursor DECSC Save cursor position and attributes ^[7 |
||||
restorecursor DECSC Restore cursor position and attributes ^[8 |
||||
|
||||
tabset HTS Set a tab at the current column ^[H |
||||
tabclr TBC Clear a tab at the current column ^[[g |
||||
tabclr TBC Clear a tab at the current column ^[[0g |
||||
tabclrall TBC Clear all tabs ^[[3g |
||||
|
||||
dhtop DECDHL Double-height letters, top half ^[#3 |
||||
dhbot DECDHL Double-height letters, bottom half ^[#4 |
||||
swsh DECSWL Single width, single height letters ^[#5 |
||||
dwsh DECDWL Double width, single height letters ^[#6 |
||||
|
||||
cleareol EL0 Clear line from cursor right ^[[K |
||||
cleareol EL0 Clear line from cursor right ^[[0K |
||||
clearbol EL1 Clear line from cursor left ^[[1K |
||||
clearline EL2 Clear entire line ^[[2K |
||||
|
||||
cleareos ED0 Clear screen from cursor down ^[[J |
||||
cleareos ED0 Clear screen from cursor down ^[[0J |
||||
clearbos ED1 Clear screen from cursor up ^[[1J |
||||
clearscreen ED2 Clear entire screen ^[[2J |
||||
|
||||
devstat DSR Device status report ^[5n |
||||
termok DSR Response: terminal is OK ^[0n |
||||
termnok DSR Response: terminal is not OK ^[3n |
||||
|
||||
getcursor DSR Get cursor position ^[6n |
||||
cursorpos CPR Response: cursor is at v,h ^[<v>;<h>R |
||||
|
||||
ident DA Identify what terminal type ^[[c |
||||
ident DA Identify what terminal type (another) ^[[0c |
||||
gettype DA Response: terminal type code n ^[[?1;<n>0c |
||||
|
||||
reset RIS Reset terminal to initial state ^[c |
||||
|
||||
align DECALN Screen alignment display ^[#8 |
||||
testpu DECTST Confidence power up test ^[[2;1y |
||||
testlb DECTST Confidence loopback test ^[[2;2y |
||||
testpurep DECTST Repeat power up test ^[[2;9y |
||||
testlbrep DECTST Repeat loopback test ^[[2;10y |
||||
|
||||
ledsoff DECLL0 Turn off all four leds ^[[0q |
||||
led1 DECLL1 Turn on LED #1 ^[[1q |
||||
led2 DECLL2 Turn on LED #2 ^[[2q |
||||
led3 DECLL3 Turn on LED #3 ^[[3q |
||||
led4 DECLL4 Turn on LED #4 ^[[4q |
||||
|
||||
# |
||||
# All codes below are for use in VT52 compatibility mode. |
||||
# |
||||
|
||||
setansi Enter/exit ANSI mode (VT52) ^[< |
||||
|
||||
altkeypad Enter alternate keypad mode ^[= |
||||
numkeypad Exit alternate keypad mode ^[> |
||||
|
||||
setgr Use special graphics character set ^[F |
||||
resetgr Use normal US/UK character set ^[G |
||||
|
||||
cursorup Move cursor up one line ^[A |
||||
cursordn Move cursor down one line ^[B |
||||
cursorrt Move cursor right one char ^[C |
||||
cursorlf Move cursor left one char ^[D |
||||
cursorhome Move cursor to upper left corner ^[H |
||||
cursorpos(v,h) Move cursor to v,h location ^[<v><h> |
||||
revindex Generate a reverse line-feed ^[I |
||||
|
||||
cleareol Erase to end of current line ^[K |
||||
cleareos Erase to end of screen ^[J |
||||
|
||||
ident Identify what the terminal is ^[Z |
||||
identresp Correct response to ident ^[/Z |
||||
|
||||
<hr> |
||||
|
||||
# |
||||
# VT100 Special Key Codes |
||||
# |
||||
# These are sent from the terminal back to the computer when the |
||||
# particular key is pressed. Note that the numeric keypad keys |
||||
# send different codes in numeric mode than in alternate mode. |
||||
# See escape codes above to change keypad mode. |
||||
# |
||||
|
||||
# Function Keys: |
||||
|
||||
PF1 ^[OP |
||||
PF2 ^[OQ |
||||
PF3 ^[OR |
||||
PF4 ^[OS |
||||
|
||||
|
||||
# Arrow Keys: |
||||
Reset Set |
||||
----- --- |
||||
up ^[A ^[OA |
||||
down ^[B ^[OB |
||||
right ^[C ^[OC |
||||
left ^[D ^[OD |
||||
|
||||
|
||||
# Numeric Keypad Keys: |
||||
|
||||
Keypad Mode |
||||
----------------- |
||||
Keypad Key Numeric Alternate |
||||
---------- ------- --------- |
||||
0 0 ^[Op |
||||
1 1 ^[Oq |
||||
2 2 ^[Or |
||||
3 3 ^[Os |
||||
4 4 ^[Ot |
||||
5 5 ^[Ou |
||||
6 6 ^[Ov |
||||
7 7 ^[Ow |
||||
8 8 ^[Ox |
||||
9 9 ^[Oy |
||||
- (minus) - ^[Om |
||||
, (comma) , ^[Ol |
||||
. (period) . ^[On |
||||
ENTER ^M ^[OM |
||||
</pre> |
||||
<hr noshade="noshade"> |
||||
|
||||
<table summary="Page footer" cellpadding="5"> |
||||
<tbody><tr> |
||||
<td>C</td> |
||||
|
||||
<td>27, 033, 0x1b</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td>English</td> |
||||
|
||||
<td>27 decimal, 33 octal, 1b hexadecimal</td> |
||||
</tr> |
||||
</tbody></table> |
||||
|
||||
</body></html> |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,256 @@ |
||||
0000 0 |
||||
263A ☺ 1 |
||||
263B ☻ 2 |
||||
2665 ♥ 3 |
||||
2666 ♦ 4 |
||||
2663 ♣ 5 |
||||
2660 ♠ 6 |
||||
2022 • 7 |
||||
25D8 ◘ 8 |
||||
25CB ○ 9 |
||||
25D9 ◙ 10 |
||||
2642 ♂ 11 |
||||
2640 ♀ 12 |
||||
266A ♪ 13 |
||||
266B ♫ 14 |
||||
263C ☼ 15 |
||||
25BA ► 16 |
||||
25C4 ◄ 17 |
||||
2195 ↕ 18 |
||||
203C ‼ 19 |
||||
00B6 ¶ 20 |
||||
00A7 § 21 |
||||
25AC ▬ 22 |
||||
21A8 ↨ 23 |
||||
2191 ↑ 24 |
||||
2193 ↓ 25 |
||||
2192 → 26 |
||||
2190 ← 27 |
||||
221F ∟ 28 |
||||
2194 ↔ 29 |
||||
25B2 ▲ 30 |
||||
25BC ▼ 31 |
||||
0020 32 |
||||
0021 ! 33 |
||||
0022 " 34 |
||||
0023 # 35 |
||||
0024 $ 36 |
||||
0025 % 37 |
||||
0026 & 38 |
||||
0027 ' 39 |
||||
0028 ( 40 |
||||
0029 ) 41 |
||||
002A * 42 |
||||
002B + 43 |
||||
002C , 44 |
||||
002D - 45 |
||||
002E . 46 |
||||
002F / 47 |
||||
0030 0 48 |
||||
0031 1 49 |
||||
0032 2 50 |
||||
0033 3 51 |
||||
0034 4 52 |
||||
0035 5 53 |
||||
0036 6 54 |
||||
0037 7 55 |
||||
0038 8 56 |
||||
0039 9 57 |
||||
003A : 58 |
||||
003B ; 59 |
||||
003C < 60 |
||||
003D = 61 |
||||
003E > 62 |
||||
003F ? 63 |
||||
0040 @ 64 |
||||
0041 A 65 |
||||
0042 B 66 |
||||
0043 C 67 |
||||
0044 D 68 |
||||
0045 E 69 |
||||
0046 F 70 |
||||
0047 G 71 |
||||
0048 H 72 |
||||
0049 I 73 |
||||
004A J 74 |
||||
004B K 75 |
||||
004C L 76 |
||||
004D M 77 |
||||
004E N 78 |
||||
004F O 79 |
||||
0050 P 80 |
||||
0051 Q 81 |
||||
0052 R 82 |
||||
0053 S 83 |
||||
0054 T 84 |
||||
0055 U 85 |
||||
0056 V 86 |
||||
0057 W 87 |
||||
0058 X 88 |
||||
0059 Y 89 |
||||
005A Z 90 |
||||
005B [ 91 |
||||
005C \ 92 |
||||
005D ] 93 |
||||
005E ^ 94 |
||||
005F _ 95 |
||||
0060 ` 96 |
||||
0061 a 97 |
||||
0062 b 98 |
||||
0063 c 99 |
||||
0064 d 100 |
||||
0065 e 101 |
||||
0066 f 102 |
||||
0067 g 103 |
||||
0068 h 104 |
||||
0069 i 105 |
||||
006A j 106 |
||||
006B k 107 |
||||
006C l 108 |
||||
006D m 109 |
||||
006E n 110 |
||||
006F o 111 |
||||
0070 p 112 |
||||
0071 q 113 |
||||
0072 r 114 |
||||
0073 s 115 |
||||
0074 t 116 |
||||
0075 u 117 |
||||
0076 v 118 |
||||
0077 w 119 |
||||
0078 x 120 |
||||
0079 y 121 |
||||
007A z 122 |
||||
007B { 123 |
||||
007C | 124 |
||||
007D } 125 |
||||
007E ~ 126 |
||||
2302 ⌂ 127 |
||||
00C7 Ç 128 |
||||
00FC ü 129 |
||||
00E9 é 130 |
||||
00E2 â 131 |
||||
00E4 ä 132 |
||||
00E0 à 133 |
||||
00E5 å 134 |
||||
00E7 ç 135 |
||||
00EA ê 136 |
||||
00EB ë 137 |
||||
00E8 è 138 |
||||
00EF ï 139 |
||||
00EE î 140 |
||||
00EC ì 141 |
||||
00C4 Ä 142 |
||||
00C5 Å 143 |
||||
00C9 É 144 |
||||
00E6 æ 145 |
||||
00C6 Æ 146 |
||||
00F4 ô 147 |
||||
00F6 ö 148 |
||||
00F2 ò 149 |
||||
00FB û 150 |
||||
00F9 ù 151 |
||||
00FF ÿ 152 |
||||
00D6 Ö 153 |
||||
00DC Ü 154 |
||||
00A2 ¢ 155 |
||||
00A3 £ 156 |
||||
00A5 ¥ 157 |
||||
20A7 ₧ 158 |
||||
0192 ƒ 159 |
||||
00E1 á 160 |
||||
00ED í 161 |
||||
00F3 ó 162 |
||||
00FA ú 163 |
||||
00F1 ñ 164 |
||||
00D1 Ñ 165 |
||||
00AA ª 166 |
||||
00BA º 167 |
||||
00BF ¿ 168 |
||||
2310 ⌐ 169 |
||||
00AC ¬ 170 |
||||
00BD ½ 171 |
||||
00BC ¼ 172 |
||||
00A1 ¡ 173 |
||||
00AB « 174 |
||||
00BB » 175 |
||||
2591 ░ 176 |
||||
2592 ▒ 177 |
||||
2593 ▓ 178 |
||||
2502 │ 179 |
||||
2524 ┤ 180 |
||||
2561 ╡ 181 |
||||
2562 ╢ 182 |
||||
2556 ╖ 183 |
||||
2555 ╕ 184 |
||||
2563 ╣ 185 |
||||
2551 ║ 186 |
||||
2557 ╗ 187 |
||||
255D ╝ 188 |
||||
255C ╜ 189 |
||||
255B ╛ 190 |
||||
2510 ┐ 191 |
||||
2514 └ 192 |
||||
2534 ┴ 193 |
||||
252C ┬ 194 |
||||
251C ├ 195 |
||||
2500 ─ 196 |
||||
253C ┼ 197 |
||||
255E ╞ 198 |
||||
255F ╟ 199 |
||||
255A ╚ 200 |
||||
2554 ╔ 201 |
||||
2569 ╩ 202 |
||||
2566 ╦ 203 |
||||
2560 ╠ 204 |
||||
2550 ═ 205 |
||||
256C ╬ 206 |
||||
2567 ╧ 207 |
||||
2568 ╨ 208 |
||||
2564 ╤ 209 |
||||
2565 ╥ 210 |
||||
2559 ╙ 211 |
||||
2558 ╘ 212 |
||||
2552 ╒ 213 |
||||
2553 ╓ 214 |
||||
256B ╫ 215 |
||||
256A ╪ 216 |
||||
2518 ┘ 217 |
||||
250C ┌ 218 |
||||
2588 █ 219 |
||||
2584 ▄ 220 |
||||
258C ▌ 221 |
||||
2590 ▐ 222 |
||||
2580 ▀ 223 |
||||
03B1 α 224 |
||||
00DF ß 225 |
||||
0393 Γ 226 |
||||
03C0 π 227 |
||||
03A3 Σ 228 |
||||
03C3 σ 229 |
||||
00B5 µ 230 |
||||
03C4 τ 231 |
||||
03A6 Φ 232 |
||||
0398 Θ 233 |
||||
03A9 Ω 234 |
||||
03B4 δ 235 |
||||
221E ∞ 236 |
||||
03C6 φ 237 |
||||
03B5 ε 238 |
||||
2229 ∩ 239 |
||||
2261 ≡ 240 |
||||
00B1 ± 241 |
||||
2265 ≥ 242 |
||||
2264 ≤ 243 |
||||
2320 ⌠ 244 |
||||
2321 ⌡ 245 |
||||
00F7 ÷ 246 |
||||
2248 ≈ 247 |
||||
00B0 ° 248 |
||||
2219 ∙ 249 |
||||
00B7 · 250 |
||||
221A √ 251 |
||||
207F ⁿ 252 |
||||
00B2 ² 253 |
||||
25A0 ■ 254 |
||||
00A0 255 |
After Width: | Height: | Size: 506 KiB |
After Width: | Height: | Size: 62 KiB |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,73 @@ |
||||
<!doctype html> |
||||
<html> |
||||
<meta charset="UTF-8"> |
||||
<title>VT100 emulation - useful references</title> |
||||
</head> |
||||
<style> |
||||
body { |
||||
background: white; |
||||
color: black; |
||||
width: 825px; |
||||
margin:0 auto; |
||||
font-family:monospace; |
||||
line-height: 1.35em; |
||||
font-size: 12pt; |
||||
} |
||||
li,p { |
||||
white-space: pre; |
||||
} |
||||
ul, ol { |
||||
margin-top: 0; |
||||
margin-bottom: 0; |
||||
} |
||||
li { |
||||
margin-bottom: 0.3em; |
||||
} |
||||
</style> |
||||
|
||||
<body> |
||||
|
||||
<p>VT100 emulation resources collection Ondřej Hruška <ondra@ondrovo.com>, Sep 2017</p> |
||||
|
||||
<hr> |
||||
|
||||
<h1>VT100 emulation resources collection</h1> |
||||
|
||||
<p>This page lists some files and sites I found helpful when developing <a href="https://github.com/MightyPork/ESPTerm">ESPTerm</a>.</p> |
||||
|
||||
<h2>Web references</h2> |
||||
|
||||
<ul> |
||||
<li>An invaluable resource in my research was the website <a href="http://vt100.net/">vt100.net</a> which provides |
||||
original manuals for manu VT models.</li> |
||||
|
||||
<li>The <a href="http://invisible-island.net/xterm/ctlseqs/ctlseqs.html">Xterm manual page</a> also proved immensely useful. |
||||
I have even made a <a href="espterm-xterm.html">copy of it</a> with highlighted differences and missing features |
||||
in ESPTerm.</li> |
||||
|
||||
<li>Some sequences can also be found in the <a href="https://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html">GNU Screen manual page</a></li> |
||||
|
||||
<li>Application keys mode became clear after reading this page: |
||||
<a href="http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-21.html">www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-21.html</a>.</li> |
||||
|
||||
<li>When trying to understand what codes should be sent by function and control |
||||
keys, this page provided some great insight: |
||||
<a href="http://invisible-island.net/xterm/xterm-function-keys.html">invisible-island.net/xterm/xterm-function-keys.html</a></li> |
||||
</ul> |
||||
|
||||
<h2>Collected files and memos</h2> |
||||
|
||||
<p>Those are some documents I've found on the internet while researching for ESPTerm |
||||
and preserve them here for reference should the original sources disappear.</p> |
||||
|
||||
<ul> |
||||
<li><a href="./vt100.codes.txt">vt100.codes.txt</a></li> |
||||
<li><a href="./bjh21_all-escapes.txt">bjh21_all-escapes.txt</a></li> |
||||
<li><a href="./joesmith1984-ansicode.txt">joesmith1984-ansicode.txt</a></li> |
||||
<li><a href="./shuford_terminal_vt100_codes_news.txt">shuford_terminal_vt100_codes_news.txt</a></li> |
||||
<li><a href="./VT100 escape codes.html">VT100 escape codes.html</a></li> |
||||
<li><a href="./Locator Input Model for ANSI Terminals (sixth revision).html">Locator Input Model for ANSI Terminals (sixth revision).html</a></li> |
||||
<li><a href="./codepage437.txt">codepage437.txt</a> - a file I compiled from Wikipedia</li> |
||||
</ul> |
||||
|
||||
<p>[End of document]</p> |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,324 @@ |
||||
|
||||
/======================================================\ |
||||
| VT100 and VT52 Compatable Modes ESCape Codes Chart | |
||||
\======================================================/ |
||||
|
||||
VT52 Compatable Mode |
||||
-------------------- |
||||
|
||||
ESC A Cursor up |
||||
ESC B Cursor down |
||||
ESC C Cursor right |
||||
ESC D Cursor left |
||||
ESC F Special graphics character set |
||||
ESC G Select ASCII character set |
||||
ESC H Cursor to home |
||||
ESC I Reverse line feed |
||||
ESC J Erase to end of screen |
||||
ESC K Erase to end of line |
||||
ESC Ylc Direct cursor address (See note 1) |
||||
ESC Z Identify (See note 2) |
||||
ESC = Enter alternate keypad mode |
||||
ESC > Exit alternate keypad mode |
||||
ESC 1 Graphics processor on (See note 3) |
||||
ESC 2 Graphics processor off (See note 3) |
||||
ESC < Enter ANSI mode |
||||
|
||||
Note 1: Line and column numbers for direct cursor addresses are single |
||||
character codes whose values are the desired number plus 37 octal. |
||||
Line and column numbers start at 1. |
||||
|
||||
Note 2: Response to ESC Z is ESC/Z. |
||||
|
||||
Note 3: Ignored if no graphics processor stored in the VT100 |
||||
|
||||
ANSI Compatable Mode |
||||
-------------------- |
||||
|
||||
ESC [ Pn A Cursor up Pn lines |
||||
ESC [ Pn B Cursor down Pn lines |
||||
ESC [ Pn C Cursor forward Pn characters (right) |
||||
ESC [ Pn D Cursor backward Pn characters (left) |
||||
ESC [ Pl;PcH Direct cursor addressing, where Pl is line#, Pc is column# |
||||
ESC [ Pl;Pcf Same as above |
||||
ESC D Index |
||||
ESC M Reverse index |
||||
ESC 7 Save cursor and attributes |
||||
ESC 8 Restore cursor and attributes |
||||
|
||||
ESC #3 Change this line to double-height top half |
||||
ESC #4 Change this line to double-height bottom half |
||||
ESC #5 Change this line to single-width single-height |
||||
ESC #6 Change this line to double-width single-height |
||||
|
||||
ESC [ Ps..Ps m Ps refers to selective parameter. Multiple parameters are |
||||
separated by the semicolon character (073 octal). The param- |
||||
eters are executed in order and have the following meaning: |
||||
|
||||
0 or none All attributes off |
||||
1 Bold on |
||||
4 Underscore on |
||||
5 Blink on |
||||
7 Reverse video on |
||||
|
||||
Any other parameters are ignored. |
||||
|
||||
ESC [ K Erase from cursor to end of line |
||||
ESC [ 0K Same |
||||
ESC [ 1K Erase from beginning of line to cursor |
||||
ESC [ 2K Erase line containing cursor |
||||
ESC [ J Erase from cursor to end of screen |
||||
ESC [ 0J Same |
||||
ESC [ 2J Erase entire screen |
||||
|
||||
ESC [ Ps..Ps q Programmable LEDs: Ps are selective parameters separated by |
||||
semicolons (073 octal) and executed in order, as follows: |
||||
|
||||
0 or None All LEDs off |
||||
1 L1 On |
||||
2 L2 On |
||||
3 L3 On |
||||
4 L4 On |
||||
|
||||
Any other parameter values are ignored. |
||||
|
||||
The following select alternative character sets. The G1 set is invoked for |
||||
use by the control code SO (Shift Out), the G0 set is invoked by the control |
||||
code SI (Shift In). |
||||
|
||||
G0 designator G1 designator Character set |
||||
|
||||
ESC ( A ESC ) A United Kingdom (UK) |
||||
ESC ( B ESC ) B United States (USASCII) |
||||
ESC ( 0 ESC ) 0 Special graphics/line drawing set |
||||
ESC ( 1 ESC ) 1 Alternative character ROM |
||||
ESC ( 2 ESC ) 2 Alternative graphic ROM |
||||
|
||||
ESC K Pt;Pb r Set top scrolling window (Pt) and bottom scrolling window |
||||
(Pb). Pb must be greater than Pb. |
||||
|
||||
ESC H Set tab at current column |
||||
ESC [ g Clear tab at current column |
||||
ESC [ 0g Same |
||||
ESC [ 3g Clear all tabs |
||||
|
||||
Modes |
||||
----- |
||||
|
||||
Mode Name Mode To set seq Mode To reset seq |
||||
|
||||
Line feed/new New line ESC [20h Line feed ESC [20l |
||||
Cursor key Application ESC [?1h Cursor ESC [?1l |
||||
ANSI/VT52 ANSI n/a VT52 ESC [?2l |
||||
Column mode 132 col ESC [?3h 80 col ESC [?3l |
||||
Scrolling Smooth ESC [?4h Jump ESC [?4l |
||||
Screen mode Reverse ESC [?5h Normal ESC [?5l |
||||
Origin mode Relative ESC [?6h Absolute ESC [?6l |
||||
Wraparound On ESC [?7h Off ESC [?7l |
||||
Autorepeat On ESC [?8h Off ESC [?8l |
||||
Interface On ESC [?9h Off ESC [?9l |
||||
|
||||
Reports |
||||
------- |
||||
|
||||
ESC [ 6n Cursor position report |
||||
ESC [ Pl;PcR (response; Pl=line#; Pc=column#) |
||||
ESC [ 5n Status report |
||||
ESC [ c (response; terminal Ok) |
||||
ESC [ 0c (response; teminal not Ok) |
||||
ESC [ c What are you? |
||||
ESC [ 0c Same |
||||
ESC [?1;Ps c response; where Ps is option present: |
||||
|
||||
0 Base VT100, no options |
||||
1 Preprocessor option (STP) |
||||
2 Advanced video option (AVO) |
||||
3 AVO and STP |
||||
4 Graphics processor option (GO) |
||||
5 GO and STP |
||||
6 GO and AVO |
||||
7 GO, STP, and AVO |
||||
|
||||
ESC c Causes power-up reset routine to be executed |
||||
ESC #8 Fill screen with "E" |
||||
ESC [ 2;Ps y Invoke Test(s), where Ps is a decimal computed by adding the |
||||
numbers of the desired tests to be executed: |
||||
|
||||
1 Power up test |
||||
2 Data loop back |
||||
4 EIA modem control signal test |
||||
8 Repeat test(s) indefinitely |
||||
|
||||
|
||||
|
||||
|
||||
Article 4810 of alt.hackers: |
||||
Newsgroups: alt.hackers |
||||
From: Dom@sound.demon.co.uk (The Dark Stranger) |
||||
Path: caen!math.ohio-state.edu!howland.reston.ans.net!pipex!uknet!demon!sound.demon.co.uk!sound.and.vision.bbs!vf10!VeXNeT!Dom |
||||
Subject: Re: vt100 escapes |
||||
Reply-To: Dom@sound.demon.co.uk |
||||
References: <2kp5c0$61c@samba.oit.unc.edu> |
||||
Distribution: world |
||||
X-Mailer: Sound & Vision BBS +44 (0)932-252-323 |
||||
Organization: Vex-Factor:10 Productions, London, England. |
||||
Approved: I like to think so |
||||
Lines: 145 |
||||
Date: Tue, 1 Mar 1994 19:13:36 +0000 |
||||
Message-ID: <#2377_vf10@sound.demon.co.uk> |
||||
Sender: usenet@demon.co.uk |
||||
|
||||
In article <2kp5c0$61c@samba.oit.unc.edu> Michael.Lea@launchpad.unc.edu (Michael David Lea) writes: |
||||
> Does anyone know where I can get a list of vt100 escape codes? I found |
||||
> one list but it doesn't seem to work. |
||||
|
||||
TERMINAL COMMANDS |
||||
~~~~~~~~~~~~~~~~ |
||||
c Reset |
||||
[ ! p Soft Reset |
||||
# 8 Fill Screen with E's |
||||
} 1 * Fill screen with * test |
||||
} 2 Video attribute test display |
||||
} 3 Character sets display test |
||||
|
||||
KEYBOARD COMMANDS |
||||
~~~~~~~~~~~~~~~~ |
||||
[ 2 h Keyboard locked |
||||
[ 2 l Keyboard unlocked |
||||
[ ? 8 h Autorepeat ON |
||||
[ ? 8 l Autorepeat OFF |
||||
[ 0 q Lights all off on keyboard |
||||
[ * q Light * on |
||||
|
||||
PROGRAMMABLE KEY COMMANDS |
||||
~~~~~~~~~~~~~~~~~~~~~~~~ |
||||
! pk Program a programmable key (local) |
||||
@ pk Program a programmable key (on-line) |
||||
% pk Transmit programmable key contents |
||||
|
||||
SCREEN FORMAT |
||||
~~~~~~~~~~~~ |
||||
[ ? 3 h 132 Characters on |
||||
[ ? 3 l 80 Characters on |
||||
[ ? 4 h Smooth Scroll on |
||||
[ ? 4 l Jump Scroll on |
||||
[ *t ; *b r Scrolling region selected, line *t to *b |
||||
[ ? 5 h Inverse video on |
||||
[ ? 5 l Normal video off |
||||
[ ? 7 h Wraparound ON |
||||
[ ? 7 l Wraparound OFF |
||||
[ ? 75 h Screen display ON |
||||
[ ? 75 l Screen display OFF |
||||
|
||||
CHARACTER SETS AND LABELS |
||||
~~~~~~~~~~~~~~~~~~~~~~~~ |
||||
( A British |
||||
( B North American ASCII set |
||||
( C Finnish |
||||
( E Danish or Norwegian |
||||
( H Swedish |
||||
( K German |
||||
( Q French Canadian |
||||
( R Flemish or French/Belgian |
||||
( Y Italian |
||||
( Z Spanish |
||||
( 0 Line Drawing |
||||
( 1 Alternative Character |
||||
( 2 Alternative Line drawing |
||||
( 4 Dutch |
||||
( 5 Finnish |
||||
( 6 Danish or Norwegian |
||||
( 7 Swedish |
||||
( = Swiss (French or German) |
||||
|
||||
[Note all ( may be replaced with )] |
||||
|
||||
CHARACTER SIZE |
||||
~~~~~~~~~~~~~ |
||||
# 1 Double ht, single width top half chars |
||||
# 2 Double ht, single width lower half chars |
||||
# 3 Double ht, double width top half chars |
||||
# 4 Double ht, double width lower half chars |
||||
# 5 Single ht, single width chars |
||||
# 6 Single ht, double width chars |
||||
|
||||
ATTRIBUTES AND FIELDS |
||||
~~~~~~~~~~~~~~~~~~~~ |
||||
[ 0 m Clear all character attributes |
||||
[ 1 m Alternate Intensity ON |
||||
[ 4 m Underline ON |
||||
[ 5 m Blink ON |
||||
[ 7 m Inverse video ON |
||||
[ 22 m Alternate Intensity OFF |
||||
[ 24 m Underline OFF |
||||
[ 25 m Blink OFF |
||||
[ 27 m Inverse Video OFF |
||||
[ 0 } Protected fields OFF |
||||
[ 1 } Protected = Alternate Intensity |
||||
[ 4 } Protected = Underline |
||||
[ 5 } Protected = Blinking |
||||
[ 7 } Protected = Inverse |
||||
[ 254 } Protected = All attributes OFF |
||||
|
||||
CURSOR COMMANDS |
||||
~~~~~~~~~~~~~~ |
||||
[ ? 25 l Cursor OFF |
||||
[ ? 25 h Cursor ON |
||||
[ ? 50 l Cursor OFF |
||||
[ ? 50 h Cursor ON |
||||
7 Save cursor position and character attributes |
||||
8 Restore cursor position and character attributes |
||||
D Line feed |
||||
E Carriage return and line feed |
||||
M Reverse Line feed |
||||
[ A Cursor up one line |
||||
[ B Cursor down one line |
||||
[ C Cursor right one column |
||||
[ D Cursor left one column |
||||
[ * A Cursor up * lines |
||||
[ * B Cursor down * lines |
||||
[ * C Cursor right * columns |
||||
[ * D Cursor left * columns |
||||
[ H Cursor home |
||||
[ *l ; *c H Move cursor to line *l, column *c |
||||
[ *l ; *c f Move curosr to line *l, column *c |
||||
Y nl nc Direct cursor addressing (line/column number) |
||||
H Tab set at present cursor position |
||||
[ 0 g Clear tab at present cursor position |
||||
[ 3 g Clear all tabs |
||||
|
||||
EDIT COMMANDS |
||||
~~~~~~~~~~~~ |
||||
[ 4 h Insert mode selected |
||||
[ 4 l Replacement mode selected |
||||
[ ? 14 h Immediate operation of ENTER key |
||||
[ ? 14 l Deferred operation of ENTER key |
||||
[ ? 16 h Edit selection immediate |
||||
[ ? 16 l Edit selection deffered |
||||
[ P Delete character from cursor position |
||||
[ * P Delete * chars from curosr right |
||||
[ M Delete 1 char from cursor position |
||||
[ * M Delete * lines from cursor line down |
||||
[ J Erase screen from cursor to end |
||||
[ 1 J Erase beginning of screen to cursor |
||||
[ 2 J Erase entire screen but do not move cursor |
||||
[ K Erase line from cursor to end |
||||
[ 1 K Erase from beginning of line to cursor |
||||
[ 2 K Erase entire line but do not move cursor |
||||
[ L Insert 1 line from cursor position |
||||
[ * L Insert * lines from cursor position |
||||
|
||||
ObBusinessHack: Customer wants a CD-ROM multimedia encyclopaedia, so I buy a |
||||
Soundblaster Pro for #75 which comes bundled with a multimedia encyclopaedia |
||||
CD-ROM. After carefully removing the "not to be sold separately" notice from |
||||
the CD, I sell it on for #75. Result: One free Soundblaster Pro and a happy |
||||
(but gullible) customer. (Allegedly ;) |
||||
|
||||
Virtually... :)om |
||||
............................................................................. |
||||
: INTERNET: Dom@sound.demon.co.uk :: Tel: 0831-88-42-69 Int:+44-831-884-269 : |
||||
: FIDONET: VF10 at node 2:254/14 :: PGP 2.3 public key available via Email : |
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
||||
|
||||
|
||||
|
Loading…
Reference in new issue