104

I was using Linux for the last couple of years and I find it extremely useful to copy text by highlighting it as well as to paste by clicking a middle mouse button.

I'm using a Mac now and I wonder if I can achieve such behaviour on Mac OS X.

2
  • 13
    I cannot believe OSX does not do this ... linux rocks in so many ways Commented Apr 30, 2017 at 1:53
  • I wonder if there is a way to make this available by (partially) disabling SIP. Like if there would be a way to make it properly work, all answers in this thread don't provide a solution to copy selected text to a different buffer, without cluttering the clipboard.
    – astroboy
    Commented Jul 19, 2023 at 19:50

11 Answers 11

36

I wrote a free little C program that does something similar to Gilligan's answer. Whenever you drag-highlight or double-click text, it copies to the clipboard buffer. Then you can middle-mouse-click in any window to paste it. It is called "macpaste" and on Github (https://github.com/lodestone/macpaste). It works globally for every program I use that has textual data.

In iTerm2, disable their middle-click in Preferences, otherwise you'll get double pastes.

7
  • 4
    This is AWESOME! So close. If it only had a separate buffer to hold the highlighted text separately from normally copied text it would be almost as close to Linux as possible. Nice job Commented Jun 24, 2016 at 20:27
  • This is exactly what I was looking for :-) Thank you so much for sharing! Commented Jul 28, 2016 at 13:22
  • 7
    This works, however it unfortunately messes up with chrome/firefox/safari/anybrowser middle-click-link to open in new tab. Any way to get around this?
    – lenooh
    Commented Aug 17, 2016 at 14:33
  • 1
    This would be so great if it would not beep on almost every click.
    – rien333
    Commented Aug 23, 2017 at 20:49
  • 4
    The problem with macpaste is that it breaks middle click for everthing else. For example, I cannot middle-click to close tabs in Chrome, or middle-click to open a link in a new tab. Commented May 22, 2019 at 21:13
21

You can try BetterTouchTool (legacy versions can be used with a free license available here). You can assign custom trackpad, mouse, and keyboard events to trigger specific actions on a global or application-specific basis.

Here's my configuration to bind a three-finger tap to ⌘V (as this is the global paste shortcut. Alternatively, you can select from dozens of other trackpad and mouse gestures to emulate the paste command.

Screenshot of BetterTouchTool's Gestures preferences

7
  • 21
    FWIW this only solves the middle-click; I don't believe its possible to auto-copy highlighted text without an additional command. (Except for apps that specifically provide the feature, like iTerm2)
    – adamrmcd
    Commented Nov 10, 2011 at 19:00
  • 8
    And has anyone come up with a reasonable solution for that so far? I miss my select-wheelpaste SO MUCH!!!
    – Rubens
    Commented Feb 27, 2015 at 21:00
  • 6
    This is crazy that you cannot get this behavior in the built in terminal between windows....ahhh i miss linux.
    – DrCord
    Commented Aug 4, 2016 at 22:42
  • @Desphilboy The three comments above yours are primarily complaining about the lack of copy-on-select, which is not solved by your answer. Commented Jul 11, 2019 at 21:35
  • Only can be done in a terminal and my answer is specific to terminals . @KyleStrand
    – Desphilboy
    Commented Jul 19, 2019 at 2:52
17

The macOS terminal can do copy/paste with two separate buffers:

  1. The copy/paste buffer which is shared with all other applications. It can be accessed by CommandC/CommandV.
  2. A separate copy/past buffer which is shared only between (macOS) terminals. It can be filled (copy) by dragging over the text by mouse, double clicking, or ShiftCommand double-clicking for file names (no CommandV). The content of this buffer is pasted by the middle mouse button, by ShiftCommandV, or by Command + two-finger-click.
1
  • This will save me many headaches
    – soupmagnet
    Commented Feb 5, 2020 at 15:44
5

Create the following Automator service: enter image description here

Assign it a keystroke, like shiftcontrol] (something unlikely to conflict with anything). Then, use BetterTouchTool to assign that keystroke to the middle mouse button.

The middle shell script comes from this fine answer. The first shell script copies the selection to the clipboard, the middle script clicks the mouse at its current location, and the AppleScript sends a V to paste the contents of the clipboard

2
  • 1
    This allows copying while clicking on the middle mouse. OP wants to highlight to copy by highlighting and then paste with the middle mouse button
    – Ulysse BN
    Commented Jan 26, 2018 at 1:24
  • Is there a way to have both middle click to open new tabs in Chrome and this functionality?
    – William
    Commented Oct 9, 2018 at 19:33
3

After highlighting text in the Terminal, I can middle-click to paste it back into the Terminal without using the copy/paste keyboard shortcuts. This does not seem to work when the text comes from other applications ie. I can't copy text from TextEdit and then paste into Terminal with a middle-click. I am running Lion and I did not have configure anything to get this default behavior. I'm not sure about other versions of OS X.

2

Select Text to be copied, then Drag and Drop your selection (White Plus sign in red circle will be displayed with the cursor). This will copy-paste the text.

You can Drag and Drop inside Terminal or between apps.

2

I don't think there is a way in general but some programs will accept the middle button as paste

e.g.

  • Aquamacs - an OSX configured emacs

  • iTerm2 - a replacement for Terminal

For newer mice/trackballs clicking the scroll wheel acts as a third button

1
  • 7
    scroll wheel = middle button (it is clickable on most of mouses nowadays).
    – installero
    Commented Aug 13, 2011 at 15:31
1

I tried the Automator script suggested by Daniel. It did NOT work for me on OS X 10.10.

I was able to make BetterTouchTool (v 1.15), alone, work for some applications. Like this:

enter image description here

I did Left Mouse twice for several reasons. The first one usually only changes the focus to the new window, but does not position the cursor. Also, clicking in a text box usually selects all of the text, which is then deleted when something is pasted there. I usually want the original text to stay.

Gilligan

1

The following Karabiner Complex Modification maps the middle mouse button to V and shift middle mouse button to V:

{
  "title": "Edit-related mappings",
  "rules": [
    {
      "description": "MouseButton3 to Cmd+v: Paste",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "pointing_button": "button3",
            "modifiers": {
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "pointing_button": "button1"
            },
            {
              "key_code": "v",
              "modifiers": [
                "command"
              ]
            }
          ]
        }
      ]
    },
    {
      "description": "Shift+MouseButton3 to Shift+Cmd+v: Pasteboard",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "pointing_button": "button3",
            "modifiers": {
              "mandatory": [
                "shift"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "pointing_button": "button1"
            },
            {
              "key_code": "v",
              "modifiers": [
                "shift",
                "command"
              ]
            }
          ]
        }
      ]
    }
  ]
}

The following maps the left mouse button to perform C after selection:

    {
      "description": "MouseButton1 to Cmd+c: Copy",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "pointing_button": "button1",
            "modifiers": {
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to_if_alone": [
            {
              "pointing_button": "button1",
              "halt": true
            }
          ],
          "to_if_held_down": [
            {
              "pointing_button": "button1"
            }
          ],
          "to_after_key_up": [
            {
              "key_code": "c",
              "modifiers": [
                "command"
              ]
            }
          ]
        }
      ]
    }

Behavior of using this rule is a bit delayed. With the default Karabiner settings, you'll have to wait a little bit after starting a selection and moving the mouse. Changing some Karabiner settings may help with this but may have other consequences (I've set to_if_alone_timeout_milliseconds to 200 and to_if_held_down_threshold_milliseconds to 200).

0

I would like to add that, if the problem is, as it was with me, that you couldn't get stuff that was highlit in an X-Quartz window onto the clipboard, the secret to that is to highlight, then XQuartz menu-> Edit -> Copy. That way, it is available for paste in every ordinary Mac OS app.

0

In majority of terminals you can drag and drop the highlighted text or alternatively you can use: Shift + ⌘ + v

It will act like in Linux pressing middle-mouse button ( is a copy and paste together)

You must log in to answer this question.

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