2012年6月15日金曜日

Photoshopのスペースバー押しでのアニメーションプレビュー再生をさせなくするAHKスクリプト。

タイトルの通り。スペースバー押しでアニメーションプレビュー再生を無効にするAHKスクリプト。

Photoshop Extendedでタイムラインを表示してアニメーションを作成している時に、スペースバーを押してしまうとアニメーションプレビューが再生されてしまう。フォトショ側の設定でスペースバーが、プレビューの再生停止のショートカットに設定されているからこうなる。しかもフォトショ側でこの設定を変更することは不可能。

これではアニメを作っている時にスペースバーを押して手のひらツールを使用することは実質不可能。(スペースバーの押し具合によってはプレビュー再生はされない。スペースバーちょい押しでアニメプレビュー再生、長押しで手のひらツール一時切り替え、と言った感じに押し分けることはできなくはないが、大抵の人は間違ってプレビュー再生してしまうと思う。)ただこのAHKスクリプトを使えばプレビューは再生されなくなる。

#ifWinActive, ahk_class Photoshop
Space::
send {shift down}{space down}
KeyWait,space
send {shift up}{space up}
return
#IfWinActive

やっていることといえばただ単にスペースキーを押している時には同時にシフトキーも押していることにするだけ。なぜかわからないがシフトキーが押されていると、アニメーションプレビューは再生されない。
ただこのスクリプトには弊害もあって、このスクリプトを使っている時にスペースバーを押して手のひらツールに切り替えているときはシフトキーが押されていることになっているから、ブラシツールなどで線を引いた直後にスペースキーを押してしまうと、例のシフトキーでの直線引きの動作が発動してしまうといったことが起きる。

なのでわざわざこのスクリプトを使わずとも、アニメを作っているときはシフトキーを押しながらスペースバーを押してキャンバスをスクラブしてやればいい。フォトショ側でスペースバーの動作を設定できればこんなことをしなくていいのだけれど。ちなみに別記事にある、バーズアイビュー暴発対策用のスペースバー動作変更用AHKスクリプトの内容がこのスクリプトの内容と被ってるので同時に使うとしたら、両方を組み合わせるようにスクリプト書き変えないとダメなんでそこんとこよろしく。







追記
前までこのスクリプトは
#ifWinActive, ahk_class Photoshop
Space::
send,{space down}
send,{shift down}
KeyWait,space
send,{space up}
send,{shift up}
return
#IfWinActive

だったんですけど、これだと面倒な事が起きるんで今本文にある、訂正した奴使ってください。

面倒ってのは、
Photoshopで無変換キーを拡大縮小に使うAHKスクリプト
http://coollooc.dtiblog.com/blog-entry-224.html#axzz214Kz5Fc9
これと一緒に昔のスクリプト使うとプレビュー再生されちゃうことがあるからです。

Photoshopのバーズアイ暴発バグを解消するAHKスクリプト

最近のPhotoshopにはバーズアイビューとかいうビデオカードのOpenGL機能で動かす機能が搭載されております。どんなかというと、一度キャンバスを縮小表示して、キャンバスの全体を見れる状態にしてから、キャンバス移動位置を指定する、すると指定された場所が再び拡大表示される、というもんです。
この動画の三分あたりで紹介されてます。

"Photoshop Tips: Spring-loaded Tools, Bird's Eye View and Interactive Brush Sizing"
http://vimeo.com/18202320

この機能を発動させるには本来、手のひらツールを使用中に手のひらツールのショートカットキー(デフォルトはHキー)を押しながら左クリックをすることが必要、なのだけれどしかしこの機能を使うのとは全く関係ない動作でバーズアイビューが発動してしまうことがあるようで。2chの書き込みなどを見ると何度か言及されていました。たとえばこれとか。

23 : 名無しさん@お腹いっぱい。 : 2010/03/07(日) 12:41:54 ID:uiinlbkt
前スレで出てたバーズアイビュー暴発防止の話ってそもそも起こる理由が違ってないか?
別にRの回転多用しなくても別の全然使わないキーを回転にしてもやっぱり起こるぞ。
やっぱりCS4になってツールシフト(長押しの間だけ別ツール)が導入されたせいで
スペースキーで拡縮やスクロールしたいだけでも手のひらツールに認識されてるからなんじゃないのか?
ツールシフトかバーズアイビューだけでも切れるオプションがありゃいんだが、
任意に発動できりゃ使いみちもあるだろうに今のとこ邪魔な機能にしかなってないな・・・


このバグの原因を探っていた時にいろいろぐぐっていたのだけれど明解な原因や解決策は見つからず。色々試しているうちに暴発の理由がわかったのだけれど、暴発する条件は

ショートカットキー長押しをしそのショートカットキーに割り当てられたツールを一時使用(ツールシフト機能を使用している状態。)し、そのまま
スペースバーを押して一時的に手のひらツールを使える状態にし
このままキャンバス上で左クリックをする。


といった感じ。
押しているボタンは、ツールシフト用のショートカットキーと一時手のひらツール切り替え用のスペースバーと左クリックの3つ。
多分フォトショップがこの動作の、ツールシフトの部分で現在使用中のツールが手のひらツールであると誤認識し、そのままスペースバー押し下げを手のひらツールのショートカットを押しているものと更に誤認識し、そのまま左クリック→「なるほどお前はバーズアイビュー使いたいのだな。あいわかった、皆まで言うでない。」とバーズアイを暴発させてくれているのだと思う。

フォトショップ側ではとりあえずツールシフトを無効にすることはできないが、バーズアイビューなら、設定のパフォーマンスの項目から、OpenGL描画を有効のチェックをオフにし、OpenGL支援をなくせば無効にすることができる。ただしそれをしてしまうとOpenGL支援で動く、ピクセルグリッドやキャンバスの回転などの機能が使用できなくなる、といったものすごい弊害が発生する。とまあどうにもならない状況ですがまあ上記のような、誤認識を招くショートカット操作をしなければなんとかなるとは思う。例えば、ブラシツールを使用中に、指先ツールにツールシフトし、そのままスペースバーを押して手のひらツールに一時切り替えしキャンバスを動かす、みたいなことはしてはいけない、みたいな。
しかし、高速にショートカット切り替えをしてキャンバスをしょっちゅう動かす人はバーズアイビューの暴発は不可避なんじゃないかと。自分も、ブラシから消しゴムに切り替えてそのままスペースバー押してキャンバス動かす、みたいなことを速攻でやるから、そのときに指がしっかりショートカットキーからはなれていないので、ツールシフト状態のままになってしまっていてそのままスペースバー+左クリックを押した状態に気づかず陥っていてバーズアイがこんにちは、ってのが何度もあった。

ただ、このAHKのスクリプトを使えば、上記のような誤動作が起きる動作を行なっても、ツールシフトが無効化される用な感じになるのでバーズアイビューの暴発は減った。(なくなった、と言えないのは、ものすごく速くショートカットキーの切り替えを行うとこれでもまだ暴発はするからです。)


#ifWinActive, ahk_class Photoshop
Space::
send {a up}
send {space down}
KeyWait,space
send {space up}
return


このスクリプトを使うと、例えば、使用中のツールがブラシツールの状態で、指先ツールに変更するためにショートカットキーを押し、そのままそのショートカットキーを押したままで、スペースバーを押す、という動作を行うと、ツールシフト状態が解除され、ブラシツールから指先ツールに切り替わり、結果問題なく一時的に手のひらツールが使えるようになる、といった感じになる。ツールシフト状態ではないのでバーズアイは暴発しないという感じ。

このスクリプトではスペースキーを押すとまず
send,{a up}
という、aキーの押し上げの動作ををまっさきに送っているのだけれど、ここでツールシフトが無効化され、ショートカットの変更が確定する。(ここはaキーでなくても他のツールに割り当てられているショートカットキーならなんでも可。)適当にスクリプト書いてたらうまくいったので、どうしてこれでうまくいったのかはよくわからないけれど、多分、キーの押し上げの判定がきているため、ショートカットキー長押しの判定がなくなり、そのままツールの切り替えが行われているからだと思う。あとこのスクリプトを使っても、今回のようなキー操作を行わない場合は普通にツールシフト機能は使えます。
まあ困ってる人は適当に調べて使ってみてください。多分動きます。多分。


このバーズアイバグはCS6でもなおってないみたい。このバグに遭遇するようなキーボード操作をしている人が人が少ないから放置されてるんだろうか。

追記
Photoshop CC 体験版をいじってみたがやっぱりこのバグそのままでした。スゲー。

Nvidiaビデオカードでデュアルディスプレイ設定にしていて、モニターのマッピングがバグった時の対処法

Nvidiaのビデオカードを使っていて、モニタ二台接続してデュアルモニター環境にしているときの話。

ビデオカードのどちらの端子にDVIケーブルを接続するかで、プライマリモニターとセカンダリモニターになるかは決定されるはず。これが多分ハードウェア的な認識。だけれどなぜか、PCがこのモニターを反対に認識してしまうことがある。これが多分ソフトウェア的な認識でそれがばぐってしまう。具体的に言うと、ケーブル接続の時点でモニタAがプライマリ、モニタBがセカンダリになるようにモニタとPCをケーブル接続したとする。それがモニタAがセカンダリ、モニタBがプライマリであるとPC側が誤認識してしまうといった状況。

こうなるとたとえばWacomのペンタブレットの設定で、セカンダリモニタのみを使う設定にしているのに、それが反転して、プライマリモニタ側だけを使用する設定に勝手に変更されてしまう。これが非常に気持ち悪いし、反転したらイチイチまたペンタブの設定を変更しなおさなくてはいけなくなるし、イラスタのような繊細なアプリではマッピング位置がバグってしまって正常に線が描けなくなる、なんてことが起きる。

こうなった場合にどうするか、という話なんだけれども、NvidiaビデオカードのNvidiaコントロールパネルを開いて、"複数ディスプレイの設定"という項目をいじれば直る。ここで、"使用するディスプレイを選択します"のところで、一度プライマリモニターのみを使用して、セカンダリのモニタ接続をきる。更に今度は逆にセカンダリモニタのみを使用してプライマリモニタの接続を切るやるようにしてやる。最後に二台両方使用するようにすると、反転したモニタ認識が元に戻る。こうすればペンタブの設定をイチイチ変更し直す必要はなくなる。

PCのBiosの設定をいじっていたらモニタが勝手に反転してしまい、どうにもならなくなってワコムとビデオカードのメーカーのエルザに問い合わせたが両者とも解決策が分からないという回答を頂き、しかたがないので自分で色々といじっていたら直ったので書いておきます。