【问题标题】:How to use bell character (BEL, CTRL-G, \x07) with xterm.js?如何在 xterm.js 中使用响铃字符(BEL、CTRL-G、\x07)?
【发布时间】:2017-10-03 00:34:51
【问题描述】:

如何在 Xterm.js 中添加使用铃铛字符?我在源“选项”默认值中看到了几个条目,但是无论我是从 shell 发送它还是将它直接写入终端,即使这些设置为 true,也没有得到任何东西。我尝试用一​​个包含 window.navigator.vibrate 的函数重载 term.bell 函数,如果我直接调用它就可以工作,但不会响应响铃字符而触发。

【问题讨论】:

    标签: xtermjs


    【解决方案1】:

    好的。所以测试确定没有任何东西阻止响铃字符(“\x07”或“\u0007”)进入xterm.js。即使您在选项中启用标志,它也不会响应。源代码中的代码看起来应该可以工作,但是内部的某些东西没有连接。由于我避免对源代码进行实际更改以直接且开箱即用地升级到 xterm.js,因此我使用了一些魔法。这是一个让铃铛角色工作的技巧:

    创建一个函数,触发来自 websocket 的“消息”事件。在其中,检查 BEL 的匹配项。如果它检测到它,然后让它做你的巫术。比如:

    sock.addEventListener('message',function(v){  if(v.match(/\x07/)){ /*voodoo here*/ }  });
    

    其中 v 是事件,\x07 是 BEL,而 voodoo 是代码或调用以短暂地使屏幕变白、发出啁啾声、在“移动”上四处走动时振动,或打开通往单袜子的门户维度。

    烦人的是,现在我需要查找更多的 ansi 代码并找到一个模式,因为有些以 BEL 字符结尾。所以这将自行工作,但会被一些不打算充当 BEL 的代码所触发,因为它们包含该字符。稍后会详细介绍....

    仅供参考,不确定这是否适用于 term.attach()。反正我有我自己的东西做一些预处理,所以基本上我所要做的就是在 if/match 中拼接,但是把它删掉,上面的代码是最小的剪切粘贴版本。

    希望这对其他人有所帮助。出故障。

    【讨论】:

    • xterm.write('\x07') 当前确实发出声音,给定选项{ bellStyle: 'sound' }
    • 嗨。是的,我会这么认为。在询问时,结构在那里,但它是空的,没有音频对象或任何让它播放的东西。但是响应 \x07 的能力是存在的。请注意,我使用的是 npm 安装版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2015-07-15
    • 2020-03-16
    • 2013-01-03
    • 1970-01-01
    相关资源
    最近更新 更多