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,但没有任何变化。
谁能告诉我如何解决这个问题?
我不知道是什么导致了这个问题或如何解决这个问题,但我可以为大多数目的提供一个解决方法。
通常,死键是在非常低的输入层处理的,甚至在 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-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] "~")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5377 次 |
| 最近记录: |