Safari swipe gesture with a non multitouch mouse
To make this work you have to use a third party tool: Karabiner.

In the example below hitting the left alt key once generates one back command in Safari (only). An additional mouse click is not needed.

You can use the left option/alt key as usual otherwise.


Download, install and open Karabiner
Open in the menulet Karabiner -> Preferences
Open the tab Misc &amp; Uninstall
Hit the button Open private.xml
Open the file private.xml with an appropriate editor
Enter the customized keycode

&lt;?xml version="1.0"?&gt;
&lt;root&gt;
    &lt;item&gt;
        &lt;name&gt;Option_L to Option_L&lt;/name&gt;
        &lt;appendix&gt;(+ When you type Option_L only without other modifiers, send Command+[ in Safari)&lt;/appendix&gt;
        &lt;identifier&gt;remap.altL2altL_backward_nomod&lt;/identifier&gt;
        &lt;only&gt;SAFARI&lt;/only&gt;
        &lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::OPTION_L, KeyCode::OPTION_L, KeyCode::BRACKET_LEFT, ModifierFlag::COMMAND_R&lt;/autogen&gt;
    &lt;/item&gt;
&lt;/root&gt;

Save the file
Open in the menulet Karabiner -> Preferences the tab Change Key
Hit the ReloadXML button
Enable the remapping. It should be listed at the beginning.


If you want to use the right option/alt key instead of the left one just replace OPTION_L by OPTION_R and altL by altR everywhere in the private.xml file.

The above keycode customization is only valid for the en_US input source (and probably en_GB, en_CA etc).

If you use e.g the portuguese input source (pt_PT) then you have to choose the proper KeyCodes: to get the [ you have to press alt7. Then the line:

&lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::OPTION_L, KeyCode::OPTION_L, KeyCode::BRACKET_LEFT, ModifierFlag::COMMAND_R


has to be changed to:

&lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::OPTION_L, KeyCode::OPTION_L, KeyCode::KEY_7, ModifierFlag::OPTION_R | ModifierFlag::COMMAND_R


If you want to add a second custom keycode (hitting left cmd key once generates one forward command) use:

&lt;?xml version="1.0"?&gt;
&lt;root&gt;
    &lt;item&gt;
        &lt;name&gt;Option_L to Option_L&lt;/name&gt;
        &lt;appendix&gt;(+ When you type Option_L only without other modifiers, send Command+[ in Safari)&lt;/appendix&gt;
         &lt;identifier&gt;remap.altL2altL_backward_nomod&lt;/identifier&gt;
         &lt;only&gt;SAFARI&lt;/only&gt;
         &lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::OPTION_L, KeyCode::OPTION_L, KeyCode::BRACKET_LEFT, ModifierFlag::COMMAND_R&lt;/autogen&gt;
    &lt;/item&gt;
    &lt;item&gt;
        &lt;name&gt;Command_L to Command_L&lt;/name&gt;
        &lt;appendix&gt;(+ When you type Command_L only without other modifiers, send Command+] in Safari)&lt;/appendix&gt;
        &lt;identifier&gt;remap.cmdL2cmdR_forward_nomod&lt;/identifier&gt;
        &lt;only&gt;SAFARI&lt;/only&gt;
        &lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::COMMAND_L, KeyCode::VK_LAZY_COMMAND_L, KeyCode::BRACKET_RIGHT, ModifierFlag::COMMAND_R&lt;/autogen&gt;
    &lt;/item&gt;
&lt;/root&gt;


The special KeyCode VK_LAZY_COMMAND_L instead of COMMAND_L doesn't break the function of cmd_left+Some_key: so you can navigate forward in Safari and print the page with cmd_leftP without going forward once more!