0 votes
by (160 points)

The app I'm working on requires that the last thing it does is sends 2 escape keys. I have tried

 dim myByte as byte = "27"


terminal.SendToServer(New ConsoleKeyInfo("\0", ConsoleKey.Escape, False, False, False))


terminal.SendToServer(New ConsoleKeyInfo("", ConsoleKey.Escape, False, False, False))

all 3 with and without

        state = terminal.Process(500)
    Loop While state = TerminalState.DataReceived

in between the 2 escape keys. Methods 1 and 3 are typing the escape key unicode sequence instead of sending as a key press, depending on the function key mode set (Linux, LinuxAlternative, Common, XtermR6, all work for the F-keys that the app uses) either as "0[21~" or "[21~", after the second escape key is sent. Method 2 is writing "" to the screen for both key presses.

2 Answers

0 votes
by (70.4k points)

You were quite near. The code should look like this:

terminal.SendToServer(New ConsoleKeyInfo(Chr(27), ConsoleKey.Escape, False, False, False))

It is because the ConsoleKey.Escape value is not handled by the terminal explicitly, so the ConsoleKeyInfo.KeyChar is used. Actually, it is easy to handle ConsoleKey.Escape in terminal, so I will add this functionality. All your cases will work in the next release.

Basically, you want to send a string which contains two escapes. The easiest way is the following:


terminal.SendToServer(Chr(27) & Chr(27))


0 votes
by (15.2k points)

Hi, we have just release new Scripting API in 2014-R2 release. You can read more of its features on Scripting features page.