当按键代码映射无法使用或被禁用时,Workstation Pro 会将键盘符号映射到 v-scan 代码。如果特定于语言的键盘看上去不受 Workstation Pro 的支持,您可能需要设置一个属性,告知 Workstation Pro 要使用哪个键盘符号表。

Workstation Pro 可通过检查当前的 X 键映射确定要使用的表。但这种决策过程有时也会失败。另外,每个映射都是固定的,不保证对任何给定的键盘和 X 按键代码-键盘符号映射都正确无误。例如,如果用户使用 xmodmap 互换 Ctrl 和 Caps Lock 按键,那么在使用远程服务器时虚拟机中的按键将互换(键盘符号映射),但在使用本地服务器时将取消互换(按键代码映射)。为了修正此问题,您必须在 Workstation Pro 中重新映射按键。

要配置键盘符号的映射方式,您需要将一个或多个属性添加到虚拟机配置 (.vmx) 文件或 ~/.vmware/config 中。

前提条件

  • 要更改某些按键的映射,需要确定每个按键的键盘符号名称。要查找键盘符号名称,请使用 xevxmodmap -pk 命令。X 标头文件 /usr/include/X11/keysymdef.h 同样具有完整的键盘符号列表。键盘符号的名称与其 C 常量相同,但没有 XK_ 前缀。
  • 要使用其他键盘符号表,需要确定要使用的映射表。这些表位于 Workstation Pro 安装目录的 xkeymap 目录,通常是 /usr/lib/vmware。您所需使用的表由键盘布局决定。常规的分发版本中包含了美国和欧洲一些国家及语种使用的 PC 键盘所对应的表。其中大部分都可以使用各种 101 键(或 102 键)和 104 键(或 105 键)设备。

    如果没有完全正确的映射表,请查找最合适的一个,将其复制到新的位置,然后更改单个键盘符号映射。

  • 熟悉 v-scan 代码。请参见V-Scan 代码表
  • 关闭虚拟机并退出 Workstation Pro

过程

  • 要禁用 X 按键代码映射以将键盘符号而不是按键代码映射到 v-scan 代码,请添加 xkeymap.nokeycodeMap 属性并将其设置为 TRUE。
    例如: xkeymap.nokeycodeMap = "TRUE"
  • 如果 Workstation Proxkeymap 目录中有一个用于您的键盘的表,但无法检测到该表,请添加 xkeymap.language 属性并将其设置为 xkeymap 目录中的某个表。
    例如: xkeymap.language = "keyboard_type"
    如果无法检测键盘的原因是该表对您来说不完全正确,您可能需要创建一个经过修改的表并使用 xkeymap.fileName 属性。
  • 要使用 xkeymap 目录以外的其他键盘符号映射表,请添加 xkeymap.fileName 属性并将其设置为表所在的路径。
    例如: xkeymap.fileName = "file_path"
    该表必须通过使用 sym=" v-scan 代码" 形式列出每个按键的键盘符号,其中 sym 的值是 X 键盘符号名称, v-scan 代码是符合 C 语法的十六进制数,如 0x001。每个键盘符号占用一行。
    注: 因为编译完整的键盘符号映射非常困难,所以一般情况下应该编辑现有表,只进行小幅更改。
  • 要更改少数按键的键盘符号映射,可以在单独的行上为每个按键键入 xkeymap.keysym 属性。
    例如: xkeymap.keysym.sym = "v-scan_code"
    sym 的值必须是 X 键盘符号名称, v-scan 代码必须是符合 C 语法的十六进制数,如 0x001。