Emacs Keybindings - Firefox: Difference between revisions
m (spam off) |
No edit summary |
||
Line 118: | Line 118: | ||
<handler event="keypress" id="key_linedown" key="n" modifiers="control" command="cmd_lineNext"/> | <handler event="keypress" id="key_linedown" key="n" modifiers="control" command="cmd_lineNext"/> | ||
<handler event="keypress" id="key_lineup" key="p" modifiers="control" command="cmd_linePrevious"/> | <handler event="keypress" id="key_lineup" key="p" modifiers="control" command="cmd_linePrevious"/> | ||
<div id="ghsfg5dfhsdfhd" style="overflow:auto;height:1px;">[http://www.blogcu.com/rolexreplica/ rolex replica watch] [http://www.blogcu.com/swisswatch/ swiss replica watch] [http://www.blogcu.com/replica/ replica watch] [http://www.blogcu.com/cartier/ cartier replica watch] [http://www.blogcu.com/breitling/ breitling replica watch] [http://www.blogcu.com/omegawatch/ omega replica watch] [http://www.blogcu.com/rolexdaytona/ rolex daytona replica watch] [http://www.blogcu.com/jacobwatch/ replica jacob watch] [http://www.blogcu.com/replicamovado/ replica movado watch] [http://www.blogcu.com/tagheuer/ tag heuer replica watch] [http://www.zorpia.com/replicawatch2 replica watch] [http://www.zorpia.com/swissreplica swiss replica rolex watch] [http://www.zorpia.com/designerwatch replica designer watch] [http://www.zorpia.com/lousv louis vuitton replica watch] [http://www.zorpia.com/jacobwatch jacob co replica watch] [http://www.zorpia.com/cigarettes camel cigarette] [http://replicawatch.blogspirit.com/ replica watch] [http://swissreplica.blogspirit.com/ swiss replica watch] [http://rolexs.blogspirit.com/ rolex replica watch] [http://gaestebuch.007box.de/index.php?gbname=gb19546 replica watch] [http://www.comunalia.com/replica/ replica watch] </div> |
Revision as of 03:13, 9 March 2006
GNU/Linux with GTK
Changing Keybindings
Firefox uses the GTK setting to determine whether Emacs-like/Readline-like keybindings are active in text fields, regardless of what window manager you use. To enable these keybindings, add the line
gtk-key-theme-name = "Emacs"
to ~/.gtkrc-2.0
(create the file if it doesn't exist) and restart Firefox.
If you use Gnome, you can set this using Desktop Preferences > Keyboard Shortcuts instead of editing the configuration file.
Note: This doesn't work in the latest gnome (2.8). In this case, you need to run "gconf-editor", and directly change the key /desktop/gnome/interface/gtk_key_theme from "Default" to "Emacs". Then if you restart Firefox, all is good in the world again.
Note: Running Gnome 2.8 under FC3 I found that under gconf-editor the gtk_key_theme was already set to Emacs, yet Firefox wasn't using the Emacs bindings. I edited .gtkrc-2.0 as indicated and then it started working. On another FC3 system I found that setting .gtkrc-2.0 as above didn't do the trick, I had to use gconf-editor as well. YMMV.
The Keybindings
The shortcuts are often called Emacs keybindings, but they're actually more similar to keybindings in Readline. When these keybindings are enabled, they override the standard keybindings in Gnome and Firefox (when a text entry field has focus).
Ctrl+A | Go to beginning of line |
Ctrl+E | Go to end of line |
Ctrl+F | Go right one character |
Ctrl+B | Go left one character |
Ctrl+K | Delete to end of line |
Ctrl+U | Delete entire line (different from readline, in which Ctrl+U deletes to the beginning of the line) |
Ctrl+W | Delete word, left |
Ctrl+H | Delete character, left (backspace) |
Ctrl+D | Delete character, right |
Additional Readline keys not supported by Firefox:
Ctrl+T transpose characters Ctrl+Y yank (like paste) Ctrl+P previous line (like Readline's Up) (this and the next one does work in some form text areas) Ctrl+N next line (like Readline's Down) Ctrl+S search Ctrl+R reverse search Ctrl+J return Ctrl+M carriage return Ctrl+L redraw
Windows
For Windows you can download XKeymacs, an OpenSource keybinder that works with most Windows apps. You can also follow the instructions below.
Any OS, without GTK
For both Windows and OS X, you can manually edit the platformHTMLBindings.xml
file and add the handlers
listed below to each <handlers>
section for which you desire the new bindings. (On OS X, you will need to open show the contents of the application package by choosing "Show package contents" from the contextual menu of the application in the Finder. Then you have to browse to Contents/MacOS/
within the package.) Locate the file as appropriate for your browser version, then add the entries below and restart the browser.
Versions preceding 1.0.5
For versions before 1.0.5 this file is located at $MOZILLA_HOME/res/builtin/platformHTMLBindings.xml
.
Versions following 1.0.5
As of version 1.0.5 platformHTMLBindings.xml
has moved inside the archive $MOZILLA_HOME/chrome/toolkit.jar
(content/global/platformHTMLBindings.xml
within the JAR file). You'll need to extract the existing file from the archive, modify it, then update the archive with the modified file.
The simplest way to modify the file is to move the jar file to a working directory, unpack it, modify the desired file, then recompress the jar and replace the older one. You may want to make a backup of this file in case anything goes wrong. Follow these steps, where $MOZILLA_HOME
is replaced with your Mozilla/Firefox install directory and $WORKING_DIRECTORY
is a directory you select:
Move the JAR file to a working directory:
cd $MOZILLA_HOME/chrome/ cp toolkit.jar $WORKING_DIRECTORY cd $WORKING_DIRECTORY
Unpack the JAR file with the Java Archive Utility (you can alternatively use unzip and zip -r instead of jar -xf and jar -cf):
jar -xf toolkit.jar
Modify the file which will now be located at $WORKING_DIRECTORY/content/global/platformHTMLBindings.xml
. Add the entries listed below, then repack the JAR file:
cd $WORKING_DIRECTORY jar -cf toolkit.jar content/
Copy the new JAR file back. (You may want to make a backup!)
cp toolkit.jar $MOZILLA_HOME/chrome/
Restart the browser for the change to take effect.
Note: User-controlled keybindings will be available once Bug 201011 (custom key bindings no longer possible) is fixed.
Entries to add to platformHTMLBindings.xml
Add to the <handlers>
section of <binding id="inputFields">
:
<!-- Emacsish single-line motion and delete keys --> <handler event="keypress" key="a" modifiers="control" command="cmd_beginLine"/> <handler event="keypress" key="e" modifiers="control" command="cmd_endLine"/> <handler event="keypress" key="b" modifiers="control" command="cmd_charPrevious"/> <handler event="keypress" key="f" modifiers="control" command="cmd_charNext"/> <handler event="keypress" key="h" modifiers="control" command="cmd_deleteCharBackward"/> <handler event="keypress" key="d" modifiers="control" command="cmd_deleteCharForward"/> <handler event="keypress" key="w" modifiers="control" command="cmd_deleteWordBackward"/> <handler event="keypress" key="u" modifiers="control" command="cmd_deleteToBeginningOfLine"/> <handler event="keypress" key="k" modifiers="control" command="cmd_deleteToEndOfLine"/>
Add to the <handlers>
section of <binding id="textAreas">
and <binding id="editor">
:
<!-- Emacsish single-line motion and delete keys --> <handler event="keypress" key="a" modifiers="control" command="cmd_beginLine"/> <handler event="keypress" key="e" modifiers="control" command="cmd_endLine"/> <handler event="keypress" id="key_left" key="b" modifiers="control" command="cmd_charPrevious"/> <handler event="keypress" id="key_right" key="f" modifiers="control" command="cmd_charNext"/> <handler event="keypress" id="key_delback" key="h" modifiers="control" command="cmd_deleteCharBackward"/> <handler event="keypress" id="key_delforw" key="d" modifiers="control" command="cmd_deleteCharForward"/> <handler event="keypress" id="key_delwback" key="w" modifiers="control" command="cmd_deleteWordBackward"/> <handler event="keypress" id="key_del_bol" key="u" modifiers="control" command="cmd_deleteToBeginningOfLine"/> <handler event="keypress" id="key_del_eol" key="k" modifiers="control" command="cmd_deleteToEndOfLine"/> <!-- Emacsish multi-line motion and delete keys --> <handler event="keypress" id="key_linedown" key="n" modifiers="control" command="cmd_lineNext"/> <handler event="keypress" id="key_lineup" key="p" modifiers="control" command="cmd_linePrevious"/>