テンキーのないMacbook ProでInDesignのテキストスタイルのショートカットを登録してみる

面白いことに、InDesignでは、テンキーの数字キーは[文字スタイル][段落スタイル]に割り当てるショートカット用として予約されています。
そのため、通常のショートカットでは使用できません。
逆に言えば、[文字スタイル][段落スタイル]のショートカットには、テンキー+command、option、shiftキーの組み合わせしか登録できないようで、テンキーのないマシンでは困ったことになります。

ScreenShot 2015-04-13 at 12.53.52

追加でテンキーを導入するというのも作業スペースの関係で採用したくないので、なんとか方法はないものかと思ってはいたのですが、漸く少し時間が空いたので、AppleScriptとKeyboard Maestro 4でやってみました。
(Keyboard Maestro 4のTypeアクションだけでやれると思っていたのですが、commandとoptionキーの同時押し下げの方法が分かりませんでした…)

取り敢えず、「command+shift+数字」と「command+option+数字」のパターンを設定してみました。

1KM

・InDesignがフロントアプリケーションの時だけ動作するように、最初にマクログループを作って、そのグループフォルダ内にAppleScriptを実行するアクションを設定してます。
・テンキーの数字に対応するキーコードは、このページを参照してください。

「command+shift+数字」パターンでは、スクリプト内ではshiftを設定していないのですが、Keyboard Maestro 4のホットキーの「shift」を拾っているのかもしれません。

■補遺

サンプルとしての上の図のKeyboard Maestro 4のホットキー設定は、InDesignの既定のショートカットとのコンフリクトを一切考慮していません。あくまで、テンキーのkey codeを使えば、[文字スタイル][段落スタイル]にショートカットをテンキーのないマシンでも設定できることを試したものです。

もし、既定のショートカットとのコンフリクトがある場合は、ホットキー設定を変えるか、InDesign側の既定値を書き換えるなどで対処してください。

2ディスプレー環境でそれぞれのデスクトップピクチャを切り替えるAutomatorワークフロー

セカンドディスプレー側のデスクトップピクチャの取得方法が中々つかめないまま放置していたのですが、重い腰(?)を上げて調べてみました。
「デスクトップピクチャ 2ディスプレイ mac」などのキーワードで検索したのですが、Automator、AppleScript関連の情報があまり出てこないなと彷徨ったところ、ここを見つけました。

メインディスプレーのピクチャをランダムに変更するAutomatorワークフローについてはこちらで記しましたが、もう一つのディスプレーのピクチャをどうやればいいのか…というのが、これでなんとかなりそうです。(System Events.appとはねえ…)

1

Automatorワークフローは図のAppleScriptの部分を書き換えることにします。画像ファイルの取得とフィルタリングはそのままです。
AppleScriptの部分は次の通りです。

on run {input, parameters}
	tell application "System Events"
		set DispNamae to name of every desktop as list
		set DispNamae1 to (item 1 of DispNamae as string)
		set DispNamae2 to (item 2 of DispNamae as string)
		display dialog "どちらのデスクトップのピクチャを変更しますか?" & return & "=-=-=-=-=-=-=-=-" & DispNamae1 & return & DispNamae2 & return & "=-=-=-=-=-=-=-=-" buttons {"Cancel", DispNamae1, DispNamae2} default button 2 with icon note returning {button returned:theVarb}
		if theVarb is DispNamae1 then
			tell (every desktop whose display name is DispNamae1)
				set previousItem to picture
				set targetItem to (some item in input) as alias
				if targetItem is previousItem then
					set targetItem to (some item in input) as alias
				end if
				try
					set picture to targetItem
				end try
			end tell
		else if theVarb is DispNamae2 then
			tell (every desktop whose display name is DispNamae2)
				set previousItem to picture
				set targetItem to (some item in input) as alias
				if targetItem is previousItem then
					set targetItem to (some item in input) as alias
				end if
				try
					set picture to targetItem
				end try
			end tell
		end if
	end tell
end run

2

ディスプレーの名前を入力するのも面倒なので、先ず名前を取得して、ダイアログボタンでどちらを変更するか選択するようにしています。