過去記事の見直し(AHK、はてブまわり)

前回のつづきでなくてすいません(^^;
利用しているソフトやサービスの仕様が変わったことでこないだ書いたばかりの話がいきなり通用しなくなってしまったので、ちょっとその落ち穂拾いを先にやりたいと思いまして。

はてブで「タグの絞り込み」

このエントリでぼくは、はてなブックマークのデメリットとして「「未読」の「書籍」を「ジャンル」で引く、といったことが難しい」を挙げました。が、そのすぐ後にはてブで「タグの絞り込み」ができるようになったので、とりあえずこの難点は解消されましたね。

AHKで「ソフトごとのキー定義」

次にこれ。窓使いの憂鬱に比べたAutoHotkeyのデメリットとして、AHKがホットキーごとに処理を設定する仕様になっている以上、同じキーの処理を複数のソフトに設定する場合に、ソフトが立ち上がってるかとかアクティブになってるかといった場合分けをキーごとにいちいちしなければいけない、ということを挙げました。ところがこれも、ぼくがこのエントリを書くちょっと前ぐらいに出たバージョンで仕様変更がありまして、窓使いの憂鬱でできるような「ソフトごとのキー定義」ができるようになってました。具体的には「#IfWinActive」と「#IfWinExist」のコマンドですが、それを使った具体例を示してみましょう。

なまずさんによる、AutoHotkey窓使いの憂鬱の「migemo-isearch」プラグインを利用してIESleipnir等のブラウザでMigemoを使えるようにする方法の実装と説明の記事です。
ぼくもこれを利用させていただいているんですが、Sleipnirを使っているため「Microsoft Internet Explorer」とある部分を「Sleipnir」と書き換えていたんですね。ところが、そのままではSleipnir用のスクリプトを直接編集しようとした際、エディタ(xyzzy)のウィンドウタイトルに「Sleipnir」の文字が入ってしまうことで、Ctrl+Sが乗っ取られてスクリプトの上書き保存用ショートカットが効かなくなることに気づき、これを何とかしようと思いました。そのとき「#IfWin〜」の追加のあったことを思い出したので、どうせならそれを使ってみよう、と。

#Include, migemo_isearch.ahk
#IfWinActive ahk_class SleipnirMainWindow
$^s:: MIS_IEMigemoISearchForward("d:\program\xyzzy\dict\migemo-dict")
$^r:: MIS_IEMigemoISearchBackward("d:\program\xyzzy\dict\migemo-dict")

#IfWinExist ahk_class migemo-isearch
$^s:: MIS_MigemoISearchNextForward()
$^r:: MIS_MigemoISearchNextBackward()
$Esc:: MIS_MigemoISearchClose()
$Return:: MIS_MigemoISearchSelectAction()

こんな感じになりました。元のスクリプトに比べてだいぶスッキリしたのがわかると思います。これで今のところ問題なく動いてます。
「#IfWin〜」の指定はその下の設定全般にに効いてくるので、これをAutoHotkey.iniの最下部に付け加えるようにします。IEを使っている場合には上から2行目を「#IfWinActive ahk_class IEFrame」と変えればOKです、……たぶん。