検索ダイアログ上でカーソルキー移動を使No.08343
yamayama88 さん 16/09/21 21:55
 
現在、文章の編集中に Ctrl+N を押す事でカーソルが下に
動くようにキー割り当てをしているのですが
検索ダイアログ上で、Ctrl+N を押しても反応がありません。

検索ダイアログにて、キーボードのカーソルキーの下を
押すと、過去の検索語の履歴が表示されると思いますが
要はこれをキーボードだけで実現したいのです。
どのような方法がありますでしょうか?

#result = sendmessage(hidemaruhandle(0), 0x0100, 40, 0);
と書かれた mac ファイルを用意し、これを Ctrl+N に
割り当ててみたのですが、うまく行きませんでした。

[ ]
RE:08343 検索ダイアログ上でカーソルキーNo.08344
でるもんたいいじま さん 16/09/22 00:41
 
こんばんは。秀丸愛用者の「でるもんた・いいじま」です。

> 現在、文章の編集中に Ctrl+N を押す事でカーソルが下に
> 動くようにキー割り当てをしているのですが
> 検索ダイアログ上で、Ctrl+N を押しても反応がありません。
>
> 検索ダイアログにて、キーボードのカーソルキーの下を
> 押すと、過去の検索語の履歴が表示されると思いますが
> 要はこれをキーボードだけで実現したいのです。

検索ダイアログ(に限らず、他のダイアログでも)でのキー操作は、
秀丸のキー割り当て機能では基本的にいじれません。このへんが、
Windowsべったりの設計でC言語(+VB?)で書かれている秀丸と、
ほとんどすべての機能をマクロで実装しているEmacsあたりとの
大きな違いです。

なので、たとえば Ctrl+X にメニューを割り当てたとしても、
ダイアログ上では Ctrl+X は常に「カットしてクリップボードへ」
として働きます。また、ダイアログが出ている状態でマクロを
起動することもできません。

検索ダイアログの「上検索」「下検索」は秀丸のキー割り当てが
反映されますが、こちらのほうが例外的存在です。

> どのような方法がありますでしょうか?

sendmessage が理解できるのであれば、たとえばAutoHotkey という
ソフトを別途インストールして、そちらのスクリプトを書くことで
可能です。

ただ、秀丸の検索ダイアログはウィンドウクラス名が「#32770」と
なっていて、これは他の各種ダイアログ、たとえばありとあらゆる
アプリのファイル読込・保存ダイアログやエクスプローラの「○○の
プロパティ」などとも共通なので、AHKで組むにしても結構面倒です。

パッと手元の #32770 関係のコードを書き写した限りでは、
こんな感じでしょうか?

#IfWinActive ahk_class #32770
^n::
    WinGetTitle t, A
    WinGet, f, ProcessName, A
    if ( f = "Hidemaru.exe" && (t == "検索" || t == "置換" ) )
    {
        Send {Down}
    }
    else if (...)
    {
        ; 他の同名ダイアログで Ctrl+N を変更したいものがあれば
        ; ここにつらつらと書き連ねる
    }
    else
    {
        Send ^n
    }
    return
#IfWinActive

AHKもかなり奥が深いので、いろいろ試行錯誤してみてください。

[ ]
RE:08344 検索ダイアログ上でカーソルキーNo.08345
秀丸担当 さん 16/09/23 17:32
 

通常では、でるもんたいいじまさんの言われる通りダイアログボックスとしての
基本的な操作ですが、検索と置換ダイアログだけは一部のキー割り当てが働くよ
うになっています。

Alt+Spaceやダイアログ左上の▼を押したときにメニューが出ますが、ここに表
示されているコマンドと、単語補完関係のキーが有効です。
さらに、単語補完が出ているときは、「カーソル上」「カーソル下」に割り当て
られているキー操作も有効で、このコマンドも例外的に扱うものの1つでした。
ここでCtrl+Nが割り当てられていると、候補を選ぶのに下矢印キーの代わりに既
に使えています。

通常ならでるもんたいいじまさんの言われるように常駐系のソフトで…、という
ことになるところですが、「カーソル下」は既に秀丸エディタで独自に処理して
いるので、ドロップダウンを出すことは簡単なので対応したいと思います。

[ ]
RE:08344 検索ダイアログ上でカーソルキーNo.08356
yamayama88 さん 16/09/27 21:06
 

返信が遅れすみません。

でるもんたいいじま さん
> sendmessage が理解できるのであれば、たとえばAutoHotkey という
> ソフトを別途インストールして、そちらのスクリプトを書くことで
> 可能です。

AutoHotkey を使う事でバッチリ希望通りの動作ができました。
非常に有益な情報、ありがとうございました。

秀丸担当 さん
> ドロップダウンを出すことは簡単なので対応したいと思います。

将来的に対応して頂ける、との事で期待したいと思います。

ありがとうございました。

[ ]