Show HN: Devil Mode: A twisted Emacs key translator for modifier-free editing
github.com
github.com
I recovered from a deep dive into mechanical keyboards by trying Topre switches, the obsession killer. I now have four Leopold FC660C keyboards with Hasu FC660C controllers, with custom QMK firmware.
After many experiments, I've been won over by making every key near home row a "tap / hold" key. Tap for usual keystroke, hold as a modifier to access a custom keyboard layer with the other hand.
This is an empirical question. I've learned chording keyboards. I had the original FingerWorks TouchStream multitouch keyboard, tech which Apple turned into the iPhone. I've owned various ergonomic and small keyboards. I've tried many versions of my own firmware. I learned Dvorak on a one-handed half keyboard, and experienced the miracle of knowing how to type Dvorak both hands with no practice. Brain plasticity is very important to me; I've tried everything I can.
"One finger each hand, near home row" is stripped down chording that wins hands down over any other typing system I've ever tried. Taking advantage of the quadratic address space (versus a linear multiple using a fixed set of modifier keys), I control every aspect of my computer this way.
"Control-Xylophone" has kept me from ever accepting Emacs. I should write a two finger chording interface to Emacs, in the spirit of Devil Mode.
Leopold FC660C Mechanical Keyboard https://mechanicalkeyboards.com/shop/index.php?l=product_det...
Hasu FC660C Controller https://1upkeyboards.com/shop/controllers/fc660c-controller/
I'd love to try and sort something like this out, but I'd need to consider where the chording is scoped. I run i3wm/KDE Plasma and emacs, and I'm not quite sure where to begin with something like that.
Lots of new and interesting HSI ideas today, at least for us Emacs users.
I made a small modification so that if the space key is pressed shortly after a regular character, it just inserts a space immediately. This makes typing feel more natural, with spaces inserted as usual.
I like this better than using the comma as a modifier, as the space bar is nicely positioned on the keyboard to take advantage of your thumbs already.
Day to day, it's such a natural extension that I forget that I have this on. However, this is the first thing I install when I set up a new computer, as otherwise a lot of shortcuts are much more strenuous.
Edit: I just realized that, while editing this, I've been pressing space-backspace (aka ctrl-backspace with this module) to delete whole words. I guess it's fully ingrained now!
And escape itself was just a fallback for altmode if all you had was an ascii terminal.
On a standard MIT-AI TV keyboard (Knight keyboard) you could type M-Altmode to get a minibuffer and just type some TECO for immediate execution — if you wanted to cancel you you’ll press escape, which was the original semantics of “escape” anyway. Compressing that to a standard ASCII character set probably made emacs a little more obscure for people who didn’t have a mental model of using it on a more capable keyboard.
$ cat
^[a^[a^[aá
Ubuntu 22.04
I set up PrtSc as a compose key and have an .XCompose file, but that still works.
The author also mentions in the readme that it was inspired by laptop keyboards that are lacking that right-side CTRL, so even if it's not perfect for the majority of commands, it adds a little flexibility.
- stronger hand - stronger finger - better vertical movement instead of horizontal
Edit: I am still not sure why it isn't just something more direct like ctrl+j, since it is used so much, maybe someone can enlighten me...
I just got started with Emacs, and the archaic terminology and inconsistent naming is causing me to have to consult StackOverflow for basic things like “what are the copy and paste commands called?”. (Those were probably both in the tutorial, but I already forgot them a few times.)
I’m aware of “apropos”, but it also uses antiquated terminology, so it’s frequently not useful to me.
I’m sure this problem has been solved :)
can you clarify 'antiquated' for me please
M-x, “apropos”, RET, “copy text”
No apropos matches for “copy text”
Using just “copy” returns two undocumented variables first. I did eventually find kill-ring-save, but it took more digging than I’d like. Obviously if I embraced (or at least remembered) Emacs’s terminology I’d have a better experience, but I’m not there yet.
Edit again: “copy selection” found copy-region-as-kill, which is maybe what I should have searched for originally. Not sure yet how it differs from kill-ring-save.
What version of Emacs did you try?
I was going to add 'visit instead of open', but I guess that bit has changed over the years. C-x C-v no longer invokes 'visit-file'.
If you think it would make it more accessible to have certain changes, email the Emacs issue/bug people with constructive suggestions and see what they say; they are extremely responsive (then try doing the same with Apple or Microsoft and see what happens :-) )
> (then try doing the same with Apple or Microsoft and see what happens :-) )
Microsoft, the authors of Visual Studio Code, the editor most developers use? Whose team has been lauded for being super responsive to developer feedback?
"Initial release 1976; 47 years ago" (from https://en.wikipedia.org/wiki/Emacs).
There was no such standard terminology back then.
May I recommend you avoid using Emacs to avoid the concomitant headache of getting involved in Emacs discussions, thank you.It clearly isn't for you.
The use of “archaic”, etc. was meant humorously, and not as a complaint about Emacs. I wouldn’t mind if the maintainers added some more modern synonyms for commonly needed commands, but I wouldn’t expect them to.
When I was doing my own project I would do most of my work in Emacs but regularly swap back to VStudio because of its LSP support. Swapping back and forth between these two very different environments brought on a few mistakes (wrong key in wrong editor) but astonishingly few. I got comfortable doing switches pretty quickly which is surprising because they are so utterly different, but that's how I found it to be.
I ended up spending more time in VS because of better LSP, but built-in LSP support is coming in the next Emacs. Good. Because once I went back to 'standard' keyboard commands, I never felt comfortable. It just doesn't feel right. Also Emacs is so vastly more capable in some ways it just blows VS away. In other ways VS is better certainly, in the more advanced technical stuff such as LSP, in other ways, screw it.
So: grab a book, prepared to put in a bit of time, good luck!
(Edit: just remembered, I certainly did buy the book but started off doing the built-in Emacs tutorial before that)
Your complaint comes across very much like moaning that strawberries are not the same as cherries. Quite true, and that is exactly why it's a good thing; I would prefer to have a world with strawberries and cherries. Emacs is different from (e.g.) Visual Studio and that's a good thing. Your complaint seems to be that you want Emacs to resemble something else, okay, and after the terminology matches do you want the key bindings to match as well,? And then what do you want? How close in the end, do you want them to look and behave? And if you want them very close, then just use what you're familiar with already and don't worry about us Emacs users.
ISTM you are trying to turn Emacs into visual studio, if not then please make it clear what precisely you want other than injecting phrases like "barrier to entry". Please be specific.
The biggest barrier to entry for you is yourself; the fact that you're not prepared to try something different.
So please tell me, what exactly do you want Emacs to end up looking like, if not a clone of Visual Studio?
Having done that you'll want all the other key bindings changed surely?
And I can see it progressing from their – Emacs regular expressions don't behave quite like visual studio IIRC, for example. Search and replace is pretty weird if you're not used to it. Rectangular selection is very different in Emacs from visual studio. etc. If you change Emacs you lose a lot of what makes it Emacs, and good.
So if I'm not misrepresenting you, and apologies if I am, I don't see your demands for change stopping until Emacs resembles, perhaps, visual studio, in which case why not just use visual studio?
I hope that makes sense.
"control p to go up? Control y to paste? v to go down – perhaps that's v for vertically down or something? Who designed this crap anyway".
Maybe it would work but I'm not feeling optimistic :-)
Yeah I know, archaic terminology: 'printing'. It's a thing we used to do.
Vertico and Selectrum are two modern popular options, Ivy and Helm are two older ones, and there are very creative ones like Raven (https://github.com/chameco/raven) or MCT (https://protesilaos.com/emacs/mct).
Emacs comes with `cua-mode`, which provides some more modern conventions like `C-s` to save, `C-o` to open files, etc., however most users find that the default system does make sense once you learn it. `C-c`, `C-u`, and `C-x` prefixes have very consistent meanings by default across all major modes, and by convention across basically all elisp packages.
I don't use QWERTY, so I find the rebinder package very useful (https://github.com/darkstego/rebinder.el), but I think it can improve the ergonomics of those prefixes across any keyboard layout. My equivalents to `C-x` and `C-u` are on my home-row. I also use home-row mods (https://precondition.github.io/home-row-mods) which make the feel of interacting with Emacs very smooth.
Keybinding discovery is also very easy between the `C-h` family, The `which-key.el` package, and the `helpful.el` package. The `M-x` menu also shows keybindings, even by default.
What's really nice about Emacs is that changing keybindings is very easy, and between hooks, advices, and modes, the keybindings and their behavior are incredibly flexible.
Relevant to this devil mode (and to a similarly named god mode): they do replace the pinky control, but they are still stuck with the default keycaps after that
"You might as well use vi."
(Actual vi doesn't have any extension language, but even Vim lags seriously in this realm.)