GUIs should be fully keyboard-driven

18 points by an_origamian


olliej

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.

datboi

Reading this just reminds me that I wish more applications implemented modal editing/navigation :(

mdaniel

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?!)

ayba

GUIs should be fully keyboard-drivable*

lproven

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.