当我在 KDE 上使用 emacs 23.3 时,我无法从德语键盘输入^
,´
和。~
如果我按下这些键,那么 emacs 会说<dead-circumflex>
、<dead-acute>
和<dead-tilde>
是未定义的。
我可以在其他应用程序(例如 Konsole、Kwrite 和 firefox)上输入^
,´
和~
,并且我还可以在 emacs 上粘贴这些字母。
我已经尝试过类型 Cx ret C-\ latin-1-postfix,但没有变化。
谁能告诉我如何解决这个问题?
答案1
我不知道是什么原因导致此问题或如何解决此问题,但我可以为大多数目的提供解决方法。
通常,死键是在非常低的输入层处理的,甚至从 Lisp 中看不到。但你可以用 Lisp 进行处理。
如果您希望这些键充当死键:
Lisp 中已经存在一种针对死键的有限机制,该机制专为无法输入非 ASCII 字符的机器上的 8 位字符集而设计。如果您键入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
在输入时重写按键序列,因此这对于大多数用途来说dead ` a相当于。à显式地将条目设置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] "~")
答案2
尝试添加(require 'iso-transl)
到您的文件中.emacs
。
也可以看看: