Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 13. Nov 2018 20:53

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Im Terminal Cursor positionieren
BeitragVerfasst: 04. Dez 2008 19:14 
Offline

Registriert: 14. Mai 2007 19:27
Beiträge: 70
Hallo Leute!

Ich würde gerne im Terminal (mit C) einen Mehrzeiligen Text ausgeben
und diesen immer wieder aktualisieren.
So wie top oder htop

Also nicht dass ich immer Zeile für Zeile ausgebe
dann rauscht der text immer nach oben und wird unübersichtlich.

Also sagen wir mal ganz einfach die Cursorposition bestimmen
wo das ganze ausgegeben werden soll.

Hat da irgendjemand eine Idee?

Danke
8) pcAlko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 04. Dez 2008 21:59 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Dafür kannst du z.B. ncurses benutzen.

Quick&Dirty geht aber auch:
Code:
$ infocmp
#       Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),
        am, bce, km, mc5i, mir, msgr, npc, xenl,
        colors#8, cols#80, it#8, lines#24, pairs#64,
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
        clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        cvvis=\E[?12;25h, 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,
        flash=\E&#91;?5h$<100/>\E&#91;?5l, home=\E&#91;H, hpa=\E&#91;%i%p1%dG,
        ht=^I, hts=\EH, ich=\E&#91;%p1%d@, il=\E&#91;%p1%dL, il1=\E&#91;L,
        ind=^J, indn=\E&#91;%p1%dS, invis=\E&#91;8m,
        is2=\E&#91;!p\E&#91;?3;4l\E&#91;4l\E>, kDC=\E&#91;3;2~, kEND=\E&#91;1;2F,
        kHOM=\E&#91;1;2H, kIC=\E&#91;2;2~, kLFT=\E&#91;1;2D, kNXT=\E&#91;6;2~,
        kPRV=\E&#91;5;2~, kRIT=\E&#91;1;2C, kb2=\EOE, kbs=\177, kcbt=\E&#91;Z,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kdch1=\E&#91;3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E&#91;21~,
        kf11=\E&#91;23~, kf12=\E&#91;24~, kf13=\E&#91;2P, kf14=\E&#91;2Q,
        kf15=\E&#91;2R, kf16=\E&#91;2S, kf17=\E&#91;15;2~, kf18=\E&#91;17;2~,
        kf19=\E&#91;18;2~, kf2=\EOQ, kf20=\E&#91;19;2~, kf21=\E&#91;20;2~,
        kf22=\E&#91;21;2~, kf23=\E&#91;23;2~, kf24=\E&#91;24;2~, kf25=\E&#91;5P,
        kf26=\E&#91;5Q, kf27=\E&#91;5R, kf28=\E&#91;5S, kf29=\E&#91;15;5~,
        kf3=\EOR, kf30=\E&#91;17;5~, kf31=\E&#91;18;5~, kf32=\E&#91;19;5~,
        kf33=\E&#91;20;5~, kf34=\E&#91;21;5~, kf35=\E&#91;23;5~,
        kf36=\E&#91;24;5~, kf37=\E&#91;6P, kf38=\E&#91;6Q, kf39=\E&#91;6R,
        kf4=\EOS, kf40=\E&#91;6S, kf41=\E&#91;15;6~, kf42=\E&#91;17;6~,
        kf43=\E&#91;18;6~, kf44=\E&#91;19;6~, kf45=\E&#91;20;6~,
        kf46=\E&#91;21;6~, kf47=\E&#91;23;6~, kf48=\E&#91;24;6~, kf49=\E&#91;3P,
        kf5=\E&#91;15~, kf50=\E&#91;3Q, kf51=\E&#91;3R, kf52=\E&#91;3S,
        kf53=\E&#91;15;3~, kf54=\E&#91;17;3~, kf55=\E&#91;18;3~,
        kf56=\E&#91;19;3~, kf57=\E&#91;20;3~, kf58=\E&#91;21;3~,
        kf59=\E&#91;23;3~, kf6=\E&#91;17~, kf60=\E&#91;24;3~, kf61=\E&#91;4P,
        kf62=\E&#91;4Q, kf63=\E&#91;4R, kf7=\E&#91;18~, kf8=\E&#91;19~, kf9=\E&#91;20~,
        kfnd=\E&#91;1~, khome=\EOH, kich1=\E&#91;2~, kind=\E&#91;1;2B,
        kmous=\E&#91;M, knp=\E&#91;6~, kpp=\E&#91;5~, kri=\E&#91;1;2A, kslt=\E&#91;4~,
        mc0=\E&#91;i, mc4=\E&#91;4i, mc5=\E&#91;5i, meml=\El, memu=\Em,
        op=\E&#91;39;49m, rc=\E8, rev=\E&#91;7m, ri=\EM, rin=\E&#91;%p1%dT,
        rmacs=\E&#40;B, rmam=\E&#91;?7l, rmcup=\E&#91;?1049l, rmir=\E&#91;4l,
        rmkx=\E&#91;?1l\E>, rmm=\E&#91;?1034l, rmso=\E&#91;27m, rmul=\E&#91;24m,
        rs1=\Ec, rs2=\E&#91;!p\E&#91;?3;4l\E&#91;4l\E>, sc=\E7,
        setab=\E&#91;4%p1%dm, setaf=\E&#91;3%p1%dm,
        setb=\E&#91;4%?%p1%&#123;1&#125;%=%t4%e%p1%&#123;3&#125;%=%t6%e%p1%&#123;4&#125;%=%t1%e%p1%&#123;6&#125;%=%t3%e%p1%d%;m,
        setf=\E&#91;3%?%p1%&#123;1&#125;%=%t4%e%p1%&#123;3&#125;%=%t6%e%p1%&#123;4&#125;%=%t1%e%p1%&#123;6&#125;%=%t3%e%p1%d%;m,
        sgr=%?%p9%t\E&#40;0%e\E&#40;B%;\E&#91;0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
        sgr0=\E&#40;B\E&#91;m, smacs=\E&#40;0, smam=\E&#91;?7h, smcup=\E&#91;?1049h,
        smir=\E&#91;4h, smkx=\E&#91;?1h\E=, smm=\E&#91;?1034h, smso=\E&#91;7m,
        smul=\E&#91;4m, tbc=\E&#91;3g, u6=\E&#91;%i%d;%dR, u7=\E&#91;6n,
        u8=\E&#91;?1;2c, u9=\E&#91;c, vpa=\E&#91;%i%p1%dd,
Das sind die Codes für xterm. Jedes Terminal hat andere Codes zum Bewegen des Cursors etc.

Schreib dir die Codes für "cuu1" (Cursor hoch) und "cub1" (Cursor links) raus, z.B. mit
Code:
$tput cuu1 | od -tx1
0000000 1b 5b 41
0000003
$ tput cub1 | od -tx1
0000000 08
0000001
und benutz diese in Strings in deinem C-Programm. Das funktioniert aber nur mit dem Terminal, das du bei "infocmp" angegeben hast. Wenn du ordentlich programmieren willst, nimm ncurses, das benutzt automatisch die terminfo-Datei, die zu dem jeweiligen Terminal passt und ist auch komfortabler und oft viel schneller, besonders auf "echten" seriell angeschlossenen Terminals.

$ man ncurses
$ man infocmp
$ man terminfo

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05. Dez 2008 18:16 
Offline

Registriert: 14. Mai 2007 19:27
Beiträge: 70
Danke,
dann werd ich mich mal mit dem ncurses beschäftigen.

8) pcAlko


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de