我无法从xterm.js API实现复制和粘贴功能。我希望终端能够从剪贴板复制字符串。
我正在使用
this.term.onKey((key) => {
if (key.domEvent.code === 'KeyC'){
if (key.domEvent.ctrlKey) {
this.copiedText = this.term.getSelection();
}
} else if (key.domEvent.code === 'KeyV'){
if (key.domEvent.ctrlKey) {
this.term.write(this.copiedText);
}
}
}但它只能在终端中获得复制的文本,并且键事件无法检测MAC上的命令键(现在我使用ctl +c& ctl + v)
如果我使用onData(),当我按下command +V时就会触发事件,并且我可以看到它在终端之外输出字符串
this.term.onData((data) => {
console.log(data.toString()); // prints "strings I copied with command + c"
});但是"data“只是一个字符串,事件也是由按键触发的,所以term.onData将与onKey()事件冲突,而且我不确定如何为"data”设置条件,因为它不是一个对象。
发布于 2019-11-23 01:38:05
您可以使用ctrl/cmd+c/v的Terminal.attachCustomKeyEventHandler来拦截按键,并防止终端对其进行评估。
在该处理程序中,您可以处理按键操作,并使用相关的web来复制和粘贴文本(document.execCommand或最好是navigator.clipboard)。
https://stackoverflow.com/questions/58948835
复制相似问题