使用德语键盘时,某些键在 emacs 上无效

H. *_*doh 5 kde keyboard emacs

当我在 KDE 上使用 emacs 23.3 时,我无法从我的德语键盘输入^,´~。如果我按下这些键,那么 emacs 会说<dead-circumflex>,<dead-acute>并且<dead-tilde>是未定义的。

我可以输入^´以及~其他应用程序(如Konsole的,KWrite这样和firefox),我也可以贴在Emacs的这些信件。

我尝试输入 Cx ret C-\ latin-1-postfix,但没有任何变化。

谁能告诉我如何解决这个问题?

Gil*_*il' 5

我不知道是什么导致了这个问题或如何解决这个问题,但我可以为大多数目的提供一个解决方法。

通常,死键是在非常低的输入层处理的,甚至在 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)
Run Code Online (Sandbox Code Playgroud)

映射key-translation-map会在输入键序列时重写它们,因此这对于大多数用途来说都是dead ` a等效的à。在明确设置条目isearch-mode-mapnil是必要的,因为否则按一个死键将退出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] "~")
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试添加(require 'iso-transl)您的.emacs文件。
也可以看看: