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

  1. Proxmox 콘솔 UI 안을 클릭해 포커스를 줍니다.
  2. DevTools 콘솔에 다음을 실행합니다:
cp('mydata')

'mydata'를 붙여넣고 싶은 텍스트로 바꾸면 됩니다. 이 방법은 VM에 SSH 접근 권한이 없을 때도 동작합니다.

Back to Blog

관련 글

더 보기 »

계정 전환

@blink_c5eb0afe3975https://dev.to/blink_c5eb0afe3975 여러분도 알다시피 저는 다시 제 진행 상황을 기록하기 시작했으니, 이것을 다른…