标签: vt100

使用ANSI/VT100代码在PowerShell控制台中输出彩色文本

我编写了一个打印字符串的程序,该字符串包含ANSI转义序列以使文本着色.但它在默认的Windows 10控制台中无法正常工作,如屏幕截图所示.

程序输出显示为转义序列作为打印字符.如果我通过变量或管道将该字符串提供给PowerShell,则输出将按预期显示(红色文本).

如何才能实现程序打印彩色文本而无需任何解决方法?

在此输入图像描述

这是我的程序源(Haskell) - 但语言不相关,只是这样你就可以看到如何编写转义序列.

main = do
    let red = "\ESC[31m"
    let reset = "\ESC[39m"
    putStrLn $ red ++ "RED" ++ reset
Run Code Online (Sandbox Code Playgroud)

powershell ansi vt100 windows-console

14
推荐指数
2
解决办法
5797
查看次数

Java终端模拟器

有没有人知道模拟vt100终端的库或类(如果图形与否则无关紧要).我想要的基本上是一个实现vt100终端逻辑的类(比如当接收"删除"代码将调用删除函数,或者如果基于GUI将删除一个char).

java vt100 terminal-emulator

12
推荐指数
2
解决办法
1万
查看次数

什么是Ttrl = linux中的ctrl + arrow(左,右,......)的终端转义序列

我正在浏览器中建立一个终端窗口(就像ajaxterm一样)并且不知道要发送到ssh隧道的哪个转义序列(打开通过paramiko.SSHClient().invoke_shell(term='linux')).

我找到了一个关键记录器并在$ TERM =='linux'的终端中尝试了它,但它返回了相同的序列ctrl+leftleft(27,91,68).

如果我在另一个终端尝试键盘记录器(使用$ TERM =='xterm'),我会得到代码(27,91,49,59,53,68).但是这些代码不会移动从SSH通道生成预期的输出(这将在正常的Linux shell上移动光标一个字).即使我用term ='xterm'开始paramiko也是如此.

知道我应该使用什么序列?或者为什么上面的序列不起作用?

更新:我很乐意使用另一种终端类型(不是"linux"),但遗憾的是pyte仅适用于VTxxx终端(我相信"linux"是类似vt220的终端 - 无论如何,它都有效),所以xterm不起作用正常.

linux terminal keycode xterm vt100

11
推荐指数
2
解决办法
8687
查看次数

发送"C-("到VT100/xterm终端的Emacs(Mac OS X的终端)?

是否有可能通过VT100/xterm终端(Mac OS X终端)将密钥"C-("发送到Emacs?是否有可以发送的转义序列以实现等效?

我怀疑基本问题是控制与字符"("(以及使用shift生成的其他此类字符)组合的概念不存在.

注意:使用Cocoa Emacs不是一种选择.需要"C-("的原因是paredit.el在其他键组合中使用它,并且最好不重新映射它(因为将它放在"C-(")上是有意义的.

macos emacs terminal vt100

9
推荐指数
1
解决办法
2779
查看次数

Python正则表达式匹配VT100转义序列

我正在编写一个记录终端交互的Python程序(类似于脚本程序),我想在写入磁盘之前过滤掉VT100转义序列.我想使用这样的函数:

def strip_escapes(buf):
    escape_regex = re.compile(???) # <--- this is what I'm looking for
    return escape_regex.sub('', buf)
Run Code Online (Sandbox Code Playgroud)

应该escape_regex怎么做?

python regex vt100

9
推荐指数
2
解决办法
4069
查看次数

支持ANSI/VT100的AJAX控制台窗口?

我打算编写网关Web应用程序,它需要具有VT100/ANSI转义码支持的"终端窗口".是否有基于AJAX的替代方案来执行此类任务?

我在想这样的事情:http://tryruby.hobix.com/

我首选的系统后端是Python/Twisted/Pylons,但由于我只是计划,我将探索每个选项.

python ajax vt100

8
推荐指数
2
解决办法
4694
查看次数

是否有Perl模块Term :: VT102的Python等价物?

在Perl中有一个非常方便的模块,Term :: VT102,它允许您在内存中创建一个屏幕.这对于抓取目的非常方便,因为您可以跟踪屏幕各部分的所有更改,然后将屏幕导出为纯文本进行处理.Python中是否有等效的模块?

后续问题:像Pexpect这样的模块可以让你屏幕刮掉VT100屏幕,但是VT100与VT102的不同之处是什么?

python perl screen-scraping command-line-interface vt100

8
推荐指数
1
解决办法
598
查看次数

Windows WPF或Silverlight中的VT100终端仿真

我正在考虑创建一个像终端窗口一样的WPF或Silverlight应用程序.除了,因为它在WPF/Silverlight中,它将能够通过效果,图像等"增强"终端体验.

我正试图找出模拟终端的最佳方法.我知道如何处理VT100仿真,就解析等而言.但是如何显示呢?我考虑过使用RichTextBox并将VT100转义代码转换为RTF.

我看到的问题是性能.终端可能一次只能获得几个字符,并且为了能够将它们加载到文本框中,我将不断创建TextRanges并使用Load()来加载RTF.此外,为了完成每个加载"会话",它必须完全描述RTF.例如,如果当前颜色为红色,则每个加载到TextBox中都需要RTF代码才能使文本变为红色,或者我认为RTB不会将其加载为红色.

这似乎非常多余 - 由仿真构建的RTF文档将非常混乱.此外,插入符号的移动似乎不是理想情况下RTB处理的.我需要一些自定义的东西,但是这让我很害怕!

希望听到明亮的想法或指向现有解决方案.也许有一种方法可以在其上嵌入一个实际的终端和覆盖物.我发现的唯一的东西是旧的WinForms控件.

更新:在下面的答案中查看由于perf的建议解决方案是如何失败的.:(
Windows WPF或Silverlight中的VT100终端仿真

.net silverlight wpf terminal vt100

7
推荐指数
1
解决办法
6892
查看次数

如何在 Windows 中使用 vt100 代码

我尝试在控制台中移动光标。

我发现 vt100 代码可以做到这一点。

#include<stdio.h>
int main()
{
    printf("123456789\n");
    printf("\033A");
    printf("abcdefghi\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的输出与计划不同。这是上面的代码在控制台中打印的内容。

第二行“A”前面有个小箭头,不能放到网上

123456789
Aabcdefghi
Run Code Online (Sandbox Code Playgroud)

在 Windows 的 Visual Studio 中编程时如何使用 vt100 代码?

c windows vt100 visual-studio

6
推荐指数
2
解决办法
2975
查看次数

如何将发布数据发送到shellinabox,或使用javascript来做同样的事情

这将是一个很长的,所以提前道歉..

我正在使用shellinabox为我的团队编写基于Web的会话管理器.目前我按照我想要的方式工作,每个新连接都在另一个端口上启动一个新的shellinaboxd实例(如果需要).但PuTTY连接管理器(我们目前使用的)我无法工作的一件事是自动登录命令.建立连接后,我们会自动传递我们的凭据,然后是我们可能使用的任何其他登录后命令(cd/tmp等).

有了提琴手,我可以看到我制作的每一个按键发送根目录的帖子.例:

http://localhost:1234/?width=190&height=52&session=J793zjWa6gtKXEeV%2FeyY7g&keys=0D
Run Code Online (Sandbox Code Playgroud)

所以我认为,如果我捕获了那个会话令牌,我可以用wget或curl测试,以便将帖子数据发送到该会话.不起作用......

我的问题是,任何人都可以给我任何关于下一步尝试的指示吗?最后,对于我的POC,我想在页面上有一个按钮(我将链接嵌入到另一个页面中),这将允许我按下,并发送按键以获取字符串(我可以将字符串处理为十六进制)转换)直接到控制台视图.我显然不在这个方面,因为我不知道下一步该尝试什么.我知道shellinabox使用vt100作为它的控制台.我查看了它的JS,但找不到js中发送键击的位置.此外,一旦我打开嵌入了shellinabox的页面,我该如何拉出它正在使用的当前"会话"令牌?

任何帮助/指针将不胜感激.

html javascript css ssh vt100

6
推荐指数
0
解决办法
558
查看次数