Kde
使用德語鍵盤時,某些鍵在 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
library。我們可以複製這個機制。把它放在你的.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-mapto
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] "~")