ぺんちゃん日記

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

気になるキーワードをキーの長押しで検索できるようにする【AutoHotkey】。

f:id:yasushiito:20190403184928p:plain

これまでの経緯。

昨日のハックでキーの長押し判定を使って簡単に AutoHotkey スクリプトを呼び出せるようになりました。
と言っても、私はスクリーンキーボードでクリックしてキー入力しているので、キー入力後のマウスボタン長押し判定で起動するようにしたのでした。
その結果、ポーズキーの長押しで、音声入力ウィンドウのテキストを任意のウインドウに転送できるようになりました。
それが便利だったので、今日は scrlk キーの長押しでアクティブウィンドウで選択中のテキストを Google 検索できるようにしようと思います。

どんな機能にしたいか。

一番やりたいことは Visual Studio CODE などのエディタでソースコードを眺めている時に、コマンドや関数のリファレンスを参照したいということです。
なんか当たり前のこと過ぎて、きっと探せば言語毎にまとめられたリファレンスを開けるんだろうなと思いつつ。
それ以外にはネットブラウズ中に気になった単語を即座に Google 検索したいです。
大抵のブラウザはテキストを選択して右クリックしたときの メニューから検索できるようになっていますが、 この際だから AutoHotkey スクリプトで実現してしまえば便利なんじゃないかと。

後は検索ワードを選択する操作が割とだるいです。
度々言ってますがマウスドラッグ苦手やねん。
エディタなら入力カーソルが乗っかってる周辺の単語をうまい具合に選択してくれるので、 使える機能はみんな使ってしまいましょう。
アクティブウィンドウが Visual Studio CODE だった時には、 Ctrl + D でカーソル周辺の単語を選択してからクリップボードにコピーします。
それ以外のアプリケーションで適切な単語選択できるものは今のところないですね。
ブラウザについても一発で単語選択する方法はなさそうです。

ということで、将来的な拡張も考慮してアクティブウィンドウの ソフトウェアの性質ごとに適切な単語選択を 試みつつ Google 検索するようにします。

実装。

今回も技術的に難しい部分はありません。
長押しの判定も前回と同じように scrlk キーのホットキーラベルからマウス左ボタンの押しっぱなし検出します。

;長押しした時はアクティブウィンドウのカーソル周辺の単語を Chrome でネット検索する。
ScrollLock::
    ;長押し判定。
    ;スクリーンキーボードからマウスクリックで2入力しているので左ボタンを監視している。
    KeyWait, LButton, T1
    if ErrorLevel
    {
        wordgooglesearch()
        Return
    }

    Return

myahk/full.ahk at master · yasushiito/myahk

テキストを転送する処理では、将来の拡張性を考慮してぐちゃぐちゃと関数に分けていますが、やることは至ってシンプル。
特別な操作が必要なアプリケーションの時だけ、それぞれのアプリケーションに特化したキー操作を行なってテキスト選択&クリップボードへの転送を行います。
よくわからないアプリケーションの時は何も考えずに Ctrl + C でテキスト選択します。
どうやっても単語を取得できないこともあるので、単語の取得に失敗した時は 検索しないで中断します。

特別な操作が必要なアプリケーションであるかどうかの判定はプロセス名で行うのが良いかと思います。
アクティブウィンドウの ID からプロセス名を取得して、 vs code のウインドウを区別しています。

Visual Studio Code のウィンドウタイトルには編集中の言語の名称が含まれていますので、これも取得して検索ワードの補助を行います。
常識的なコマンド名は数多くの言語に用意されているので、言語名で補足しないと 期待する検索結果がえられないと思います。


注意点。

scrlk キーを押すたびにキーボードのインジケーターが点灯消灯を繰り返すことになります。
私はノート PC なのでキーボードには LED がありませんので放置してあります。
スクリーンキーボード上では反転したりしなかったりを繰り返します。
スクリーンキーボードの宿命なので、何をどうやっても回避できません。
長いこと使っていれば気にならなくなってくれるのを期待しています。

使ってみて。

Reference の参照は割と楽になりました。
ネットブラウスに関しては機会が少ないので、それほどでも。
でもクリックが一つ減りました。
ダブルクリックが楽にできれば普通に使える機能なんだけどなー。


この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら