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