Programmers typing on the UK Mac keyboard have a problem with #
# is commonly used in programming languages and the Mac UK layout puts # on ⌥ 3 (Alt-3), as opposed to Shift-3 on the US layout or Windows UK layout.
This is a particular problem in Emacs, which interprets the ⌥ (Alt) key press as the Meta key and so Emacs receives M-3 instead of #.
My first approach was just to make M-3 insert #:
(define-key brf-mode-map "\M-3" (lambda () (interactive) (insert ?#)))
This hoses bookmark 3 in brf-mode, but losing one bookmark seemed like a compromise I could live with.
However it turns out this was a pretty dumb idea (😖), as it stops all the uses of # other than inserting, for example searching for # ! It also stops me typing the command for server-edit (C-x #), which is a very common usage for me.
Looking around the web, people had some "creative solutions" for this problem:
(define-key key-translation-map "\M-3" "#")
This still hoses Bookmark 3 for me, but will work well for most people.
(setq ns-right-alternate-modifier (quote none))
This means I can use right ⌥ (Alt) for # and € and retain left ⌥ (Alt) for normal Emacs usage, like brf-mode Bookmark 3.
This is a great solution for my usage, but your mileage my vary!
# is commonly used in programming languages and the Mac UK layout puts # on ⌥ 3 (Alt-3), as opposed to Shift-3 on the US layout or Windows UK layout.
This is a particular problem in Emacs, which interprets the ⌥ (Alt) key press as the Meta key and so Emacs receives M-3 instead of #.
My first approach was just to make M-3 insert #:
(define-key brf-mode-map "\M-3" (lambda () (interactive) (insert ?#)))
This hoses bookmark 3 in brf-mode, but losing one bookmark seemed like a compromise I could live with.
However it turns out this was a pretty dumb idea (😖), as it stops all the uses of # other than inserting, for example searching for # ! It also stops me typing the command for server-edit (C-x #), which is a very common usage for me.
Looking around the web, people had some "creative solutions" for this problem:
Inserting # handling into all the various keymaps
This seems to be the most popular "solution", but for me this is like playing "whack-a-mole" and doomed to failure (apart from being really ugly). You really want to do the translation at a much earlier stage in the input chain.Pretending to be Australian
The Mac Australian layout is identical to the UK layout, but # is back on Shift-3 (and £ is removed). While this works well unless you want to type a £, having the Australian flag permanently displayed on my Mac menu bar is step too far for me 😀Changing Low-level Keyboard Translation
This looks a lot more promising, as the earlier in the input chain you do the translation the better:(define-key key-translation-map "\M-3" "#")
This still hoses Bookmark 3 for me, but will work well for most people.
Make Emacs ignore Right Alt
Emacs for MacOS has some specific settings of how the meta keys are handled. One of which is to ignore the key press (ie don't interpret it as a meta key press).
So I decided to ignore the right ⌥ (Alt) key with:
This means I can use right ⌥ (Alt) for # and € and retain left ⌥ (Alt) for normal Emacs usage, like brf-mode Bookmark 3.
This is a great solution for my usage, but your mileage my vary!
Comments
Post a Comment