angular - Xtermjs 无法复制和粘贴

标签 angular typescript xtermjs

我无法通过 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"
  });

但是“数据”只是一个字符串,事件也是由按键触发的,所以 term.onData 将与 onKey() 事件冲突,我不确定如何为“数据”设置条件,因为它不是一个对象。

最佳答案

您可以使用 Terminal.attachCustomKeyEventHandler用于 ctrl/cmd+c/v 拦截按键并防止终端对其进行评估。

在该处理程序中,您可以处理按键并使用相关的 Web API 来复制和粘贴文本(document.execCommand 或最好是 navigator.clipboard)。

关于angular - Xtermjs 无法复制和粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948835/

相关文章:

angular - 未捕获( promise ): Error: Template parse errors: 'ion-col' is not a known element

javascript - 如何在 xterm.js 中设置文本颜色格式

javascript - 有福服务器(Node.js)通过 websocket 到浏览器中的 Xterm.js 客户端

javascript - 如何禁用 xterm.js 的 onkey 事件?

unit-testing - Karma+jasmine+Angular2 单元测试 http 服务错误(没有 [object Object] 提供者)

javascript - 从 Spring Boot 转发到特定的 Angular 组件

Angular 9 Reactive 表单根据单选按钮选择显示隐藏 div

javascript - Angular 2 中 <template *ngFor 的等价物是什么?

javascript - 如果日期仅由年份和月份组成,则将日期显示为不填充 "01"的字符串

angular - 如何在 TypeScript 中将接口(interface)作为参数传递并获取匿名回调?