如何使用 VNC 客户端将键盘布局设置为 KVM (libvirt)

Phi*_*oud 5 vnc libvirt kvm-virtualization

我在 Debian 9.9 上安装了 kvm 来宾和主机,在 AMD 机器上安装了 kde

qemu-kvm 1:2.8+dfsg-6+deb9u7 amd64

  • 当与virt-viewer连接时,我的键盘布局实际上正在工作(fr-ch),我不知道可用布局列表在哪里以确认我fr-ch的可用
  • 与任何vnc 客户端连接时,我的键盘布局不起作用,布局无法理解....

我试过

  • 使用=> into graphics 部分将指令更改为 xml(不起作用)sudo virsh edit myVmGuestkeymap='fr-ch'
  • 将键盘布局更改为 kde 来宾(均无效)
  • 更改我的 vnc 客户端

Dan*_*elB 8

VNC 协议中的标准密钥处理与虚拟化非常不匹配,因为它涉及向服务器发送 X 密钥符号。VNC 客户端机器上的硬件扫描码被转换为密钥符号,发送到 QEMU,然后将它们转换回硬件扫描码,然后将它们发送给来宾,来宾再次将它们转换回密钥符号。为了让它有任何工作机会,本地笔记本电脑上的键盘映射需要匹配 QEMU 中设置的键盘映射,而 QEMU 需要匹配来宾内部设置的键盘映射。即便如此,它也往往不完美。

因此 QEMU 定义了一个 VNC 协议扩展,用于从 VNC 客户端发送硬件扫描码。这避免了 VNC 客户端机器上或 QEMU 中的任何类型的转换。硬件扫描码从 VNC 客户端发送到 QEMU,QEMU 将它们发送给来宾。只有客人需要翻译。

virt-viewer 应用程序使用支持此协议扩展的 GTK-VNC 库,因此它很适合您。

remote-viewer 应用程序是与 virt-viewer 相同的代码库的一部分,因此可以提供正确支持此协议扩展的普通 VNC 客户端。

尝试使用 QEMU 配置键盘映射确实不值得,因为结果总是比使用 VNC 协议扩展进行扫描码更糟糕。

大多数历史上的 VNC 客户端都不支持该扩展,但我认为可以正确执行的一个是tigervnc。因此,如果您不/不能使用 virt-viewer 或 remote-viewer,请尝试使用tigervnc。