pranta.re

Emacs and its many (inter)faces

The theme of this month's Emacs Carnival is "Are keyboards and M-x here to stay?".

Yes. Emacs has a strong tradition of developing many interesting and efficient ways to drive your computer with a keyboard. Transient, avy and evil are great and there is no reason to forego these altogether.

However, the nature of Emacs makes it a good fit for an input-output agnostic computing system. For example, the venerable Emacspeak is a system built on Emacs that communicates state through audio, rather than video, allowing blind (or adventurous) people to use Emacs without their vision.

In a similar vein, Emacslisten opens up Emacs for control by voice, rather than hands. I wrote Emacslisten because I developed a pretty severe repetitive strain injury, which made it painful to use a keyboard at all. As a matter of fact, this was the main reason I switched to Emacs from vim: I needed an environment that is moldable enough to shape according to my needs.

The usual approach in application development seems to be to create programs tightly coupled to a specific mode of interaction. To use these without eyes or hands, one then has to attach clumsy dongles onto the vision-and-hand-oriented interface. For voice control, this usually involves pretending to enter keys by voice, which obviously is inferior to just typing them with your hands. And many times, these interfaces cannot even be controlled fully by keyboard, forcing you to use a mouse. I can only imagine the situation is similar for blind people and screen readers. What these have in common is that alternative input and output modalities are an afterthought, bolted on top of a privileged interface.

Emacs is different. While keyboard and display are the most developed interface modalities, the internal state of Emacs is completely introspectable and controllable through Elisp. This is what allows Emacspeak to read the state it needs to convey the current situation through audio, and what allows Emacslisten to map a complex utterance to arbitrary Elisp, opening up all of Emacs for voice interactivity. This is in stark contrast to traditional applications, where voice and audio need to act like inferior keyboard and display.

So, while keyboards are here to stay, alternate interfaces are not subjugated to keyboards and displays, but are equal citizens in the wonderful land of Emacs.

—

I'll be talking more about Emacslisten at EmacsConf 2026 in December