From bf04e8eace8d1c134e9edcd5a3ce8dd3d132f957 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Tue, 8 Jul 2025 17:27:35 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E6=B7=BB=E5=8A=A0=E9=95=BF=E6=8C=89?= =?UTF-8?q?=E6=93=8D=E4=BD=9C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/TerminalSessionVncConfig.java | 3 -- .../view/guacd/actions/trigger-key-action.vue | 44 +++++++++++++++++++ .../src/views/terminal/interfaces/handler.ts | 1 + .../handler/guacd-session-display-handler.ts | 14 ++++++ 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 orion-visor-ui/src/views/terminal/components/view/guacd/actions/trigger-key-action.vue diff --git a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/config/TerminalSessionVncConfig.java b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/config/TerminalSessionVncConfig.java index 315ee928..667922f7 100644 --- a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/config/TerminalSessionVncConfig.java +++ b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/config/TerminalSessionVncConfig.java @@ -47,9 +47,6 @@ public class TerminalSessionVncConfig extends VncConnectConfig implements ITermi @Schema(description = "logId") private Long logId; - @Schema(description = "录屏文件路径") - private String recordPath; - @Schema(description = "宽") private Integer width; diff --git a/orion-visor-ui/src/views/terminal/components/view/guacd/actions/trigger-key-action.vue b/orion-visor-ui/src/views/terminal/components/view/guacd/actions/trigger-key-action.vue new file mode 100644 index 00000000..a7d1f2b8 --- /dev/null +++ b/orion-visor-ui/src/views/terminal/components/view/guacd/actions/trigger-key-action.vue @@ -0,0 +1,44 @@ + + + + + + + diff --git a/orion-visor-ui/src/views/terminal/interfaces/handler.ts b/orion-visor-ui/src/views/terminal/interfaces/handler.ts index 428ba0e0..26452f90 100644 --- a/orion-visor-ui/src/views/terminal/interfaces/handler.ts +++ b/orion-visor-ui/src/views/terminal/interfaces/handler.ts @@ -86,6 +86,7 @@ export interface IGuacdSessionDisplayHandler { displayDpi: number; autoFit: boolean; localCursor: boolean; + keyboardDownKeys: number[]; // 初始化 init: () => void; diff --git a/orion-visor-ui/src/views/terminal/service/handler/guacd-session-display-handler.ts b/orion-visor-ui/src/views/terminal/service/handler/guacd-session-display-handler.ts index bcdefb81..9d19f169 100644 --- a/orion-visor-ui/src/views/terminal/service/handler/guacd-session-display-handler.ts +++ b/orion-visor-ui/src/views/terminal/service/handler/guacd-session-display-handler.ts @@ -12,6 +12,7 @@ export default class GuacdSessionDisplayHandler implements IGuacdSessionDisplayH public displayDpi: number; public autoFit: boolean; public localCursor: boolean; + public keyboardDownKeys: Array; private display?: Guacamole.Display; private sink?: Guacamole.InputSink; @@ -28,6 +29,7 @@ export default class GuacdSessionDisplayHandler implements IGuacdSessionDisplayH this.displayDpi = 96; this.autoFit = true; this.localCursor = true; + this.keyboardDownKeys = []; this.focusSink = useDebounceFn(() => this.sink?.focus(), 300).bind(this); } @@ -187,6 +189,12 @@ export default class GuacdSessionDisplayHandler implements IGuacdSessionDisplayH return; } this.session.client.sendKeyEvent(0, key); + // 触发长按键 + if (this.keyboardDownKeys) { + this.keyboardDownKeys.forEach(key => { + this.session.client.sendKeyEvent(0, key); + }); + } } // 键盘按下事件 @@ -195,6 +203,12 @@ export default class GuacdSessionDisplayHandler implements IGuacdSessionDisplayH if (!this.session.isWriteable()) { return; } + // 触发长按键 + if (this.keyboardDownKeys) { + this.keyboardDownKeys.forEach(key => { + this.session.client.sendKeyEvent(1, key); + }); + } this.session.client.sendKeyEvent(1, key); // // 处理退格 // if (key === 65288) {