Некоторые ключи недопустимы на emacs при использовании немецкой клавиатуры

Emacs может быть создан с инструментарием GTK, и стиль GTK может быть настроен для эмуляции взгляда KDE/Qt. Это не будет реальное спокойное приложение, но это будет похоже на тот.

5
02.01.2012, 22:40
2 ответа

Я не знаю то, что вызывает эту проблему или как зафиксировать это, но я могу предложить обходное решение в большинстве целей.

Обычно, мертвые клавиши обрабатываются на очень низком входном слое, даже не видимом от Lisp. Но можно сделать обработку в Lisp.

Если Вы хотите, чтобы ключи действовали как мертвые клавиши:

Уже существует ограниченный механизм для мертвых клавиш в Lisp, разработанном для 8-разрядных наборов символов на машинах, которые не имеют никакого способа ввести символы неASCII. Если Вы вводите C-x 8 сопровождаемый диакритическим знаком и буквой, соответствующая буква с диакритическим знаком вставляется, благодаря iso-transl библиотека. Мы можем скопировать этот механизм. Вставьте это Ваш .emacs:

(define-key key-translation-map [dead-grave] (lookup-key key-translation-map "\C-x8`"))
(define-key key-translation-map [dead-acute] (lookup-key key-translation-map "\C-x8'"))
(define-key key-translation-map [dead-circumflex] (lookup-key key-translation-map "\C-x8^"))
(define-key key-translation-map [dead-diaeresis] (lookup-key key-translation-map "\C-x8\""))
(define-key key-translation-map [dead-tilde] (lookup-key key-translation-map "\C-x8~"))
(define-key isearch-mode-map [dead-grave] nil)
(define-key isearch-mode-map [dead-acute] nil)
(define-key isearch-mode-map [dead-circumflex] nil)
(define-key isearch-mode-map [dead-diaeresis] nil)
(define-key isearch-mode-map [dead-tilde] nil)

Карта key-translation-map переписывает сочетания клавиш, поскольку они вводятся, таким образом, это обесточит 'эквивалент à в большинстве целей. Записи установки Explicitly в isearch-mode-map кому: nil необходимо, потому что иначе нажатие мертвой клавиши вышло бы из isearch, прежде чем перевод мог умереть.

Если Вы хотите, чтобы символы с диакритикой были сразу вставлены

(define-key key-translation-map [dead-grave] "`")
(define-key key-translation-map [dead-acute] "'")
(define-key key-translation-map [dead-circumflex] "^")
(define-key key-translation-map [dead-diaeresis] "\"")
(define-key key-translation-map [dead-tilde] "~")
4
27.01.2020, 20:36
  • 1
    за Ваше предложение. Вышеупомянутые настройки позволяют мне вводить все ^, ´и ~ на emacs путем нажатия "^ SPC", "´ SPC" и "~ SPC". Вы знаете, существует ли способ ввести эти буквы путем нажимания только каждой клавиши (т.е. без SPC)? Я попытался изменить вышеупомянутые настройки как" (ключевая карта перевода определять-ключа [мертвый циркумфлекс] (ключевая для поиска ключевая карта перевода "\C-x8^SPC"))", но это, кажется, недопустимо. –  H. Shindoh 03.01.2012, 14:23
  • 2
    @moduli: Если Вы хотите нажать только одну клавишу для этих символов везде (не только в Emacs), можно изменить настройки клавиатуры в KDE. Выберите клавиатуру с чем-то как "немец - никакие мертвые клавиши" ("ohne Akzenttasten"). –  elmicha 04.01.2012, 20:41
  • 3
    @moduli, О, я думаю, что неправильно понял Ваш вопрос. Я думал, что Вы хотели ^, ` и ~ чтобы быть мертвыми клавишами, и это не работало. Если Вы хотите, чтобы они вставили фактический символ, то это еще легче: (define-key key-translation-map [dead-tilde] "~") и т.п.. Но в этом случае может быть лучше обработать это на системном уровне (через KDE), как elmicha предполагает. –  Gilles 'SO- stop being evil' 04.01.2012, 22:07
  • 4
    @elmicha Спасибо за Ваш комментарий. Я могу ввести буквы, каждый требует всех приложений, ожидают Firefox и emacs. Для Firefox я могу ввести ^ два, нажимает ту же клавишу, и я не думаю, что это - проблема. –  H. Shindoh 04.01.2012, 23:49
  • 5
    @Gilles Спасибо за установку. Это работает, как я ожидал! –  H. Shindoh 05.01.2012, 00:00

попытайтесь добавить (require 'iso-transl) в Вашем .emacs файл.
См. также:

5
27.01.2020, 20:36

Теги

Похожие вопросы