Terminal escape sequences

Discussion in 'Ruby' started by James Coglan, Aug 6, 2009.

  1. James Coglan

    James Coglan Guest

    [Note: parts of this message were removed to make it a legal post.]

    Hi all,

    Looking through the PDoc source to see how it renders the build progress
    meter, I see:

    log "\c[[F\c[[K Rendering: #{dest}"

    Is there a good reference for these escape sequences anywhere? They're not
    terribly Google-friendly.

    --
    James Coglan
    http://jcoglan.com
    James Coglan, Aug 6, 2009
    #1
    1. Advertising

  2. James Coglan

    Heesob Park Guest

    Hi,

    2009/8/6 James Coglan <>:
    > Hi all,
    >
    > Looking through the PDoc source to see how it renders the build progress
    > meter, I see:
    >
    > =C2=A0log "\c[[F\c[[K =C2=A0 =C2=A0Rendering: #{dest}"
    >
    > Is there a good reference for these escape sequences anywhere? They're no=

    t
    > terribly Google-friendly.
    >

    "\c[" is same to "\e"
    "\c[[F" is invalid sequence. cf: "\c[[f" means "Move cursor to upper
    left corner"
    "\c[[K" means "Clear line from cursor right"

    Refer to http://ascii-table.com/ansi-escape-sequences-vt-100.php

    Regards,

    Park Heesob
    Heesob Park, Aug 6, 2009
    #2
    1. Advertising

  3. James Coglan

    James Coglan Guest

    [Note: parts of this message were removed to make it a legal post.]

    2009/8/6 Heesob Park <>

    > Hi,
    >
    > 2009/8/6 James Coglan <>:
    > > Hi all,
    > >
    > > Looking through the PDoc source to see how it renders the build progress
    > > meter, I see:
    > >
    > > log "\c[[F\c[[K Rendering: #{dest}"
    > >
    > > Is there a good reference for these escape sequences anywhere? They're

    > not
    > > terribly Google-friendly.
    > >

    > "\c[" is same to "\e"
    > "\c[[F" is invalid sequence. cf: "\c[[f" means "Move cursor to upper
    > left corner"
    > "\c[[K" means "Clear line from cursor right"
    >
    > Refer to http://ascii-table.com/ansi-escape-sequences-vt-100.php



    Thanks. \e[F is not listed though on my system it seems to have the effect
    of returning the cursor to the start of the line, so \e[F\e[K can be used to
    overwrite the whole of the current line. Anyone know if this is commonly
    implemented or is it Ubuntu-specific?

    James
    James Coglan, Aug 6, 2009
    #3
  4. James Coglan <> writes:

    > [Note: parts of this message were removed to make it a legal post.]
    >
    > Hi all,
    >
    > Looking through the PDoc source to see how it renders the build progress
    > meter, I see:
    >
    > log "\c[[F\c[[K Rendering: #{dest}"
    >
    > Is there a good reference for these escape sequences anywhere? They're not
    > terribly Google-friendly.


    Each terminal kind has its own escape sequences. There are thousands
    of different kinds of terminals. A subset of their escape sequences
    are referenced in the termcap or terminfo files, for use by libraries
    such as curses, to provide a certain level of terminal independance on
    the application side.

    However, nowadays we don't use many physical terminals anymore. We
    still use virtual terminals (xterm, Terminal.app, etc). So there is
    still diversity, but much less.

    There are standardized escape sequences, and most kinds of terminal
    actually includes at least a basic subset of these standard escape
    sequences. There's the ISO-6429 standard, but you will need money to
    get it. There is also the ECMA-048 standard which should be identical
    to ISO-6429 and can be downloaded from the web. There's also an ANSI
    standard that should be identical or quite similar, but I don't know
    the reference. However, these standard escape sequences are often
    known by the name ANSI escape sequences (probably because on Microsoft
    systems they're implemented by a module stored in a file named
    ANSI.SYS).


    So to have the highest possible level of terminal compatibility, you
    should rather use a curses library (which will select the escape
    sequence to send depending on the terminal of the user).

    If you choose to use these standard escape sequences, you will
    restrict your program to terminals that implement these standard
    escape sequences (probably 95% of the (virtual) terminals in use
    today, so not a big loss).

    But even in this later case, I would advise you to abstract them away.

    Instead of writting:

    log "\c[[F\c[[K Rendering: #{dest}"

    write:

    log "#{Ecma048.cpl}${Ecma048.el} Rendering: #{dest}"

    (Notice that most of these escape sequences may take optional numeric arguments.
    CPL (Cursor Preceding Line) with an argument would could back several lines.)


    --
    __Pascal Bourguignon__
    Pascal J. Bourguignon, Aug 6, 2009
    #4
  5. James Coglan

    Heesob Park Guest

    2009/8/6 Heesob Park <>:
    > Hi,
    >
    > 2009/8/6 James Coglan <>:
    >> Hi all,
    >>
    >> Looking through the PDoc source to see how it renders the build progress
    >> meter, I see:
    >>
    >> =C2=A0log "\c[[F\c[[K =C2=A0 =C2=A0Rendering: #{dest}"
    >>
    >> Is there a good reference for these escape sequences anywhere? They're n=

    ot
    >> terribly Google-friendly.
    >>

    > "\c[" is same to "\e"
    > "\c[[F" is invalid sequence. cf: "\c[[f" means "Move cursor to upper
    > left corner"
    > "\c[[K" means "Clear line from cursor right"
    >
    > Refer to http://ascii-table.com/ansi-escape-sequences-vt-100.php
    >

    Correction:
    "\c[[F" means "Cursor Preceding Line"
    "\c[[K" means "Erase in Line"

    Refer to http://www.atariarchives.org/cfn/12/02/0075.php

    Regards,

    Park Heesob
    Heesob Park, Aug 6, 2009
    #5
  6. Hi,

    Am Donnerstag, 06. Aug 2009, 17:56:53 +0900 schrieb James Coglan:
    > Looking through the PDoc source to see how it renders the build progress
    > meter, I see:
    >
    > log "\c[[F\c[[K Rendering: #{dest}"
    >
    > Is there a good reference for these escape sequences anywhere? They're not
    > terribly Google-friendly.


    This is the whole truth: <http://www.xfree86.org/current/ctlseqs.html>.

    Be aware that there are a lot of terminal programs (xterm, KDE,
    Gnome, Xfce4, aterm, wterm, ...) and not everything is implemented
    everywhere.

    If you like to track what escape sequences some programs write
    you can use the script command.

    Bertram


    --
    Bertram Scharpf
    Stuttgart, Deutschland/Germany
    http://www.bertram-scharpf.de
    Bertram Scharpf, Aug 6, 2009
    #6
  7. Heesob Park <> writes:

    > Hi,
    >
    > 2009/8/6 James Coglan <>:
    >> Hi all,
    >>
    >> Looking through the PDoc source to see how it renders the build progress
    >> meter, I see:
    >>
    >>  log "\c[[F\c[[K    Rendering: #{dest}"
    >>
    >> Is there a good reference for these escape sequences anywhere? They're not
    >> terribly Google-friendly.
    >>

    > "\c[" is same to "\e"
    > "\c[[F" is invalid sequence. cf: "\c[[f" means "Move cursor to upper
    > left corner"


    ESC [ <Pn> F is CPL, Cursor Preceding Line, in ECMA-048.

    > "\c[[K" means "Clear line from cursor right"
    >
    > Refer to http://ascii-table.com/ansi-escape-sequences-vt-100.php


    Which would only prove that the VT-100 terminals don't implement ECMA-048.

    --
    __Pascal Bourguignon__
    Pascal J. Bourguignon, Aug 6, 2009
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Olaf Petzold

    vhdl textio and escape sequences

    Olaf Petzold, Nov 26, 2005, in forum: VHDL
    Replies:
    1
    Views:
    3,431
    Mike Treseler
    Nov 28, 2005
  2. Harald Kirsch
    Replies:
    0
    Views:
    328
    Harald Kirsch
    Nov 19, 2004
  3. Kit

    Escape sequences and printing

    Kit, Sep 16, 2003, in forum: C Programming
    Replies:
    5
    Views:
    497
    Matt Gregory
    Sep 17, 2003
  4. Thomas Philips

    Modifying escape sequences in strings

    Thomas Philips, Mar 2, 2004, in forum: Python
    Replies:
    2
    Views:
    318
    Larry Bates
    Mar 2, 2004
  5. slomo
    Replies:
    5
    Views:
    1,529
    Duncan Booth
    Dec 2, 2007
Loading...

Share This Page