schoppenhauer
02-02-2007, 13:39
Hallo.
Ich Experimentiere gerade mit VT100 und Ähnlichem rum, und hab ne ganz tolle Spezifikation gefunden unter http://www.cs.utk.edu/~shuford/terminal/vt100_codes_news.txt (nur, falls es jemanden interessiert).
Jetzt hab ich aber ein Problem...
Ich versuch grad einen Device Status Report zu erhalten (Nur zum Test)... Und das ganze Klappt auch schon relativ gut mit dem folgenden code:
#include <stdio.h>
int main (void) {
printf("\33[1x");
while (1) {
char *c;
fread (c, 1, 1, stdin);
// = getchar ();
// = getc (stdin);
// = fgetc (stdin);
if (*c == '\33') printf("<ESC>");
else { printf("%c", *c); }
}
printf("\n");
}
Wie man aber unschwer sieht, hab ich es schon mit fgetc, getchar, getc, etc., versucht... Also das Programm macht im Grunde das Folgende: Es sendet den Befehl, der in der Spezifikation DECREQTPARM heißt, an den VT-Emulator... Und liest dann (in ner Endlosschleife zwar, aber egal, es geht auch nicht, wenn ich die Anzahl der Chars beschränke) vom Stdin. Und das tolle und unerwartete ist: Ja, zumindest xterm antwortet sogar... Aber das einzige Problem ist: Das Programm setzt voraus, dass ich enter drücke. Anscheinend funktioniert getchar und das ganze andere Zeugs nicht, bevor man nicht enter drückt.
Wenn ich enter drücke ist die Ausgabe "<ESC>[3;1;1;128;128;1;0x". Was das genau heißt, weiß ich zwar atm nicht (weils nicht in der Spezifikation steht), aber das ist ein anderes Problem. Ich will die Chars auch lesen können, ohne dass ich extra enter drücken muss... Gibts da eine Möglichkeit?
Es wäre generell mal interessant zu wissen, wie man Character auch von der Tastatur direkt einliest, ohne dass enter gedrückt werden muss.
Aber keine ahnung, vielleicht hab ich in der Spezifikation ja irgendwas übersehen.
Bin jedenfalls über jede Hilfe (die verschieden von "wozu willst du das? benutz doch ncurses für sowas." ist) dankbar.
Ich Experimentiere gerade mit VT100 und Ähnlichem rum, und hab ne ganz tolle Spezifikation gefunden unter http://www.cs.utk.edu/~shuford/terminal/vt100_codes_news.txt (nur, falls es jemanden interessiert).
Jetzt hab ich aber ein Problem...
Ich versuch grad einen Device Status Report zu erhalten (Nur zum Test)... Und das ganze Klappt auch schon relativ gut mit dem folgenden code:
#include <stdio.h>
int main (void) {
printf("\33[1x");
while (1) {
char *c;
fread (c, 1, 1, stdin);
// = getchar ();
// = getc (stdin);
// = fgetc (stdin);
if (*c == '\33') printf("<ESC>");
else { printf("%c", *c); }
}
printf("\n");
}
Wie man aber unschwer sieht, hab ich es schon mit fgetc, getchar, getc, etc., versucht... Also das Programm macht im Grunde das Folgende: Es sendet den Befehl, der in der Spezifikation DECREQTPARM heißt, an den VT-Emulator... Und liest dann (in ner Endlosschleife zwar, aber egal, es geht auch nicht, wenn ich die Anzahl der Chars beschränke) vom Stdin. Und das tolle und unerwartete ist: Ja, zumindest xterm antwortet sogar... Aber das einzige Problem ist: Das Programm setzt voraus, dass ich enter drücke. Anscheinend funktioniert getchar und das ganze andere Zeugs nicht, bevor man nicht enter drückt.
Wenn ich enter drücke ist die Ausgabe "<ESC>[3;1;1;128;128;1;0x". Was das genau heißt, weiß ich zwar atm nicht (weils nicht in der Spezifikation steht), aber das ist ein anderes Problem. Ich will die Chars auch lesen können, ohne dass ich extra enter drücken muss... Gibts da eine Möglichkeit?
Es wäre generell mal interessant zu wissen, wie man Character auch von der Tastatur direkt einliest, ohne dass enter gedrückt werden muss.
Aber keine ahnung, vielleicht hab ich in der Spezifikation ja irgendwas übersehen.
Bin jedenfalls über jede Hilfe (die verschieden von "wozu willst du das? benutz doch ncurses für sowas." ist) dankbar.