我想在各种(模拟)终端中更改光标的形状。
我想要的形状是⼕(对不起,如果它不呈现)。这是一个向右打开的三边形框。这样,我可以看到插入位置,还可以看到光标在“哪个”字符上。我在U + 2F15找到了Unicode中的那个字符。
我绝对希望能够在Linux的内核虚拟终端(即使用Control+ Alt+获得的东西)和GUI终端仿真器(例如XTerm和RXVT)中做到这一点。如果可能,即使在网络终端(例如PuTTY和KiTTY)中,我也想这样做。如果我不能得到那个准确的字符,我至少要那个三行形状。FN
我知道这将涉及“ ANSI”转义码或终端仿真器中的(也许)设置(尽管考虑到这不适用于Linux内置终端仿真器,所以这不是可取的)。请提供不依赖于使用任何特定外壳的答案。在不更改内核代码的情况下,这是否有可能?
虚拟终端和实际终端中可用的光标形状受到限制。通常,它们仅启用与旧的显示硬件相匹配的设置形状,通常只允许指定闪烁周期以及在打开门光标时的开始和结束扫描线,有时仅是开始和结束组合的非常有限的子集(例如下划线,上划线,半高,阻止)。
为此,两个主要的控制序列是DECSCUSR和LINUXSCUSR。DECSCUSR是DEC在其后来的终端范围内支持的控制序列的名称。像其他真正终端制造商一样,DEC在其doco中给其卖方专用控制序列名称以“ DEC”开头。(为了比较,Tektronix在其doco中使用了“ TEK”前缀来命名其供应商-私有控制序列。)Linux doco与往常一样非常差,并且没有命名。因此,“ LINUXCUSR”是我的造词,以此类推,前缀为“ LINUX”。
DECSCUSR和LINUXSCUSR均未标准化。它们彼此不同,但是它们是在大约同一时间发明的(仅在1990年代出现在DEC VT 5xx中),因此没有DEC现有技术的通常年份。☺埃格蒙特·科布林格(Egmont Koblinger)在其他地方评论说,两者的模型令人难以置信,因为它可以使眨眼间的形状融为一体。还进行了一些讨论,以更改DECSCUSR 0的含义以启用用户指定的形状。并且Microsoft Terminal强调了DECSCUSR模型与Win32控制台机制中使用的模型之间的不匹配,该模型允许任意启动行使用了三十年(如果在OS / 2 1.x的VIO子系统中占了其前身的话,则为四十年)。以及PC / AT视频固件)。
结果是,没有一个通用的控制序列可以运行,当前的世界分为DECSCUSR和LINUXSCUSR阵营,因为几乎没有终端仿真器都支持这两种。此外,有了这两个功能,您将无法获得所需的灵活性。与开始+结束扫描线模型唯一的广泛偏差是竖线,并且只能通过一些GUI终端仿真器(例如XTerm)获得,它们添加了其他形状,如DECSCUSR 5和DECSCUSR 6。
是的,您可以修改FreeBSD内核,NetBSD内核,OpenBSD内核和Linux内置终端仿真器以及各种应用程序模式终端仿真器(帧缓冲区和X11 GUI)的代码,以实现更多的游标形状。但是,要使其通用化将非常困难。
我已经在这样做了我的终端模拟器。DECSCUSR 7/8是大纲框。DECSCUSR 9/10是一颗星。DECSCUSR 11/12是下划线+上划线。DECSCUSR 13/14为倒“ L”形。在阅读1970年代的一些旧文献的基础上,我一直在考虑添加方括号和仅上划线两个方向。但是,DECSCUSR并不容易将其用于您所寻找的实际Unicode字符的任意规范。LINUXSCUSR不匹配的想法在所有,而且。
console-terminal-emulator
。nosh指南。软件。console-control-sequence
。nosh指南。软件。CONSOLE_CURSOR_INFO
结构。微软。VIOCURSORINFO
。EDM / 2。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句