【问题标题】:What do the @ (at symbols) in a terminfo manipulation code mean?terminfo 操作代码中的@(at 符号)是什么意思?
【发布时间】:2017-05-09 22:16:04
【问题描述】:

我正在尝试将 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 颜色,但我没有'不完全弄清楚如何,然后是否存在不兼容以及它在哪里。

【问题讨论】:

    标签: tty emacs24 xterm iterm2 terminfo


    【解决方案1】:

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

    没有 @ 标记,您将拥有常量,例如,%{65536} 用于算术。

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

    【讨论】:

    • “你正在阅读的内容是从不理解标记的任何部分的人那里剪切/粘贴的......” - 那就是我!以前从未接触过 textinfo 文件。谢谢你的帮助,托马斯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    相关资源
    最近更新 更多