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

念のために言っておきますが、これを実現したいのです。OSの言語を変更します。Emacsはこのイベントを取得し、キーを押してOSに送り返し、言語の変更を解除します。

これを行うために外部ユーティリティを呼び出すことができる場合があります。

しかし、なぜあなたがこれをしたいのかわかりません。

OSの言語を変更した場合は、OSに入力メソッドを処理させます。OSの入力メソッドを使用したくない場合は、emacs内でtoggle-input-methodを実行し、OSの状態を気にする必要はありません。

私は何かが足りないのですか?

于 2009-01-31T01:44:31.900 に答える
0

OS の入力方法を使用したくない場合は、emacs 内で toggle-input-method を実行してください。OS の状態を気にする必要はありません。

これはまさに私が得たい結果です。難点は、「Shift キーを押して言語を切り替える」ということが今では私の指の記憶の一部になっているため、代わりに OS の入力方法を常に切り替えていることに気付くことです。

于 2009-01-31T06:50:00.893 に答える