11

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).

  • 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 3: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 6: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 6:15
6

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

  • 1
    That was the first thing that I tried and it doesn't work. – Adam Dec 8 '14 at 17:24
  • Oh, sorry about that... I had a problem similar to yours and adding that line did the fix for me, though. – Arthur Azevedo De Amorim Dec 8 '14 at 19:36
  • Yes I know this is a common solution! – Adam Dec 8 '14 at 20:58
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.

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-\.

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)))
      '("οό" "υύ" "ιί"))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.