分割キーボードZSA Voyagerの設定(for Houdini)
Voyager is 何
こんなキーボード。
スペックなどは下記ブログにまとめているのでご参考されたし。
本記事ではキーコンフィグの意図・設計の説明を踏まえたうえで、僕のメインツールであるHoudiniに最適化した流れを見ていきたい。
※ここで言うHoudiniはSideFX社の3Dツールを指します
Layer0
メインとなるレイヤー。当然ここに最も使用頻度の高いキーを集めることとなる。下記の画像を見てみよう。
修飾キーなどは好みにあわせればいいと思うが、デフォルト設定から変更した個人的に大きいものは下記のとおり。
-
Alt
キーを左上に - 左親指で操作するキーに単独の
スペース
をアサイン - 右親指で操作するキーに単独の
バックスペース
をアサイン - レイヤー切り替えをテレコに(図A)
本来Alt
キーはノードの複製などで多用するため、できればホームポジションから近くに置きたかったが、ビューポート操作でスペース
キーは多用するためそちらに譲ったという経緯がある。
また、デフォルトではレイヤー切り替えのワンタップにスペース
キーがアサインされていたが、これがHoudiniと相性が悪いというのも大きなポイントだ。(Houdiniでスペース
キー同時押しを要求されるため、長押しでレイヤー切り替えになってしまうと困る)
ちなみにバックスペース
を右手親指に割り当てたのもHoudini用のカスタマイズで、実はTAB Menuはバックスペース
でも呼び出すことができる。これで左手・右手どちらでもノードを作ることができるという算段だ。
そして地味だが最も影響の大きい点として図Aにあるようにレイヤー切り替えにをテレコにしたところ。これは移動先でバッティングを引き起こしているためあまり推奨できるものではないが、僕の使い方ではどうしてもこうする必要があったので後ほど説明を行う。
Layer1
プログラミングやテキスト入力に特化したコンフィグがこちら。主にVexとPythonで多用するキーを左手に、右手に数値の直接入力を集めている。
ここで先程話題に出たレイヤー切り替えキーアサイン変更の弊害が出ている。
図Bの部分を見ていただくとわかると思うが、右親指キーをホールドしているためNumキーが分断されてしまっている。(ただし、_
が左手親指で打鍵できるようになったのは怪我の功名といえる。Pythonでもよく入力するからね)
デフォルトのキーアサインであれば下図のように左手・右手できれいに機能分離ができ、美しく覚えやすいキー配列になっている。
しかし、この整合性を犠牲にしてもやりたかったのがLayer2のキーアサインだ。
Layer2
特にこだわったのが左手のキーアサインだ。右手は見ての通りVimの移動系をセットしている。またUSキーボードは日本語・英語切り替えはAlt
+ `
で行うが、こちらはマクロで右手小指で打鍵するよう設定している。
Layer2への移動を左手親指にしたことにより、Houdiniで利用するホットキーがマウスと独立して実行できるという点が最も重要な設計になっている。(画像左手のオレンジ色のキーW
,C
,V
がHoudini用にカスタマイズされている)
またメディアコントロールも左手だけで行えるのが地味に便利だ。緊急のビデオ会議やリスト再生してる最中に突然出てくるやたらゲインのでかい曲などのスキップなど、利点は多い。
僕はフリーランスということもあり、どんな環境でも作業できるようHoudiniのカスタマイズはあまりしない方なのだが、この設定だけは必ず行っている。
下記のホットキーについて見ていきたい。(図C)
Attribute Wrangle作成ホットキー
Houdiniのシェルフツールをホットキーに割り当て、W
キーで選択した複数のノードとWrangleを接続するようセットしている。業務で使いまくりだ。
ちなみにフックしているスクリプトは下記の通り。
selNodes = hou.selectedNodes()
INPUT_LIMIT = 4
sop = hou.sopNodeTypeCategory()
if selNodes and all([n.parent().childTypeCategory() == sop for n in selNodes]):
attribWrangle = selNodes[0].parent().createNode("attribwrangle")
pos = []
for i, node in enumerate(selNodes):
if i < INPUT_LIMIT:
attribWrangle.setInput(i, node)
pos.append(node.position())
posX = sum([x[0] for x in pos]) / len(pos)
posY = min([x[1] for x in pos])
attribWrangle.setPosition(hou.Vector2(posX, posY - 1))
Reference Copyのホットキー
こちらも自前で設定している。デフォルトで欲しいなといつも思っている。
ついでにマウス右クリック
こちらをA
キーにアサインしているので左右どちらの手でも右クリックを発動できるようにしている。
まとめ
分割キーボードはいいものだ。肩こりにはかなりの効果があると個人的には思っている。ミニキーボードに関しては賛否があると思うが、ホームポジションから手を離さない設計はハマれば強いと思う。
またキーコンフィグ設定のルールだが、頭文字と機能を紐づけるか、使用頻度とホームポジションからの位置で設計するか悩むところだと思う。僕は両者を混在して設定しているが、自分が覚えやすく忘れにくいルールを採用するとよいだろう。
まだ右手の負担はあるなと思っているのでカイゼンの余地はありそうだ。
Discussion