You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
508 lines
17 KiB
508 lines
17 KiB
-------------------------------------------------------------------------- |
|
Eterm Technical Reference |
|
-------------------------------------------------------------------------- |
|
Reworked from XTerm documentation and from other sources |
|
|
|
Definitions |
|
|
|
c The literal character c. |
|
|
|
C A single (required) character. |
|
|
|
Ps A single (usually optional) numeric parameter, composed of one or |
|
more digits. |
|
|
|
Pm A multiple numeric parameter composed of any number of single |
|
numeric parameters, separated by ; character(s). |
|
|
|
Pt A text parameter composed of printable characters. |
|
|
|
[-] marks unimplemented sequences |
|
[*] marks Eterm-specific (non-ANSI/ISO) sequences |
|
-------------------------------------------------------------------------- |
|
|
|
ENQ Enquiry (Ctrl-E), Send Device Attributes (DA) |
|
-> request attributes from terminal |
|
-> ESC[?1;2c |
|
(``I am a VT100 with Advanced Video Option.'') |
|
BEL Bell (Ctrl-G) |
|
BS Backspace (Ctrl-H) |
|
TAB Horizontal Tab (HT) (Ctrl-I) |
|
LF Line Feed or New Line (NL) (Ctrl-J) |
|
VT Vertical Tab (Ctrl-K) same as LF |
|
FF Form Feed or New Page (NP) (Ctrl-L) same as LF |
|
CR Carriage Return (Ctrl-M) |
|
SO Shift Out (Ctrl-N), invokes the G1 character set |
|
-> Switch to Alternate Character Set |
|
SI Shift In (Ctrl-O), invokes the G0 character set (the default) |
|
-> Switch to Standard Character Set |
|
SPC Space Character |
|
|
|
ESC # 8 DEC Screen Alignment Test (DECALN) |
|
|
|
Character Sets |
|
-------------------------------------------------------------------------- |
|
ESC ( C Designate G0 Character Set (ISO 2022) |
|
ESC ) C Designate G1 Character Set (ISO 2022) |
|
ESC * C Designate G2 Character Set (ISO 2022) |
|
ESC + C Designate G3 Character Set (ISO 2022) |
|
ESC $ C Designate Kanji Character Set |
|
where |
|
C = 0 -> DEC Special Character and Line Drawing Set |
|
C = A -> United Kingdom (UK) |
|
C = B -> United States (USASCII) |
|
[-] C = < -> Multinational character set |
|
[-] C = 5 -> Finnish character set |
|
[-] C = C -> Finnish character set |
|
[-] C = K -> German character set |
|
|
|
ESC 7 Save Cursor (SC) |
|
ESC 8 Restore Cursor (RC) |
|
ESC = Application Keypad (SMKX) |
|
ESC > Normal Keypad (RMKX) |
|
|
|
- If the numeric keypad is activated, e.g. Num_Lock has been |
|
pressed, numbers or control functions are generated by the |
|
numeric keypad (see Key Codes section) |
|
|
|
ESC D Index (IND) |
|
ESC E Next Line (NEL) |
|
ESC H Tab Set (HTS) |
|
ESC M Reverse Index (RI) |
|
[-] ESC N Single Shift Select of G2 Character Set (SS2): |
|
affects next character only |
|
[-] ESC O Single Shift Select of G3 Character Set (SS3): |
|
affects next character only |
|
|
|
ESC Z Obsolete form of ESC [ c |
|
Optional (compile-time) returns -> ESC[?1;2C |
|
|
|
ESC [ Ps @ Insert Ps (Blank) Character(s) [default: 1] (ICH) |
|
ESC [ Ps A Cursor Up Ps Times [default: 1] (CUU) |
|
ESC [ Ps B Cursor Down Ps Times [default: 1] (CUD) |
|
ESC [ Ps C Cursor Forward Ps Times [default: 1] (CUF) |
|
ESC [ Ps D Cursor Backward Ps Times [default: 1] (CUB) |
|
ESC [ Ps E Cursor Down Ps Times [default: 1] and to first column |
|
ESC [ Ps F Cursor Up Ps Times [default: 1] and to first column |
|
ESC [ Ps G Cursor to Column Ps (HPA) |
|
|
|
ESC [ Ps;Ps H Cursor Position [row;column] [default: 1;1] (CUP) |
|
ESC [ Ps I Move forward Ps [default: 1] tab stops |
|
ESC [ Ps J Erase in Display (ED) |
|
Ps = 0 -> Clear Below (default) |
|
Ps = 1 -> Clear Above |
|
Ps = 2 -> Clear All |
|
ESC [ Ps K Erase in Line (EL) |
|
Ps = 0 -> Clear to Right (default) |
|
Ps = 1 -> Clear to Left (EL1) |
|
Ps = 2 -> Clear All |
|
ESC [ Ps L Insert Ps Line(s) [default: 1] (IL) |
|
ESC [ Ps M Delete Ps Line(s) [default: 1] (DL) |
|
ESC [ Ps P Delete Ps Character(s) [default: 1] (DCH) |
|
[-] ESC [ Ps;Ps;Ps;Ps;Ps T |
|
Initiate hilite mouse tracking. Parameters are |
|
[func;startx;starty;firstrow;lastrow]. |
|
See the section Mouse Tracking. |
|
ESC [ Ps W Tabulator functions |
|
Ps = 0 -> Tab Set (HTS) |
|
Ps = 2 -> Tab Clear (TBC), Clear Current Column (default) |
|
Ps = 5 -> Tab Clear (TBC), Clear All |
|
ESC [ Ps X Erase Ps Character(s) [default: 1] (ECH) |
|
ESC [ Ps Z Move backward Ps [default: 1] tab stops |
|
ESC [ PS ` == ESC [ PS G |
|
ESC [ Ps a == ESC [ Ps C |
|
|
|
ESC [ Ps c Send Device Attributes (DA) |
|
Ps = 0 or omitted -> request attributes from terminal |
|
-> ESC[?1;2c |
|
(``I am a VT100 with Advanced Video Option.'') |
|
ESC [ Ps d Cursor to Line Ps (VPA) |
|
ESC [ Ps e == ESC [ Ps A |
|
ESC [ Ps;Ps f Horizontal and Vertical Position [row;column] |
|
[default: 1;1] (HVP) |
|
ESC [ Ps g Tab Clear (TBC) |
|
Ps = 0 -> Clear Current Column (default) |
|
Ps = 3 -> Clear All (TBC) |
|
ESC [ Ps i Printing |
|
Ps = 4 -> disable transparent print mode (MC4) |
|
[-] Ps = 5 -> enable transparent print mode (MC5) |
|
ESC [ Pm h Set Mode (SM) |
|
ESC [ Pm l Reset Mode (RM) |
|
Ps = 4 |
|
h -> Insert Mode (SMIR) |
|
l -> Replace Mode (RMIR) |
|
[-] Ps = 20 |
|
h -> Automatic Newline (LNM) |
|
l -> Normal Linefeed (LNM) |
|
|
|
ESC [ Pm m Character Attributes (SGR) |
|
Ps = 0 -> Normal (default) |
|
Ps = 1 / 22 -> On / Off Bold (bright fg) |
|
Ps = 4 / 24 -> On / Off Underline |
|
Ps = 5 / 25 -> On / Off Blink (bright bg) |
|
Ps = 7 / 27 -> On / Off Inverse |
|
Ps = 30 / 40 -> fg / bg Black |
|
Ps = 31 / 41 -> fg / bg Red |
|
Ps = 32 / 42 -> fg / bg Green |
|
Ps = 33 / 43 -> fg / bg Yellow |
|
Ps = 34 / 44 -> fg / bg Blue |
|
Ps = 35 / 45 -> fg / bg Magenta |
|
Ps = 36 / 46 -> fg / bg Cyan |
|
Ps = 37 / 47 -> fg / bg White |
|
Ps = 39 / 49 -> fg / bg Default |
|
|
|
ESC [ Ps n Device Status Report (DSR) |
|
Ps = 5 -> Status Report ESC [ 0 n (``OK'') |
|
Ps = 6 -> Report Cursor Position (CPR) [row;column] |
|
as ESC [ r ; c R |
|
Ps = 7 -> Request Display Name |
|
Ps = 8 -> Request Version Number (place in window title) |
|
|
|
ESC [ Ps;Ps r Set Scrolling Region [top;bottom] |
|
[default: full size of window] (CSR) |
|
ESC [ Ps x Request Terminal Parameters (DECREQTPARM) |
|
|
|
ESC [ ? Pm h DEC Private Mode Set (DECSET) |
|
ESC [ ? Pm l DEC Private Mode Reset (DECRST) |
|
ESC [ ? Pm r Restore previously saved DEC Private Mode Values. |
|
ESC [ ? Pm s Save DEC Private Mode Values. |
|
ESC [ ? Pm t Toggle DEC Private Mode Values (Eterm extension). |
|
Ps = 1 |
|
h -> Application Cursor Keys (DECCKM) |
|
l -> Normal Cursor Keys (DECCKM) |
|
[-] Ps = 2 |
|
h -> Designate USASCII for character sets G0-G3. |
|
Ps = 3 |
|
h -> 132 Column Mode (DECCOLM) |
|
l -> 80 Column Mode (DECCOLM) |
|
[-] Ps = 4 |
|
h -> Smooth (Slow) Scroll (DECSCLM) |
|
l -> Jump (Fast) Scroll (DECSCLM) |
|
Ps = 5 |
|
h -> Reverse Video (DECSCNM) |
|
l -> Normal Video (DECSCNM) |
|
Ps = 6 |
|
h -> Origin Mode (DECOM) |
|
l -> Normal Cursor Mode (DECOM) |
|
Ps = 7 |
|
h -> Wraparound Mode (DECAWM) |
|
l -> No Wraparound Mode (DECAWM) |
|
[-] Ps = 8 |
|
h -> Auto-repeat Keys (DECARM) |
|
l -> No Auto-repeat Keys (DECARM) |
|
Ps = 9 (X10 XTerm mouse reporting) |
|
h -> Send Mouse X & Y on button press. |
|
l -> Don't Send Mouse X & Y on button press |
|
See the section Mouse Tracking. |
|
[*] Ps = 10 |
|
h -> menuBar visisble |
|
l -> menuBar invisisble |
|
Ps = 25 |
|
h -> Visible cursor {cnorm/cvvis} |
|
l -> Invisible cursor {civis} |
|
[*] Ps = 30 |
|
h -> scrollBar visisble |
|
l -> scrollBar invisisble |
|
[*] Ps = 35 |
|
h -> Allow XTerm Shift+key sequences |
|
l -> Disallow XTerm Shift+key sequences |
|
[-] Ps = 38 -> Enter Tektronix Mode (DECTEK) |
|
Ps = 40 |
|
h -> Allow 80 <--> 132 Mode |
|
l -> Disallow 80 <--> 132 Mode |
|
[-] Ps = 44 |
|
h -> Turn On Margin Bell |
|
l -> Turn Off Margin Bell |
|
[-] Ps = 45 |
|
h -> Reverse-wraparound Mode |
|
l -> No Reverse-wraparound Mode |
|
[-] Ps = 46 |
|
h -> Start Logging (normally disabled at compile-time) |
|
l -> Stop Logging (normally disabled at compile-time) |
|
Ps = 47 |
|
h -> Use Alternate Screen Buffer |
|
l -> Use Normal Screen Buffer |
|
Ps = 66 |
|
h -> Application Keypad (DECPAM) |
|
l -> Normal Keypad (DECPNM) |
|
Ps = 67 |
|
h -> Backspace key sends BS (DECBKM) |
|
l -> Backspace key sends DEL |
|
Ps = 1000 (X11 XTerm mouse reporting) |
|
h -> Send Mouse X & Y on button press and release. |
|
See the section Mouse Tracking. |
|
l -> Don't Send Mouse X & Y on button press and release |
|
[-] Ps = 1001 (X11 XTerm mouse tracking) |
|
h -> Use Hilite Mouse Tracking. |
|
See the section Mouse Tracking. |
|
l -> Don't Use Hilite Mouse Tracking |
|
ESC ] Ps;Pt BEL |
|
Set Text Parameters |
|
Ps = 0 -> Change Icon Name and Window Title to Pt |
|
Ps = 1 -> Change Icon Name to Pt |
|
Ps = 2 -> Change Window Title to Pt |
|
[*] Ps = 10 -> menuBar command Pt (compile-time option) |
|
see menuBar section below |
|
[*] Ps = 20 -> Change default background pixmap to Pt |
|
(compile-time option) |
|
see XPM section below |
|
[*] Ps = 39 -> Change default foreground color to Pt |
|
(compile-time option) |
|
[-] Ps = 46 -> Change Log File to Pt (normally disabled by a |
|
compile-time option) |
|
[*] Ps = 49 -> Change default background color to Pt |
|
(compile-time option) |
|
Ps = 50 -> Set Font to Pt |
|
[*] special values of Pt (Eterm extension) |
|
"#+n" change up <n> font(s) |
|
"#-n" change down <n> font(s) |
|
if <n> is missing or 0, a value of 1 is used |
|
"" change to font0 |
|
"#n" change to font<n> |
|
|
|
ESC c Full Reset (RIS) |
|
ESC n Invoke the G2 Character Set (LS2) |
|
ESC o Invoke the G3 Character Set (LS3) |
|
|
|
-------------------------------------------------------------------------- |
|
Eterm XPM |
|
-------------------------------------------------------------------------- |
|
|
|
For the XPM XTerm escape sequence, "ESC ] 20; Pt BEL", Pt can be the |
|
name of the background pixmap followed by a sequence of |
|
scaling/positioning commands separated by semi-colons. |
|
|
|
The scaling/positioning commands: |
|
`?' = query scale/position |
|
`WxH+X+Y' = change scale and position |
|
`WxH+X' -> Y = X |
|
`WxH' -> Y = X = 50 |
|
`W+X+Y' -> H = W |
|
`W+X' -> H = W, Y = X |
|
`W' -> H = W, X = Y = 50 |
|
`=+X+Y' = change position (absolute) |
|
`+X+Y' = change position (relative) |
|
`=+X' -> Y = X |
|
`+X' -> Y = X |
|
`Wx0' -> W *= W/100 |
|
`0xH' -> H *= H/100 |
|
|
|
For example: |
|
eg. |
|
"\E]20;mona.xpm;200" |
|
loads the pixmap `mona.xpm' and sets the scaling to 200% |
|
or |
|
"\E]20;;200;?\a" |
|
|
|
sets the scaling of the current pixmap to 200% and displays |
|
the image geometry in the title. |
|
|
|
-------------------------------------------------------------------------- |
|
Eterm menuBar |
|
-------------------------------------------------------------------------- |
|
|
|
For the menubar XTerm escape sequence, "ESC ] 10; Pt BEL", the syntax |
|
of Pt is as follows: |
|
|
|
= title set menuBar title |
|
+/ access menuBar top level |
|
-/ remove menuBar top level |
|
NUL remove menuBar top level |
|
|
|
+ [/menu/path/]submenu add/access menu |
|
- [/menu/path/]submenu remove menu |
|
|
|
+ [/menu/path/]{item}[{rtext}] [action] add/alter item |
|
- [/menu/path/]{item} remove item |
|
|
|
+ [/menu/path/]{-} add separator |
|
- [/menu/path/]{-} remove separator |
|
|
|
+ ../ access parent menu (1 level) |
|
+ ../../ access parent menu (multiple levels) |
|
|
|
Define menu quick arrows |
|
<b>Begin<r>Right<l>Left<u>Up<d>Down<e>End |
|
|
|
NB: the square brackets indicate optional values. |
|
|
|
The title may contain the following format specifiers: |
|
%% literal '%' character |
|
%v Eterm version |
|
|
|
In the `action' associated with a menu item, special characters must be |
|
backslash-escaped: |
|
`\a', `\b', `\E `\e', `\n', `\r', `\t', '\octal' |
|
or in control-character notation: |
|
^@, ^A .. ^Z .. ^_, ^? |
|
|
|
If `action' begins with a NUL (^@) character followed by |
|
non-NUL characters, the leading NUL is stripped off and the |
|
balance is sent back to Eterm. |
|
|
|
To send a string starting with a NUL (^@) character to the |
|
program, start action with a pair of NUL characters (^@^@), |
|
the first of which will be stripped off and the balance |
|
directed to the program. |
|
|
|
As a concession and a convenience to the many Emacs work-alike |
|
editors, an action string can be be starting with the following: |
|
`M-...', eg, `M-$' == `\E$' |
|
and for Meta-x commands, a carriage-return will be appended if |
|
missing and leading space will be skipped |
|
|
|
eg, `M-x apropos' == `\Exapropos\r' |
|
|
|
The option {rtext} will be right-justified. In the absence of |
|
a specified action, this text will be as the used. So, for |
|
example, |
|
Pt = `+{Open}{^X^F}' |
|
is equivalent to |
|
Pt = `+{Open){^X^F}{^X^F}' |
|
|
|
To only have the right-justified text, either use the same name |
|
for both left and right labels, eg: |
|
Pt = `+{Open}{Open} Open-File-Action' |
|
or simply hide the left label by preceeding it with a dot, eg: |
|
Pt = `+{.anyLabel}{Open} Open-File-Action' |
|
|
|
Since the left label is used for matching, it is necessary. |
|
|
|
The menus also provide a hook for `quick arrows' to provide |
|
easier user access. If nothing has been explicitly set, the |
|
default is to emulate the curror keys. The syntax permits |
|
each arrow to be altered individually or all four at once with |
|
re-entering their common beginning/end text. For example, to |
|
explicitly associate cursor actions with the arrows, any of the |
|
following forms could be used: |
|
|
|
Pt = `<u>\\E[A' |
|
Pt = `<d>\\E[B' |
|
Pt = `<r>\\E[C' |
|
Pt = `<l>\\E[D' |
|
or |
|
Pt = `<u>\\E[A<d>\\E[B<r>\\E[C<l>\\E[D' |
|
or |
|
Pt = `<b>\\E[<u>A<d>B<r>C<l>D' |
|
|
|
It is probably easiest just to see the examples. |
|
|
|
-------------------------------------------------------------------------- |
|
Mouse reporting |
|
-------------------------------------------------------------------------- |
|
|
|
ESC [ M <b> <x> <y> report mouse position |
|
The lower 2 bits of <b> indicate the button: |
|
Button = <b> & 3 - SPACE |
|
0 = Button1 pressed |
|
1 = Button2 pressed |
|
2 = Button3 pressed |
|
3 = button released (X11 mouse report) |
|
|
|
The upper bits of <b> indicate the modifiers when |
|
the button was pressed and are added together |
|
(X11 mouse report only): |
|
State = <b> & 28 - SPACE |
|
4 = Shift |
|
8 = Meta |
|
16 = Control |
|
|
|
Col = <x> - SPACE |
|
Row = <y> - SPACE |
|
|
|
-------------------------------------------------------------------------- |
|
Eterm special graphics mode: |
|
-------------------------------------------------------------------------- |
|
ESC G Q query if graphics are available |
|
-> ESC G 0 no graphics available |
|
-> ESC G 1 graphics available (color only) |
|
|
|
Add more documentation here, if anyone actually cares. |
|
ESC G W <x>;<y>;<w>;<h>: create window |
|
ESC G G <id>: query window |
|
-> ESC G <id> <x> <y> <w> <h> <fw> <fh> <nw> <nh> |
|
ESC G L <id> start line |
|
ESC G P <id> start point |
|
ESC G F <id> start fill |
|
ESC G C <id> clear window |
|
ESC G T <id>;<x>; <y>;<mode>;<len>:<text> place text |
|
|
|
-------------------------------------------------------------------------- |
|
Key Codes |
|
-------------------------------------------------------------------------- |
|
Normal Shift Control Application |
|
Up ESC [ A ESC [ a ESC O a ESC O A |
|
Down ESC [ B ESC [ b ESC O b ESC O B |
|
Right ESC [ C ESC [ c ESC O c ESC O C |
|
Left ESC [ D ESC [ d ESC O d ESC O D |
|
|
|
Normal Shift Control |
|
Tab ^I ESC [ Z ^I |
|
BackSpace ^H ^? ^? |
|
|
|
Normal Shift Control Ctrl+Shift |
|
Home == Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @ |
|
Insert ESC [ 2 ~ paste-mouse ESC [ 2 ^ ESC [ 2 @ |
|
Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ |
|
End == Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @ |
|
Prior ESC [ 5 ~ scroll-up ESC [ 5 ^ ESC [ 5 @ |
|
Next ESC [ 6 ~ scroll-down ESC [ 6 ^ ESC [ 6 @ |
|
|
|
Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ |
|
|
|
Function Keys: |
|
(Note: Shift + F1-10 generates F11-20) |
|
Norm Shift Control Ctrl+Shift |
|
F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^ |
|
F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^ |
|
F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^ |
|
F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^ |
|
F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^ |
|
|
|
F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^ |
|
F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^ |
|
F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^ |
|
F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^ |
|
F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^ |
|
|
|
F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @ |
|
F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @ |
|
F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @ |
|
F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @ |
|
|
|
F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @ |
|
F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @ |
|
|
|
F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @ |
|
F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @ |
|
F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @ |
|
F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @ |
|
|
|
Keypad: |
|
use Shift to temporarily override Appl-Keypad setting |
|
use Num_Lock to toggle Appl-Keypad setting |
|
if Num_Lock is off, escape sequences toggle Appl-Keypad setting |
|
------ |
|
Normal Application |
|
KP_Enter ^M ESC O M |
|
KP_F1 ESC O P ESC O P |
|
KP_F2 ESC O Q ESC O Q |
|
KP_F3 ESC O R ESC O R |
|
KP_F4 ESC O S ESC O S |
|
XK_KP_Multiply * ESC O j |
|
XK_KP_Add + ESC O k |
|
XK_KP_Separator , ESC O l |
|
XK_KP_Subtract - ESC O m |
|
XK_KP_Decimal . ESC O n |
|
XK_KP_Divide / ESC O o |
|
XK_KP_0 0 ESC O p |
|
XK_KP_1 1 ESC O q |
|
XK_KP_2 2 ESC O r |
|
XK_KP_3 3 ESC O s |
|
XK_KP_4 4 ESC O t |
|
XK_KP_5 5 ESC O u |
|
XK_KP_6 6 ESC O v |
|
XK_KP_7 7 ESC O w |
|
XK_KP_8 8 ESC O x |
|
XK_KP_9 9 ESC O y |
|
--------------------------------------------------------------------------
|
|
|