2016年8月15日月曜日

CLIP STUDIO PAINTでスペースキーを押してツールシフトを無理やり実行するAutohotkey スクリプト

自分はClip Studio Paintを使うときに左手はキーボードの上に常に置いている。更に置いている位置はホームポジションの上。なので小指はAキー、薬指はS、中指はD、人差し指はFの上に置いてある。そして親指位はスペースキーの上になる。指が常に触っているこれらのキーには一番良く使うショートカットを割り当ててある。

で問題なのは親指がよく押すスペースキーだ。クリスタではスペースキーを押すと手のひらツールに切り替わるようになっているため、このキーを押すとキャンバスを動かすことができる。この設定はペイントツールでは当たり前のキー割り当てになっているので問題はないのだがスペースを手のひらツールでしか使えないというのがかなり惜しい。常にスペースキーに親指をスタンバイしている自分としてはスペースキーを使ってなにか別のことができないかと考えた。とりあえず単純に思いついたのはスペースキーをCtrl,Shift,Altのような修飾キーと同じように使う方法。
そういうことをさせるのはすごく簡単で例えば

Space & d::send,^d

みたいな書き方をすればいいだけ。これでスペースキーとDキーを同時押しした場合にCtrl+Dが実行される。"Space &" 以下をいじれば他にもいろいろやれるとは思う。ただこれだと通常の修飾キーとやってることがあまり変わりがないので別の使いみちを考えた。自分は絵を描く時に閉領域フィルをとにかく頻繁に使う。閉領域フィルの合成モードを「消去」にして消しゴムのようにして使うのだ。この設定の閉領域フィルではなぞったところに含まれるゴミを除去できるのだ。 これがかなり便利。

例えば消しゴムではこんな感じになるが

閉領域フィルであれば、どこにも繋がっていない線をなぞった場合にその繋がっていない線、ゴミのみをピンポイントで消去してくれる。なぞった範囲が一時的に緑色で表示されるのも便利だ。ただこれをうまく使うにはいろいろ条件があるが。たとえばアンチエイリアスのかかった絵では下の画像のようにうまく消えてくれない。


で、これをとにかく頻繁に使うものだからSpaceキーと特定のキーを押すことで閉領域フィルツールに一次切り替えできるようなスクリプトを考えた。
それがこれ。


Space & f::toolshift("p","f")

toolshift(key,orikey)
{
send,{space up}{%key% down}
Loop
    {
        sleep, 15
        GetKeyState, state, Space , p 
        if state = u
            break  
        GetKeyState, state, %orikey%, p 
        if state = u
        {
            d_flg = 1
            break  
        }
    }
if d_flg
    {
        send,{%key% up}{space down}
    }
else
    {
        send,{%key% up}{Space up}
    }
d_flg = 0
return
}

設定としては、SpaceとFキーを押すとtoolshift関数を実行するようにしてる。
でtoolshift関数は2つ引数がある。引数"key"のほうは、ツールシフトさせるツールに割り当てられたショートカットキーを入れて、引数"orikey"の方は、ツールシフトを実行するためにスペースと同時に押すキーボードのキーを入れて使う。このスクリプトを使うとSpaceとFキーを押すと、引数"key"で指定したキーボードショートカットが割り当てられたツールにツールシフトする仕組み。
自分の場合は、合成モードを「消去」にした閉領域フィルツールをPキーに割り当てているので、Space+Fでこの閉領域フィルツールにツールシフトすることが可能になる。それと同時押しでツールシフトしているときにFキーから指を離せばそのまま手のひらツールに切り替わるので結構なめらかに作業ができて便利だと思う。toolshift関数の引数を変えれば別のキーの組み合わせでスペースキー押しでツールシフト設定ができる。

ツールシフトに関してはそもそもClip Studio Paint側でもできることだけど、あのミリセカンド押しのタイミングがうまくつかめず、クリスタのツールシフト機能はうまく使いこなせていないのでこういうスクリプトを用意しました。ホームポジションに左手を置いて作業をしてる人は結構いるんではないかと思うが。自分の場合はAutohotkeyを使って他にもいろいろとショートカット設定を用意しているがあまりにも滅茶苦茶な設定をしているもんだからそのへんは公開するのも面倒くさい感じになってます。