I know that I can globally swap the Control and Command in Mac OS and this is not what I need. What I would like to do is keep both buttons as they are and only and make Ctrl+C, Ctrl+V, and Ctrl-X work as if they were pressed with the Command button. What is the easiest way to do this?


One option would be to use DefaultKeyBinding.dict, but it wouldn't work in all applications or text views.

    "^x" = cut:;
    "^c" = copy:;
    "^v" = paste:;

KeyRemap4MacBook would work almost everywhere, and it also allows excluding specific applications.

Here's the definition of the remapping selected in the screenshot:

  <name>Use PC Style Copy/Paste</name>
  <appendix>(Control+C to Command_L+C)</appendix>
  <appendix>(Control+V to Command_L+V)</appendix>
  <appendix>(Control+X to Command_L+X)</appendix>
  <appendix>(Except in Terminal, VM, RDC, Emacs, X11, Eclipse)</appendix>
  <autogen>--KeyToKey-- KeyCode::C, VK_CONTROL, KeyCode::C, ModifierFlag::COMMAND_L</autogen>
  <autogen>--KeyToKey-- KeyCode::V, VK_CONTROL, KeyCode::V, ModifierFlag::COMMAND_L</autogen>
  <autogen>--KeyToKey-- KeyCode::X, VK_CONTROL, KeyCode::X, ModifierFlag::COMMAND_L</autogen>

You can install and configue Karabiner app with the following configuration of private.xml file (edit in Misc tab):

<?xml version="1.0"?>
    <name>Copy with Ctrl-C</name>
        KeyCode::C, ModifierFlag::CONTROL_L,
        KeyCode::C, ModifierFlag::COMMAND_L
    <name>Cut with Ctrl-X</name>
        KeyCode::X, ModifierFlag::CONTROL_L,
        KeyCode::X, ModifierFlag::COMMAND_L
    <name>Paste with Ctrl-V</name>
        KeyCode::V, ModifierFlag::CONTROL_L,
        KeyCode::V, ModifierFlag::COMMAND_L

and enable newly created item after reloading the file in the Change Key tab.

  • This is more current, since Keymap4MacBook is now Karabiner-Elements.
    – dunxd
    Apr 27 '20 at 14:17

Another option would be to use BetterTouchTool.
It is pretty straightforward to use, and you can set it up to trigger any action from a keyboard shortcut: BetterTouchTool screenshot

However, by doing this, CTRL+C or CTRL+X no longer works as expected inside the terminal. But you can disable BTT for Terminal completely to handle this case.

Not the answer you're looking for? Browse other questions tagged .