Code: Alles auswählen
___
| stdin: '' -> warte
| Tastatureingabe: 'a'
| ___
___
|stdin: 'a' -> übersetze Zeichen
| lese 'a', übersetze als 'a', zeige 'a' an
| sende '\033[?6n'
| __
___
|stdin: '\x1b[?20;1R' -> übersetze Zeichen
| lese '\x1b' bis 'R', übersetze als (20, 1)
| __
___
|stdin: '' -> warte
| Eingabe aus Zwischenspeicher: 'wort'
| __
___
|stdin: 'wort\x1b[?20;2R' -> übersetze Zeichen
| lese 'w', übersetze als 'w', zeige 'w' an
| sende '\033[?6n'
| __
___
|stdin: 'ort\x1b[?20;2R\x1b[?20;3R' -> übersetze Zeichen
| lese 'o', übersetze als 'o', zeige 'o' an
| sende '\033[?6n'
| __
___
|stdin: 'rt\x1b[?20;2R\x1b[?20;3R\x1b[?20;4R' -> übersetze Zeichen
| lese 'r', übersetze als 'r', zeige 'r' an
| sende '\033[?6n'
| __
...
Mein Ansatz:
- Alle Zeichen bis zum xterm-Report auslesen, den Report auswerten und die zwischengespeicherten Zeichen dann wie 'stdin' behandeln und danach wieder auf 'stdin' wechseln.
Mit anderen Worten: Zwischen jedes anzeigbare Zeichen einen xterm-Report einfügen. - Auf die ständige (teure) xterm-Abfrage verzichten, die Koordinaten einmal abfragen und intern aktuell halten.
Was meint ihr?
mutetella