交换外接键盘的 command 和 option 键(虚拟机和远程控制时除外)

最近买了个机械键盘 keycool 87,跟 Mac OS X 的兼容性不错,唯一的缺憾就是 command 和 option 位置反了,虽然可以在系统设置里互换 command 和 option 键,但是这样连笔记本的内置键盘也一并改了,当用笔记本内置键盘时又要改回来,很麻烦。

外接键盘键位

而利用 KeyRemap4MacBook 进行键盘映射可以很容易的做到:

  1. 仅针对外接键盘交换 command 和 option 键,笔记本内置键盘不变;
  2. 运行虚拟机和远程控制 Windows 时保持正常的 Windows 键位。

映射方法:

  1. 切换到 Misc & Uninstall 标签页,点 Open private.xml 按钮,键入如下内容:

    <?xml version="1.0"?>
    <root>
        <devicevendordef>
            <vendorname>USB_KEYBOARD</vendorname>
            <vendorid>0x04b4</vendorid>
        </devicevendordef>
        <deviceproductdef>
            <productname>KEYCOOL</productname>
            <productid>0x0101</productid>
        </deviceproductdef>
        <item>
            <name>BeyondIM custom settings</name>
            <item>
                <name>Swap Option_L and Command_L for USB keyboard</name>
                <appendix>(except virtual machine, RDC)</appendix>
                <identifier>private.swap_OPTION_L_COMMAND_L_for_USB_keyboard</identifier>
                <not>VIRTUALMACHINE, REMOTEDESKTOPCONNECTION</not>
                <device_only>DeviceVendor::USB_KEYBOARD, DeviceProduct::KEYCOOL</device_only>
                <autogen>--KeyToKey-- KeyCode::OPTION_L, KeyCode::COMMAND_L</autogen>
                <autogen>--KeyToKey-- KeyCode::COMMAND_L, KeyCode::OPTION_L</autogen>
            </item>
        </item>
    </root>
    

    其中 devicevendordef 和 deviceproductdef 字段不同的外接键盘作相应调整,在 EventViewer 中找到外接键盘的 Vendor ID 和 Product ID 进行内容替换即可。

    EventViewer

  2. 回到 Change Key 标签页,右上角有个 ReloadXML 按钮,点击下重新加载我们修改的配置文件,这时 remapping 下应该就会出现一个新的设置列表 “BeyondIM custom settings”,勾选里面的选项。OK,搞定!