Top
Best
New

Posted by ckardaris 15 hours ago

GUIs should be fully keyboard-driven(ckardaris.com)
712 points | 343 commentspage 3
iammattmurphy 7 hours ago|
I recently had a revelation when I made an extended qwerty midi controller app that permanently shows the states and functions of all keys including when modifiers are held.

It occurred to me that this is a wonderful way to design software: you immediately know the keyboard shortcuts because you’re already looking at them. I’m working on taking what I’ve built for the qwerty midi keyboard controller (which is built on hammerspoon) and making it just a generic interface for any kind of app.

If the end goal is navigating and controlling the app via keyboard shortcuts, so why not bake that into the design of the GUI itself?

My project if you’re curious: https://github.com/mattdanielmurphy/qwerty-midi-hammerspoon

BeetleB 13 hours ago||
Mildly off topic, but getting to the original GUI vs TUI debate: Speed can also be a factor. I've yet to find a GUI file manager that is better than Midnight Commander/Far. I think there are some graphical orthodox file managers, but I could never do things as quickly in them as I could in mc.

So sure, add keyboard support to the GUIs. That's always a good thing. Just make sure they're also as responsive as in a TUI. Dialogs should appear instantly, etc.

The other headaches I've had with GUIs (in Linux) is the appearance can change if an underlying library changes. Even if I haven't upgraded the SW, if I upgrade one of the toolkits it relies on the app's appearance and behavior can change.

Somehow this is never an issue with TUIs.

ivanjermakov 13 hours ago||
Three levels of GUI workflow operation: touchpad < mouse < keyboard. This is the main reason people fall in love with programs like vim: with enough experience it allows one to completely eliminate interface friction.
zomiaen 10 hours ago||
I work for a company that for years has had a very old-school, terminal style POS. Lots of key shortcuts. Like, black/white text terminal POS.

The folks who learn how to use it well navigate through it faster than the system can process their inputs.

The new system has lots of fancy GUI, but is slower, and the folks used to their shortcuts hate it. But it's so much faster to train people to use.

hombre_fatal 13 hours ago||
Agreed, but what "prevents" it is that making a good keyboard-driven UI takes a lot of taste, extra effort to build it, and it must be revisited any time the UI changes. It's duplicated work.

Ideally all GUIs/TUIs are usable with keyboard and mouse independently.

A good example of this is when you have a fancy keyboard-driven workflow yet you can't even do the most trivial task without placing two hands on your keyboard. Sometimes I just want to reach over and do it with one hand on the trackpad.

halfcat 12 hours ago|
> extra effort to build it

Also extra effort to use it. This is why we have the “how do I exit vim?” meme.

A good user interface needs escape hatches so users can keep their head above water while they learn to swim.

Most of what people want when they say keyboard-driven is closer to a cockpit (requires expert knowledge) than a general purpose UI.

zahlman 22 minutes ago||
> This is why we have the “how do I exit vim?” meme.

How to exit is literally the second thing `vimtutor` teaches you, after hjkl cursor movement.

Arubis 9 hours ago||
At this point what keeps me on Firefox is less the browser engine diversity than [tridactyl](https://tridactyl.xyz/), without which I feel almost helpless in a browser.
WillAdams 13 hours ago||
Where possible, there should be keyboard shortcuts/navigation.

Where appropriate, the labeling of fields and so forth should be such that it will work for a screen reader.

Often, the expedient option is to use an HTML front-end so that one can off-load most of that to the user's selection of web-browser (and where possible, things should be engineered so that Lynx is a valid option).

That said, I use OneNote and Macromedia Freehand and so forth w/ a stylus --- horses for courses.

winrid 7 hours ago||
One of the pieces of software I sell is motorsports timing software [0], it has a GUI for newbs, but at the bottom of every window is a little bar that shows the list of shortcuts. People pick them up quickly!

And it's auto generated from the UI code. It still surprises me how many people just prefer the mouse anyway, though. But the option is there!

[0] https://sidewaysdata.com

userbinator 10 hours ago||
Worth noting that Windows 3.x Paint could be used entirely from the keyboard, as the arrow keys moved the cursor and you could position it with pixel-precision. This is in addition to the fact that the rest of the OS was also entirely usable without a mouse.
thibran 12 hours ago|
The problem with keyboard navigation is that there seems to be no mature GUI keyboard-first UX concept. "Mouse things" are the way they are, because they fit the mouse-way. We need the same for the keyboard-way. Until then, there seems to be no design concept that can just be copied.
Rygian 12 hours ago||
Top of my head:

- Tab to move across fields.

- Left-to-right, top-to-bottom focus.

- Space to toggle togglable stuff.

- Alt-Down Arrow to deploy drop-down stuff.

- Arrows to move around.

- Enter/Esc to accept/discard a modal.

Or maybe I misunderstand the things you call "mouse things".

thibran 12 hours ago||
This does not work great. What if you have a grid of 30 item, do you press 20 times tab to focus finally the item you want to interact with?

Keyboard design is much more, its also about how and where to place items, how things should move... it's a whole world. In the mouse world we have "discovered" those things and now we "just copy" other designs that we know work fine.

ckardaris 11 hours ago|||
> What if you have a grid of 30 item, do you press 20 times tab to focus finally the item you want to interact with?

If this grid a central component of the application and navigation inside it is very common, I would argue that there should be a way to quickly move around the cells. The "how" is up to the specific application and the paradigms it promotes. For example, line navigation in vim is possible with "<N>G", but such a shortcut would seem absurd in another application.

thibran 11 hours ago||
I love VIM-like TUIs, but the discoverability of of them is absolutely awful.
Rygian 10 hours ago|||
- Underlined letter: Alt-<letter> takes you to that field.

- Spreadsheet-like stuff: arrows, PgDn, PgUp, Home, End, … move inside of it.

esikich 12 hours ago|||
There is, whether or not developers follow it is a different story.

https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface...

leleat 12 hours ago|||
I don't think this really addresses GP's comment as far as I understood it.

Your resource mostly describes how to make keyboard-based workflows accessible. But just because the full functionality of an app is keyboard accessible, doesn't mean that it works as well as the pointer-based approach - especially if you have an app with multiple menus, sidebars, headers, footers etc. Maybe you could tab through everything, but a pointer will be faster. This is where a "keyboard-first UX concept" is missing (from GP).

I think an interesting idea to solve this would be a "focus navigation mode". Enter this mode with 1 shortcut and then navigate between items with a few keys; like a combination of mnemonics and screen reader navigation e.g. jump between headers with "h" etc.

thibran 12 hours ago|||
That's not what I mean. The site you linked is about how to make a mouse-first website more keyboard friendly, but what I would like to exist is a mature keyboard-first guide.

I mean something like this (my wip keyboard-first file manager): https://ibb.co/G3WBW5C1

The hard part is, there seems to exist no UI & UX design language I can follow to create a nice keyboard-first app, so I have to think through everything (which is fun but tiring).

Barrin92 11 hours ago||
>there seems to be no mature GUI keyboard-first UX concept.

I don't know about 'first' because I don't see a reason to privilege keyboard workflows over mouse workflows given how ubiquitous the latter is but Windows has had, for literally decades a 35 page Keyboard UI spec. They've put a fair amount of effort in applications being navigable in a consistent way.

https://learn.microsoft.com/en-us/previous-versions/windows/...

More comments...