2009-05-29 6 views
1

Mehrere Dinge hier:Cygwin BASH und ANSI-Kontrollsequenzen

  1. Kann mir jemand bei C-Code zeigen ANSI-Konsole Escape-Sequenzen zu entschlüsseln?
  2. Gibt es eine Möglichkeit, Cygwin BASH zu einem dummen alten TTY zu emulieren?

Vielleicht sollte dies 2 Fragen sein.

Danke.

+0

Sie meinen _act_ auf ANSI-Escape-Sequenzen? Wie den Cursor bewegen? – 0x6adb015

+0

Was meinst du mit "Get Cygwin BASH, um eine dumme alte TTY zu emulieren"? Bash ist eine Schale; Es ist kein Terminal-Emulator. –

Antwort

4

Es ist eine etwas indirekte Antwort, aber die GNU Ncurses-Bibliothek behandelt Terminals aller Art. Eine Möglichkeit, um herauszufinden, welche Sequenzen steuern gelten Terminals in ANSI wäre ein ANSI-Terminal Beschreibung decompile:

infocmp ansi 

Dies würde Ihnen den Satz von TERM Attribute, die durch Flüche Programme verwendet werden, Auswirkungen auf ein ANSI zu erreichen Terminal. Natürlich müssen Sie dann wissen, was diese Hieroglyphen bedeuten.

auf Cygwin, ich habe:

$ infocmp ansi 
#  Reconstructed via infocmp from file: /usr/share/terminfo/61/ansi 
ansi|ansi/pc-term compatible with color, 
    am, mc5i, mir, msgr, 
    colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, 
    acsc=+\020\,\021\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
    bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, 
    cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, 
    cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
    cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
    dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, 
    el1=\E[1K, home=\E[H, hpa=\E[%i%p1%dG, ht=\E[I, hts=\EH, 
    ich=\E[%p1%[email protected], il=\E[%p1%dL, il1=\E[L, ind=^J, 
    indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcbt=\E[Z, kcub1=\E[D, 
    kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, 
    mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, op=\E[39;49m, 
    rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rin=\E[%p1%dT, 
    rmacs=\E[10m, rmpch=\E[10m, rmso=\E[m, rmul=\E[m, 
    s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, 
    setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
    sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, 
    sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m, 
    smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, 
    u8=\E[?%[;]c, u9=\E[c, vpa=\E[%i%p1%dd, 

$ 

Die '\E' Notation auf die ESC-Zeichen verweist.

Andernfalls können Sie den Standard selbst nachschlagen.

+1

Danke. Ja, ich habe einen ANSI Emulator Code bekommen. Die Sache ist, dass wenn Cygwin BASH läuft, es seltsame Kontrollsequenzen zu senden scheint, insbesondere \ E] 0 ... was definitiv nicht im Standard ist! Der Rest sind alle Informationen zur Farbkontrolle. –

3

Durch das Anpassen der TERM-Umgebungsvariablen können Anwendungen, die auf terminfo/termcap basieren, die Verwendung erweiterter Escape-Sequenzen vermeiden. (export TERM = dumm) Ich bin mir nicht sicher, ob du das willst.

+1

Danke - Ich habe das versucht, aber es scheint keine Wirkung zu haben –