[Dillo-dev] Address bar keys (bug #1012)

Benjamin Johnson obeythepenguin at gmail.com
Fri Oct 21 06:03:08 CEST 2011


Rogutes Sparnuotos wrote:

> Benjamin Johnson (2011-10-20 15:56):How should dillo behave when a user  
> binds Ctrl-A?

It should perform the action bound to Ctrl-A, of course.

Just to clarify, the only thing I want to change is the key bindings when  
the user is typing in the URL input box.  Specifically, I'm talking about  
the CustInput::handle() function in ui.cc:
   http://hg.dillo.org/dillo/file/e82663b3c477/src/ui.cc#l96

Dillo intercepts several key bindings normally handled by the input box  
itself.  The problem is, some of these key bindings conventionally have  
different meanings than Dillo assigns (see below).

Not all the bindings are bad.  I'd keep the binding for Ctrl-L, for  
example, which rehighlights the input text when you're typing in the box.   
That's pretty intuitive, and matches the behavior of other browsers.

On the other hand, most users aren't familiar with Unix command line  
bindings, and even those who are usually don't expect that behavior in a  
graphical application such as Dillo.  It might be convenient, but  
usability isn't always about convenience; it's about doing what users  
*expect*.

Basically, a good interface is one an unwitting mere mortal could figure  
out without ever reading the manual, or even thinking too hard.  Joel  
Spolsky explains it a lot better than I do:
   http://www.joelonsoftware.com/uibook/fog0000000249.html

> > >Having it consistent over all text inputs and  configurable via>  
> >keysrc sounds reasonable to me. I don't know the keysrc details>  
> >though, so I might miss something.> >Cheers,> >JohannesHaving  
> input/insert mode and macros in keysrc would be interesting, if nottoo  
> complex.

It would be interesting, but it certainly would be complex, and I'm not  
sure the benefits outweigh the costs.  I suspect most users are probably  
fine with just the basic key bindings FLTK already provides.

There's also the matter of consistency, not just within Dillo, but between  
Dillo and other FLTK applications.  Part of the advantage of using a  
toolkit *is* the consistency; that was the original motivation behind KDE,  
for example.

> > I was thinking just a simple boolean option in dillorc -- and turn> it  
> OFF by default (i.e., no Unix keys), because it's not typical GUI>  
> behavior, and anyone who wants it on can quite easily set it in his> or  
> her own dillorc.Would be a strange dillorc option. A real patch would  
> implement this inkeysrc :)

Hard-coding is much stranger than either of those, and much uglier, too.

The dillorc option would actually make sense here, because these  
particular bindings usually go together as a group (it seems weird to do  
the Unix Ctrl-A, but not the others).  Though it would make more sense  
still just to leave well enough alone, since there's no real need to  
change the input box's behavior.

> Somehow I failed to notice that Ctrl-A for select all is "typical GUI 
> behavior", perhaps I am not using GUIs enough...
> [...snip...]
>Here, Ctrl-A goes to the beginning of the line in all the input boxes 
> ("find text", "web search", <input> in forms).

Ctrl-A is conventionally used for select all, and at least on Windows,  
FLTK binds it to select all in input boxes.  It may be that FLTK uses the  
Unix bindings (Ctrl-A for beginning of line, Ctrl-E for end, etc.) on  
those platforms, in which case Dillo's hard-coding that behavior is  
pointless and redundant.  I haven't booted into Unix in a while, so  
offhand I haven't checked.

Now, I know there will likely never be Windows support in mainline Dillo,  
and so you're probably wondering why Windows' key bindings should matter  
to you.  While Unix doesn't have any formal standards for graphical user  
interface design -- indeed, the X Window System was deliberately designed  
that way -- most toolkits tend to follow what Windows does.  Windows has  
explicit formal standards for command names, menu layouts, shortcut keys,  
etc., and not only are they standardized (at least on that platform),  
they're also well known since roughly 97% of desktop computer users run a  
Windows operating system.

(Microsoft also helped design Motif, if anyone remembers that -- which is  
kind of weird for me to say, since I was roughly two years old at the  
time.  Moving on...)

For reference, here's FLTK's human interface guidelines, which borrow  
"common elements from the CDE/Motif, GNOME, KDE, MacOS, and Windows  
environments":
   http://www.fltk.org/hig.php

And here's a list of standard accelerator keys from Qt's documentation,  
which explicitly recommends following Microsoft's recommendations:
   http://doc.qt.nokia.com/5.0-snapshot/accelerators.html

To get back on topic, what does all this mean for Dillo?  My own opinion  
is, the toolkit designers put a lot of thought into this stuff, and  
probably know more about how their widgets should behave than you and I  
do.  So personally, I don't think we should override that behavior at all  
unless there's a really good reason to do so.

> > Although I will add, the Shift-{Left,Right} bindings in the address>  
> bar *have* to go.  They're fine elsewhere, if a bit quirky, but in> the  
> address bar they interfere with text selection.  Ctrl-Tab and>  
> Ctrl-Shift-Tab are much more logical and convenient, anyway.> ~Benjamin 
> Are we using different versions of dillo? Shift-{Left,Right} doesn't do 
> anything here.

I'm talking about this block of code right here:
   http://hg.dillo.org/dillo/file/e82663b3c477/src/ui.cc#l117

Pressing Shift-{Left,Right} in the address bar moves between tabs, rather  
than selecting text as expected.  (Maybe something left over from dillo2?)

> For the arguments sake, how would having to press Ctrl-Shift-Tab be more 
> "logical and convenient" than Shift-Left? It's a matter of taste (habit). 
> In my opinion, both bindings have a disadvantage: Ctrl-Shift-Tab is 
> difficult for the fingers, Shift-Left is unusual to most people. That's 
> why it is configurable, isn't it?----  Rogut s Sparnuotos

Well, Ctrl-Tab's nice because of the obvious mnemonic; because it's really  
easy to type; and (you can probably guess what's coming) because it's  
familiar, since lots of other browsers use it.

In contrast, the Shift-{Left,Right} keys are much harder to type,  
especially on a cramped laptop keyboard where your fingers are right on  
top of each other.  And of course, it's a bit weird because I (and  
probably most users) associate those keys with "select text," not "change  
tabs."

Basically, what all this boils down to is that consistency is key.  Yes,  
it may be the hobgoblin of little minds, but when faced with an unfamiliar  
interface, *every* user has a little mind.

So anyway, there's my rant for tonight. :-)

Regards & cheers,
~Benjamin



More information about the Dillo-dev mailing list