If you are used to the standard keyboard layout, the most likely reason for wanting to move the control key is to avoid RSI in your left wrist. If you use ctrl-combinations often, particularly with letters towards the left of the keyboard, you will find yourself bending your wrist sharply for extended periods, which often causes pain in the left hand, wrist and lower arm. Various old school systems used to place the left control key where caps lock now is on most systems, which is much more comfortable and convenient, so most OSes still have a facility to switch the left control and caps lock keys over for those used to this layout. A secondary benefit is that this moves the caps lock key out of the way, so it isn't accidentally struck when aiming for “a” (a problem that some keyboards try to address by creating a gap between the two keys). KDE offers dozens of different options for moving the control key around, if the control/caps lock switch doesn't appeal.
If you're British and work outside the UK but in a partly English-speaking environment, there's a good chance you'll end up splitting your time between British and American keyboards. The most noticeable annoyance involved is that the British keyboard reverses ” and @ (although not on most Macs, so if you split your time between PC and Macs in the UK you may have the same problem). If you're able to touchtype all symbols then you may prefer just to use a US keymap everywhere. If you're not, you will probably want a British-ish keymap for use on British keyboards, so that you can find symbols like \ | # ~ ` ¬ that differ between the maps. You probably don't want to use a British keymap on a US keyboard, because it doesn't have enough keys so you will lose access to symbols that are important, at the least, to programmers.
One solution is to use an alternative British keymap that reverses “ and @ on British keyboards and a standard US layout on American ones. Some symbols will be in different places, but the location of these keys varies between physical keyboards anyhow, and they will at least be labelled correctly. A side-benefit is that most people prefer the US location of ” on the home row, as it is a much more important character than @.
If you use a British keyboard 95% of the time but occasionally need to type in Spanish, you probably want a keymap very close to the UK standard, which allows easy access to Spanish-relevant deadkeys, in locations that are obvious even with a physically British keyboard.
Warning: these seem to hose the meta and Windows keys on Slack 14.0… update to follow, hopefully.
Keyboard maps in X are configured in /etc/X11/xkb. Each locale has a single file in /etc/X11/xkb/symbols which contains details of all variants for that locale (often an international version with deadkeys and a dvorak variant). They're defined relative to some other layout (ie “start with the standard US keyboard then make the following changes…”).
Here is a version of the gb layout that includes a “hybrid” variant that swaps “ and @ back to their US positions (to overwrite /etc/X11/xkb/symbols/gb – the extension needs to be deleted from this downloaded file first).
Then various config files need to be updated in order to be able to select this variant through the standard KDE system settings. These need to be overwritten in /etc/X11/xkb/rules:
(I think the *.lst files are obsolete – and now may not be up to date.)
System settings → Region and language → Keyboard layout → Advanced → Ctrl key position → Swap control and caps lock
Putting the following in ~/.config/autostart/caps-lock-ctrl-swap.desktop seems to work most of the time:
[Desktop Entry] Encoding=UTF-8 Version=0.9.4 Type=Application Name=setxkbmap Exec=/usr/bin/setxkbmap -option "ctrl:swapcaps" Hidden=false
Replace the standard UK keymap with one modified to swap control, caps lock, " and @. Keymaps are located in /usr/share/kbd/keymaps/i386/qwerty/. The UK map is called uk.map and can be gzipped (adding .gz) or not. If you want one change but not the other, then you ought to be able to figure out what to do by diffing the above file with the standard uk.map. Make sure that /etc/rc.d/rc.keymap exists, is executable, and points at the right map:
#!/bin/sh # Load the keyboard map. More maps are in /usr/share/kbd/keymaps. if [ -x /usr/bin/loadkeys ]; then /usr/bin/loadkeys uk.map fi