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

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

当我在 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-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] "~")

答案2

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

相关内容