I thought I'd jot this down as it may be of use to others too...
Problem: A buffer binding uses a certain key combination you just can't
get on with, how do you change it? As an example I can't get on with
binary mode's rebinding of Alt-down to binary-move-forward, I would
prefer to bind this to Shift-down and leave Alt-down as scroll.
Changing global binding are easy, add global-bind-key lines to your
<user>.emf should do the trick, but changing buffer bindings are
more difficult as they depend on the buffer's major-mode configuration.
Below I outline two methods, one which will change the binding for all
major-modes and one which targets a specific major-mode - choose the
most appropriate to you.
1) Change the binding for all major-modes
This can be done by taking advantage of the emulation feature, if you
already use an emulation (user-setup -> Start-up -> Emulation)
then you may need to append your mappings. ME's emulation buffer
key-binding mapping is performed whether emulation is enabled or not,
it simply looks for the key binding in a list variable and if found it
looks at another list variable to get the mapping, i.e.:
so for my example I need to add the following two lines to my
set-variable .buffer-bind-key.map-from "|A-down|A-up|"
This does the trick, but for my issue this is a bit excessive as this
problem only occurs for binary mode.
set-variable .buffer-bind-key.map-to "|S-down|S-up|"
2) Change the binding for a specific major-mode
This is a little more tricky and is not guaranteed to work in all cases
(see below), this method simply modifies the major-mode's key binding
key list as follows:
set-variable .fhook-<mode>.command-kbind &rep &rep ...
&rep .fhook-<mode>.command-kbind "|<from-bind1>|"
"|<to-bind1>|" "|<from-bind2>|" "|<to-bind2>|" ....
The above should all be on one line and there needs to be N
'&rep's. This line needs to be added to the file
'my<mode>.emf' located in your setup path (i.e. same folder as
your <user>.emf). So for my example I have the following
---- mybinary.emf start ----
set-variable .fhook-binary.command-kbind &rep &rep
.fhook-binary.command-kbind "|A-up|" "|S-up|" "|A-down|" "|S-down|"
---- mybinary.emf end ----
If you don't know what '<mode>' go into the buffer and then
execute 'list-variables' (Help -> List Variables) and look at the
This will work for the vast majority of major modes, but some use a
slightly different binding setup (diff, latex & nroff), for these
you should look for the offending 'set-variable
.fhook-<mode>.command-# ....' line and copy it into your
my<mode>.emf file and modify it.
I hope this will be of help to you,