I've seen plenty of questions regarding this, but they all seem to do a remap of the keys, instead of an actual macOS behavior.

My main use case would be to "split" the shortcuts: for example I would like to have Super+C to copy text, and Ctrl+C to send a SIGINT to the current program.

In this case, a simple remap or swap of Super and Ctrl would not work.

I find the behavior of the mac to be very practical, because all the most common shortcuts use Super, and the famous copy shortcut doesn't overlap the famous SIGINT shortcut.

Most terminal apps react to Ctrl-* shortcuts, and they mostly overlap with "standard" shortcuts. In GNOME Terminal, we have to press Ctrl+Shift+C to copy text, whereas in other applications like Firefox, Ctrl+C is used. This is quite cumbersome and inconsistent compared to Super+C.


4 Answers 4


Ubuntu 20.04, June 2020

After spending an insane amount of time trying to figure out how to get MacOS-like shortcuts working on Ubuntu, I've found kinto. Just follow the instructions, it worked perfectly on 20.04 for me using an Apple aluminum keyboard. CMD-C/V copies & pastes everywhere and CTRL-C etc. work in the terminal.


You can achieve using xmodmap commands:

remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L

Save the above lines as super_as_ctrl.xmodmap. Test by executing

xmodmap super_as_ctrl.xmodmap

To make the change permanent (surviving re-login/reboot) just rename the file to .Xmodmap in your home folder.

(Tested on Ubuntu 14.x)

PS: You could also make use of other windows button. Not sure how to do that.

  • That makes Ctrl-C and Super-C both send ^C to the shell. I expected one of these to behave like copy. Tested on elementary OS Sep 8, 2017 at 13:46

To create new shortcut and delete old ones, Simply go to system settings >> keyboard >> shortcuts. There you can see all the shortcuts, edit it, delete it and create new ones.


The following lives in my $HOME/.uxSwapCapsLock-and-Ctrl. It effectively swaps the functionality of the CapsLock and Ctrl keys for any shell in use on any Linux system whenever I log in, and initiate an interactive session within a shell, on a given system. I'm sure you can learn about the pertinent key name that you are trying to modify, and are referred to by xmodmap, in order to get the functionality you want. This code gets initiated every time I login and have an interactive session via .profile, but it lives in a .ps1 file for this purpose.

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_L"
xmodmap -e "keysym Control_L = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Lock = Caps_Lock"
xmodmap -e "add Control = Control_L"
#End script

This is the .profile check in order to make the swap take place:

if [ -f  "$HOME/.uxSwapCapsLock-and-Ctrl" ]; then
   .  $HOME/.uxSwapCapsLock-and-Ctrl

You must log in to answer this question.

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