Update RemoteDesktopModal.vue
This commit is contained in:
@@ -303,9 +303,30 @@ const setupInputListeners = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Listen for display focus to sync clipboard
|
// Listen for display focus to sync clipboard (Host -> RDP)
|
||||||
displayEl.addEventListener('focus', trySyncClipboardOnDisplayFocus);
|
displayEl.addEventListener('focus', trySyncClipboardOnDisplayFocus);
|
||||||
|
|
||||||
|
// Listen for clipboard data from RDP (RDP -> Host)
|
||||||
|
// @ts-ignore
|
||||||
|
guacClient.value.onclipboard = async (stream, mimetype) => {
|
||||||
|
if (mimetype === 'text/plain') {
|
||||||
|
// @ts-ignore
|
||||||
|
const reader = new Guacamole.StringReader(stream);
|
||||||
|
let text = '';
|
||||||
|
reader.ontext = (chunk: string) => {
|
||||||
|
text += chunk;
|
||||||
|
};
|
||||||
|
reader.onend = async () => {
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(text);
|
||||||
|
console.log('[RemoteDesktopModal] Received clipboard from RDP and wrote to host:', text.substring(0, 50) + (text.length > 50 ? '...' : ''));
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('[RemoteDesktopModal] Could not write to host clipboard:', err);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} catch (inputError) {
|
} catch (inputError) {
|
||||||
console.error("Error setting up input listeners:", inputError); // 添加错误日志
|
console.error("Error setting up input listeners:", inputError); // 添加错误日志
|
||||||
statusMessage.value = t('remoteDesktopModal.errors.inputError');
|
statusMessage.value = t('remoteDesktopModal.errors.inputError');
|
||||||
@@ -339,6 +360,11 @@ const removeInputListeners = () => {
|
|||||||
mouse.value.onmousemove = null;
|
mouse.value.onmousemove = null;
|
||||||
mouse.value = null;
|
mouse.value = null;
|
||||||
}
|
}
|
||||||
|
// 清理剪贴板监听器
|
||||||
|
if (guacClient.value) {
|
||||||
|
// @ts-ignore
|
||||||
|
guacClient.value.onclipboard = null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const disableRdpKeyboard = () => {
|
const disableRdpKeyboard = () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user