Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows 8 MS-IME problem #3

Closed
Hamayama opened this issue Dec 7, 2014 · 5 comments
Closed

Windows 8 MS-IME problem #3

Hamayama opened this issue Dec 7, 2014 · 5 comments

Comments

@Hamayama
Copy link

Hamayama commented Dec 7, 2014

Windows 8 のPCで使用していますが、漢字キーを押してもMS-IMEの日本語入力に切り替わりません。
emacs-24.4-IME-patched.zip と emacs-24.4-IME-patched-generic-cpu.zip の両方で発生します。

現象としては、以下のページの内容に近いようです。
http://blechmusik.hatenablog.jp/entry/2013/07/08/023920
http://sourceforge.jp/projects/gnupack/forums/22824/34508/
同じ現象は、下記のページの emacs-24.4-simple-ime.zip でも発生します。
http://cha.la.coocan.jp/doc/NTEmacs.html

今のところ回避策としては、Emacsの起動後に以下のいずれか1つの操作を行えば、日本語入力可能になります。
(1)マウスでウィンドウを移動する。
(2)マウスでウィンドウをリサイズする。
(3)メニューバーが表示されていれば、F10キーを2回押す。

それで、(3)の操作に近いものを自動で行えないかと考えて、
.emacs.d フォルダに sendesc.js というファイルを以下の内容で作成しました。

var shell = new ActiveXObject("WScript.Shell");
WScript.Sleep(100);
shell.SendKeys("{ESC}");
shell = null;

そして、init.el の最後に以下の記述を追加しました。

;; ***** for MS-IME *****
(menu-bar-open)
(defun send-esc ()
  (start-process "my-proc" nil "cscript.exe"
                 (expand-file-name "~/.emacs.d/sendesc.js")))
(add-hook 'emacs-startup-hook 'send-esc)

こうすると、自分の環境では日本語入力可能になりました。
ただし、起動時にメニューバーを表示しておく必要があります。
また、自分の環境ではSleep時間を50msecにすると効果がなかったので、
環境によってSleep時間の調整が必要かもしれません。

確認環境
OS : Windows 8 (64bit)
CPU : Core i5
IME : MS-IME 2012

@chuntaro
Copy link
Owner

chuntaro commented Dec 9, 2014

報告ありがとうございます。
NTEmacs64のビルド環境はWindows7で動作確認もWindows7のみでした。
近々Windows8の環境を整える予定なのでその際に検証してみます。
回避作を見るとウィンドウフォーカスの問題な気がするので…runemacs.exeではなく直接emacs.exeを起動した時にどうなるかが気になります。
自分のほうで何か分かったら追記します。

@chuntaro
Copy link
Owner

chuntaro commented Oct 4, 2016

長期間放置していて申し訳ありませんでした。
その後Windows8へは移行する事はなくWindows10へ移行してしまいました。
ひとまずWindows10で確認してみたしたが、指摘された現象は発生しませんでした。
もはや現状では対処する事も難しい為、こちらの件はクローズさせて頂きます。すみません。

@chuntaro chuntaro closed this as completed Oct 4, 2016
@Hamayama
Copy link
Author

Hamayama commented Oct 7, 2016

クローズの件、了解です。

本件、その後情報があり、
言語の詳細設定の「アプリウィンドウごとに異なる入力方式を設定する」
にチェックを入れていると、発生するようです。

この設定は、複数のIMEを、アプリごとに切り換えて使用するときに、チェックを入れるもののようです。
(Windows 8 のときは、MS-IME の ON/OFF 状態を、アプリごとに別々の状態にするかどうかの設定でしたが、
Windows 8.1 の頃に仕様が変わりました。Windows 10 にも 8.1 と同じ仕様で残っているようです。)

今はチェックをはずして、正常に使えています。ありがとうございます。

<参考URL>

@chuntaro
Copy link
Owner

chuntaro commented Oct 7, 2016

詳細な説明ありがとうございます。
なるほど、そういう事ですか…
問題を共有する為に README.md の注意事項にこちらの issue を追記しました。

@knoike
Copy link

knoike commented May 4, 2018

ここに書かれている回避方法がたいへん有用でしたので,ご報告させていただきます.

いままでまったく問題なく日本語 IM が起動できていたのですが,先日の(2018年 5月 2日の) Windows Update を適用したあとにこの現象が発生するようになりました.おそらくは,「Windows 10、バージョン 1803 の機能更新プログラム」で何か変わったのだろうと思います.

言語の詳細設定(キーボードの詳細設定)の「アプリウィンドウごとに異なる入力方式を設定する」は,チェックをはずしてあります.以前と変えていません.
日本語 IM は,Google 日本語入力をデフォルトの IM に設定しています.これも,以前と変えていません.

そして,ここに書かれている回避方法で無事に回避できました.3とおりのどれでも回避できました.

(1)マウスでウィンドウを移動する。
(2)マウスでウィンドウをリサイズする。
(3)メニューバーが表示されていれば、F10キーを2回押す。

また,それを自動化する .js, .el でも同様に回避できました.
ただ,私の環境が重たいのか,
WScript.Sleep();
でのスリープは 200msec 以上でないと効き目がありませんでした.

oshiroscope added a commit to oshiroscope/.emacs.d that referenced this issue Nov 6, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants