Closed Bug 262905 Opened 20 years ago Closed 18 years ago

Add a way to change the backspace key behavior in the content area

Categories

(Firefox :: Shell Integration, defect, P2)

defect

Tracking

()

RESOLVED FIXED
Firefox 2

People

(Reporter: bzbarsky, Assigned: asaf)

References

Details

(Keywords: fixed1.8.1)

Attachments

(1 file)

I've just done some testing in various Linux graphical apps that show uneditable
things (what we do in browser) and which page down on space (like we do; this
excludes the obvious Windows port-over that is Adobe acrobat).  Here are the
results:

xdvi -- backspace does page up
Netscape 4 -- backspace does page up
emacs (patch viewer mode) -- backspace does page up
Konqueror -- backspace does nothing
Opera -- backspace does history back
Firefox -- backspace does history back
SeaMonkey -- backspace does nothing
gv -- backspace does page up
ggv -- backspace does page up

So it look to me like platform convention is to do page up on backspace
(including in nice GNOME apps like ggv).   The exceptions are all web browsers,
which are mostly copying IE.  If I've missed apps I should have tested, please
let me know.

I think we should follow platform convention here and make backspace do pageup.

Note that this is asking for the bug 208035 patch to be reversed.

Also note that the equivalent SeaMonkey bug (bug 36922) was wontfixed over a
good bit of protest.  I think the reasoning listed in that bug is quite valid.
Requesting blocking status, since if we ship 1.0 with this we'll never change
thereafter, citing all the users who're used to it (not like this has prevented
us from breaking this in the first place, but....)
Flags: blocking-aviary1.0?
devhelp ignores both space and bksp
monodoc does bksp -> pageup
I've used Linux as my home computer for over two years and never have I wanted
Backspace to do anything but go Back. If there's nothing in the GNOME HIG about
Backspace, I think the obvious thing to do is what everyone expects it to do in
a browser window: go Back.
> I think the obvious thing to do is what everyone expects it to do in a browser
> window

If we're doing anecdotal evidence, I've been using a browser on Linux for 8
years, and I expect it to go up (which it does in NS4, I might add).  Also,
konqueror users won't expect it to go back, by any means.

Let's not conflate "every IE user" with "every Linux browser user".  Given that
IE does not run on Linux, the two sets are really not the same.

The GNOME HIG doesn't seem to say anything about this, all the same.  Then
again, it doesn't say anything about using space for page down.  Let's remove
that too.
(In reply to comment #3)
> I think the obvious thing to do is what everyone expects it to do in
> a browser window: go Back.

(it's not "everyone": counter-example in comment 4.)

why is that an obvious thing?
(In reply to comment #4)

> Also, konqueror users won't expect it to go back, by any means.

True, but to go up in the page they would expect to use Shift+Space (or Page Up
of course), not Backspace, which makes more sense to me since the modifier
reverses the action and it also leaves the Backspace button free for something
else. Besides that, Konq users can configure everything to their hearts'
content. Not being able to configure keybindings with Mozilla products is the
root issue here. We wouldn't have all these keybinding bugs (well, at least not
as open bugs) if we copied KDE's lead.
I notice that no one has bothered to respond to the main point here.  With the
exception of Opera (which is copying IE), Konqueror, SeaMonkey (which is lost in
indecisive land), and Firefox (which this bug is about), all the other apps
tested have exhibited some very consistent behavior -- if space goes a page
down, then backspace goes a page up.  We must have a really good reason for
breaking with this, de-facto standard, behavior, right?  "IE does it" is not
really a good reason on Linux.
no way! imagine how hard we begged to get this into the linuxbuild, and now you
want to remove it?
firefox should compete with IE and opera, those two browsers use backspace to go
back in history, firefox should follow this.

please, invalid...
I'm not sure why "do whatever your competitors" do is the right way to compete.

And you've still not answered the main point.
My opinion:

1. Please see bug 208035 (which I reported) for why it is useful to have a
single key shortcut for History Back.

2. There are already excellent single key shortcuts for going up and down a
page: PageUp and PageDown. The fact that PageDown is such a common operation is
presumably why there is an additional shortcut for PageDown: Space. But this
does not convince me that Backspace should be Page Up. Since we already have a
single key shortcut for PageUp, the next most important operation that needs a
single key shortcut is History Back.

3. If you are going to propose assigning Backpsace to Page Up, please propose an
alternative single key shortcut for Browser Back and describe how it matches the
conventions and usability arguments that you feel are important. Alternatively,
please describe why you feel History Back does not deserve a single key shortcut.

4. Your examples of other apps which use Backspace as PageUp are not very
convincing to me. The list of apps you give which have this behaviour is: xdvi,
netscape 4, emacs in patch viewer mode, gv, and ggv. These apps:

* have a much smaller audience than firefox

* generally have weird interfaces (yes emacs patch viewer may be excellent for
programmers, but for general users a wiki is probably a better interface for
versioning documents). Even comparing just within your list there seems to be no
clear agreement on how to expose features to the user.
Sorry but I have more to say on this.

There are several key arguments here:

1. Is it useful to have a single key shortcut for History Back?

2. Is Backspace a useful shortcut for History Back?

3. What is the convention that the audience will be familiar with?

For (3) I regard the potential audience as all web broswer users. This means
pretty much all computer users. More specifically it includes:

a. people who only use Linux desktops and have been using them for some time

b. people who use Linux as well as other desktops

c. people who mostly use Windows but are starting to use Linux

A shortcut is most useful if it works in most contexts. Since I am in group (b)
that means Backspace is not useful to me on Windows until it also works on
Linux. In practice, sometimes I forget because I am thinking about web browsing,
not which OS I am running, so I hit Backspace and get annoyed when it doesn't
work. This annoyance will occur for keyboard shortcut users in groups (b) and
(c) and the annoyance will be associated with Linux because that is where this
useful shortcut does not work.

Note that this annoyance is not because of any bias I have towards Microsoft. I
generally find Linux faster and easier for the things I want to do with a PC.
Yet more I'm afraid:

Given that audience (a) is much smaller than (b) and (c), couldn't the Backspace
== PageUp behaviour be implemented in an extension? Perhaps along with a bunch
of other traditions from emacs, NS4 and friends. 

<joke>If you wanted to really live up to tradition, you could emulate NS4
properly with regular crashes, enourmous rendering lags, and impossible motif
drop down form menus.</joke>

As for the Backspace == Page Back data loss argument (which has not yet been
raised here but has been in other discussions of Backspace) I think this is a
separate bug. Any info which a user enters into a form should be persistent and
recoverable across page navigation, app crashes, OS crashes, and restarts. As
far as the user is concerned it should be persistent across computers also, as
long as there are appropriate privacy safeguards.

E.g.

User types long email in webmail.

Sometimes the user manages to mix up the focus and goes back a page. (Or they
accidentally close the window, kick out the power cord, battery goes flat, etc.
etc.)

Webmail software should handle this by gracefully restoring the text when the
user presses compose again.

If not, the browser should gracefully offer an option to the user to restore
their previously typed text.
> Any info which a user enters into Aa form should be persistent and
> recoverable across page navigation

That would be a major security bug in many cases, actually (think banking
information, passwords, etc).

I agree with your key arguments.  In order:

> 1. Is it useful to have a single key shortcut for History Back?

Yes.

> 2. Is Backspace a useful shortcut for History Back?

Not on Linux, for various reasons.  The most important one to me is that it
really is breaking platform conventions.  You don't like my list of apps tested,
so feel free to suggest other apps that expose similar functinality.  biesi
mentioned two more, for example.

> 3. What is the convention that the audience will be familiar with?

I would have to assume that would be the convention that GNOME applications use.

> For (3) I regard the potential audience as all web broswer users.

It would need to be "all web browser users using Firefox on Linux", which is not
the same thing at all.  Also note that we're not doing the "backspace == back"
thing on the Mac, for good reasons (platform convention).

> and (c) and the annoyance will be associated with Linux

You must have meant "non-Windows" (see previous paragraph).

In short, there are already rnough key binding differences between Firefox
versions on different OSes that I don't think another one is a big deal.  I do
think following what's a pretty clear platform convention is pretty important.
Oh, and as far as having a different shortcut bor "back" (which I do agree is a
good idea), as far as I can tell F2, F4, F8, F9, F10, F12 are all available.

And one other thing:

> Even comparing just within your list there seems to be no clear agreement on
> how to expose features to the user.

Except for this amazingly clear agreement on how space and backspace act, eh? 
Isn't that the whole point of a platform convention?  That apps follow it even
if they're generally doing different things?
I guess that less than 1 out of every 10,000 people who will use Firefox, have
never used IE. I think browser convention is more important here than platform
convention.

Websites don't look like the native platform. Should we go even further and
force all fonts and colors to be the standard GNOME Application Font and follow
the user's current GNOME style? This analogy may seem silly to you, but to me it
sums up my point. Websites are a very different thing than PDF or text files,
and there is a lot of behavior unique to web browsers relative to other
applications.

I think that because IE uses Backspace, and because I know several not so tech
savvy people who like IE's Backspace behavior (so we're not just copying IE to
copy IE, we're copying IE because it had an idea that users like), Firefox
should go Back when the user presses Backspace.

By the way I think the data loss thing is silly, everyone I've ever known knows
how to Undo (and anyone meaning to go Back might expect their data on the form
to be lost anyway).
> I think browser convention is more important here than platform convention.

In that case, why are we doing native rendering of form controls instead of
rendering them exactly like IE?  Why are we doing native rendering of the
browser UI instead of looking exactly like IE?

> Websites don't look like the native platform.

pageup/pagedown shortcuts are part of the browser UI, not part of the website. 
And I was under the impression that Firefox was trying to follow platform
convention for the browser UI.

> Should we go even further and force all fonts and colors to be the standard
> GNOME Application Font and follow the user's current GNOME style?

In the browser's UI?  We already do all that, last I checked.

> and anyone meaning to go Back

The point is that backspace makes it easy to go back when what you _meant_ was
to edit text in a form control (for example if you miss clicking on the control
and don't notice that the caret isn't blinking, or if the website has a weird
tab order).
In any case, I see that this bug is headed into the "he who shouts loudest wins"
direction of SeaMonkey UI bugs of yore, so I'm going to stop commenting.  I
believe I've made my case; the rest is up to the module owner to decide on.
> everyone I've ever known knows how to Undo

please explain how, given a cache-control:no-store page.
(In reply to comment #11)
> This annoyance will occur for keyboard shortcut users in groups (b) and
> (c) and the annoyance will be associated with Linux because that is where this
> useful shortcut does not work.
If we add the new linux shorcut to win32, keeping backspace (like currently with
ctrl+R and F5), people could get used of this new one instead of backspace,
especially if they think about switching to linux..

(In reply to comment #15)
> By the way I think the data loss thing is silly, everyone I've ever known knows
> how to Undo
Then what about bug 206695 ?
(In reply to comment #13)
> > Any info which a user enters into Aa form should be persistent and
> > recoverable across page navigation
> 
> That would be a major security bug in many cases, actually (think banking
> information, passwords, etc).

That's not fair to my argument. I said that anything a user types should be
persistent as long as there is respect for privacy. So you need the same privacy
management applied as for cookies etc.

The bigger point however is that data loss should be an independent bug. There
are many other ways to trigger data loss by accidental page navigation. I guess
it's my fault: I did introduce the topic to this bug.

> > For (3) I regard the potential audience as all web broswer users.
> 
> It would need to be "all web browser users using Firefox on Linux", which is not
> the same thing at all.  Also note that we're not doing the "backspace == back"
> thing on the Mac, for good reasons (platform convention).
> 
> > and (c) and the annoyance will be associated with Linux
> 
> You must have meant "non-Windows" (see previous paragraph).
> 
> In short, there are already rnough key binding differences between Firefox
> versions on different OSes that I don't think another one is a big deal.  I do
> think following what's a pretty clear platform convention is pretty important.

Actually that's one of the great things about firefox. My fingers don't have to
remember which OS I'm using, only something more relevant to what I'm actually
doing, which is browsing the web using the best browser software available.

Except if I press backspace. Which is something I will do many many times a day
once I upgrade the various Linux desktops I use to the latest firefox, so that I
can resume using this useful shortcut.

The difference in keyboard shortcuts between platforms is very small and shrinking:

http://texturizer.net/firefox/keyboard.html

I maintain that if you split the firefox audience into people who only use Linux
and those who use Linux as well as other platforms, then the pure Linux users
will be a much smaller part.

And I feel that an important and successful part of firefox's design is that
consistency between firefox on different platforms is given a similar priority
to consistency with other apps on specific platform.
Backspace should *NOT* do anything, to have it do anything interferrs with FAYT.
Just try typing using fayt and then hitting backspace one too many times, you're
on the wrong page.


Steps to reproduce:
1) Load a page, click on a link (So you have a history)
2) Start using find-as-you-type
3) Hit backspace one more time than you have number of characters

Result:
You go back a page (And perhaps loss of infomation in forms etc)

Expected results:
It ignores it so you can redo your FAYT on the correct page.

Perhaps disable if fayt has been used recently, or disable if fayt is enabled.
Or disable entirely.
It doesn't interfere with FAYT at all.  Interfering would suggest that the
functionality of FAYT is somehow broken.  If I backspace everything while using
Find, it doesn't go back for me, using a Windows build at least (which is
identical for this part of the code).

Since, afaik, the Great Backspace Debate for UNIX left no winners, we're
basically in a situation where we can either go with a solution where users have
to move their hands a lot farther to use a really common shortcut (i.e. the
function keys), or break with platform convention in favour of app convention. 
I'm still leaning towards app convention, keeping in mind that Shift-Space does
page up, and on most keyboards that I have seen, the backspace key isn't that
far from the page up key.
> If I backspace everything while using Find, it doesn't go back for me,

It depends on whether you backspace quickly enough that the find toolbar doesn't
go away.  If you happen to wait that one microsecond too long, suddenly the key
means something totally different.  Which is _really_ bad UI, btw.

As for "move a lot further", it's about 3/4 of an inch on a typical keyboard
from Backspace to F12.  It't about 4 times as far from Backspace to PageUp
(again on a typical keyboard; some laptop keyboards have neither a F12 key nor a
PageUp key that's easily reachable).  So I'm not sure how you can make the claim
that "the backspace key isn't that far from the page up key" in the same breath...
(In reply to comment #21)
> Backspace should *NOT* do anything, to have it do anything interferrs with
> FAYT. Just try typing using fayt and then hitting backspace one too many 
> times, you're on the wrong page.

[FAYT == find as you type]

Avoiding this is simple. If you want to clear FAYT, just press Escape. The new
FAYT status bar gives excellent feedback, and will I'm sure be refined to make
this sort of micro operation even smoother.

Plus, FAYT is a relatively advanced feature. 

Having an easy keyboard shortcut for going back is going to have a much larger
audience than FAYT, even after allowing for the fact that many users will never
use keyboard shortcuts at all.

People who are used to backspace being pageup are probably technically advanced
users relative to the general keyboard shortcut using audience. Such technical
users are more likely to seek out customizations such as changed keyboard shortcuts.

Also look at the tab key. Tab auto-complete in the location bar breaks the
general convention that tab jumps between parts of a window... but it's so handy
that it's worth it. You could argue that Microsoft's auto-complete using the up
and down arrows is more "logical" but in practice it's a pain in the neck to use.

I feel like that with backspace for history back. It maybe breaks some
conventions, but it's such a useful time saver!

User interfaces are a language for communicating with the software. Like any
language, it's good to have rules, but it's good to break them sometimes too.
Investigate after 1.0. 
Flags: blocking-aviary1.0? → blocking-aviary1.0-
Given comment 1, I assume that means wontfix, eh?
Flags: blocking-aviary1.1?
You know, there's a patch somewhere that's adding an int pref to this, I think
for Seamonkey, that may be a solution in part here as well.  If PgUp is really
more correct, then we can do that, and let the IE people change the pref.  Then
of course, once we have the dynamic keybindings bits in place we'll be able to
have an IE-like setup for users to select even if they're on Linux.
Keywords: access
Flags: blocking-aviary1.1? → blocking-aviary1.1-
This really needs to be changed IMHO. Backspace interfering with navigation is
extremely annoying. I don't see why it should be imposed on Linux users and not
Mac users, considering that IE does not run on Linux. I find that it does
interfere with FAYT, as well as situations where the focus is misplaced.
This single bug is keeping me from using Firefox as my default browser (and the 
annoying scrolling bookmarks menu). And this is coming from one who has been 
mostly a Netscape user on Windows for a decade. I have never ever liked Internet 
Explorer, and have never considered any of its behaviors to be "correct" in any 
way, shape, or form. Please let the user be able to fix this errant Backspace 
behavior easily. Now that Opera released free registration codes (and I can 
easily edit its keybindings), I am seriously considering it as the browser of 
choice, since it gives the user more control. I should not have to install a 
buggy extension just to fix something that has been broken for quite some time 
in Firefox / Firebird / Phoenix / Mozilla / Netscape 7 / etc.
*** Bug 301744 has been marked as a duplicate of this bug. ***
(In reply to comment #28) 
> Backspace interfering with navigation is extremely annoying. 
 
It's more than annoying, it's downright infuriating sometimes. Give the user a 
way to change it or at /least/ turn it off, but don't leave it the way it is. 
> It's more than annoying, it's downright infuriating sometimes. Give the user a 
> way to change it or at /least/ turn it off, but don't leave it the way it is. 

Perhaps another consideration also, is inadvertently triggering a 'back' and
re-posting form data from a previous post.  
Depends on: 220590
Taking.
Assignee: bugs → bugs.mano
Flags: blocking-aviary1.5-
Flags: blocking-aviary1.0-
Priority: -- → P2
Target Milestone: --- → Firefox1.6-
Version: 1.0 Branch → Trunk
Status: NEW → ASSIGNED
Attached patch patchSplinter Review
port of CTho's patch.

I didn't change the default on gtk* yet.
Attachment #199630 - Flags: review?(mconnor)
Comment on attachment 199630 [details] [diff] [review]
patch

ok, not needed for 1.5, and we'll discuss the default separately
Attachment #199630 - Flags: review?(mconnor) → review+
mozilla/browser/base/content/browser-sets.inc 1.60
mozilla/browser/base/content/browser.js 1.524
mozilla/browser/app/profile/firefox.js 1.87

Leaving open until we sort out the default behavior for gtk1/2.
FWIW Epiphany on GNOME does nothing (at least not that I can tell) for Backspace.
Blocks: 325541
No longer blocks: 325541
Summary: On Linux, backspace should be page up, not history back (platform convention) → Add a way to change the backspace key behavior in the content area
Blocks: 325541
Attachment #199630 - Flags: branch-1.8.1?(mconnor)
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
I've added browser.backspace_action = 1 to my preferences and restarted twice, but it has no effect.  I'm running the official binary distribution of Firefox 1.5.0.1 (Gecko/20060124), so it shouldn't be a local install problem.  (Firefox 1.5 had the same problem.)

this is really turning me crazy. after 15 years of Unix, it's hard to stop using BackSpace for up (and Space for page down).  every other application I use understands those keys (Evolution, less, gv, evince, Emacs (in view-mode), xv, feh, and so on)  I honestly can't think of any exceptions (I use neither Opera nor IE :-)
See comment 35 for the state of this in 1.5.  :(
Attachment #199630 - Flags: branch-1.8.1?(mconnor) → branch-1.8.1+
Whiteboard: [checkin needed (1.8 branch)]
MOZILLA_1_8_BRANCH
Checking in app/profile/firefox.js;
/cvsroot/mozilla/browser/app/profile/firefox.js,v  <--  firefox.js
new revision: 1.71.2.24; previous revision: 1.71.2.23
done
Checking in base/content/browser-sets.inc;
/cvsroot/mozilla/browser/base/content/browser-sets.inc,v  <--  browser-sets.inc
new revision: 1.51.2.15; previous revision: 1.51.2.14
done
Checking in base/content/browser.js;
/cvsroot/mozilla/browser/base/content/browser.js,v  <--  browser.js
new revision: 1.479.2.77; previous revision: 1.479.2.76
done
Keywords: helpwantedfixed1.8.1
OS: Linux → All
Hardware: PC → All
Whiteboard: [checkin needed (1.8 branch)]
You need to log in before you can comment on or make changes to this bug.