terminfo操作代码中的@(at符号)是什么意思?

时间:2017-05-09 22:16:04

标签: tty emacs24 xterm iterm2 terminfo

我正在尝试将一个terminfo字符串从xterm转换为可以与iTerm2一起使用的字符串get 24bit colors working in emacs。到目前为止我所做的调查和研究让我相信我用来设置stf24 / setb24的terminfo操作代码被iTerm2错误地解释了,所以我想了解它们在做什么。

以下是emacs所需的自定义值:

xterm-24bit|xterm with 24-bit direct color mode,
   use=xterm-256color,
   setb24=\E[48:2:%p1%@{65536@}%/%d:%p1%@{256@}%/%@{255@}%&%d:%p1%@{255@}%&%dm,
   setf24=\E[38:2:%p1%@{65536@}%/%d:%p1%@{256@}%/%@{255@}%&%d:%p1%@{255@}%&%dm,
# Use semicolon separators.
xterm-24bits|xterm with 24-bit direct color mode,
   use=xterm-256color,
   setb24=\E[48;2;%p1%@{65536@}%/%d;%p1%@{256@}%/%@{255@}%&%d;%p1%@{255@}%&%dm,
   setf24=\E[38;2;%p1%@{65536@}%/%d;%p1%@{256@}%/%@{255@}%&%d;%p1%@{255@}%&%dm,

我知道第一位,例如\e[48:2:是指定颜色位置(在本例中为背景)的转义码,颜色格式(2表示需要3个控制段的完整24位RGB格式)。 查看此文档'Supported TERMINFO Manipulation Codes'我知道它正在使用%p1从堆栈中获取参数“1”,并对此执行一些其他操作(%/ - division, %& - AND)但我不是确定%@的含义或括号中的数字是%@{65536}的含义,以及%dm最后的含义。有人可以帮忙吗?

总的来说,我相信emacs只传递一个参数(可能是256 ^ 3 0-16,777,216内的单个数字),所以我认为这在某种程度上将它分解为终端需要的3种RGB颜色,但我没有不知道如何,以及是否存在不相容性以及它在哪里。

1 个答案:

答案 0 :(得分:0)

@ 标记不是 terminfo 描述的一部分;它们在原始texinfo文件中使用,以防止解释花括号。您正在阅读的内容是从不了解标记的任何部分的人那里剪切/粘贴...

如果没有 @ 标记,您将拥有常量,例如算术中使用的%{65536}

结尾的"%dm"只是第三个参数,即RGB中的蓝色值(注意还有另外两个"%d"标记),最后一个字符" m"。