What about a Control lock key?
One obstacle for a full equivalent to Control is that it would need to know both when it was held down and when it was released. Emacs keyboard events (unlike mouse events) don't get split into 'down' and 'up' parts, which makes 'released' hard for us to detect there. For example, the only significant difference between C-x C-o and C-x o is the 'control-up' event before the second character. However, that's only a problem if you 'let go' part way through a key sequence
The method here lets you bind any key as Control lock inside Emacs. I've also included some easy work-arounds for key sequences that release the Control key part-way through.
The following code gives you a 'Control Lock' binding, which holds down the modifier for one whole key sequence. The example below binds this to ö, but you can bind it to anything you like.
(defun read-control-sequence (prompt)
(let (keys)
(setq extra-keyboard-modifiers ?\C-a)
(setq keys (read-key-sequence-vector (or prompt "[Control lock]")))
(setq extra-keyboard-modifiers 0)
keys))
(define-key key-translation-map [?ö] 'read-control-sequence)
To use this, simply press (and release) ö. The next key will act as if control is pressed. If the key you entered was a prefix key (e.g. you pressed x to get C-x) then control will stay down for the next key, and so on until you press a non-prefix key.
If you use this a lot, you may also want to add bindings in your .emacs for common commands that don't 'let go' of control part way through. For example, this:
(global-set-key (kbd "C-x C-4")
(lookup-key (current-global-map)
(kbd "C-x 4")))
will make all of the commands starting C-x 4 be available at C-x C-4 too, so that typing ö x 4 f will run find-file-other-window.
You might also find it helpful to add a mapping (e.g. to capital Ö) just to provide a standalone C-x:
(define-key key-translation-map [?Ö] [(control ?x)])
All of the above code can be installed (as usual) by adding it to your .emacs file and restarting Emacs, or by typing C-x C-e after each top-level expression. You should find that this approach integrates with the rest of Emacs more or less seamlessly.
"XkbOptions" "ctrl:nocaps". For Windows you have to import a registry key. Emacs is not the only program in which a convenient Ctrl key is useful. – ceving Jun 4 '11 at 18:04