Xtermjs 无法复制和粘贴
Xtermjs can not copy & paste
我无法通过 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" 为条件,因为它不是对象。
您可以使用 Terminal.attachCustomKeyEventHandler
for ctrl/cmd+c/v 来拦截按键并防止它被终端评估。
在该处理程序中,您可以处理按键并使用相关的 Web API 复制和粘贴文本(document.execCommand
或最好是 navigator.clipboard
)。
我无法通过 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" 为条件,因为它不是对象。
您可以使用 Terminal.attachCustomKeyEventHandler
for ctrl/cmd+c/v 来拦截按键并防止它被终端评估。
在该处理程序中,您可以处理按键并使用相关的 Web API 复制和粘贴文本(document.execCommand
或最好是 navigator.clipboard
)。