2009-01-30 2 views
0

Как вы знаете, если вы пишете текст на нескольких языках и используете Emacs, Emacs имеет собственную систему входных методов, не зависящую от Windows (или других операционных систем). Методы ввода могут переключаться с помощью команды toggle-input-method. Когда язык Windows изменяется, Emacs получает нажатие клавиши <language-change>. Я хотел бы затем связать <language-change> с toggle-input-method. К сожалению, если у меня есть толькоОтправка нажатия клавиши операционной системе в EmacsW32

(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) 

То, что я не могу найти это функция вызова, которая будет посылать ключ к операционной системе (или изменить язык системы по-другому).

ответ

1

Просто убедитесь, что вы хотите, чтобы это произошло: вы меняете язык в ОС. Emacs получает это событие, отправляет keypress обратно в ОС и затем меняет язык.

Для этого вы можете вызвать внешнюю утилиту.

Я не уверен, почему вы хотите это сделать.

Если вы изменили язык ОС, то пусть ОС обрабатывает метод ввода. Если вы не хотите использовать метод ввода вашей ОС, тогда сделайте toggle-input-method внутри emacs и не беспокойтесь о состоянии ОС.

Я что-то упустил?

0

Если вы не хотите использовать метод ввода ОС, то сделайте toggle-input-method внутри emacs и не беспокойтесь о состоянии ОС.

Это именно то, что я хочу получить. Трудность заключается в том, что я все время переключаю метод ввода ОС, потому что «нажмите Shift для переключения языка» является частью моей памяти пальцев.