0

如果您用多种语言编写文本并使用 Emacs,您可能知道,Emacs 有自己独立于 Windows(或其他操作系统)的输入法系统。输入法可以用toggle-input-method命令切换。当 Windows 语言改变时,Emacs 会收到一个<language-change>按键。然后我想绑定<language-change>toggle-input-method. 不幸的是,如果我这样做

(global-set-key (kbd "<language-change>") 'toggle-input-method)

Windows 语言和输入法都将被切换。所以我需要类似的东西

(defvar safe-language-change-flag nil)
(defun safe-language-change ()
  (interactive)
  (setq safe-language-change-flag (not safe-language-change-flag))
  (when safe-language-change-flag
    (toggle-input-method)
    (send-key (kbd "<language-change>"))))

(global-set-key (kbd "<language-change>") 'safe-language-change)

我似乎找不到一个函数调用,它将向操作系统发送密钥(或以另一种方式更改系统语言)。

4

2 回答 2

1

只是为了确保您希望发生这种情况:您更改操作系统中的语言。Emacs 获取此事件,将按键发送回操作系统,然后取消更改语言。

您可以调用外部实用程序来执行此操作。

不过,我不确定您为什么要这样做。

如果您更改了操作系统的语言,则让操作系统处理输入法。如果您不想使用操作系统的输入法,请在 emacs 中执行切换输入法,而不必担心操作系统的状态。

我错过了什么吗?

于 2009-01-31T01:44:31.900 回答
0

如果您不想使用操作系统的输入法,请在 emacs 中执行切换输入法,而不必担心操作系统的状态。

这正是我想要得到的结果。困难在于我发现自己一直在切换操作系统输入法,因为“按 Shift 切换语言”现在已经成为我手指记忆的一部分。

于 2009-01-31T06:50:00.893 回答