سؤال

I'm running Mac OS X and GNU Emacs 22.3.1. I use a swedish keyboard. I am unable to type braces { }, [ ] in emacs. When trying to type braces I get parenthesis. Since I'm quite new to Mac and emacs I need a little help on configuring emacs to get this right.

هل كانت مفيدة؟

المحلول

(setq mac-option-modifier nil
      mac-command-modifier 'meta
      x-select-enable-clipboard t)

This is what I use for my swedish keyboard. It even works with svorak A5, if you use it :)

نصائح أخرى

You could also try:

(setq mac-option-key-is-meta t)
(setq mac-right-option-modifier nil)

I'm assuming that you're using a graphical emacs, and not just using the OS X bundled version from within Terminal.

To ensure that Emacs responds to keystrokes in the same way as other OS X apps, try the following:

(setq default-input-method "MacOSX")

And in particular, if you want to use the Option key to enter extended characters not on your keyboard (e.g. "Option-c c" => "ç"), use these settings:

(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'none)

(Put these commands in your ~/.emacs or ~/.emacs.d/init.el emacs startup file, and restart Emacs, or just "M-x eval-buffer" while editing the file.)

(setq default-input-method "MacOSX")

(setq mac-command-modifier 'meta
      mac-option-modifier nil
      mac-allow-anti-aliasing t
      mac-command-key-is-meta t)

Try this. You will be able to use the Alt key as a AltGR and for all the old M-x functions you will have to use your command key.

Bind the relevant keyboard shortcuts to anonymous functions that insert those characters, for example add these lines to ~/.emacs for European Portuguese:

(global-set-key "\M-(" (lambda () (interactive) (insert "{")))
(global-set-key "\M-)" (lambda () (interactive) (insert "}")))

(global-set-key "\M-8" (lambda () (interactive) (insert "[")))
(global-set-key "\M-9" (lambda () (interactive) (insert "]")))

Then save ~/.emacs with C-x C-s and reload it with M-x load-file and type ~/.emacs.

One downside is that this does not work in the mini-buffer, and typing "Alt-9" will insert text in the buffer and not the mini-buffer.

Comparison with other solutions: This solution maintains compatibility with other shortcuts using M-. The solutions by @monotux, @sanityinc, and Abdul Bijur V A do work, but they do not maintain that compatibility, e.g. Cmd-Q no longer quits the program and M-x no longer calls the mini-buffer to execute commands.

The solution by @patrikha doesn't suit touch-typing, which requires the same modifier commands on the right and the left side of the keyboard (Command, Alt/Option, Shift, and Control). For example, with this solution doing M-x requires the left thumb on the left Alt key and the left index finger on the S key, instead of the right thumb on the right Alt key. You could (setq mac-left-option-modifier nil), but that might require a change in habits for letters on the right side of the keyboard.

Notes: If you use AquaMacs, the wiki has a work-around in the section "Inputting {}[] etc. on non-English keyboards, or other keys with the Option modifier".

I also add this line to the end of ./emacs to show the matching of brackets and braces: (show-paren-mode).

I would try a Cocoa based emacs ie version 23. For a mac integrated emacs I would try Aquamacs

I had the same issue with a french keyboard. It looks like an Aquamacs issue (Carbon Emacs does not replace { with ()).

The change in emacs above work fine and I could type brackets but I could not use standard shortcuts anymore (Ctrl+C/Ctrl+V for instance).

Aquamacs provides a workaround. Menu Bar > Options > Option, Command, Meta keys > select ...Meta & French

It worked fine for me. However it may not work for swedish, no swedish keyboard option.

Using Aquamacs:

From the main menu, go to Options - Option, command, meta keys and select "option for composed characters".

The braces and the brackets work as with the standard Mac keyboard.

You don't need to remember those programming like things: Here is the answer. Go to Keyboard preferences, and check the "Show keyboard and character viewer in menu bar". After that, check on the menu bar near the battery meter for the icon and start double clicking any character you want.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top