最終更新日:2012/11/17

RecentServicePop - テキスト選択時に最近使ったサービスメニューをポップアップで表示するアプリケーション

RecentServicePopとは

自分はServiceAppleScriptでいろいろサービスメニューに追加して使っているのですが、テキストを選択して、コンテキストメニューを表示して、サービスメニューを選択するのが結構めんどくさいと前から思っていました。よく使うのはだいたい決まっているのですが、滅多に使わないのも表示しておかないといざという時に使えないので、項目数が多くなっているのも原因だと思います。ショートカットキーを付けてそれを使えばいいのかもしれませんが、ショートカットキーを覚えるのも、キーボードを押すのもめんどくさいです…。

Internet Explorerにはテキストを選択したら小さなボタンが表示されて、そこからいろいろなアクションができる機能があり、これはちょっといいかも、と思っていましたが、PopClipというアプリケーションを見てMacでも同じようなことができるみたいだから自分もこのサービスの問題を解決する為にやってみようということで、作ってみました。

一番の目的はサービスメニューを手軽に実行できることで、目的は達成できた気がします。メインで使っているテキストエディタのmiで使えませんでしたけど…。ついでに、キーボードショートカットも送れるようにしてみました。コピーとかができるようになりましたが、cmd + E、cmd + Gの検索がマウスのみで手軽にできるようになったのが嬉しいかもしれません。まだ、キーボードを押す癖は抜けてませんが。

開発環境

Mac OS X 10.6.8

動作環境

10.6以降が必要です。

10.7ではテストしていませんがたぶん動くと思います。

動作原理とできないこと

AXObserverAddNotificationでテキストの選択、メニューの選択を監視しています。補助的にCGEventTapも使っています。

ただし、この方法ではFirefox、Google Chrome、mi 2.1.12では動作しませんでした。PopClipは動作するのでPopClipはどうなってるのかな?、と思っているところです。

使い方

  1. 「ユニバーサルアクセス」環境設定で「補助装置にアクセスできるようにする」にチェックを入れます。
  2. RecentServicePop.appを起動します。
  3. テキストを選択するとウインドウが表示されるのでボタンをクリックするとサービスを実行したり、ショートカットキーを送信します。
  4. サービスメニューの項目をメニューから選択すると記録されます。
  5. 表示されるボタンの項目はサービスメニューにある項目だけです。コンテキストメニューにあっても、サービスメニュー項目でないものは記録、表示されません。
  6. ウインドウはマウスをウインドウから遠ざけると消えます。また、クリックしたり、スクロールしたりキーボードを押した時にも消えます。
  7. 起動時に設定ウインドウが表示されますが、再度表示する場合はFinderでアプリケーションを再度開いて下さい。終了も設定ウインドウから行って下さい。
  8. 設定は手抜きのため、テキスト形式です。値をタブで区切りますが、タブが分かりやすいように色がついています。
  9. サービスボタンの表示順は次の通りです。同じ項目があった場合は2回目以降は表示されません。簡単に説明すると、一定回数以上使用したものは常時表示して、あとは最近使ったものを表示するということです。
    1. アクティブなアプリケーションでの使用回数が指定した回数以上の項目
      (Always Show Service Button Used Count)
    2. すべてのアプリケーションでの使用回数が指定した回数以上の項目
      (Always Show Service Button Used Count)
    3. アクティブなアプリケーションで最近使った項目を指定した数まで
      (Recent Active App Service Button Num)
    4. すべてのアプリケーションで最近使った項目を指定した数まで
      (Recent All App Service Button Num)
  10. 使用した回数は「Manage Menu Item」のテキストを書き換えると変更できます。自分で増やして、常に表示されるようにできます。また、ここで別名を付けることもできます。
  11. 「Service Menu Item Title」はサービスメニューのタイトル名で、日本語だと「サービス」になります。日本語と英語は対応していますが、それ以外の言語の人はここをその言語のサービスメニューのタイトルにしてください。
  12. 「Text Service Menu Item Title」「File Service Menu Item Title」はそれぞれ、テキストとファイルのサービスメニュー項目のタイトルを一つ指定します。サービスメニューを選択した時にそれがテキストかファイルどちらを対象に実行したかを、ここで指定したメニュータイトルの項目があるかどうかで判断します。Textの初期値は「辞書で調べる」でこれはOS標準なのですが、FileのサービスのOS標準の項目が見当たらなかったのでここは自分でよく使うファイルのサービスメニュー項目を指定して下さい。ここのメニュータイトルが適切な値で指定されていない場合、サービスメニューの履歴を追加できません。
  13. Shortcut Buttonの設定の対象のアプリケーション名は正規表現で指定できます。
  14. テキストの設定で#から始まる行は表示されません。一時的に無効にしたい場合等に行頭に#を書くと表示されません。
  15. Shortcut Buttonをボタンを配置しないで次の場所にボタンを配置したい場合、値を「#」だけにします。例:ボタンを1行4個にしているけど、この行は3つしかボタンを配置したくない場合。
  16. Finderのファイルを気持ち長めにマウスを押して選択した時にポップアップウインドウが表示されます。
  17. AppleScriptでサービスメニューを追加したい場合はServiceAppleScriptがお勧めです。

仕様、バグ

Shortcut Button設定の書き方

GUIが無いのですべてテキストで記述します。

形式は下記の通りです。

ボタン名 tab 対象のアプリケーション tab 実行する命令のタイプ tab 実行する命令の値 tab オプション

ボタン名
ポップアップウインドウに表示されるボタンの名前です。
デフォルト設定の場合、全角1文字、半角3文字ぐらいにしないとはみ出ます
対象のアプリケーション
アプリケーション名です。ローカライズされている場合も英語名で指定してください。
*ですべてのアプリケーションが対象になります。
実行する命令のタイプ
以下の6種類あります
実行する命令の値
命令ごとに次の値を指定します。
実行するスクリプトに付いて
下記ハンドラが実行されます。
on doscript(theOptionList, theModsList)
end
theOptionListは設定に書いたオプションが入っています。
theModsListには実行時に押している修飾キーが入っています。
オプション
DontHideWindow : ボタンをクリックしてもポップアップウインドウを閉じません
StopAutoHideWindow : 通常、ポップアップウインドウからマウスを移動すると閉じますが、閉じなくなります。ウインドウを閉じる場合はクローズボタンを押して下さい。通常DontHideWindowと併用します。
ShowShortcutOnly : サービスメニューの履歴ボタンを隠してShortcut Buttonだけを表示します。 Shortcut Buttonを連続して実行する場合で、ウインドウをコンパクトにしておきたい場合に。
オプションが複数ある場合はtabで区切ります。
charとkeyCodeは次の値で修飾キーを押します。
scriptにオプションを書いた場合、スクリプトに渡されます。

現在の自分のText Shortcut Buttonの設定

現在の設定

辞書	*	service		辞書で調べる
翻訳	*	service	翻訳(Honnyaaku)
#
#
GGL	*	service	検索:Google
買物	*	service	検索:買い物
MAS	*	service	検索:Mac App Store
iTS	*	service	検索:iTunes Store

コメント

0.3.0b2

キーボードショートカットは全く使っていなくてなかったことになっていますが、サービスはほとんどこれから実行しています。

0.3.0b1 その2

cmd + Cとかショートカット系はほとんど使わないので全部消してサービスメニューのみにして使ってます。

現在のボタンの設定は次の通りです。

Dic	*	service		辞書で調べる
翻	*	service	翻訳(Honnyaaku)
#
#
GGL	*	service	検索:Google
買	*	service	検索:買い物
MAS	*	service	検索:Mac App Store
iTS	*	service	検索:iTunes Store

0.3.0b1

Finderでのサービスもよく使うものが決まっているので、これでよく使うのを表示できたらいいなあと思っていたのですが、なんとかできるようになりました。

Safariで選択したテキストをGoogle,買い物などで検索するのは全部RecentServicePopでするようになりました。もう、これ無しではやっていけないかも!?。

0.2.0

よく使うサービスの実行がすごく楽になりMacが使いやすくなった感じです。インスパイアされたアプリケーションの評価が高いのも納得です。

0.1.0

まだあまり使ってませんが、結構いいのでは!?、と自分で作って自分で思ってます。

ダウンロード

必ず、仕様、バグを見てから使って下さい。

RecentServicePop0.3.0b2.zip
どうしても、サービスが実行されない場合があるので、メニューをクリックして表示してメニューアイテムをクリックするようにした。見た目はいまいちになりました。
必ず、仕様、バグを見てから使って下さい。
RecentServicePop0.3.0b1.zip
必ず、仕様、バグを見てから使って下さい。
Shortcut Buttonのアクションが増えた。
Finderでファイル、フォルダを選択した時にも表示できるようになった。
いろいろ修正、調整
RecentServicePop0.2.0.zip
必ず、仕様、バグを見てから使って下さい。
Shortcut Buttonをアプリケーションごとに設定できるようにした。設定方法が変わりましたのですでに設定済みの方は変更して下さい。デフォルト値は下記値になります。
C	*	char	c	command	DontHideWindow	StopAutoHideWindow	ShowShortcutOnly
X	*	char	x	command	DontHideWindow	StopAutoHideWindow	ShowShortcutOnly
V	*	char	v	command
Del	*	keyCode	51	
Dict	*	service		辞書で調べる
E	*	char	e	command	DontHideWindow	ShowShortcutOnly
G	*	char	g	command	DontHideWindow	ShowShortcutOnly
G↑	*	char	g	command	shift	DontHideWindow	ShowShortcutOnly
RecentServicePop0.1.1.zip
必ず、仕様、バグを見てから使って下さい。
コピー&ペーストをしやすいようにコピーした時にウインドウを自動的に閉じないようにできるようにしてみました。閉じる場合はボタンを押してペーストするか、ウインドウのクローズボタンを押すか、キーを押すか、右クリックするか等してください。
RecentServicePop0.1.0.zip
必ず、仕様、バグを見てから使って下さい。
ちょっとだけテストして大丈夫そうだった。でも、まだまだ調整不足のところがあるかもしれません。