Remix.run Logo
MarsIronPI 4 days ago

As an Emacs PGTK user, do you have any experience with modifiers beyond the basic 4? I recently tried to use PGTK Emacs and it seems to not support e.g. Hyper, which is a bummer, because I extensively use Hyper in my keybindings.

zeendo 3 days ago | parent [-]

Embarrassingly, I don't really understand Hyper. I have a Moonlander and AFAICT the firmware (or at least the Oryx configurator tool they provide) says Hyper is just a combination of the basic 4 - Alt+Shift+Ctrl+Meta. I'm pretty sure that's at least not historically true... but I don't have a whole lot of use for it so I haven't tried to wrap my head around what's going on there.

I imagine there's a "real" hyper modifier but I haven't attempted to use it. For my sake, since I use GUI Emacs I find that I have enough mappings without it (I'm also a dirty evil user). A friend makes extensive use of it because he primarily uses Emacs via a terminal and Hyper avoids all other terminal keybind conflicts he might otherwise run into. But, he uses X11, too so no PGTK Emacs even if/when he does run GUI Emacs.

I'll try to dig into this some though and see if I can (a) determine a way to map a "true" hyper to my keyboard and (b) use it in PGTK Emacs and follow up with you.

MarsIronPI 3 days ago | parent [-]

X11's XKB (which, funnily enough, is also the standard keyboard layout system on Wayland) has support for Control, plus another 5 modifiers. Specifically, I believe Hyper is typically mod3. If you run xmodmap in a terminal under X, you'll see which keys are assigned to which modifiers. I have a custom XKB layout that assigns some keys to Hyper, and then adds Hyper to mod3. With X11 Emacs I didn't have to do anything to get it to work. But I don't think I've ever seen a pure GTK program recognize Hyper, so it may be a GTK limitation.

For learning XKB, I recommend the Unreliable Guide to XKB[0]. XKB is sorely underdocumented, so guides like these are the best way to learn it.

[0]: https://www.charvolant.org/doug/xkb/html/xkb.html

Please don't feel like you have to look into it, though. I was just wondering, since you mentioned that you used PGTK.