1

我在 Mono 中有一个应用程序,它创建一个腻子窗口,连接到它的 PTY 并通过它与世界通信。

感谢 Putty,我有一个完整的终端,我可以将特殊代码(如 Ctrl+C、Ctrl+Z)发送到我的应用程序。

我想回到我的终端,在其中启动应用程序。我想抓住尽可能多的组合键。这样我就可以通过 ssh 使用我的应用程序,而不会弹出任何窗口。

我的想法是从 /dev/ 检索我当前的终端,忽略(或处理)所有可能的信号,轮询按下的键并转发到我的应用程序。这可以在 C 中使用 P/Invoke 完成。

这是可能的,但编码是痛苦和耗时的。

我想知道它是否已经完成了?你知道任何图书馆吗?最好的选择是注册一个或两个回调,但任何使它更容易的解决方案都会很棒。

TL;博士

我需要一个库来提供我的界面,例如:

event Action<byte> CharReceived;
void WriteChar(byte val);

并允许我接收 ANSI 终端代码作为字节序列。

替代方案是根据 ANSI 终端规则转换ConsoleKeyInfo为的库。byte[]

4

2 回答 2

1

我发现以下项目链接非常有帮助。您可以下载该项目,然后查看 codeproject 网站上的第一条评论,了解如何将其扩展到 SerialPort 支持(这是我需要的)。

http://www.codeproject.com/Articles/20781/Terminal-Control-Library-C-VT100-ANSI-XTERM-SSH-Te

该项目实际上是 Poderosa 项目的一个薄包装,但除非你会说日语,否则这个薄包装很有用。Poderosa 项目已经支持 SerialPorts,但它并没有被“Columbus-MCSD”带到表面。

于 2013-01-25T22:45:50.863 回答
0

实际上,观察到对这种场景缺乏良好的支持(并且稍微改变了我们的要求),我们开发了自己的终端模拟器,Termsharp:

https://github.com/antmicro/termsharp

它是基于窗口的(在 XWT 上运行),但可以用作库,解码 VT100 序列。

虽然我用我工作的公司的产品来回答我自己的问题,但它是在原始帖子之后很长时间创建的,所以我希望它是可以接受的。

于 2017-03-10T08:56:20.353 回答