Alt-Shift-カーソルキーで矩形選択をすると選択範囲が消失する

  1. 不具合報告です。
    環境依存の可能性が高く、再現できるか分かりませんが、一応報告します。

    【環境】
    以下で発生しました。
    ・Windows 10 1073
    ・Mery 2.5.6, 2.6.1, 3.0.1 (少なくとも、試したこの3バージョン全てで確認)

    【症状】
    Alt-Shift-カーソルキーで矩形選択をすると、Alt-Shiftから手を離した段階で選択範囲の文字が消失します。
    たまに消失しないこともありますが、ほぼ消失します。

    消失した場合、矩形選択の開始位置 (選択範囲の左上)に、選択内容と関係ない文字が出力されていました。
    観測された範囲では出力される文字は1文字です。
    選択範囲と出力される文字に関連性はないようです。
    同じテキストで同じ範囲を矩形選択しても違う文字が出力されていました。

    消失する/消失しないときの違い (条件)は分かりませんでした。

    【補足】
    Windows 7 32bit (別のPC)ではAlt-Shift-カーソルキーの矩形選択は正常に利用できました。
    Windows 7環境は手元にないので確認できないですが、おそらくMery 2.5.6です。

    【補足2】
    Alt-マウスドラッグだと正常に矩形選択できます。

    【補足3】
    セキュリティソフト、クリップボードユーティリティを停止したり、Google日本語入力をMS IMEに戻したりしましたが、解決しませんでした 。

     |  duke  |  返信
  2. ご報告ありがとうございます。
    手元の Windows 10 1703 で試してみましたが再現できないようです。

    > セキュリティソフト、クリップボードユーティリティを停止したり、Google日本語入力をMS IMEに戻したりしましたが、解決しませんでした 。

    マクロを使用されていたりプラグインを導入されていれば教えてください。

    ALT + SHIFT キーをホットキーにする他のアプリケーション、あるいはドライバなどの影響も考えられますね。

    以下の点をご確認いただけませんでしょうか?

    1. Mery で矩形選択をせず、ALT + SHIFT キーを押して離すだけで発生するかどうか

    2. Mery 以外の、例えばメモ帳などで ALT + SHIFT キーを押して離したタイミングで何か文字が入力されることがないか

    3. マクロやプラグインを導入されている場合はその名前

    お手数をお掛けしますがよろしくお願いいたします。

     |  Kuro  |  返信
  3. 返信ありがとうございます。
    確認した結果は下記です。

    > 1. Mery で矩形選択をせず、ALT + SHIFT キーを押して離すだけで発生するかどうか
    発生しません。

    下記をためしましたが発生しませんでした。
     * 何も選択しないでALT + SHIFT キーを押して離す
     * SHIFTで範囲選択後、ALTを追加で押してから離す
     * ALT + マウスドラッグで矩形選択した後ALT + SHIFT キーを押して離す

    > 2. Mery 以外の、例えばメモ帳などで ALT + SHIFT キーを押して離したタイミングで何か文字が入力されることがないか
    別系統のエディタでは発生しませんでした。
    ためしたのは下記です。
     * メモ帳
     * サクラエディタ 2.3.2.0
     * Atom 1.18.0 x64

    下記ではMeryと同じ現象が発生しました。
    真魚も前項1については同様の動作でした (ALT + SHIFTの矩形選択時のみ発生する)。
     * 真魚 2.31.5.0

    > 3. マクロやプラグインを導入されている場合はその名前
    導入していません (同梱されていたアウトラインのみ)。

    【追加情報】
    Mery.exeのプロパティ > 互換性 > 互換モード で「Windows 7」などを選んで実験してみましたが、やはり改善されませんでした (本現象が発生しました)。

     |  duke  |  返信
  4. ご返信&ご確認ありがとうございます。

    いただいた情報をもとに調査してみましたところ、現象が再現できたわけではありませんが、ひとつ気になる点が出てまいりました。

    ALT + SHIFT とカーソルキーでの移動ということですが、カーソルキーは「テンキー」の方向キーを使用されていたりしませんでしょうか?

    ALT キーとテンキーを組み合わせると ALT を離した際に特殊文字が入力されるっていう機能がキーボード?に備わっているようで、例えば ALT を押しながらテンキーの「6」(→移動) を 6 回押してから ALT キーを離すと私の環境では「,」が入力されました。

    よろしければ、Mery で ALT + SHIFT + 右方向を 6 回押して、ALT + SHIFT を離した際に何の文字が入力されるかご確認いただけませんでしょうか?

    「,」の文字に置き換わるようであれば、このあたりが怪しい感じです。

    参考リンク: http://toomva.blog60.fc2.com/blog-entry-171.html

    私の環境では ALT + SHIFT を組み合わせるとそもそもテンキーのカーソルキーでは矩形選択できませんが、環境によっては ALT + テンキーによる特殊文字入力機能と矩形選択が競合しちゃったりするのかもしれません。

    お手数をお掛けしますがよろしくお願いいたします。

     |  Kuro  |  返信
  5. 調査ありがとうございます。

    > ALT + SHIFT とカーソルキーでの移動ということですが、カーソルキーは「テンキー」の方向キーを使用されていたりしませんでしょうか?
    いいえ、通常のカーソルキーを使用しています。
    なお、NumLockでテンキーをカーソルキーに変更して報告と同様の操作をしましたが、同じ問題が発生しました。

    > よろしければ、Mery で ALT + SHIFT + 右方向を 6 回押して、ALT + SHIFT を離した際に何の文字が入力されるかご確認いただけませんでしょうか?
    >
    > 「,」の文字に置き換わるようであれば、このあたりが怪しい感じです。
    こちらの環境でも再現しました。
    ALT + SHIFT + 右方向を6回押して、ALT + SHIFTを離したときは「,」に置き換わります (※)。
    右方向として「通常のカールソルキー」、「テンキーの6」のどちらを利用しても発生します。

    ※正確には、参考記事にあるように、ALTキーを離した時に置き換えが発生します。

    【備考1】
    ALT + SHIFT + 右方向をn回押した場合は置き換わる文字に再現性がありますが、下方向への選択も行った場合は、同じ範囲を選択しても置き換わる文字が不定のようです。
    置き換えが発生しないことがあるのは、このあたりが原因かもしれません (何も入力されないときに置き換えが発生しないのかもしれません)。

    【備考2】
    ALT + 右方向を 6 回押してからALTを離したとき、下記のエディタでは「,」が出力されました。
     * Mery
     * 真魚
     * サクラエディタ

    一方、下記のエディタでは何も出力されませんでした。
     * メモ帳
     * Atom

     |  duke  |  返信
  6. ご返信ありがとうございます。

    なるほど、どうも方向キーがテンキーとして動いちゃっているようですね。

    その後、別の PC にも Win 10 をインストールして手持ちのキーボード 4 種類 + 別売りのテンキーを接続などして実験してみましたが再現できませんでした…

    サクラエディタさんでも ALT + 方向キーで文字が入力されたとのことなので、キーボードのドライバか、グローバルフック (キーボードの入力をキャッチして何か動作するランチャーとか) を利用するような常駐アプリが途中でキーコードを変えちゃってるか、そのあたりだと予想します。

    (通常ですとサクラエディタさんで ALT + 方向キーを押しても文字入力はされないはず)

    > 【備考1】
    > ALT + SHIFT + 右方向をn回押した場合は置き換わる文字に再現性がありますが、下方向への選択も行った場合は、同じ範囲を選択しても置き換わる文字が不定のようです。

    選択範囲は特に関係なく、ALT + 数字の組み合わせで入力される文字が決まりますので、例えば ALT + ↓↓← と移動させたら「à」こんな文字が入力されませんか?

    本来なら ALT + テンキーの 2 2 4 と押した場合のみ働くはずの特殊文字入力機能が、なぜか方向キーでもテンキーと勘違いされて働いてしまっている状態だと思います。

    以上の点から、ご確認いただきたい点としては…

    ① キーボードのドライバが適切なものが導入されているかどうか
    ② ランチャーアプリのようなキーボード操作をキャッチするアプリが常駐していないかどうか
    ③ 特殊なキーボード (英字キーボード?) などを使用されているケース

    ないとは思いますが、

    ④ 仮想環境やリモートデスクトップなどで使用しているとか?

    このあたりをお試しいただいて、ダメならお手上げかもしれません… (´-ω-`)

     |  Kuro  |  返信
  7. 返信ありがとうございます。

    お陰様でどこに原因があるか特定できました。
    問題は他のアプリにありました。
    お騒がせしてすみませんでした。

    以下、情報共有です。

    > 選択範囲は特に関係なく、ALT + 数字の組み合わせで入力される文字が決まりますので、例えば ALT + ↓↓← と移動させたら「à」こんな文字が入力されませんか?

    > 本来なら ALT + テンキーの 2 2 4 と押した場合のみ働くはずの特殊文字入力機能が、なぜか方向キーでもテンキーと勘違いされて働いてしまっている状態だと思います。
    ご指摘の通りでした。
    不定に見えたのは、同じ範囲を選択する場合にカーソルキーを押す回数が異なっていたためでした。
    同じ回数押した場合の入力文字には再現性がありました。

    > ② ランチャーアプリのようなキーボード操作をキャッチするアプリが常駐していないかどうか
    原因になっていたのはSylphyHorn 2.5.0でした。
    SylphyHornを終了したところ、本問題は発生しなくなりました。

    SylphyHorn
    https://www.microsoft.com/ja-jp/store/p/sylphyhorn/9nblggh58t01

    下記によるとSylphyHornがキーフックする際に利用しているOpen.WinKeyboadHookというライブラリに問題があるとのことです。
    より正確には、ライブラリが利用しているToUnicodeExというWin32 APIの副作用のようです。
    同じライブラリ/APIを利用したアプリを導入している環境では、同じ問題が発生するかもしれません。

    SylphyHornのIssue #19の件
    http://blog.tmyt.jp/?page=1479371687

    Extraneous characters written when using Alt+Right on some editors
    https://github.com/Grabacr07/SylphyHorn/issues/19

     |  duke  |  返信
  8. ご報告ありがとうございます。
    とりあえず原因が特定できて良かったです。

    > ライブラリが利用しているToUnicodeExというWin32 APIの副作用のようです。

    なんと…。さすがにこんなの分かるわけないですね ^^;

    > 同じライブラリ/APIを利用したアプリを導入している環境では、同じ問題が発生するかもしれません。

    SylphyHorn を導入して試してみましたが、ALT + 方向キーを使うアプリには軒並み影響ありそうなので困ったものですね。

    MS 公式の ToUnicodeEx API の資料に注意書きがついているので、API を使う側で何らかの対策か、注意書きなどの配慮をしていただくべきかと…

    数歩譲って Mery 側で対策するとしても、ALT キーを使わずに他のキーで代用するしかなさそうですが、すでに SHIFT キーも CTRL キーも機能が割り当てられちゃってるので厳しいところですね。

    それ以外の作戦としては、メニューに「矩形選択を開始」みたいな項目を用意して、それを選択してる間は矩形選択モード。みたいな方式 (他のエディタではよくあるタイプ) にするっていうのも考えられますが… ( ;∀;)

     |  Kuro  |  返信
  9. 返信ありがとうございます。

    本件はもらい事故ですからね。
    API利用側のバグなので、あちらが修正するのが筋ですね。
    影響範囲が広いですし。

    ただ、性質的に他のアプリもAPI使用でやらかしてもおかしくないですから、回避策があればそれはうれしいです。
    また「ALT + SHIFT + カーソルキー」以外への再割当設定や、「矩形選択モード」は本件を抜きにしても欲しい機能です。
    好みとしては、「矩形選択モード」を任意のキーボードショートカットで開始できるのが好きですね。

    真魚にない機能追加となると手間もあると思いますので、余裕があるときに可否を検討していただければと思います。
    本件自体はクローズで、要望1件とさせてください。
    手間的に厳しそうなら場合は仕方ないです。

    よろしくお願いします。

     |  duke  |  返信
  10. ご返信ありがとうございます。

    > また「ALT + SHIFT + カーソルキー」以外への再割当設定

    これは他に使用できるキーがないので物理的に不可能かと思います。キーボード的に CTRL と SHIFT と ALT 以外のキーは組み合わせて使用することができません。

    > 「矩形選択モード」は本件を抜きにしても欲しい機能です。

    矩形選択を知らない人や使わない人 (私も含めて) に邪魔にならないようにしたいという当初からの概念があります。

    (私なんて他のエディタ使用時に、矩形選択モードになっちゃったらどうやって解除していいのかわからなくて、エディタ閉じて開きなおしたりしてます…)

    あえてメニューに表示せず、矩形選択と言ったら ALT だよね。っていうのを知っている人だけ使用していただくことを想定しております。

    そもそも真魚のエンジンの矩形選択モードはあまり高機能とは言えないモノなのでご要望を頂いても対応できませんので、あまり表に出したくないですね ^^;

    > 本件自体はクローズで、要望1件とさせてください。

    真魚さんもそうですが矩形選択モードをあえて搭載しないスタイルなので、申し訳ございませんが、本件の対応は現状では困難ということで回答とさせてくださいませ。

     |  Kuro  |  返信
  11. ちょっと残念ですが、そういう事情なら承知しました。

    これからも開発がんばってください。
    陰ながら応援しています。

     |  duke  |  返信
スポンサーリンク