12

I started using Emacs and I wrote a text in Greek. The problem is that the stress that is used upon some letters (ό, ύ, ί, ύ) doesn't work!

It is usually inserted by pressing the ; (I mean by pressing the key next to L) and then the letter upon which will be inserted. That's standard for a Greek keyboard. When I press the ; it says:

<dead-acute> is undefined. 

C-h c ; says the same thing.

What can I do to be able to use this key?

It works in other applications, such as a browser. I use Ubuntu 14.04 and I installed its emacs package (Emacs 24.3.1).

Adam
  • 2,407
  • 2
  • 21
  • 38
  • I've encountered this issue myself before, but I can't remember what was the cause. Make sure your operating system isn't using a different keyboard layout for Emacs. Some OS can have application-specific keyboard layouts, so even though that key works everywhere else the problem could be in the system. If that's not it, I'm sure somebody will have your answer here. :-) – Malabarba Oct 24 '14 at 23:16
  • (Not sure if this helps.) I have this problem depending on what my OS keyboard input mode is. My default keyboard input uses 'dead keys' so I can add â©çéñtß; but I sometimes want to input (ancient) Greek in Emacs using `greek-ibycus4`, and the two systems clash. I work around this problem by changing my general input to a non-dead key layout (using, e.g., `setxkbmap -layout us`); then I switch modes in Emacs; then I switch back to the `ucs` input method for Emacs and run `setxkbmap -layout us -variant intl` to get back my dead keys. ... Not ideal!! But I don't need Greek very often either. – jon Oct 25 '14 at 03:55
  • Thank you for your comments but the problem is that stresses are basic in Greek. Almost every word needs a stress and it is obviously working everywhere else so I don't know what to do. – Adam Oct 25 '14 at 06:16
  • @Adam -- I should've also asked: what is your default keyboard layout for Ubuntu? Obviously you are not writing Greek now, so there may be a mismatch between your OS-defined keyboard layout and your input method in Emacs. In order for me to write Greek accents and breathings *in Emacs*, I need to first switch my "Ubuntu keyboard" to a more generic QWERTY layout. Perhaps you have a similar clash of sorts. From a terminal, `setxkbmap -query` will print the OS keyboard; or you can look in the `unity-control-panel` I think. – jon Oct 26 '14 at 17:31
  • @jon It says rules:evdev, model pc105, layout us, and when writing greek says layout: gr, us. – Adam Oct 27 '14 at 06:15
  • This is an OS-specific problem (similar symptoms may arise under different OSes, but the solutions will be completely different). Your answer here is a good generic workaround. If you want to fix the underlying issue (which may come up in programs other than Emacs), you should ask on [ubuntu.se]. It's probably a bad combination of input method settings. – Gilles 'SO- stop being evil' Nov 10 '14 at 00:19

5 Answers5

8

Try adding (require 'iso-transl) to your .emacs file.

5

After extensive search and experimentation I found a way to succeed using the stress. Also it must be noted that is not the best way (technically it doesn't solve the problem but you get what you want). I used the following key bind command for every letter that uses a stress:

(global-set-key (kbd "<dead-acute> α") "ά")

(global-set-key (kbd "<dead-acute> ε") "έ")

etc...

Suffice to say that if anyone finds a better way is welcome to share it with us as this is obviously just a compromise.

Adam
  • 2,407
  • 2
  • 21
  • 38
3

Tryto launch emacs with :

env XMODIFIERS= emacs

This runs Emacs without the XMODIFIERS environment variable set, which disables input methods for just that program.

jmary
  • 141
  • 1
1

Override the language switching of operating system and use MULE.

In Emacs, press C-\. It asks for an input method.

Type greek and then switch languages with C-\.

philnik
  • 11
  • 3
0

If your operating system or Emacs's interface to it somehow passes dead keys as such instead of processing them, you can translate the dead key combinations in Emacs itself. Use input-decode-map for that: this way, the key sequence is actually translated into a single key press, and the command loop sees a self-insert-command. This is preferable to binding the key to a macro in the global map because this breaks mechanisms that rely on text input being self-inserted, such as undo groups.

(define-key input-decode-map [dead-acute ?ο] ?ό)

You can write a loop like this:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))