Re:Mastering Key Bindings in Emacs
by funptr on Tuesday February 08, 2011 @10:51PM
(#2196208)
This one prompts you to type a literal key sequence (exactly like with `describe-key', C-h k) and inserts it at the point in a representation that the *-set-key functions can use. As written it's bound to to C-c k, and only in the scope of elisp buffers.
Unfortunately it doesn't seem to work for mouse chords.
[ Parent
| on HN ]
Re:Mastering Key Bindings in Emacs
by silentbicycle on Wednesday February 09, 2011 @07:56AM
(#2197262)
Nice. I tried to write a quick version of this for my response, but wasn't aware of insert-key-sequence.
Edit: insert-key-sequence doesn't exist on Emacs 22.3.1, is that a more recent addition?
Also, while not crucial, I prefer to add a my-X-mode-hook function and add things to that, rather than adding several lambdas to the mode hook - it's easier to modify them all after binding that way.
It's not part of emacs, I just wrote it as an example.
Re:Mastering Key Bindings in Emacs
by silentbicycle on Wednesday February 09, 2011 @10:29AM
(#2197676)
Oh, right. Sorry, hadn't had my coffee yet.
I tried doing exactly that, but used (interactive "kKey: "), with lowercase k, and it didn't work.
That seems to work also, what's the problem?
Re:Mastering Key Bindings in Emacs
by silentbicycle on Wednesday February 09, 2011 @10:40AM
(#2197745)
Didn't work correctly with a few slightly-more elaborate key combinations I tried. IIRC C-x M-. was one of them.
I much prefer formatting the keybindings like kbd uses, anyway - do you know offhand how to convert a keypress to that format w/out using C-h k?
Not offhand, but I looked it up and I think what you want is `key-description'. It prints key sequences, so e.g. (key-description "\370") evals to "M-x".
Re:Mastering Key Bindings in Emacs
by silentbicycle on Wednesday February 09, 2011 @11:24AM
(#2197974)
Bingo. Thanks.
This should do what the original commenter wanted:
(defun insert-keybinding (k)
"Insert code for a keybinding."
(interactive "kKey sequence: ")
(insert (concat "(global-set-key (kbd \""
(key-description k)
"\") 'function-name)")))