如何在 Xterm.js 中添加使用铃铛字符?我在源“选项”默认值中看到了几个条目,但是无论我是从 shell 发送它还是将它直接写入终端,即使这些设置为 true,也没有得到任何东西。我尝试使用包含 window.navigator.vibrate 的函数重载 term.bell 函数,如果我直接调用它,它会起作用,但不会响应响铃字符而触发。
问问题
697 次
1 回答
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 中拼接,但是把它剪掉,上面的代码是最小的剪切粘贴版本。
希望这对其他人有帮助。出故障。
于 2017-10-04T05:27:44.510 回答