Emacs может быть создан с инструментарием GTK, и стиль GTK может быть настроен для эмуляции взгляда KDE/Qt. Это не будет реальное спокойное приложение, но это будет похоже на тот.
Я не знаю то, что вызывает эту проблему или как зафиксировать это, но я могу предложить обходное решение в большинстве целей.
Обычно, мертвые клавиши обрабатываются на очень низком входном слое, даже не видимом от 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] "~")
попытайтесь добавить (require 'iso-transl)
в Вашем .emacs
файл.
См. также:
^
,`
и~
чтобы быть мертвыми клавишами, и это не работало. Если Вы хотите, чтобы они вставили фактический символ, то это еще легче:(define-key key-translation-map [dead-tilde] "~")
и т.п.. Но в этом случае может быть лучше обработать это на системном уровне (через KDE), как elmicha предполагает. – Gilles 'SO- stop being evil' 04.01.2012, 22:07