default.mp4
procon_bypass_man: 0.1.9以上が必要です
PBMには、左アナログスティックの入力の最大値を書き換える機能があります。それをsetting.ymlに書く方法を説明します
これを使うと、特定のボタンを押している間は、スティックを完全に倒している状態で、スプラトゥーンでいうところの スニーキング
で移動ができるようになります
1. プロコンの左スティックのほぼニュートラルな状態の座標を記述する
set_neutral_position x, y
を使って、プロコンの左スティックのほぼニュートラルな状態の座標を記述します
完全にニュートラルな値を記述すると最速のスニーキングが出ないので微妙にずらします
プロコンごとにニュートラルな状態の座標に個体差があって、最速のスニーキングを出すには本数値を調整する必要があります
実際に設定している座標の例
set_neutral_position 1906, 1886
set_neutral_position 2100, 2000
2. 左アナログスティックの入力の最大値を設定する
ニュートラルな状態の座標が決まったら、次はどのボタンを押したときに、どれくらいスティック感度を書き換えるか、を設定します
設定には left_analog_stick_cap
を使います
実際にパラメータを記述した例を用いると left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
のようになります
パラメータは3つあります
cap: 1100
こちらはニュートラル座標からの最大距離をどのくらいにするか、を決めます
指定したボタンが押されている間は、ニュートラル座標から1100までの範囲に「現在の座標」を書き換える、という設定になります
スプラトゥーンのスニーキング用途であれば、1100固定で問題ありません
if_pressed: [:zl, :a]
こちらは zlボタン, aボタンが両方押されている状態の時に本設定が発動する、という設定になります。トリガーです
つまり、zlとaを同時押ししている時に、左アナログスティックの入力を書き換えます
force_neutral: :a
こちらは、左アナログスティックの入力を書き換えている時は、「強制的にaボタンを押していない状態にする」という設定になります
つまり、zlボタンとaボタンを同時押ししている時には、左アナログスティックの入力を書き換えて、aボタンは押していない状態になります
どうしてこれが必要かというと、ゲームタイトルによるのですが、スプラトゥーンの場合は、ガチアサリ中に、保有しているアサリを投げないために必要になっています
force_neutralはoptionalです
上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
sudo kill -USR2 ` cat ./pbm_pid`
スティックの中央値を設定します
スプラトゥーンでの最速スニーキングを出すには、set_neutral_positionの値を変更してください
発動するボタンを設定します
setting.ymlを再読み込みします
version : 1.0
setting : |-
prefix_keys_for_changing_layer [:zr, :zl, :l]
set_neutral_position 2100, 2000
layer :up do
left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
end