Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sublime Text modifying Linux mousemap to use 4th mouse button

Using Sublime Text 3 (Build 3059) on Linux.

In Sublime Text column selection can be used to select a rectangular area of a file. When using the mouse to do this different mouse buttons are used on each platform. On both OS X and Windows the middle mouse button can be used to select the rectangle of text. On Linux you need to use the right mouse button + shift, I find that combination inconvenient so instead wanted to use the 4th button on my mouse to do it without the hassle of a modifier key.

Easy enough I just need to change the column selection mouse mapping in my default mousemap file.

Here are the relevant sections of the 3 (Linux, OS X, and Windows) default mousemap files:

// Column select Linux default mousemap file
{
    "button": "button2", "modifiers": ["shift"],
    "press_command": "drag_select",
    "press_args": {"by": "columns"}
},

// Column select is the same in the default OS X and Windows mousemap files:
{
    "button": "button3",
    "press_command": "drag_select",
    "press_args": {"by": "columns"}
},

So I figured all I needed to do is to use the same code as OS X and Windows but to set "button4" instead of "button3". So I ended up with this:

// ~/.config/sublime-text-3/Packages/User/Default (Linux).sublime-mousemap

[
    // Map column select to 4th mouse button.
    {
        "button": "button4",
        "press_command": "drag_select",
        "press_args": {"by": "columns"}
    }
]

All very logical and straightforward except that it does not work. Pressing the 4th mouse button does not do column selection, it just does nothing. What's wrong?!

like image 449
mattst Avatar asked Mar 18 '23 21:03

mattst


1 Answers

It took me a while to figure this out but...

In Linux the 4th mouse button is not necessarily referenced by "button4". In fact on my system the 4th mouse button is referenced by "button8". All that was needed was to use "button8" where before I had used "button4".

[
    // Map column selection to 4th mouse button ("button8").
    {
        "button": "button8",
        "press_command": "drag_select",
        "press_args": {"by": "columns"}
    }
]

Hope this helps someone.


EDIT: UNIX/Linux users can use xev, which prints the contents of X events, to get their mouse button numbers.

like image 149
mattst Avatar answered Apr 25 '23 17:04

mattst