Kde

使用德語鍵盤時,某些鍵在 emacs 上無效

  • March 4, 2018

當我在 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-transllibrary。我們可以複製這個機制。把它放在你的.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-maptonil`是必要的,因為否則按下死鍵會在翻譯開始之前退出 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] "~")

引用自:https://unix.stackexchange.com/questions/28170