ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】Google Chrome で音声検索する。

f:id:yasushiito:20190403184928p:plain
Google Chrome で音声検索したいです。

何を言ってるんだこいつは?
Chrome で新しいタブを開けば、そこは既に検索画面ではないか。

そう言ってしまえばそれまでなんですけど、 Chrome が他のウィンドウの裏に回っていたり 新しいタブを開くのが面倒だったりしませんか?
してください。
マウスポインターが遠いところにあるかもしれないじゃないですか。

やり方は簡単です。
Google 検索画面で Ctrl + SHIFT +ピリオドで音声検索マイクが赤くなります。
たったこれだけ。
Google documentの音声入力ツールとはキーの組み合わせが違うんですね。
www.724685.com

スクリプトの作業手順は簡単です。

  • Google Chrome を最前面に持ってきて Ctrl + tで新しいタブを開くか、 Ctrl + N で新しいウインドウを開いて Google 検索画面を表示します。
  • URL バーにフォーカスがあるので tab キーで検索ページ本体をフォーカスします。これをやらないと検索画面のキー入力センサーが働きません。
  • Ctrl + SHIFT +ピリオドのキーコードを送信します。

出来上がったスクリプトはこちら。

googlesearch(){
  editor := 0
  work := 0
  WinGet, windows, list
  loop ,%windows%
  {
      idstr := "ahk_id " . windows%A_Index%
      WinGetTitle,title,%idstr%
      pos := RegExMatch(title,"- Google Chrome$")
      if pos > 0
      {
          pos := RegExMatch(title,"音声入力用")
          if pos > 0
          {
              WinGet,editor,ID,%idstr%
          }
          else
          {
              WinGet,work,ID,%idstr%
          }
      }
  }
  If (editor = 0) return
  If (work = 0) return
  Sleep 300
  WinActivate,ahk_id %work%
  Sleep 300
  Send,^t
  Sleep 800
  Send,{tab}
  Sleep 300
  Send,^+{vkbesc34}
    return
}

関数ライブラリにまとまっているのでこれをコピペするだけでは動きません。
これを呼び出すホットキーを定義するスクリプトも用意してくださいね。

yasushiito.hatenablog.com


たったこれだけでも引っかかるところはあります。
キーマップによりますとピリオドの送信は文字通りのようですが、実際には^+. ではマイクのスイッチは入りません。
ahkwiki.net
日本語環境で US キーボードを使っているからかもしれませんね。
こういう時は VF~みたいな表現でダイレクトに指定できるはずです。
そこで検索してみたのですが内容が限定的過ぎてヒットしません。
うまいこと調べる方法はないかな。

そこで見つけたのがこれです。

d.hatena.ne.jp

なるほど。
AutoHotkeyのアイコンからopenを選ぶと画面が開くんですね。
メニューからviewを選んでKey History and Script infoに進みます。
これまでのキー入力履歴が表示されるのでピリオドキーを押します。
F5を押して表示を更新すると確認できます。
一番左の二桁の数字と次の3桁の数字を使います。
2桁の方をXX、3桁の方をYYYとすると次のようになります。

vfXXscYYY

おまけ。

Google に検索を依頼したら、次の作業は期待に近そうなページのクリックかキーワードを変えての再検索のどちらかになると思います。
マウス操作を続行することは考えにくいので、いっそ Chrome の検索窓付近にマウスポインターを移動させてしまっても良いのではないかと思いました。
そこで大雑把ではありますが検索窓のマイク付近にマウスポインターを移動させる処理を追加してみました。

    WinGetPos, x,y,w,h,ahk_id %work%
    CoordMode, Mouse, Screen
    x:= x+Floor(w*3/4)
    y += 200
    MouseMove, %x%, %y%, 10

多分これでさらにマウスの移動量減ると思いますけどね。