在TERM = linux中,ctrl箭头(左,右,…)的终端转义序列是什么?

我正在浏览器中建立一个终端窗口(例如ajaxterm),并且不知道要发送到ssh隧道的转义序列(通过paramiko.SSHClient()打开)invoke_ shell(term =’ linux‘)).

我找到了一个key logger,并尝试在一个终端$TERM ==’linux’,但它返回相同的顺序为ctrl左和左(27,91,68).

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

任何想法应该使用什么序列?或为什么上述顺序不起作用?

更新:我很乐意使用另一个终端类型(不是“linux”),但不幸的是,pyte仅与VTxxx终端配合使用(我相信“linux”是类似vt220的终端 – 无论如何,它的工作原理),所以xterm不工作正常.

解决方法

终端是由键盘和输出设备组成的硬件设备(最初是行式打印机,后来是CRT显示器).大型计算机可能有几个远程终端连接到它.每个终端将具有用于与计算机有效通信的协议,对于基于CRT的终端,其包括具有特殊的“控制序列”以改变光标位置,擦除当前行/屏幕的部分,切换到备用全屏模式. ..

终端仿真器是模拟这些较旧终端之一的应用.它允许执行光标定位,设置前景和背景颜色等功能,…终端仿真器尝试模拟一些特定的终端协议,但每个都有自己的一组怪异和偏差.

Unix系统具有描述终端和终端仿真器的数据库,所以将应用程序从使用中的特定终端(或终端仿真器)抽象出来.一个较旧的数据库是termcap(5),而terminfo(5)是一个较新的数据库.这些数据库允许应用程序查询正在使用的终端的功能.功能可以是布尔值,数字能力甚至字符串功能,例如:如果特定终端类型具有/支持F12密钥,则它将具有“key_f12”(long terminfo name),“kf12”(short terminfo name)描述密钥产生的字符串的“F2”(termcap名称).尝试一下:tput kf12 | od -tx1.

由于直接使用功能进行编程可能很麻烦,因此应用程序通常会使用更高级别的库,例如curses / ncurses,slang等…

有一个特殊的环境变量TERM,告诉应用程序他们正在谈什么终端类型.如果数据库中存在该变量,则应将其设置为确切的终端类型,以获得最佳效果.这只是告诉应用程序终端理解哪个精确的协议和协议偏差.更改TERM变量不会更改终端类型,它只是更改应用程序认为正在与之通信的终端类型.

所有这一切,Ctrl箭头是一个xterm行为(取决于配置选项),这在terminfo / termcap数据库中没有反映出来,所以大多数应用程序将不了解它.无论哪种方式,您的终端模拟器(在您的情况下都是pyte)支持它,否则它不支持.

假设您的主要应用程序是使用readline库的bash或其他应用程序,则可以使用readline的反向字(默认情况下为Meta-b / Alt-b / ESC b,可在inputrc中配置).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户