Martin wrote:
On 17/06/2013 17:13, Mattias Gaertner wrote:
On Sat, 15 Jun 2013 13:46:57 +0000
Mark Morgan Lloyd <[email protected]> wrote:

What's the easiest way to implement something like xterm or konsole,
that has minimal escape decoding for e.g. cursor control but under
normal circumstances buffers output lines in scrollable form?

What I'm trying to do is implement some special 8-bit codepage mapping
for programs run inside a window, but it would be desirable to be able
to run a (unix) shell and a standard editor such as vi.
I'm interested in a terminal LCL control as well.

Count me in (for wanting to have), would be nice for the debugger (linux) (and Mac, if someone knows how to simulate a tty)

I don't claim to have anything like the expertise to do all of the work (I've never tackled a component in either Delphi or Lazarus), but it might be worthwhile kicking ideas around.

Almost everything I do ends up having at least one terminal pane, at the very least for status/debugging output. This needs to be scrollable, with a limit on the number of history lines, and (optionally) for the insertion point to be forced visible when there's fresh output. Copy to clipboard, save as text etc. are desirable, paste etc. not.

I've hooked into TSynEdit.KeyDown to get full control of the keyboard, and injected Unicode characters using IntfUTF8KeyPress(). This allowed me to put APL characters etc. into text I was editing, there was nothing from a tty line etc. in this case and I didn't need colour.

For an actual terminal emulator (emulating an old IBM electromechanical terminal), I've experimented with TMemo and TListBox, with the option of using TRichMemo if available; I also tried basing something on TCmdBox but it didn't really suit. In all cases I hooked the KeyDown event translating it to 8-bit ASCII rather than Unicode, I found a few detail differences between Qt and GTK keycodes. Output was done by rather painfully tacking onto the stringlist etc. that underlay the control, with colour (black/red) handling in some cases- this used custom escape sequences, since the thing I was emulating long preceded ANSI/VT100.

Something else I've done displays terminal output from a protocol analyzer, this includes serial control line transitions, graphical control characters and possibly things like Prestel/Minitel which I don't think are in Unicode.

The current thing I'm looking at is a number of programs (APL systems) which require custom 8-bit keyboard and screen handling which would "correctly" by done by tweaking the X configuration. Unfortunately this is system-wide so I'm wondering whether it could be done by a Lazarus (and/or text-mode FPC) wrapper around the program.

A twist in this case is that one of these systems wants to shell out to an editor. One approach- the one I'm using at the moment- would be to simply run vi (or whatever) in a shell, but it would be nicer to be able to pass full control back to the terminal and have it save just the edited lines.

As Marc says, some tweak to Synedit might be viable provided that it was able to handle colours etc. properly. The basic control would probably have two modes (cell-addressable and extensible) with provision for attaching keyboard and escape-sequence handlers.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to