this post was submitted on 23 Jul 2024
92 points (78.8% liked)

Programming

17547 readers
186 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

Not my blog, but the author's experience reminded me of my own frustrations with Microsoft GitHub.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 4 points 4 months ago (1 children)

the ability to override menu keys is really a long-running flaw in browser UI

They have a reason to do so here though. OP evaded their search box and couldn't find the content. Because it's not fully rendered. Because code files can get big, and rendering them to DOM with inline highlighting and hover actions, sidebar with infos, and interactivity becomes a performance problem. So they implement partial rendering / virtual scrolling.

[–] [email protected] 2 points 4 months ago* (last edited 4 months ago)

So, I've got no problem with having page-specific functionality and allocating some kind of space of keybindings to them, right? Like, okay. Say that browsers reserved the Control-Alt prefix for webpages, and then had a list of functions that webpages could implement, and when they do, adding a visible button in a toolbar and having a hover tip to find those. That visible toolbar would solve any issue of discoverability of such functionality on a webpage (and by implementing that in the browser, the browser could choose to have a more-minimal form, like just an indicator that a page supports keybindings.) So the webpage doesn't have to grab the browser's keybindings. Or maybe we introduce a "browser button" or something, the way Microsoft did the Windows key.

But what I don't like is having access to native functionality blocked by webpages. I don't think that they should have overlapping keybinding space.

Emacs has a shitton of keybindings, users who heavily configure it, and a ton of add-on software that needs keybindings. What they did was to reserve some keybinding space for the editor, some for major modes, some for minor modes, and some for user-specified keybindings. These all don't collide, so that the user doesn't get functionality blocked by another piece of software:

https://www.gnu.org/software/emacs/manual/html%5Fnode/elisp/Key-Binding-Conventions.html

Don’t define C-c letter as a key in Lisp programs. Sequences consisting of C-c and a letter (either upper or lower case; ASCII or non-ASCII) are reserved for users; they are the only sequences reserved for users, so do not block them.

Changing all the Emacs major modes to respect this convention was a lot of work; abandoning this convention would make that work go to waste, and inconvenience users. Please comply with it.

  • Function keys F5 through F9 without modifier keys are also reserved for users to define.
  • Sequences consisting of C-c followed by a control character or a digit are reserved for major modes.
  • Sequences consisting of C-c followed by {, }, <, >, : or ; are also reserved for major modes.
  • Sequences consisting of C-c followed by any other ASCII punctuation or symbol character are allocated for minor modes. Using them in a major mode is not absolutely prohibited, but if you do that, the major mode binding may be shadowed from time to time by minor modes.

I get that websites need to have keybinding space, and have a legit reason to do so. But I don't think that they should share keybinding space with the browser's native functionality. If we want to have a "search" shortcut, hey, that's cool. But lets leave the browser-native functionality available.

In Firefox, I have:

  • Alt-f for find. By default, this is Control-f, but normally both Control- and Alt- are reserved for the browser, and I've swapped the Control and Alt prefixes so that the menu keys don't crash into the GTK emacs-lite keybindings. Some websites override this, which is really annoying if I'm trying to navigate around using conventional search; in emacs, it's common for users to use search constantly to navigate around in a document.

  • Slash. This opens a mini-find, because I'm using vimium, but only if I don't have a text-editing widget active, in which case the OS's text editor gets it.

So I've got two different search keybindings and both are inaccessible at various points, because other software packages want to use keybinding space and there's no convention for avoiding collisions.

My preference would be that there should be keybinding space for Firefox itself, keybinding space for the OS to use in things like text widgets, keybinding space for the OS (Microsoft dealt with this by adding and reserving the Windows key and mostly using that, except for traditional pre-existing conventions like Alt-F4 or Alt-Enter), keybinding space for OS add-ons, binding space for Firefox add-ons, and keybinding space for websites, and that these shouldn't overlap (and insofar as possible, and I realize that this isn't always possible for non-modified keybindings, to not change based on modality, like "this functionality isn't available if you have a text widget active").