问题标签 [vt100]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C语言中同时独立执行两个函数
我想我可能在c中有线程问题,但我不确定。
我的目标是在 while(1) 循环中执行两个单独的函数:其中一个函数是 kbget() 以检索在非规范模式下在终端中按下的键。第二个是使用 ioctl(1, TIOCGWINSZ,...) 函数不断获取终端窗口大小。
它通常不起作用,因为在执行第二个函数以重新评估终端窗口大小之前,while(1) 循环停止以从用户那里获取按键。如果在按下键之前调整终端窗口的大小,则不会执行评估其大小的函数,除非再次按下随机键。
换句话说,调整终端窗口的大小不会更新下面的 Window 结构中的大小值,除非按下一个键。我希望程序在调整终端大小时更新 y_size 和 x_size 值“实时”。
这是没有 POSIX 线程的代码中的问题:执行:
(下面的 scr.h 有 kbget() 来改变终端模式):
主.c:
我曾尝试使用线程解决此问题,但到目前为止我没有成功。
我通过添加 2 个函数(get_window_size 和 get_key)修改了上面的 main.c 文件:(scr.h 在 get_key() 中有 kbget() 函数将终端更改为规范模式)
主.c:
scr.h 文件将终端模式更改为非规范(从这里调用上面的 kbget() 函数):我认为 scr.h 没有任何问题,因为它是从这里获取的(将光标移到C 程序)。
scr.h:
Invalid write of size 4
在使用 valgrind 执行时,我在上面使用 pthread 的代码中也出现错误:
我知道 ncurses 和 pdcurses 的存在。我只是为自己做这个练习。
更新
我已将代码更改为以下内容,不幸的是该ret
变量永远不会更改为-1:
c - 使用修饰符时的 VT100 数字小键盘转义码(ctrl/shift/alt)
我正在尝试恢复一个相当旧的 MUD 客户端以在 OS X Mojave 下运行(几乎是一个支持别名、键绑定和触发器的 telnet 客户端)。代码可以在这里找到https://github.com/olostan/mmc
我成功地运行它,但是它没有正确处理数字键盘键。我发现这是因为这些键没有在https://github.com/olostan/mmc/blob/master/src/output.c中定义, 一旦我将以下块添加到“键盘键”部分,它就开始了好好工作。
现在我想对具有不同修饰符(ctrl、alt、shift)的小键盘键执行相同的操作,例如 C-k1、M-k1、S-k1,但我找不到任何地方如何正确定义转义码序列。我从这个页面得到了上面的代码 - https://www.gnu.org/software/screen/manual/html_node/Input-Translation.html但不幸的是它没有描述任何与修饰符的组合。
所以问题是 - 我如何为带有修饰键(shift、alt、ctrl)的键盘组合定义 VT100 格式的转义码?我尝试为 S-k4 组合键设置类似“\033[1;5Ot”的东西,但这些都不起作用。
php - 是否可以在 Windows 中启用 PHP 5 的 VT100/ANSI 转义码
我正在将旧的 PHP 5 应用程序升级到 PHP 7。我正在使用 Codeception 进行单元测试,因为它具有漂亮的颜色输出,可以轻松查看所有测试是否通过。
我尝试过的事情:
- 升级到 PHP 7:应用程序崩溃
- 在没有特殊标志的情况下运行 Codeception:ANSI 转义码被打印到屏幕上,使得输出难以阅读
- 使用标志运行 Codeception
--no-colors
:输出是一种颜色,需要更长时间才能识别 100% 通过运行,或者哪些测试失败 - 使用 ANSICON 而不是 Windows 命令提示符:PHP 5 运行速度非常慢,需要一个小时才能生成覆盖范围的报告,而在命令提示符下执行相同的运行只需要 2 分钟
我没有尝试过的事情:
- 设置注册表值,以便 ANSI 转义码始终打开,除非正在运行的程序将其关闭:此解决方案不适用于其他开发人员
除了在 PHP 中,我想做与下面列出的源代码相同的操作。就像是:
我不知道是否可以从 PHP 中向命令提示 API 发出命令。
以下 C 代码来自PHP 7 源代码:
有没有办法从 PHP 5 脚本中模拟此功能?
我发现了以下相关问题,但我还没有接近开始:
linux - 如何计算 xterm 控制序列的长度
我希望在将文本传递给 stdout/console 之前对其进行格式化。要正确执行此操作,我需要知道给定的文本部分在打印到控制台后有多长时间,这需要知道由于它们是转义序列而不会打印多少字符。
在网上我找到了这些序列命令的多个文档,但似乎没有快速简便的方法来找出给定转义序列命令的结束位置,除非我要解析它们。在不解析的情况下获取任何转义序列命令的长度是否有技巧/解决方案?
vim - ESC [?1c 转义序列在 Linux 控制台上的作用是什么?
在尝试vim
在我的操作系统控制台上正常工作时,我注意到它stdout
在滚动之前写入了以下转义序列:\x1b[?1c
.
问题是我无法在任何地方找到该特定序列的含义。我检查过:
- http://man7.org/linux/man-pages/man4/console_codes.4.html
- http://en.wikipedia.org/wiki/ANSI_escape_code
- https://vt100.net/docs/vt102-ug/appendixc.html
- https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences
谁能帮我解开这个谜?
PS 如果一些额外的上下文可能会有所帮助,则在以下上下文中使用该序列:
\x1b[?25l\x1b[?1c\x1b[3;24r\x1b[3;1H\x1b[L
c++ - 在 C++ 中自定义控制台输出的不同方法(更喜欢哪一种)
我想知道如何为控制台着色或自定义,然后我找到了这个标题: 在此标题中使用 C++ 为控制台中的文本着色,此代码建议:
这需要 <windows.h> 库。
然后,我学习了自定义控制台输出的新方法(我正在寻找清除特定行),在我的愿景中称为“VT100 Escape Code(ANSI)”,这更容易使用并且不需要额外的库。
这里的问题是:这两种方式有什么区别,在什么情况下应该首选哪一种,是否有性能差异?
python - 如何在 Windows 10 中启用 VT100 终端仿真?
我想在 Python 程序执行期间(在 IDLE 或 CMD 或其他终端中)使用 ANSI 转义码打印彩色文本。请告诉我 Windows 命令提示符启用 VT100 终端仿真的确切命令,或逐步告诉我另一种方法。
我已经搜索并找到了一些方法,但我不明白如何实现它们。请以我可以遵循的简单分步格式回答。
python - 正则表达式用空格替换控制台代码
我正在为使用控制台代码的控制台应用程序编写一些 Python 测试,并且在优雅地处理ESC H
序列时遇到了一些问题。
我有s = r'\x1b[12;5H\nSomething'
输入字符串,我想用 Something
. 我正在尝试使用以下正则表达式:
re.sub(r'\x1b\[([0-9,A-Z]{1,2};([0-9]{1,2})H)', r'\2', s)
这当然会创建5Something
.
我想要的是某种效果
re.sub(r'\x1b\[([0-9,A-Z]{1,2};([0-9]{1,2})H)', ' '*(int(r'\2')-1), s)
也就是创建比第二个捕获组的空格数少一个。
如果有一种方法可以简单地将我使用时得到的内容呈现在字符串中,我也会非常高兴print(s)
:
我正在使用 Python 3。
非常感谢!!