ぺんちゃん日記

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

【AutoHotkey】度々不具合を起こす URL コピーを修正した

目次


URL コピーの chrome 拡張。

Google Chrome でキーボードショートカットから URL をコピーするために Chrome 拡張を入れています。
拡張を入れなくても Ctrl + L で URL バーの URL を選択できるのですが、これだとウェブページ以上の選択フォーカスが失われてしまうので拡張が必要なのです。

copy title & URL拡張とその問題。

拡張をインストールしたらショートカットキー設定で ALT +3を割り当てます。
ショートカットを呼び出せばクリップボードに URL が入る………はずだったのですが、 Chrome 拡張の仕様変更によりできなくなりました。
多分拡張を使って無言コピーができなくなったのでは?
ALT +3で拡張を起動するとクリップに転送された内容がポップアップされます。
ユーザーがアクションを起こすのでポップアップが表示され続けてウェブページの入力フォーカスは失われます。
つまりポップアップを閉じない限り、その後の自動操作は失敗します。
それが原因で「 YouTube の動画だったら○○する」「 githubソースコードだったら引用する」などの自動スクリプトが動かなくなってました。
こいつは困ったぞ。

対処する。

こういう時は ESC キーを押して見る。
するとポップアップは閉じます。
入力フォーカスを元通りなので自動処理内で ESC キーを送信すれば動くようになるはず。
ただしある程度スリープを入れておかないと取りこぼされる。
URL 取得は頻繁に使われるのでスリープが短いほど良い。
様子を見ながら調整します。

    ;Chrome の設定ページなどChrome 拡張がコピペしてくれない URL があるので警告メッセージを設定しておく。
    Clipboard := "URL の取得に失敗しました。"
    Send,!3
    ;クリップボードに転送された文字列がポップアップで表示されてブラウザ操作をブロックしてしまうので ESC キーでキャンセルする
    Sleep, 500
    ;複数タブの URL をコピーできるタイプのエクステンションは改行コードを含むことがあるので削除しておく。
    Clipboard := cutcrlf(Clipboard)
    send, {Escape}
    return Clipboard


コピー内容は Markdown 形式。

拡張は URL だけでなくタイトルと URL を Markdown 形式でクリップボード転送します。
私が本当に必要なのは URL だけ。
タイトルは邪魔なだけだから URL だけを取得するモードが欲しいんだけど 、探した限りではそういうのはなかった。
そこで渋々ながらMarkDown形式のテキストから URL だけを抜き出す処理を書くことにした………のだけどそれはまた今度。

追記。
その処理について書きました。
yasushiito.hatenablog.com


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

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