2012-10-28 45 views
5

鍵綁定,我使用兩種鍵盤佈局 - 一個對我的母語語言,另一種是英語。 問題是,當我切換到我的母語語言鍵盤佈局,並嘗試執行鍵綁定命令。不同的鍵盤佈局在Emacs

有一種簡單的方法來告訴emacs的對待所有命令使用默認的,英語佈局綁定(C-鍵,M鍵等)?

我已經看到了這個問題: Emacs determining keyboard layout 其中一個答案模擬所有按鍵他們根據英語佈局按鍵,但它提到它吃了加載時間,並且代碼很長,不可讀,從而可能錯誤傾向於我。

幫助將我的感激。

+2

棘手,在不錯的工作我身邊用,「用英文鍵盤,而我在Emacs和如果我想寫我的語言,我用emacs內置輸入系統」。 'C- \'或'M-x toggle-input-method'。 – kindahero

+0

好吧,我有一個元轉換(我雖然所有的多語言佈局都使用這個鍵?),但在寫作過程中,我通常會自動到達一個命令(例如保存),以確定它不可用。在某些情況下,鍵被交換 - 例如,q變成/,然後它變得不可預測。 – CrimsonKing

回答

3

如果兩個佈局使用完全不同的角色,那麼你可以簡單地讓Emacs的嘗試「其他角色」。例如。如果一個關鍵是美國佈局b但在其他佈局и,你可以使用:

(define-key function-key-map [?и]  [?b]) 
(define-key function-key-map [?\C-и] [?\C-b]) 
(define-key function-key-map [?\M-и] [?\M-b]) 
(define-key function-key-map [?\M-\C-и] [?\M-\C-b]) 

OTOH如果兩個佈局最終會交換一些字符時,Emacs將真正需要知道哪些佈局是活動的,以知道是否重新映射密鑰。我對鍵盤處理知之甚少,無法知道如何讓Emacs告訴您當前正在使用哪種佈局。

+0

擁有更全局的東西真是太棒了,就像定義「所有命令鍵,總是使用英文版式」的功能一樣。 – CrimsonKing

+0

@EladR:所有的鍵都是命令鍵。所以你基本上要求Emacs總是使用美國佈局,然後在'self-insert-command'中以某種方式恢復非美國佈局。也許可以在某些情況下通過將非美版佈局的版本附加到每個事件來完成。 – Stefan

3

很多佈局管理器允許應用程序(甚至窗口),以保持自己的佈局。使用Emacs的英文版面,用母語書寫,切換輸入法(C- \)。

+0

您第一次必須選擇您的語言,但在此之後,它會自動在默認(英語)和您選擇的語言之間切換。這是一種解脫,我不必每次都選擇我的輸入法切換:)但是,如果關閉並打開Emacs,則必須選擇輸入。然後再次輸入法可能可以在emacs的init文件中設置。 – h3dkandi