2012-10-28 44 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