Proxmox VM에서 복사 및 붙여넣기
발행: (2025년 12월 2일 오후 07:52 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
Issue
Proxmox KVM 웹 UI에서 복사‑붙여넣기가 제대로 동작하지 않습니다.
Workaround
키보드 입력을 시뮬레이션하여 KVM 콘솔에 데이터를 붙여넣는 스크립트를 만들었습니다. Chrome DevTools를 열고 콘솔 탭에 포커스를 맞춘 뒤 아래 코드를 붙여넣으세요.
function simulateKeyEvent(el, eventType, key, options = {}) {
const evt = new KeyboardEvent(eventType, { key, ...options });
el.dispatchEvent(evt);
}
const sendKey = (char) => {
let capsLockOn = false;
const SHIFT_NEEDED = /[A-Z!@#$%^&*()_+{}:"<>?~|]/;
const canvas = document.querySelector("canvas");
canvas.focus();
if (char === '\n') {
simulateKeyEvent(canvas, "keydown", "Enter");
simulateKeyEvent(canvas, "keyup", "Enter");
} else {
const needsShift = SHIFT_NEEDED.test(char);
const isUpperCase = char >= 'A' && char <= 'Z';
if (needsShift) {
simulateKeyEvent(canvas, "keydown", "Shift", { keyCode: 16 });
}
if (isUpperCase && capsLockOn) {
simulateKeyEvent(canvas, "keydown", char.toLowerCase());
simulateKeyEvent(canvas, "keyup", char.toLowerCase());
} else {
simulateKeyEvent(canvas, "keydown", char);
simulateKeyEvent(canvas, "keyup", char);
}
if (needsShift) {
simulateKeyEvent(canvas, "keyup", "Shift", { keyCode: 16 });
}
if (char === "CapsLock") {
capsLockOn = !capsLockOn;
console.log("Caps Lock state changed:", capsLockOn);
}
}
};
function cp(text) {
let index = 0;
function typeChar() {
if (index < text.length) {
sendKey(text[index]);
index++;
setTimeout(typeChar, 100); // Adjust delay as needed
}
}
typeChar();
}
How to Use
- Proxmox 콘솔 UI 안을 클릭해 포커스를 줍니다.
- DevTools 콘솔에 다음을 실행합니다:
cp('mydata')
'mydata'를 붙여넣고 싶은 텍스트로 바꾸면 됩니다. 이 방법은 VM에 SSH 접근 권한이 없을 때도 동작합니다.