[comp.unix.programmer] Curses escape delay

heimir@hafro.is (Heimir Sverrisson) (11/04/90)

Hi,

I'm having trouble with sending escape sequences over a SL/IP connection
to a remote application running on a Sun 4 with SunOS 4.1.  The application
(I wrote) uses SYSV-curses (32-bit charcter size version) and works fine
on the machine it's running on.  The application uses keypad() and therefore
it should only get one token for a whole escape sequence.

When I'm connected remotely, my host tends to send the escape sequences as
separate packets for each character.  This causes delay on the other end
long enough for curses to time out and consider the Esc as a separate
entity. I've tried to ungetch() the Esc but that does not help!
Btw the connection is on 19200 baud and the network is not loaded.

Vi is working just fine over the same channel.  It's using the same
terminfo database, but is it intepreting the sequences by itself?

There are at least three solutions to this problem:

1) Let curses wait a bit longer until it writes off the esc-sequence algorithm.
   This would be a general solution to this problem and handle all delays in
   the channel i.e. from terminal servers or another machine on a heavily
   loaded network.  I know that IBM has an environment variable ESCDELAY on
   AIX 3.1 to do just this.  Is there any general way to fiddle with this
   internal timer.

2) Let my machine send the esc-sequence as one packet over the SL/IP line
   would probably fix this as well.  This would not fix the general curses
   problem, but could keep down network traffic.  Does anyone know if this
   is doable, preferably in rlogin/telnet or otherwise in SL/IP drivers?

3) Rewrite the application so that it will decode the sequences it self
   (from info read from the terminfo-database).  This is actually a big
   step backward and means throwing away curses code doing exactly the
   same thing - but not quite well enough :-(

Anyone out there given this a thought or even solved the problem in general :-)
?

-- 
---
Heimir Thor Sverrisson		Uucp: uunet!mcsun!sunic!isgate!hafro!heimir 
TF3ANT				Internet: heimir@hafro.is

jalsop@seachg.uucp (John Alsop) (11/05/90)

In article <557@hafro.is> heimir@hafro.is (Heimir Sverrisson) writes:
:Hi,
:
:I'm having trouble with sending escape sequences over a SL/IP connection
:to a remote application running on a Sun 4 with SunOS 4.1.  ...
:
:When I'm connected remotely, my host tends to send the escape sequences as
:separate packets for each character.  This causes delay on the other end
:long enough for curses to time out and consider the Esc as a separate
:entity. I've tried to ungetch() the Esc but that does not help!
:Btw the connection is on 19200 baud and the network is not loaded.
:
:There are at least three solutions to this problem:
:
:  [stuff deleted]

I ran into a similar problem using ACCELL/UNIFY over a local network.

As a quick solution, I wrote a small filter to run on the target host which
copied input characters until it saw the start of an escape sequence. It
then waited until the rest of the sequence had arrived, before passing the
full sequence as a single write.  Ugly, but did the job.
-- 
John Alsop

Sea Change Corporation
6695 Millcreek Drive, Unit 8
Mississauga, Ontario, Canada L5N 5R8
Tel: 416-542-9484 Fax: 416-542-9479
UUCP: ...!uunet!attcan!seachg!jalsop