Проблема «<dead-sharp> не определена», возникающая при наборе греческого ударения (')

11

Я начал использовать Emacs и написал текст на греческом языке. Проблема в том, что ударение, которое используется на некоторые буквы (ό, ύ, ί, ύ), не работает!

Обычно он вставляется нажатием ;(я имею в виду, нажимая клавишу рядом с L), а затем букву, на которой будет вставлен. Это стандартно для греческой клавиатуры. Когда я нажимаю, ;он говорит:

<dead-acute> is undefined. 

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

Что я могу сделать, чтобы использовать этот ключ?

Это работает в других приложениях, таких как браузер. Я использую Ubuntu 14.04 и установил его emacsпакет (Emacs 24.3.1).

Адам
источник
Я сталкивался с этой проблемой раньше, но не могу вспомнить, в чем причина. Убедитесь, что ваша операционная система не использует другую раскладку клавиатуры для Emacs. Некоторые ОС могут иметь раскладку клавиатуры для конкретного приложения, поэтому даже если эта клавиша работает везде, проблема может быть в системе. Если это не так, я уверен, что у кого-нибудь будет ваш ответ здесь. :-)
Малабарба
(Не уверен, что это поможет.) У меня есть эта проблема, в зависимости от того, какой режим ввода клавиатуры моей ОС. Мой ввод с клавиатуры по умолчанию использует «мертвые клавиши», поэтому я могу добавить â © çéñtß; но я иногда хочу ввести (древний) греческий язык в Emacs, используя greek-ibycus4две системы. Я обхожу эту проблему, меняя общий ввод на не-мертвую раскладку клавиш (используя, например, setxkbmap -layout us); затем я переключаю режимы в Emacs; затем я переключаюсь обратно на ucsметод ввода для Emacs и запускаю, setxkbmap -layout us -variant intlчтобы вернуть мои мертвые ключи. ... не идеально !! Но греческий мне тоже не нужен очень часто.
джон
Спасибо за ваши комментарии, но проблема в том, что в греческом языке стрессы являются основными. Почти каждое слово нуждается в ударении, и оно работает везде, поэтому я не знаю, что делать.
Адам
@ Adam - я должен был также спросить: какова ваша раскладка клавиатуры по умолчанию для Ubuntu? Очевидно, вы сейчас не пишете по-гречески, поэтому может быть несоответствие между вашей раскладкой клавиатуры, определенной в ОС, и вашим методом ввода в Emacs. Для того, чтобы я мог писать греческие акценты и дыхания в Emacs , мне нужно сначала переключить свою «клавиатуру Ubuntu» на более общую раскладку QWERTY. Возможно, у вас есть подобное столкновение сортов. Из терминала setxkbmap -queryбудет печатать клавиатуру ОС; или вы можете посмотреть в unity-control-panelя думаю.
джон
@jon Там написано правила: evdev, модель pc105, макет нас, а при написании греческий говорит макет: гр, нас.
Адам

Ответы:

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

philnik
источник
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)))
      '("οό" "υύ" "ιί"))
Жиль "ТАК - прекрати быть злым"
источник