Emacs Ergonomics: Using Caps and Enter as Ctrls

I started using Emacs mainly for the ability to write, edit, and do everything else related to text without using the mouse. The idea was to reduce the cognitive and physical overhead involved in moving the hand away from the keyboard for every little thing. Additionally, Emacs is open source and can be extensively customized to match a user’s exact workflow and preferences. That appealed to me greatly.

Emacs makes extensive use of modifier keys, especially Ctrl, for the keyboard shortcuts. Pretty much all Emacs users agree that Ctrl keys need to be re-mapped for the sake of better ergonomics. What the best alternatives are is a matter of much discussion. The common suggestions are:

  • Using Caps as Ctrl
  • Swapping Alts and Ctrls since Alts are pressed with thumbs instead of the little fingers
  • Pressing Ctrl with the palm
  • Using Space as Ctrl when pressed along with another key
  • Get a custom keyboard with alternate layout that has more keys near the thumbs

Options that I didn’t go with and the reasons

The replacement of Caps with Ctrl is extremely helpful, but I don’t find the rest to be very useful.

Alts are pressed with thumbs but they do require the hands to move a bit away from the home row so pressing them is not as efficient as pressing the Caps key.

Pressing the Ctrl key with the palm doesn’t appeal to me because even though I mostly use a mechanical keyboard, I also use the laptop keyboard under certain conditions. The palm press option doesn’t work for laptops and I don’t want to get used to an option that I can’t use when I am traveling.

Using the Space as Ctrl when pressed with another key did seem promising but in practice it interferes with my typing very significantly. The solutions that allow using Space as Ctrl introduce an exasperating amount of lag in typing. Additionally, I do type reasonably fast and with Space as Ctrl various keys gets registered as shortcuts from time to time during normal typing which breaks the flow of the work. So Space to Ctrl is a no go for me.

As far as custom keyboards are concerned, becoming dependent on a specific key layout isn’t very appealing to me. I have multiple systems that I work on and I also want to be able to use a laptop without breaking my workflow.

Option that I decided on: Using Caps and Enter as Ctrl

I replaced the Caps with Ctrl but that alone wasn’t enough. Pressing another key with the same hand while pressing the Caps with the little finger wasn’t very ergonomic. I needed a second easily accessible Ctrl key for the right hand. After some experimentation I ended up using Enter as Ctrl when pressed in addition to another key. It still acts as the Enter key when pressed and released alone. The position of the Enter key is symmetric to the position of the Caps key on the other side and that helps greatly. I found it to be the perfect solution.

For Windows systems, here is an AutoHotKey script that you can use to achieve that:

Capslock::Control

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

KeyPress=0

^enter::^enter
enter::
KeyWait enter, D
KeyPress++
SendInput {ctrl down}
KeyWait, enter, t1000
if errorlevel = 1
{
	SendInput {ctrl up}
	KeyPress=0
	Timeout=1
	return
}

if Timeout != 1
{
	SendInput {ctrl up}
	if (a_priorkey = "enter") && (KeyPress >= 1)
		send,{enter}
}

Timeout=
SendInput {ctrl up}
KeyPress=0
return

If you don’t wish to install AutoHotKey on all your systems, there is an option to just compile the script into an exe. If you don’t want to go through the process of installing AutoHotKey and compiling the script, you can download the one I’ve compiled from the link below:

Using Emacs with this key configuration is an absolute pleasure. Do give it a shot if you are an Emacs user.