Closed jbking closed 9 years ago
うーん、なんでしょうね。その症状。
とりあえずいつも私がやっているデバッグ方法は
という感じですねぇ。
ログをとってみました。
(分かりづらかったので正常な入力と比較するようにしました)
差分は
AquaSKK[397]: com.jetbrains.pycharm: cancel key event
これのみのようです。
実施手順は
メッセージアプリ(正常)
2015/09/09 17:59:00.917 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0x40000 win=0x0 winNum=0 ctxt=0x0 chars="
" unmodchars="j" repeat=0 keyCode=38
2015/09/09 17:59:00.917 AquaSKK[397]: event=SKK_JMODE, code=0x6a, attr=none
2015/09/09 17:59:02.669 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="a" unmodchars="a" repeat=0 keyCode=0
2015/09/09 17:59:02.669 AquaSKK[397]: event=SKK_CHAR, code=0x61, attr=InputChars
2015/09/09 17:59:03.013 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="k" unmodchars="k" repeat=0 keyCode=40
2015/09/09 17:59:03.013 AquaSKK[397]: event=SKK_CHAR, code=0x6b, attr=InputChars
2015/09/09 17:59:03.221 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="i" unmodchars="i" repeat=0 keyCode=34
2015/09/09 17:59:03.221 AquaSKK[397]: event=SKK_CHAR, code=0x69, attr=InputChars
2015/09/09 17:59:05.520 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="l" unmodchars="l" repeat=0 keyCode=37
2015/09/09 17:59:05.520 AquaSKK[397]: event=SKK_CHAR, code=0x6c, attr=SwitchToAscii,InputChars
PyCharm(異常)
2015/09/09 18:00:49.995 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0x40000 win=0x0 winNum=0 ctxt=0x0 chars="
" unmodchars="j" repeat=0 keyCode=38
2015/09/09 18:00:49.995 AquaSKK[397]: event=SKK_JMODE, code=0x6a, attr=none
2015/09/09 18:00:50.000 AquaSKK[397]: com.jetbrains.pycharm: cancel key event
2015/09/09 18:00:54.154 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="a" unmodchars="a" repeat=0 keyCode=0
2015/09/09 18:00:54.154 AquaSKK[397]: event=SKK_CHAR, code=0x61, attr=InputChars
2015/09/09 18:00:54.601 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="k" unmodchars="k" repeat=0 keyCode=40
2015/09/09 18:00:54.601 AquaSKK[397]: event=SKK_CHAR, code=0x6b, attr=InputChars
2015/09/09 18:00:54.921 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="i" unmodchars="i" repeat=0 keyCode=34
2015/09/09 18:00:54.921 AquaSKK[397]: event=SKK_CHAR, code=0x69, attr=InputChars
2015/09/09 18:00:57.874 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="l" unmodchars="l" repeat=0 keyCode=37
2015/09/09 18:00:57.875 AquaSKK[397]: event=SKK_CHAR, code=0x6c, attr=SwitchToAscii,InputChars
PyCharm (JDKバンドルなし、異常)
2015/09/09 18:08:33.562 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0x40000 win=0x0 winNum=0 ctxt=0x0 chars="
" unmodchars="j" repeat=0 keyCode=38
2015/09/09 18:08:33.562 AquaSKK[397]: event=SKK_JMODE, code=0x6a, attr=none
2015/09/09 18:08:33.567 AquaSKK[397]: com.jetbrains.pycharm: cancel key event
2015/09/09 18:08:34.361 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="a" unmodchars="a" repeat=0 keyCode=0
2015/09/09 18:08:34.361 AquaSKK[397]: event=SKK_CHAR, code=0x61, attr=InputChars
2015/09/09 18:08:35.061 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="k" unmodchars="k" repeat=0 keyCode=40
2015/09/09 18:08:35.062 AquaSKK[397]: event=SKK_CHAR, code=0x6b, attr=InputChars
2015/09/09 18:08:35.776 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="i" unmodchars="i" repeat=0 keyCode=34
2015/09/09 18:08:35.777 AquaSKK[397]: event=SKK_CHAR, code=0x69, attr=InputChars
2015/09/09 18:08:37.209 AquaSKK[397]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="l" unmodchars="l" repeat=0 keyCode=37
2015/09/09 18:08:37.209 AquaSKK[397]: event=SKK_CHAR, code=0x6c, attr=SwitchToAscii,InputChars
2015/09/09 18:08:37.214 AquaSKK[397]: com.jetbrains.pycharm: cancel key event
(ふと気になってIdeaVimが悪さしているのかと思って無効にしてみましたが結果は変わらずでした。参考まで。)
とりあえず手元で再現するか確認します。
とりあえず2を調査します。
cancel key eventはJRE系のアプリでCtrl-Jやlでうまくモード切り替えができない件に対するworkaroundです。 そして、これが誤発動すると、たしかに直前の文字が削除されます。
が、JREを使ってるなら、ないと逆にまずい気がするんですが、なぜ問題になるんだろう....。
workaroundはみつけましたが、不適切な挙動だと思うので、issue報告をしました。 https://youtrack.jetbrains.com/issue/PY-16964
Java系の問題だということだったのでOracle JDKの現時点での最新版、1.8.0_64 (x86_64)をインストールして使うようにしてみたところ、この問題が解消しました。「なぜか」までは追ってませんがご報告まで。
(ログ上では変化みられないように思いますが)該当箇所のコンソールログを添付しておきます。
2015/09/29 13:37:28.332 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0x40000 win=0x0 winNum=0 ctxt=0x0 chars="
" unmodchars="j" repeat=0 keyCode=38
2015/09/29 13:37:28.333 AquaSKK[38264]: event=SKK_JMODE, code=0x6a, attr=none
2015/09/29 13:37:28.337 AquaSKK[38264]: com.jetbrains.pycharm: cancel key event
2015/09/29 13:37:33.012 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="i" unmodchars="i" repeat=0 keyCode=34
2015/09/29 13:37:33.012 AquaSKK[38264]: event=SKK_CHAR, code=0x69, attr=InputChars
2015/09/29 13:37:33.179 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="r" unmodchars="r" repeat=0 keyCode=15
2015/09/29 13:37:33.179 AquaSKK[38264]: event=SKK_CHAR, code=0x72, attr=InputChars
2015/09/29 13:37:33.284 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="o" unmodchars="o" repeat=0 keyCode=31
2015/09/29 13:37:33.284 AquaSKK[38264]: event=SKK_CHAR, code=0x6f, attr=InputChars
2015/09/29 13:37:33.643 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="h" unmodchars="h" repeat=0 keyCode=4
2015/09/29 13:37:33.643 AquaSKK[38264]: event=SKK_CHAR, code=0x68, attr=InputChars
2015/09/29 13:37:33.723 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="a" unmodchars="a" repeat=0 keyCode=0
2015/09/29 13:37:33.723 AquaSKK[38264]: event=SKK_CHAR, code=0x61, attr=InputChars
2015/09/29 13:37:35.420 AquaSKK[38264]: NSEvent: type=KeyDown loc=(0,0) time=0.0 flags=0 win=0x0 winNum=0 ctxt=0x0 chars="l" unmodchars="l" repeat=0 keyCode=37
2015/09/29 13:37:35.420 AquaSKK[38264]: event=SKK_CHAR, code=0x6c, attr=SwitchToAscii,InputChars
ありがとうございます。 なぜだろう...。
解消した問題は「C-jで日本語入力に切り換えするときに直前の文字が削除される」「aiueoが入力できない」の両方ですか?
はい、両方ともです…謎い
普段使いしてみてまた何かおかしなことを見つけたら報告します。 ともあれ、ありがとうございました!
なるほど。了解です。とりあえず close ということで...。
PyCharm: 4.5.3 Build #PY-141.1899, built on July 6, 2015 JRE: 1.8.0_40-internal-b82 x86_64 JVM: OpenJDK 64-bit Server VM by JetBrains s.r.o AquaSKK: 4.2.6 Mac: 10.10.5 (Yosemite)
上記環境において以下の現象が発生しています。
こちらの環境依存の可能性が高いのですが、デバッグ方法をご教授いただけませんでしょうか。