带有 ibus 的 emacs 中的死键

Vir*_*ile 13 keyboard-layout emacs ibus 13.10 14.04

我刚刚升级到 13.10 并注意到死键在 emacs 中不再起作用(击键 ' 会导致 emacs 显示<dead-acute> is undefined而不是等待下一个键。此外,使用组合键会导致<Multi_key> is undefined并且不可能使用诸如<M-^>. 之类的键绑定。据我所知,其他应用程序工作正常。

互联网上的简短搜索建议(require 'iso-transl).emacs。这解决了第一个问题,但不能解决其他问题。

在网上看到的另一种可能的解决方法是使用空XMODIFIERS变量启动 emacs ,作为XMODIFIERS='' emacs,而不是XMODIFIERS= @im=ibus它似乎是 13.10 中的默认值。然后一切正常,但它看起来像一团糟。有没有办法让 emacs 在这个主题上与 ibus 一起工作?

更新: 我在 14.04 中观察到相同的行为。

更新:.dmrc评论中要求的内容:

[Desktop]
Session=xubuntu
Language=fr_FR
Layout=us       intl
Langlist=fr_FR:en
LCMess=fr_FR.UTF-8
Run Code Online (Sandbox Code Playgroud)

Cha*_*aro 2

您可以尝试以下方法。

编辑文件 ~/.dmrc 并确保在其中设置以下行:

Language=en_US.utf8
Langlist=en_US:en
LCMess=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

编辑该文件~/.emacs并将这些行添加到其中而不是 (require 'iso-transl)

(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq default-input-method "latin-1-prefix")
(defun my-set-default-input-method ()
  (set-input-method 'latin-1-prefix))
(add-hook 'text-mode-hook 'my-set-default-input-method)
Run Code Online (Sandbox Code Playgroud)

latex-mode如果您在 emacs 中的其他模式下使用死键(例如, 、tex-mode、 ...) ,则必须在最后一行中添加类似的行html-mode

注销然后重新登录。

即便如此,如果您遇到死键在 emacs 中不起作用的情况,请尝试键入C-\并查看它们是否起作用。

更新:

如果这不起作用,我想到的唯一一件事就是您在系统设置中定义两种键盘布局

  • 英语 美国 国际死钥匙(您拥有的那一把)
  • 英语 美国

并按照此处解释的方式添加键盘布局选择器:

如何切换语言键盘组合?

当您使用 emacs 时,请选择“English US”布局。如果您已将.emacs我上面提到的行添加到文件中,这将强制您的键盘在 emacs 中充当“死键键盘”。我知道这可能很烦人,但这是我想到的解决您问题的唯一方法。