GUIs should be fully keyboard-driven
18 points by an_origamian
18 points by an_origamian
I agree that GUIs should be able to be entirely keyboard driven: it is critical for many accessibility input methods.
I disagree with it being easy.
It is easy to make a UI in which everything is accessible from the keyboard - you just have to have a unique binding for every option.
Actually making a keyboard accessible interface means you need to have correct ordering of options, you have to ensure that your app is doing the right thing for the host platform, not what you think should be correct, not what your primary platform does. It needs to do what the user of the platform expects, because that's what they're using.
You also can't just defer to endless chords: many people who use what appears to your application to be a keyboard, are not actually using a keyboard, chords are often very slow and clunky.
Another thing I've seen is proponents of modal interfaces claiming that they're superior, but if the interface is modal you need someway for the user to know that - things like vim basically rely on the character in the bottom left forcing people to basically try to do something and get the feedback of the action being disallowed, while at the same time contending with some things that they do being permitted because the mode they're in does have an associated action, just not the one the user was trying to do.
UI is hard.
It does not matter what the renderer is (e.g. a GUI app being displayed in a terminal is still a GUI app so needs to consider both control modes), and simply saying "you can do everything from a keyboard" does not make it good, and it certainly does not make it "easy".
Unless the quality of the interface does not matter.
What do you think about Vimium's UI?
https://youtu.be/t67Sn0RGK54
I specifically find the F key (to press a button on the page) interesting. It's modal, but it pops up indicators of what keys you need to press next, so you know what mode it is currently in. It's not faster than the mouse, but it's still reasonably convenient for navigation if I don't have one plugged in.
Command palettes (like M-x in emacs) are helpful here, though they're not great for context-specific discoverability. This led Nextjournal to the "command bar", as they explain along some historical background on the problem (e.g. lisp machines, which-key). Disclaimer: I used to work with this team, but not on this project.
Reading this just reminds me that I wish more applications implemented modal editing/navigation :(
I'm a raving fan of the command pallet or it's adult friend the find any action since there are a finite number of chords that I can remember as one switches between applications and operating systems but describing the action almost always works. Bonus points if the "find action" indicates the currently bound shortcut, so it can serve as a quick reference
I think that M-x or its : sibling also quality, although without the quick reference part. I actually backed a Kickstarter project that was trying to bring that M-x behavior to some of the popular gui toolkits to enable it in a lot more apps but it didn't shake out, presumably because it was way harder than they thought (heh, Kickstarter, amirite?!)
GUIs should be fully keyboard-drivable*
Yep. Much better title. But I guess the title might've been intentionally made clickbaity by trying to sound like it's a hotter take than it actually is.
My standard reminder: there is already a standard for this, and it's called CUA.
Windows complies. Xfce is very good. MATE, LXQt, LXDE, and some others make a stab at it, mainly in visual layout. KDE is quite poor because they reinvented the whole thing without understanding how and why it works. Ubuntu's old Unity desktip is excellent at it, despite looking more Mac-like.
GNOME is atrocious at it because they've ripped out most of the controls without having any plan for what to replace them with.
Most what are now called "traditional" desktops -- you know, taskbar, start menu, tray, something like a 2-pane file manager -- are vaguely compliant.
You already know how to use it it's just that everyone has forgotten there is an actual original Thing here that every modern GUI and most TUIs apes without knowing what it's copying or why.