TIP #305 Version 1.1: ANSI Escape Sequence Support for Windows's Console Channel Driver

This is not necessarily the current version of this TIP.


TIP:305
Title:ANSI Escape Sequence Support for Windows's Console Channel Driver
Version:$Revision: 1.1 $
Author:David Gravereaux <davygrvy at pobox dot com>
State:Draft
Type:Project
Tcl-Version:8.5
Vote:Pending
Created:Wednesday, 21 February 2007
Discussions To:news:comp.lang.tcl

Abstract

The console channel driver for windows (win/tclWinConsole.c) could support colors, cursor movement, and scrolling by embedding such commands in the stream to the console in the age-old tradition of ANSI escapes. By filtering-out such commands in the DriverOutputProc and doing the command actions, greater cross-platform support is enabled to other platforms (such as Linux) that have ANSI support.

Rationale

A long time ago, in a land far, far away... DOS programmers wrote character-mode applications for a screen that was 80x25 cells large and had 16 colors and a few special attributes using a strange codepage called IBM PC or CP437. And life wasn't that bad.

Currently, there appears to only be two ways to write such an application in Tcl:

This change proposal is similar to the first option, but the commands are placed in the stream in a standardized manner that gains us immediate support with Linux.

This change proposal is different than the second option in that only the output direction of the console driver is modified. No support is proposed for such things as raw keyscan and mouse events.

This change proposal will not effect the opening modes of the console, therefore will not have an adverse change to any current scripts.

Specification

This TIP proposes two changes visible at the script level. Firstly, the fconfigure command will be able to set the speed of channels directed to the Windows console (often being stdout and stderr) via a -baud option. Secondly, channels directed to the Windows console will interpret ANSI control sequences as ANSI control sequences (subject to the limitations outlined above) and not directives to write characters.

Reference Implementation

A patch is currently being worked on. There is an ANSI test extension for wish available[1] that contains numerous test screens (some with ansimations) and appears to work perfectly.

The blink and underline SGR modes can not be supported due to OS limitations, and nor can the color palette be modified to affirm color consistency.

Copyright

This document has been placed in the public domain.


Powered by TclThis is not necessarily the current version of this TIP.

TIP AutoGenerator - written by Donal K. Fellows