Проблема "<dead-acute> не визначена", яка виникає під час введення грецького стресу (')


11

Я почав використовувати Emacs і написав текст грецькою мовою. Проблема полягає в тому, що наголос, який використовується на деяких літерах (ό, ύ, ί, ύ), не працює!

Зазвичай він вставляється натисканням кнопки ;(я маю на увазі натисканням клавіші поруч з L), а потім літерою, на якій буде вставлено. Це стандартно для грецької клавіатури. Коли я натискаю на ;нього, він говорить:

<dead-acute> is undefined. 

C-h c ; говорить те саме.

Що я можу зробити, щоб користуватися цим ключем?

Він працює в інших додатках, таких як браузер. Я використовую Ubuntu 14.04 і встановив його emacsпакет (Emacs 24.3.1).


Я раніше вже стикався з цим питанням, але не можу пригадати, що було причиною. Переконайтеся, що ваша операційна система не використовує інший розклад клавіатури для Emacs. У деяких ОС можуть бути розкладені клавіатури, орієнтовані на додатки, тому, хоча ця клавіша працює і скрізь, проблема може бути в системі. Якщо це не все, я впевнений, що хтось тут знайде вашу відповідь. :-)
Малабарба

(Не впевнений, чи це допомагає.) У мене є ця проблема в залежності від режиму введення моєї клавіатури ОС. У моїй клавіатурі за замовчуванням використовується «мертві клавіші», тому я можу додати © але я іноді хочу ввести (давньогрецьку) грецьку мову в Emacs greek-ibycus4, і обидві системи стикаються. Я вирішую цю проблему, змінюючи свій загальний вклад на не мертвий макет ключа (використовуючи, наприклад, setxkbmap -layout us); потім я перемикаю режими в Emacs; потім я перемикаюся на ucsметод введення для Emacs і біжу, setxkbmap -layout us -variant intlщоб повернути свої мертві ключі. ... Не ідеально !! Але мені також дуже часто не потрібна грецька мова.
jon

Дякую за ваші коментарі, але проблема полягає в тому, що наголоси є основними в грецькій мові. Майже кожне слово потребує стресу, і воно, очевидно, працює скрізь, тому я не знаю, що робити.
Адам

@Adam - Я також мав би запитати: яка ваша розкладка клавіатури за замовчуванням для Ubuntu? Очевидно, ви зараз не пишете грецькою мовою, тому може виникнути невідповідність між розкладеною вами ОС компонуванням клавіатури та вашим методом введення в Emacs. Для того, щоб я писав грецькі наголоси та вдих на Emacs , мені потрібно спочатку переключити "клавіатуру Ubuntu" на більш загальну версію QWERTY. Можливо, у вас є подібне зіткнення. З терміналу setxkbmap -queryнадрукує клавіатуру ОС; або ви можете заглянути в unity-control-panelя думаю.
jon

@jon В ньому написано правила: evdev, модель pc105, розміщуємо нас, а при написанні грецької мови пише макет: gr, us.
Адам

Відповіді:


6

Спробуйте додати (require 'iso-transl)до .emacsфайлу.


1
Це було перше, що я спробував, і це не працює.
Адам

О, вибачте з цього приводу ... У мене виникла проблема, схожа на вашу, і додавання цього рядка все-таки вирішило для мене.
Артур Азеведо Де Аморім

Так, я знаю, що це звичайне рішення!
Адам

5

Після широкого пошуку та експериментів я знайшов спосіб досягти успіху, використовуючи стрес. Також слід зазначити, що це не найкращий спосіб (технічно це не вирішує проблему, але ви отримуєте те, що хочете). Я використовував таку команду прив'язки клавіш для кожного листа, що використовує наголос

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

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

тощо ...

Досить сказати, що якщо хтось знайде кращий спосіб, бажано поділитися ним з нами, оскільки це, очевидно, лише компроміс.


1

Переміняйте перемикання мови операційної системи та використовуйте MULE.

У Emacs натисніть C-\. Він запитує метод введення.

Введіть, greekа потім перемкніть мови C-\.


0

Якщо ваша операційна система або інтерфейс Emacs до неї якось передає мертві ключі як такі, а не обробляти їх, ви можете перевести комбінації мертвих клавіш у сам Emacs. Використовуйте input-decode-mapдля цього: таким чином послідовність клавіш фактично переводиться в один натискання клавіші, і цикл команд бачить a self-insert-command. Це бажано прив’язувати ключ до макросу на глобальній карті, оскільки це порушує механізми, які покладаються на те, що введення тексту самостійно вставляється, наприклад, групи скасувати.

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

Ви можете написати цикл так:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.