単語補完の音声化No.31916
K'zawa さん 13/01/16 11:02
 
こんにちは、K'zawaです。

単語補完を音声環境で使いたいと思っているのですが、単語補完上キー/下キー
を押したとき、候補を秀丸リーダー経由で音声化する方法はないでしょうか?

[ ]
RE:31916 単語補完の音声化No.31917
秀丸担当 さん 13/01/16 15:14
 

確認してみた訳ではないのですが、単語補完の候補がうまく音声化されないのは、
つまり、音声化ソフトというのは基本的にフォーカスのあるウィンドウしか音声
化しなくて、単語補完のリスト(リストボックスおよびツールチップ)はフォー
カスが無くて、それで音声化されないってことになってしまうと思います。

音声化ソフトに自動で音声化させるためにはフォーカスを無理矢理乗せてやった
らいいのかもしれませんけども、そうするとキー入力のメッセージもそっちに行
ってしまって都合が悪いです。

現状でなんとか音声化させる作戦を考えるとしたら、例えばマクロの方で、単語
補完の候補をすべて取得するような関数を用意して、それを使ってマクロで単語
補完のメニュー表示するとかって作戦ならいけそうな気がします。

そういう作戦でどうでしょうか。

ただ、メニュー表示するということは、普通の単語補完と同じように使えること
にはならなくて、例えば単語補完の候補が出てる最中に文字入力してもその文字
が入力されないとか、そういった違いは出てきます。そもそも単語補完も自動表
示されるんじゃなくて手動で表示させてやらないとダメってことになります。

[ ]
RE:31917 単語補完の音声化No.31918
K'zawa さん 13/01/17 09:55
 
秀丸担当さん、こんにちは。
K'zawaです。

>つまり、音声化ソフトというのは基本的にフォーカスのあるウィンドウしか音声
>化しなくて、単語補完のリスト(リストボックスおよびツールチップ)はフォー
>カスが無くて、それで音声化されないってことになってしまうと思います。
>
>音声化ソフトに自動で音声化させるためにはフォーカスを無理矢理乗せてやった
>らいいのかもしれませんけども、

スクリーンリーダーが勝手に読む状況ではなく、そういう方向にもっていくのも
無理があることは分かっていました。
なので、文字列を渡して読ませるという意味で秀丸リーダーと書きました。
つまり、単語補完上キー/下キーを押したタイミングで、秀丸リーダーに文字列
を渡すことができないかな?と考えました。

>現状でなんとか音声化させる作戦を考えるとしたら、例えばマクロの方で、単語
>補完の候補をすべて取得するような関数を用意して、それを使ってマクロで単語
>補完のメニュー表示するとかって作戦ならいけそうな気がします。
>
>そういう作戦でどうでしょうか。

できれば秀丸エディタの補完機能をそのまま使いたいのですが、
先に書いたように、単語補完上/下と同時に候補文字列を秀丸リーダーに渡すよ
うな処理の実現の可能性は難しいでしょうか?
そうであれば、秀丸担当さんのいわれるようなマクロでもよいですが。

[ ]
RE:31918 単語補完の音声化No.31920
秀丸担当 さん 13/01/17 12:07
 

>できれば秀丸エディタの補完機能をそのまま使いたいのですが、
>先に書いたように、単語補完上/下と同時に候補文字列を秀丸リーダーに渡すよ
>うな処理の実現の可能性は難しいでしょうか?
>そうであれば、秀丸担当さんのいわれるようなマクロでもよいですが。

秀丸リーダーの仕組みとしては、キー操作をフックしたりして特定のタイミング
でマクロを実行させるということをしています。
それと同じような仕組みでやるとしたら、単語補完の操作中かどうかを秀丸リー
ダー側で判断して、本体側も単語補完操作中かどうかを判断させる仕組みを用意
して、さらに現状ではマクロを実行すると単語補完の操作はなくなりますが、な
くさず残すようにして、そして秀丸リーダー側から現在の単語補完のどの候補が
選ばれているかを取得させるような仕組みなど、多くの対応が必要と思われ簡単
ではなさそうです。
マクロで取得するようにするのは新しい関数を1つ用意してできそうなので、と
りあえずそれでお願いしたいところです。

[ ]
RE:31920 単語補完の音声化No.31924
K'zawa さん 13/01/17 14:04
 
秀丸担当さん、こんにちは。
K'zawaです。

>秀丸リーダーの仕組みとしては、キー操作をフックしたりして特定のタイミング
>でマクロを実行させるということをしています。

そちらではなく、DDEサーバ機能のことでしたけど、無理みたいですね。

>マクロで取得するようにするのは新しい関数を1つ用意してできそうなので、
>とりあえずそれでお願いしたいところです。

わかりました。その方向でお願いします。

[ ]
RE:31920 単語補完の音声化No.31939
K'zawa さん 13/01/25 14:05
 
秀丸担当さん、こんにちは。
K'zawaです。

関数の追加ありがとうございました。
補完候補の取得はうまくいったのですが、autocompleteで悩んでいます。

// テスト環境設定マクロ
config "xAutocompFlag1:0x81";
config "xAutocompFlag2:0x10000";
endmacro;
// ---

を実行した環境で、

--- テスト文書
秀丸 秀逸
and another

---

という文書のどこか適当なところで、「a」とタイプして下の補完マクロを実行
すると、「and」「another」とメニューが出て、選択した語に補完されるのです
が、「秀」とタイプしてからでは、「秀丸」「秀逸」とメニューが出るものの、
カーソル位置に貼り付けられません。
なぜでしょうか?


// 補完マクロ
    call GetMenuItem;
    #itemcount = ##return;
    if ( #itemcount == 0 ) endmacro;

    menuarray $m, #itemcount;
    #n = result;
    if ( #n > 0 ) {
        autocomplete #n;
    }
    endmacro;

GetMenuItem:
    while ( 1 ) {
        $$s = getautocompitem( ##i );
        if ( $$s == "" ) break;
        $m[##i] = $$s;
        ##i = ##i + 1;
    }
    return ##i;

[ ]
RE:31939 単語補完の音声化No.31942
秀丸担当 さん 13/01/25 15:50
 

バグ情報ありがとうございます。
マクロの通りにして確認することができました。

設定の日本語を対象としたものは、マッチする単語が無いときの手動操作時とい
う扱いになっている影響でうまくいっていませんでした。
こういう場合でもできるように修正させていただきます。

[ ]
RE:31942 単語補完の音声化No.31943
K'zawa さん 13/01/25 17:17
 
秀丸担当さん、こんにちは。
K'zawaです。

>う扱いになっている影響でうまくいっていませんでした。
>こういう場合でもできるように修正させていただきます。

よろしくお願いします。

[ ]