Reputation: 71
I am trying to override Meta + left / right arrow keys in my emacs config and cannot figure out how to refer to the key sequence.
If I interact with Emacs directly I can type "M-x, global-set-key, M-, next-buffer", and it works fine. But I can't figure out how to type this into my init.el file. These are some things that I have tried:
(global-set-key "\M right" 'next-buffer)
(global-set-key "\M <right>" 'next-buffer)
(global-set-key [\M right] 'next-buffer)
(global-set-key [M right] 'next-buffer)
(global-set-key [M-right] 'next-buffer)
(global-set-key (kbd M-<right>) 'next-buffer)
(global-set-key [M (kbd <right>)] 'next-buffer)
etc.
More Info:
OK, this does work natively: (global-set-key [M-right] 'next-buffer)
(thank you) - it's not working on iTerm2 in a VM (minor detail :)
And for that environment: M-x describe-key
does not open help but in *Messages*
prints: ESC <right> (translated from ESC M-[ C) is undefined
And that's why I was confused and was not able to just paste that into kbd. And that's why I don't think it is being trumped by another mode.
Upvotes: 6
Views: 3073
Reputation: 71
Solved: (global-set-key (kbd "ESC <right>") 'next-buffer)
Thanks - I needed the combination of kbd
and what to pass it.
Upvotes: 0
Reputation: 30701
The easiest way to specify a key binding is always to use kbd
.
(global-set-key (kbd "<M-right>") 'next-buffer)
kbd
takes as argument an external key description, i.e., what Emacs tells you when you use C-h k
.
Use C-h k
, press and hold the Meta (e.g. Alt) key, and hit the right arrow key. Buffer *Help*
tells you that this key sequence is written "<M-right>"
. So that's what you pass to kbd
.
Upvotes: 6