« 2012年2月 | メイン | 2012年4月 »

●Photoshopのアンドゥをちょっとだけ便利にする方法

2012年3月28日    

PhotoshopCS6のパブリックベータが始まっていますが
古くから絵を描くのに使っている人にとってCS3になった頃からの問題がひとつ
『レイヤを移動した後の操作を戻る操作をするとレイヤが前に使用しているレイヤに戻ってしまう』
というもの(長い...)
標準の取り消し/やり直し(Ctrl+Z)のショートカットを変更してヒストリを戻る操作がCtrl+Zにしている方も少なくないかと思います

PhoroshopCS6でもそのままの仕様のようです
パブリックベータ期間にレポートを受け付けるということなので
過去のフォーラム等でどういう扱いを受けてたのか調べていたら
変化球的な解決策が提示されているのを見つけたのでメモ

http://www.polycount.com/forum/showthread.php?p=1251347#post1251347

英語の読める方にはそのままですが 以下日本語で解説


まず 基本的な話として CS以降のPhotoshopはユーザーの書いたスクリプト(プログラム)で制御することができるようになっています。
また、メニューに登録してショートカットを割り振ることもできます

スクリプトって何?って人も上記サイトから落とした拡張子.jsxのファイル
Photoshopのプリセットスクリプトのフォルダにコピーしてソフトを再起動します
プリセットスクリプトのフォルダは
MacOSXのCS5場合:/Applications/Adobe Photoshop CS5/Presets/Scripts
WindowsのCS5場合:Program Files¥Adobe¥Adobe Photoshop CS5¥Presets¥Scripts
になるかと思います

正常に読み込まれていると [ファイル]メニューの[スクリプト]の項目に「StepBackwardSmart
というものが追加されているはずです

ここで [編集]の[キーボードショートカット]でこのStepBackwardSmartにショートカット 例えば Ctrl+Zを割り当てると 標準の戻ると同じような操作でレイヤが移動しないアンドゥができるようになります
起動一回目の操作では軽く待ちが発生しますが、その後は軽快に動くようです


アーカイブも兼ねて 上記サイトで紹介されてるスクリプトを転記しておきます(元のコードのまま)
ヒストリーを一段階戻っても選択しているレイヤが移動しないようにするスクリプトですね

//      StepBackwardSmart
//          stores current active layer, steps backward, restores old active layer
//
//          Will Fuller (sinistergfx@gmail.com)
var docRef = app.activeDocument
var savedLayer = docRef.activeLayer

var idslct = charIDToTypeID( "slct" ); var desc3 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref1 = new ActionReference(); var idHstS = charIDToTypeID( "HstS" ); var idOrdn = charIDToTypeID( "Ordn" ); var idPrvs = charIDToTypeID( "Prvs" ); ref1.putEnumerated( idHstS, idOrdn, idPrvs ); desc3.putReference( idnull, ref1 ); try { executeAction( idslct, desc3, DialogModes.NO ); } catch(err) {} try { docRef.activeLayer = savedLayer } catch(err) {}

これを拡張子.jsxで保存すれば上記サイトのものと同じになります

今回は他の人が作ったものでしたが
Photoshopをちょっと便利にしたいってことがあったらお声掛けくださいスクリプト作成でお手伝いできるかもしれません