ray
ray

Reputation: 71

How do you reference the meta and arrow key combinations in emacs init.el?

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

Answers (2)

ray
ray

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

Drew
Drew

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

Related Questions