Re: Re: Design for Keyboard Shortcut Behaviour

Karl O'Keeffe <[email protected]>
Newsgroups gmane.comp.graphics.y.devel
Message-ID <[email protected]>
On May 24, 2004, at 10:09 pm, Mikko Rantalainen wrote:

> I'm not sure if going totally one way or the another is the right  
> thing to do. For example, not a very many people are totally lost when  
> a dialog pops up when they press CTRL+F (for Find). That's a mode  
> change, IMO, because the target of the action is normally still the  
> previous window. On the other hand, I don't agree with vi's way to do  
> everything with a spartan prompt. Some ideas below...

Yeah, the find dialog is a mode change. I am hoping to implement a LEAP  
like system for the Find command (in a separate module which uses the  
QCS). See the stupidly long Technical Specification for THE  
(http://humane.sourceforge.net/the/spec.html) for an idea of how LEAP  
would work.

It's not that the find dialog is especially confusing, I just think  
that a LEAP style system would be more efficient (as argued by Jef  
Raskin).

I'm hoping to avoid a vi/emacs style spartan prompt by displaying and  
describing the possible commands in the command list.

> The UI should be designed so that the most often actions only require  
> *one* keypress and the more seldom an action is intended to be used,  
> the more keypresses it should require. A backspace (for commanding to  
> undo the last keypress) or an enter (for confirming the command) are  
> examples for commands that only require one keypress. CTRL+C for copy  
> requires *two* keypresses but most people think that's good enough.  
> Left ALT+Left Cursor key for browser's back isn't good enough, because  
> you need two hands to enter the command.

If we assume that entering text is the most often action, then we (us  
English speakers anyway) are lucky enough to have all those actions  
only take a single keypress. But the lack of dedicated command keys on  
keyboards means that non-typing actions are likely to require more than  
one keypress. (Maybe the F1 - F12 keys could be better utilised, as  
they are dedicated command keys).

Of course you can follow Internet Explorers way of doing things, and  
have backspace behave differently depending on weather the focus is on  
the page or a form element. But this introduces confusing modes (I've  
been caught by it myself numerous times).

You are right that it would be brilliant to be able to have all  
frequently used commands only require a single keypress, but this would  
introduce more modes, and I am currently experimenting with a system  
that is trying to reduce modes.

Requiring two hands to enter the ALT-Left command to go back is  
annoying. Better key selection could solve that one, but the general  
problem is still left. I am making the assumption that the user will  
either have both hands on the keyboard, or is using the mouse. With  
both hands on the keyboard, ALT-Left style shortcuts are not such a  
problem anymore. When using the mouse we just need to provide an  
efficient method of issuing commands. Currently there is no efficient  
method of going back a page using the mouse in IE. Mouse gestures or  
pie menus may be a neat solution to this.

> Have you tried to hold down the windows key and type "shutdown" in the  
> same time? That's far from a good UI!

I have. And your right the combination doesn't exactly flow. Could I  
escape this argument by saying that most commands will only be a single  
letter, and thus avoid this problem? Or that shutdown is an  
infrequently used command, and thus doesn't need to be speedily  
invoked? Or maybe that by making it difficult to type we avoid users  
accidentally shutting down the system?

If long commands do turn out to just be a pain in the ass then we can  
just avoid them.

> I'll call the windows key COMMAND key from this on so it can refer to  
> any key one wishes to use for that. So, how about something like this:
>
> Press COMMAND -> A tooltip-like window appears that has shortcuts  
> listed:
>
> W Commands that operate this window
> Q Quit this application
> A Commands that operate with applications
> S System commands
> etc
>
> Pressing W while COMMAND is held would popup a context menu like menu  
> where holding the COMMAND down wouldn't be required anymore. That menu  
> would have items like:
>
> W Close this window
> N Minimize this window
> M Move this window
> D Move this window to desktop... (would popup an another menu)
> etc
> ESC Cancel

Not sure I like the excessive nesting here (but it is just an example).  
It suffers from the problem of 'uninformed consent'.

Quote: "... and then there is what Alan Cooper calls "uninformed  
consent": 'At each step, the user is required to make a choice, the  
scope and consequences of which are not known.'"

I would prefer a more dense structure that allows the user to scan  
possible commands. I envisage the list of all system/WM commands  
displayed on the screen, displayed in organised groups. This way of  
displaying information has been termed 'monocline-grouping'

Quote: "Alan Cooper (again) talks about "monocline grouping" -- "a  
single
layer of information organised into groups" -- as an alternative to
categories. In these, "categories" change from being *choices* to merely
being *helpful attributes*."

(Quotes nabbed from some geezer on a mailing list:  
http://64.233.167.104/search?q=cache:C-6tPg9KLWcJ:www.listserv.acm.org/ 
archives/wa.cgi%3FA2%3Dind0011e%26L%3Dchi- 
web%26F%3D%26S%3D%26P%3D1140+monocline+grouping&hl=en)

> Some actions would require confirmations but those could be handled in  
> similar way. For example, COMMAND-Q wouldn't immediately quit the  
> application. Instead, it would popup a menu like
>
> Q Quit application
> ESC Cancel

I was hoping that commands that usually require confirmation (such as  
shutdown/restart etc) would be longer text commands, therefore avoiding  
the problem of accidental invocation and thus the need for  
confirmation.

Although some commands (Quit - Do you want to save changes?) will still  
require a confirmation. This could be handled by the system you  
propose.

> Note that the default action in this menu is Q should any of the key  
> combinations would quit an application:
>
> COMMAND-Q COMMAND-Q
> COMMAND-Q Q (holding COMMAND would be optional)
> COMMAND-Q ENTER ("Quit" menu and confirm first item)

I kind of want to avoid this, it breaks the rule of monotony, and thus  
habituation without seeming to bring any benefits.

> Similarly
>
> COMMAND-A R would popup a "Run Application..." dialog (which would be  
> an xterm for me :)
> COMMAND-A S B M could start Mozilla (as in Application / Start /  
> Browser / Mozilla)
>
> By this, it should be clear that user should be allowed to customize  
> this menu. It could be that you start Mozilla once a week (and keep it  
> running for the rest of the week) while another user starts and stops  
> Mozilla every 15 minutes. For the latter user it's much more important  
> to have only a few keypresses for the shortcut.

You have almost suggested a way of browsing the Start menu by keyboard.  
Something like that for launching applications is probably a really  
nice idea. See Mark Pilgrim's method of providing fast application  
launching on Windows for an idea of things we can incorporate  
(http://diveintomark.org/archives/2002/10/07/my_good_easy).

I haven't really had any time to think about the best way to launch  
applications, but I agree that it is something worth including.

> Perhaps have a 500ms delayt before displaying the menu after the  
> keypress have been done. This way experienced users don't have to  
> suffer from flickering while they are inputting commands.

That was my intention all along, but in a flash of stupidity I forgot  
to mention it anywhere in my draft :)

> Selected menu item could fade out in similar way menu items fade out  
> in windows 2000 (if you haven't seen it, the system has on-top window  
> without window decorations and the alpha channel is animated from  
> opaque to fully transparent during about 1000ms. All events go  
> directly through this window). This is enough feedback to see if you  
> mistakenly selected a wrong action or to confirm that system is doing  
> something. AND it doesn't need an user action to go away.

Yup, much better idea than my way of doing things now that I think  
about it.

>> effect in every situation. For example, rather than use the 'alt-tab'  
>> method of switching windows where the effect of the command is based  
>> upon the currently selected window and the order of previously  
>> selected windows, QCS uses a go to window switching method where the  
>> user specifies exactly which window to bring to the front. The same  
>> command brings the same window to the top no matter what order the  
>> windows are currently in.
>
> I don't think that this is the only way Y (or any other UI) should  
> support. Most of the time I'm using two or three windows and during  
> those times I find it pretty efficient to use alt-tab: first I dig up  
> the three applications I want to use, the I press alt-tab when I want  
> to change to previous application and alt-tab-tab when I want to  
> change to the application that I recently used but which wasn't the  
> last one. For more that four windows alt-tabbing isn't that smart.

Right again, my go to window command can't really be made more  
efficient than alt-tab, so probably best to stick with something that  
works, even if it's not perfect.

> I'd keep alt-tab (or change it to command-tab) pretty much as it is  
> and add another menu COMMAND-C (for Change To...) for switching  
> directly to another window. The alt-tab action should display a menu  
> instead of a line of icons but mostly it's OK for me.
>
> Always using direct access would be fine if there was a nice way to  
> differentiate between multiple windows effective. If I need to change  
> between Mozilla window #3 and NEdit window #12 every 15 seconds, how  
> do you think it should be done with direct access? COMMAND-C M 3 (for  
> mozilla window #3) and COMMAND-C N M 3 (for Nedit, more windows,  
> (#1)3). Major efficiency problem when compared to alt-tabbing.

Indeed there are major efficiency problems. I'd still like to have some  
way of going directly to a window, but I am having real difficulty  
working out a way to do this that works across title changes/orders  
that windows are opened/ect. If anyone else can figure it out we can go  
with their approach :)

>> released. In existing interfaces pressing [ctrl]-x to cut takes  
>> effect immediately the x key is depressed, and new commands can now  
>> be entered without first releasing the [ctrl] key (although 'alt-tab'  
>> behavious in existing systems breaks this rule, only taking effect  
>> when [alt] is released)
>
> I think that the CTRL key should work like it's working right now. For  
> copy/paste and such things doing the action immediately is the Right  
> Thing to do, IMO. The COMMAND key could work differently and I don't  
> see any problem with that.

I'd like to try having Copy/Paste behave as the QCS specifies. If it is  
a lot less efficient/really annoying, than it may be worth looking at  
the possibility of immediate execute of all commands (although this may  
reduce much of the power/consistency of the quasimode approach).

>>   * Autocompletion
>
> This is one of the things that won't work if you need to hold down  
> some key while entering the rest. With a good autocompletion system I  
> could efficiently enter commands with COMMAND-X to start up  
> autocomplete command which would work somewhat like bash: imagine that  
> I could enter S TAB (for "system") followed by SPACE (for next  
> parameter) and enter S TAB (for "shutdown") and press ENTER. Of I  
> could press TAB without anything to see all the choices in *that  
> context* (so after having "system" in front, the rest of the choices  
> would be similar to "system" menu in GUI).

Yeah, I'm shying away from using Autocompletion. It causes problems  
with habituation when menu items can change.

>>   * Display effect of command before command is executed
>
> At least for window manager commands this would be a big bonus: for  
> example, while the selection is over "minimize all", all windows would  
> be displayed semi-transparent... :D

That was my intention, but this needs to be looked at in more detail to  
see if it is feasible (I hope it is).

>>   * Replacing 'Alt-Tab' behaviour with go to window behaviour, which  
>> is better
>
> I think this is still under discussion.

And the discussion seems to have proved me wrong :)

>>   * How to deal with more commands than will fit on the screen
>
> See "bash". I think that something has been wrong when GUI menu has  
> more items that it can display without scrolling.

Any elaboration on 'See "bash"'? Would its way of doing things work  
well in a quasimode situation?

Karl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.