procon_bypass_man 0.1.20.1 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +33 -8
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/.rspec +1 -0
  6. data/CHANGELOG.md +29 -2
  7. data/Gemfile.lock +3 -3
  8. data/README.md +4 -1
  9. data/docs/getting_started.md +104 -7
  10. data/docs/setting/left-analogstick-cap.md +1 -1
  11. data/docs/setting/splatoon2_macro_dasei_cancel.md +77 -0
  12. data/docs/setting/splatoon2_macro_sokuwari_bubble.md +4 -0
  13. data/docs/setting/splatoon2_shake_tansan.md +47 -0
  14. data/lib/procon_bypass_man/background/jobs/post_completed_remote_macro_job.rb +17 -0
  15. data/lib/procon_bypass_man/background/jobs/report_completed_upgrade_pbm_job.rb +10 -0
  16. data/lib/procon_bypass_man/background.rb +2 -0
  17. data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +155 -70
  18. data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +2 -0
  19. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/button.rb +28 -0
  20. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/button_list.rb +31 -0
  21. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/disable_macro_if_pressed.rb +28 -0
  22. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/flip_if_pressed.rb +31 -0
  23. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/force_neutral.rb +28 -0
  24. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/if_pressed.rb +26 -0
  25. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/if_pressed_allows_nil.rb +28 -0
  26. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/open_macro_steps.rb +26 -0
  27. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer.rb +17 -0
  28. data/lib/procon_bypass_man/buttons_setting_configuration.rb +6 -5
  29. data/lib/procon_bypass_man/bypass/usb_hid_logger.rb +4 -0
  30. data/lib/procon_bypass_man/bypass.rb +0 -1
  31. data/lib/procon_bypass_man/commands/connect_device_command.rb +11 -21
  32. data/lib/procon_bypass_man/commands/print_boot_message_command.rb +6 -0
  33. data/lib/procon_bypass_man/configuration.rb +8 -1
  34. data/lib/procon_bypass_man/device_connector.rb +7 -13
  35. data/lib/procon_bypass_man/device_procon_finder.rb +0 -22
  36. data/lib/procon_bypass_man/domains/analog_stick_position.rb +18 -0
  37. data/lib/procon_bypass_man/domains/binary/processing_procon_binary.rb +7 -2
  38. data/lib/procon_bypass_man/{bypass → domains}/bypass_mode.rb +8 -0
  39. data/lib/procon_bypass_man/domains.rb +2 -0
  40. data/lib/procon_bypass_man/plugin/splatoon2/macro/charge_tansan_bomb.rb +21 -0
  41. data/lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb +21 -0
  42. data/lib/procon_bypass_man/plugin/splatoon2/macro/fast_return.rb +4 -0
  43. data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_left_key.rb +4 -0
  44. data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_right_key.rb +4 -0
  45. data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_up_key.rb +4 -0
  46. data/lib/procon_bypass_man/plugin/splatoon2/macro/sokuwari_for_splash_bomb.rb +4 -0
  47. data/lib/procon_bypass_man/plugin/splatoon2/mode/guruguru.rb +4 -0
  48. data/lib/procon_bypass_man/plugin/splatoon2/version.rb +1 -1
  49. data/lib/procon_bypass_man/plugins.rb +2 -0
  50. data/lib/procon_bypass_man/procon/analog_stick_cap.rb +4 -23
  51. data/lib/procon_bypass_man/procon/analog_stick_manipulator.rb +36 -0
  52. data/lib/procon_bypass_man/procon/button_collection.rb +0 -8
  53. data/lib/procon_bypass_man/procon/layer_changer.rb +4 -1
  54. data/lib/procon_bypass_man/procon/macro.rb +53 -25
  55. data/lib/procon_bypass_man/procon/macro_builder.rb +43 -35
  56. data/lib/procon_bypass_man/procon/macro_plugin_map.rb +23 -0
  57. data/lib/procon_bypass_man/procon/macro_registry.rb +26 -10
  58. data/lib/procon_bypass_man/procon/user_operation.rb +30 -16
  59. data/lib/procon_bypass_man/procon/value_objects/analog_stick.rb +9 -5
  60. data/lib/procon_bypass_man/procon.rb +51 -17
  61. data/lib/procon_bypass_man/remote_macro/queue_over_process.rb +62 -0
  62. data/lib/procon_bypass_man/remote_macro/remote_macro_object.rb +30 -0
  63. data/lib/procon_bypass_man/remote_macro/remote_macro_receiver.rb +37 -0
  64. data/lib/procon_bypass_man/remote_macro/remote_macro_sender.rb +8 -0
  65. data/lib/procon_bypass_man/remote_macro/task.rb +6 -0
  66. data/lib/procon_bypass_man/remote_macro/task_queue.rb +13 -0
  67. data/lib/procon_bypass_man/remote_macro.rb +14 -0
  68. data/lib/procon_bypass_man/remote_pbm_action/change_pbm_version_action.rb +4 -1
  69. data/lib/procon_bypass_man/remote_pbm_action/value_objects/remote_pbm_action_object.rb +1 -1
  70. data/lib/procon_bypass_man/remote_pbm_action.rb +1 -0
  71. data/lib/procon_bypass_man/runner.rb +5 -1
  72. data/lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb +59 -0
  73. data/lib/procon_bypass_man/{never_exit_accidentally.rb → support/never_exit_accidentally.rb} +0 -0
  74. data/lib/procon_bypass_man/support/remote_macro_http_client.rb +9 -0
  75. data/lib/procon_bypass_man/usb_device_controller.rb +51 -0
  76. data/lib/procon_bypass_man/version.rb +1 -1
  77. data/lib/procon_bypass_man/websocket/{pbm_job_client.rb → client.rb} +44 -12
  78. data/lib/procon_bypass_man/websocket/forever.rb +47 -0
  79. data/lib/procon_bypass_man/websocket/watchdog.rb +19 -0
  80. data/lib/procon_bypass_man.rb +19 -9
  81. data/procon_bypass_man.gemspec +2 -2
  82. data/project_template/app.rb +10 -2
  83. data/project_template/systemd_units/pbm.service +1 -1
  84. data/sig/main.rbs +20 -0
  85. metadata +38 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29c989ae104586849ff797f9086b997294925372a2997797da279c6b2178098a
4
- data.tar.gz: d23be38b1c10f9f856407fa65db924e4f8528d453c5fe59f8bdc0832dc3e93f0
3
+ metadata.gz: f213faf13081ece91f62fb64af88e63672d035d29740b9c98c832f89921d8f9d
4
+ data.tar.gz: 3ec15d612dfaa91b085fef0a9e8810625b79b3a2a0781c57a56a39cc0b2d6be4
5
5
  SHA512:
6
- metadata.gz: 53a8875027f7b2e172bbb1873d1b76ff7ec191531e36c43dd044cc26e9bb54c80c2e1c9b63e5c9c0ec9f42829fd502f3cdbd9ac2ba41862c7835b97c8d3b66ac
7
- data.tar.gz: 5476c22c2648861968b08ace121eef62993c3c05685ecbd08829ab5bdae7a66045a96eb3b22c50af154393edf7f9b027e91a66d70e10f4d1db67bf8d8b240822
6
+ metadata.gz: 3570d9025f546e14e13b441a60568d58ec2ae728805061f7152c34e544e142a5c75ac37e893af96cafa5c956a8063eff41ddf6585b044c87e003e1ea4ba1902d
7
+ data.tar.gz: 4a1dceca2806e28ac8cb9ca859f82adc5dc09ce9071c743df0ee7d4e2a4f761386a43057660f930d4d105c3898ba48496658c6a7eb3e86fc2d60e86f0df5cd8d
data/.circleci/config.yml CHANGED
@@ -34,6 +34,27 @@ commands: &commands
34
34
  - vendor/bundle
35
35
 
36
36
  jobs:
37
+ check_pbm_version:
38
+ executor:
39
+ name: ruby
40
+ tag: 3.0.1
41
+ steps:
42
+ - checkout
43
+ - run: GEM_VERSION=$(grep -o -E '[0-9.]+' lib/procon_bypass_man/version.rb) && GEM_VERSION_IN_BUNDER=$(grep procon_bypass_man project_template/app.rb | grep -o -E '[0-9.]+') && test "$GEM_VERSION" = "$GEM_VERSION_IN_BUNDER"
44
+
45
+ syntax_check:
46
+ parameters:
47
+ ruby-version:
48
+ type: string
49
+ executor:
50
+ name: ruby
51
+ tag: << parameters.ruby-version >>
52
+ steps:
53
+ - checkout
54
+ - run: ruby -cw project_template/app.rb
55
+ - run: ruby -cw project_template/web.rb
56
+ - run: ruby -ryaml -e 'puts YAML.load_file("./project_template/setting.yml")["setting"]' > /tmp/content_of_setting.rb && ruby -cw /tmp/content_of_setting.rb
57
+
37
58
  bundle_install:
38
59
  parameters:
39
60
  ruby-version:
@@ -79,42 +100,46 @@ jobs:
79
100
  - run: bundle exec rspec
80
101
 
81
102
  build_jobs: &build_jobs
103
+ - check_pbm_version
104
+ - syntax_check:
105
+ matrix:
106
+ parameters:
107
+ ruby-version:
108
+ - "3.0.1"
109
+ - "3.0.2"
110
+ - "3.1.1"
82
111
  - bundle_install:
83
112
  matrix:
84
113
  parameters:
85
114
  ruby-version:
86
- - "2.7"
87
115
  - "3.0.1"
88
116
  - "3.0.2"
89
- - "3.1.0"
117
+ - "3.1.1"
90
118
  - lint:
91
119
  matrix:
92
120
  parameters:
93
121
  ruby-version:
94
- - "2.7"
95
122
  - "3.0.1"
96
123
  - "3.0.2"
97
- - "3.1.0"
124
+ - "3.1.1"
98
125
  requires:
99
126
  - bundle_install
100
127
  - type_check:
101
128
  matrix:
102
129
  parameters:
103
130
  ruby-version:
104
- - "2.7"
105
131
  # - "3.0.1" # たまにSEGVするので
106
132
  - "3.0.2"
107
- - "3.1.0"
133
+ - "3.1.1"
108
134
  requires:
109
135
  - bundle_install
110
136
  - rspec:
111
137
  matrix:
112
138
  parameters:
113
139
  ruby-version:
114
- - "2.7"
115
140
  - "3.0.1"
116
141
  - "3.0.2"
117
- - "3.1.0"
142
+ - "3.1.1"
118
143
  requires:
119
144
  - bundle_install
120
145
  workflows:
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  strategy:
18
18
  matrix:
19
- ruby-version: ['2.7', '3.0.1']
19
+ ruby-version: ['3.0.1', '3.1.1']
20
20
 
21
21
  steps:
22
22
  - uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -13,3 +13,4 @@ todo.local.md
13
13
  pbm_pid
14
14
  setting.yml
15
15
  device_id
16
+ /procon
data/.rspec CHANGED
@@ -1 +1,2 @@
1
1
  --require spec_helper
2
+ -f d
data/CHANGELOG.md CHANGED
@@ -1,12 +1,39 @@
1
+ ## [0.1.22] - 2022-04-09
2
+ * スティックを左右に入れるマクロが使えるようになりました
3
+ * スプラトゥーン2でのタンサンボムのチャージに使えます
4
+ * 例: `open_macro :shake, steps: [:shake_left_stick_and_toggle_b_for_0_1sec], if_pressed: [:b, :r], force_neutral: [:b]`
5
+ * pbm-cloudからmacroを発火させる機能に対応しました
6
+ * 設定ファイルで不備があったときに警告が表示されるようになりました
7
+
8
+ ## [0.1.21] - 2022-03-03
9
+ - install_macro_pluginしていないマクロをlayer内で使うとクラッシュしていた問題を修正しました
10
+ - 数十時間起動しっぱなしだとpbm-cloudとのwebsocketの接続が切断される問題を修正しました
11
+ - 誤発動を防ぐために、マクロを無効にする設定ができるようになりました
12
+ - すべてのマクロを無効にする
13
+ - disable_macro :all
14
+ - disable_macro :all, if_pressed: [:a]
15
+ - 特定のマクロを無効にする
16
+ - disable_macro TheMacro
17
+ - disable_macro TheMacro, if_pressed: [:a]
18
+ - スティックを傾けたタイミングでマクロを発動するオプションを実装しました
19
+ - これによってスプラトゥーン2の惰性キャンセルができるようになります
20
+ - ただし、精度がイマイチなので今後改善していきます
21
+ - 詳しくは `スプラトゥーン2: 惰性キャンセル マクロの設定方法` を参照してください
22
+
23
+ ## [0.1.20.2] - 2022-02-18
24
+ - 起動時にreniceするようにしました
25
+ - 起動時にusb gadgetモードを有効にするようにしました
26
+ - pbm-cloudからprocon_bypass_manをアップグレードできるようになりました
27
+
1
28
  ## [0.1.20.1] - 2022-02-13
2
- - Switchからプロコンへ送信するバイパスのインターバルを設定できるようにしました(切断対策)
29
+ - Switchからプロコンへ送信するバイパスのインターバルを設定できるようにしました(切断・フリーズ対策)
3
30
 
4
31
  ## [0.1.20] - 2022-02-13
5
32
  - pbm-cloudから再起動・設定ファイルの適用指示があったときにackイベントを返すようになりました
6
33
  - 起動オプションにnever_exit_accidentallyを追加しました。これを有効にすると想定外のエラーが起きたときにプロセスが停止しなくなります。デフォルトで無効です。
7
34
  - pbm-cloudから設定ファイルの適用に失敗したときにファイルへの書き込みをしないようになりました
8
35
  - まだadd_procon_gadget.shを実行していないときに、接続処理をする前に処理を停止するようにしました
9
- - ラズパイの複数のUSBデバイスが刺さっていてもプロコンのデバイスを選択できるようにしました
36
+ - ラズパイに複数のUSBデバイスが刺さっていてもプロコンのデバイスを選択できるようにしました
10
37
  - Switchからプロコンへ送信するバイパスを動かし続けるようにしました(切断対策)
11
38
 
12
39
  ## [0.1.19.1] - 2022-02-09
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- procon_bypass_man (0.1.20.1)
4
+ procon_bypass_man (0.1.22)
5
5
  action_cable_client
6
- pbmenv
6
+ pbmenv (>= 0.1.9)
7
7
  sorted_set
8
8
 
9
9
  GEM
@@ -36,7 +36,7 @@ GEM
36
36
  parallel (1.21.0)
37
37
  parser (3.0.3.2)
38
38
  ast (~> 2.4.1)
39
- pbmenv (0.1.8)
39
+ pbmenv (0.1.9)
40
40
  pry (0.14.1)
41
41
  coderay (~> 1.1)
42
42
  method_source (~> 1.0)
data/README.md CHANGED
@@ -9,10 +9,13 @@
9
9
  * ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
10
10
  * https://pbm-cloud.herokuapp.com を使うと、webだけで運用が可能です
11
11
 
12
- ![image](https://user-images.githubusercontent.com/1664497/123414210-942f6980-d5ee-11eb-8192-955bd9e37e0b.png)
12
+
13
+ <img width="880" alt="スクリーンショット 2022-04-02 9 10 38" src="https://user-images.githubusercontent.com/1664497/161356057-71e4bc2a-0217-4434-9bf1-0002b9fb261a.png">
14
+
13
15
 
14
16
 
15
17
  <!--
18
+ ![image](https://user-images.githubusercontent.com/1664497/123414210-942f6980-d5ee-11eb-8192-955bd9e37e0b.png)
16
19
  ```
17
20
  @startuml
18
21
  ProController \-\-> (PBM): ZR押しっぱなし
@@ -9,16 +9,15 @@
9
9
  * [pbmenvを使う方法](#pbmenvを使う方法)
10
10
  * [pbmenvを使わない方法](#pbmenvを使わない方法)
11
11
  * [普段使いをするためのセットアップ](#普段使いをするためのセットアップ)
12
- * レイヤー
12
+ * [レイヤー](#レイヤー)
13
13
  * モード
14
- * マクロ
15
- * 左スティックの感度調整
14
+ * [マクロ](#マクロ)
15
+ * [左スティックの感度調整](#左スティックの感度調整)
16
16
  * 設定ファイルの書き方
17
- * layer
18
17
  * プラグインの書き方
19
- * 設定ファイルの書き方がわからない、エラーが起きるとき
20
- * procon_bypass_manのアップグレード方法
21
- * procon_bypass_man_cloudについて
18
+ * [設定ファイルの書き方がわからない、エラーが起きるとき](#設定ファイルの書き方がわからない、エラーが起きるとき)
19
+ * [procon_bypass_manのアップグレード方法](#procon_bypass_manのアップグレード方法)
20
+ * [procon_bypass_man_cloudについて](#procon_bypass_man_cloudについて)
22
21
 
23
22
  ## はじめに
24
23
  ### procon_bypass_manで解決したいこと
@@ -86,3 +85,101 @@ sudo systemctl enable pbm.service
86
85
  pbmenvを使っていない場合は、 https://github.com/splaplapla/procon_bypass_man/blob/master/project_template/systemd_units/pbm.service をダウンロードして、 `systemctl link` をしてください。
87
86
 
88
87
  ゲームをやめたくなったらSwitchはそのままスリープに入って問題ないです。このときにRaspberry Piも一緒に電源が切れてしまいますが故障することはありません。
88
+
89
+ ## レイヤー
90
+ あらかじめレイヤーごとにキーの配置を設定しておき、用途に応じてレイヤーを切り替えることで違うキーが入力できるという機能です。
91
+ レイヤーは、up, down, left, rightの4つあります。 設定ファイルの書いている `prefix_keys_for_changing_layer` を押しながら、十字キーのup, down, left, rightのどれかを押すと、レイヤーを変更することができます。
92
+
93
+ レイヤー毎の定義方法は、 `layer` ブロックで囲って定義します。
94
+ 以下の例は、upレイヤーとleftレイヤーだけに設定が書かれています。ゲーム進行状況によってレイヤーを切り替えてください。
95
+ 初期レイヤーは、 up です。
96
+
97
+ ```ruby
98
+ layer :up do
99
+ flip :a, if_pressed: [:a]
100
+ end
101
+
102
+ layer :right do
103
+ end
104
+
105
+ layer :left do
106
+ flip :zr, if_pressed: :zr, force_neutral: :zl
107
+ end
108
+
109
+ layer :down do
110
+ end
111
+ ```
112
+
113
+ ## モード
114
+ * 後で書きます
115
+
116
+ ## マクロ
117
+
118
+ 決まった入力を繰り返し実行できる機能を「マクロ」と呼んでいます。
119
+ スプラトゥーンであれば、バブル即割の操作や、試合中の味方へのスーパージャンプもマクロ経由で入力できます。
120
+
121
+ マクロの実態はただの文字列で`toggle_r_for_0_2sec` や `toggle_r_for_1sec`といった時間指定もできますし、`[:x, :down, :a, :a]` のような1文字のずつの入力も可能です。
122
+ マクロを設定ファイルに定義するには、「プラグイン」か設定ファイルへ直接を記述する「open_macro」のどちらかで行えます。
123
+
124
+ 「プラグイン」を使用する場合は、マクロの詳細を記述する必要がなく、PBMのバージョンアップとともに改善が入る可能性があります。
125
+ open_macroは、マクロの詳細を設定ファイルに直書きするため、設定ファイルが複雑になる可能性がある反面、柔軟なマクロを定義することができます。
126
+ プラグインで提供されているマクロがあれば、それを使うことをお勧めします。
127
+ プラグインの詳細な設定方法については、 [バブル即割マクロの設定方法](/docs/setting/splatoon2_macro_sokuwari_bubble.md) を参考にしてください。
128
+
129
+ 次はマクロの入力に使えるコマンド(ステップ)の紹介をします。
130
+ マクロに使えるボタンは以下の通りです。
131
+
132
+ ```
133
+ y, x, b, a, sl, sr, r, zr, minus, plus, thumbr, thumbl, home, cap, down, up, right, left, l, zl
134
+ ```
135
+
136
+ マクロの形式には、1ボタンずつ入力する「バージョン1」と時間指定のできる「バージョン2」があります。
137
+ バージョン1は、 `[:x, :y, :up]` と記述すると、x, y, 十字キーの上ボタンを順番に入力します。バージョン1では実行時間を指定することはできません。
138
+
139
+ バージョン2では、 複数のボタンを同時に、時間を指定して「連打」「押しっぱなし」「無操作」ができます。
140
+ 連打はtoggleで、押しっぱなしはpressing, 無操作は、waitというキーワードを使います。
141
+ 複数のボタンを同時押しの場合は、andで繋ぎます。Xボタンを押しっぱなしにして、ZRボタンを連打する場合は `pressing_x_and_toggle_zr` と記述します。
142
+ これに時間を指定をする場合は、forで繋ぎます。 `pressing_x_and_toggle_zr_for_1sec` となります。
143
+ 時間指定には1秒未満も設定することができ、`wait_for_0_65sec` と記述すると、0.65秒間無操作となります。次はいくつか実例を紹介します。
144
+
145
+ * toggle_r_for_0_2sec
146
+ * 0.2秒間Rボタンを連打
147
+ * wait_for_0_65sec
148
+ * 0.65秒間無操作
149
+ * pressing_x_and_pressing_zr_for_0_2sec
150
+ * XボタンとZRボタンを0.2秒間押しっぱなし
151
+ * toggle_x_and_toggle_zr_for_0_2sec
152
+ * XボタンとZRボタンを0.2秒間連打
153
+
154
+ 上述したマクロ(ステップ)は、open_macroで記述できます。次は実際の記述例です。
155
+
156
+ ```
157
+ open_macro :sokuwari, steps: [:toggle_r_for_0_2sec, :toggle_thumbr_for_0_14sec, :toggle_thumbr_and_toggle_zr_for_0_34sec, :toggle_r_for_1sec], if_pressed: [:zl, :right]
158
+ ```
159
+
160
+ わからないことがあればdiscordで何でも質問してください。
161
+
162
+ ## 左スティックの感度調整
163
+ [左スティックの感度調整](/docs/setting/left-analogstick-cap.md)
164
+
165
+ ## 設定ファイルの書き方
166
+ * 後で書きます
167
+
168
+ ## プラグインの書き方
169
+ * 後で書きます
170
+
171
+ ## 設定ファイルの書き方がわからない、エラーが起きるとき
172
+
173
+ 設定ファイル(setting.yaml)は、内部がRubyスクリプトになっているので構文エラーが起きることがあります。
174
+ discordで質問してみてください。
175
+
176
+ ## procon_bypass_manのアップグレード方法
177
+ [procon_bypass_manのアップグレード方法](/docs/upgrade_pbm.md)
178
+
179
+ ## procon_bypass_man_cloudについて
180
+ https://pbm-cloud.herokuapp.com/
181
+ procon_bypass_man_cloudの運用をWEBで完結できるようになる無料のWEBサービスです。
182
+
183
+ procon_bypass_man_cloudとの接続が完了後、Raspberry Piを起動時にprocon_bypass_man_cloudが自動で立ち上がるように設定すれば、Raspberry Piへのログインが不要で設定ファイルの変更やprocon_bypass_man_cloudのアップグレードができます。
184
+ セットアップ方法などでわからないことがあればdiscordで質問してみてください。
185
+ セットアップ方法は https://pbm-cloud.herokuapp.com/faq に書いています。
@@ -38,7 +38,7 @@ https://user-images.githubusercontent.com/1664497/150636857-f3d40900-2713-41b8-8
38
38
  * setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
39
39
 
40
40
  ```shell
41
- sudo kill -USR2 `cat ./pbm_pid`
41
+ sudo kill -USR2 `cat ./pbm_pid`
42
42
  ```
43
43
 
44
44
  ## まとめ
@@ -0,0 +1,77 @@
1
+ # スプラトゥーン2: 惰性キャンセル マクロの設定方法
2
+
3
+ * 本マクロは実験段階で、オプション名などの仕様が変更される可能性が高いです
4
+ * procon_bypass_man: 0.1.21以上が必要です
5
+
6
+ ## 1. install_macro_pluginでマクロを有効化します
7
+ * `setting.yml` に`install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel` と書きます
8
+ * これを記述することで、layer内でmacroを呼び出せるようになります
9
+
10
+ ```ruby
11
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel
12
+ ```
13
+
14
+ ## 2. どのlayerで発動するかを宣言します
15
+ * `setting.yml` のlayer内に`macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_pressed: [:zl]` と書きます
16
+ * `if_pressed` がどのボタンを押したときにこのマクロが発動するかの設定です
17
+ * 惰性キャンセルなのでイカ状態になるためにzlを押します
18
+ * `if_tilted_left_stick` がスティックを倒した時に発動するオプションで、trueを渡すと有効になります
19
+ * また、傾けた時の閾値を変更することができて、trueの代わりに `{ threshold: 500 }` と書くことができます
20
+ * デフォルトが500で、ここの数値を上げると、スティックを倒した判定がより厳しくなります。最大1400くらいです。
21
+ * 連打中に、マクロの発動を無効にしたい場合は `disable_macro` で無効にできます
22
+
23
+ ```ruby
24
+ layer :up do
25
+ macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
26
+ end
27
+ ```
28
+ ```ruby
29
+ layer :up do
30
+ macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: { threshold: 500 }, if_pressed: [:zl]
31
+ end
32
+ ```
33
+ ```ruby
34
+ layer :up do
35
+ disable_macro :all, if_pressed: :a
36
+ disable_macro :all, if_pressed: :zr
37
+ macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
38
+ end
39
+ ```
40
+
41
+ ## 3. 設定を反映させる
42
+ * 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
43
+ * ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
44
+ * 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
45
+ * setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
46
+
47
+ ```shell
48
+ sudo kill -USR2 `cat ./pbm_pid`
49
+ ```
50
+
51
+ ## 設定例1
52
+ ```yaml
53
+ version: 1.0
54
+ setting: |-
55
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
56
+ install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel
57
+
58
+ layer :up do
59
+ disable_macro :all, if_pressed: :a
60
+ disable_macro :all, if_pressed: :zr
61
+ macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
62
+ end
63
+ ```
64
+
65
+ ## 設定例2
66
+ * `open_macro` キーワードを使っても同じことが実行可能です。
67
+ * この場合は、 `install_macro_plugin` が不要です。
68
+
69
+ ```yaml
70
+ version: 1.0
71
+ setting: |-
72
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
73
+
74
+ layer :up do
75
+ open_macro :dacan, steps: [:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec], if_tilted_left_stick: true, if_pressed: [:zl]
76
+ end
77
+ ```
@@ -20,6 +20,10 @@ https://user-images.githubusercontent.com/1664497/152633205-ab44896b-9fa4-402c-b
20
20
  * 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
21
21
  * setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
22
22
 
23
+ ```shell
24
+ sudo kill -USR2 `cat ./pbm_pid`
25
+ ```
26
+
23
27
  ## まとめ
24
28
  * 次の2行の追加が必要です。
25
29
  * `install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb`
@@ -0,0 +1,47 @@
1
+ # スプラトゥーン2: タンサンボムを貯めるマクロの設定方法
2
+
3
+ https://user-images.githubusercontent.com/1664497/160649435-52b084ed-05b0-4c58-88ba-667b5f256405.mp4
4
+
5
+ * procon_bypass_man: 0.1.22以上が必要です
6
+ * このマクロは、スティックの左右に入れつつ、Bボタンを連打します
7
+ * タンサンボムを貯めるのに使います
8
+
9
+ ## 1. layer内にopen_macroを記述します
10
+ * `setting.yml` のlayer内に`open_macro :shake, steps: [:shake_left_stick_and_toggle_b_for_0_1sec], if_pressed: [:b, :r], force_neutral: [:b]` と書きます
11
+ * タンサンボムは、スティックの動きとBボタンでもチャージすることができるので、RボタンとBボタンを同時押ししたときに、発動するようにしています。
12
+
13
+ ## 2. 設定を反映させる
14
+ * 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
15
+ * ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
16
+ * 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
17
+ * setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
18
+
19
+ ```shell
20
+ sudo kill -USR2 `cat ./pbm_pid`
21
+ ```
22
+
23
+ ## 設定例1
24
+ ```yaml
25
+ version: 1.0
26
+ setting: |-
27
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
28
+
29
+ layer :up do
30
+ open_macro :shake, steps: [:shake_left_stick_and_toggle_b_for_0_1sec], if_pressed: [:b, :r], force_neutral: [:b]
31
+ end
32
+ ```
33
+
34
+ ## 設定例2
35
+ pluginとして登録してあるので、 `macro` を使っても同じことができます。
36
+
37
+ ```yaml
38
+ version: 1.0
39
+ setting: |-
40
+ prefix_keys_for_changing_layer [:zr, :zl, :l]
41
+
42
+ install_macro_plugin(ProconBypassMan::Plugin::Splatoon2::Macro::ChargeTansanBomb)
43
+
44
+ layer :up do
45
+ macro ProconBypassMan::Plugin::Splatoon2::Macro::ChargeTansanBomb, if_pressed: [:b, :r], force_neutral: [:b]
46
+ end
47
+ ```
@@ -0,0 +1,17 @@
1
+ class ProconBypassMan::PostCompletedRemoteMacroJob < ProconBypassMan::BaseJob
2
+ extend ProconBypassMan::HasExternalApiSetting
3
+
4
+ # @param [Symbol] status
5
+ def self.perform(job_id)
6
+ ProconBypassMan::RemoteMacroHttpClient.new(
7
+ path: path,
8
+ server_pool: server_pool,
9
+ ).post(job_id: job_id)
10
+ end
11
+
12
+ def self.path
13
+ device_id = ProconBypassMan.device_id
14
+ "/api/devices/#{ProconBypassMan.device_id}/completed_pbm_remote_macro_jobs"
15
+ end
16
+ end
17
+
@@ -0,0 +1,10 @@
1
+ class ProconBypassMan::ReportCompletedUpgradePbmJob < ProconBypassMan::ReportEventBaseJob
2
+ extend ProconBypassMan::HasExternalApiSetting
3
+
4
+ def self.perform
5
+ ProconBypassMan::ReportHttpClient.new(
6
+ path: path,
7
+ server_pool: server_pool,
8
+ ).post(body: nil, event_type: :completed_upgrade_pbm)
9
+ end
10
+ end
@@ -12,4 +12,6 @@ require "procon_bypass_man/background/jobs/report_error_reload_config_job"
12
12
  require "procon_bypass_man/background/jobs/report_load_config_job"
13
13
  require "procon_bypass_man/background/jobs/report_error_job"
14
14
  require "procon_bypass_man/background/jobs/report_pressed_buttons_job"
15
+ require "procon_bypass_man/background/jobs/report_completed_upgrade_pbm_job"
15
16
  require "procon_bypass_man/background/jobs/sync_device_stats_job"
17
+ require "procon_bypass_man/background/jobs/post_completed_remote_macro_job"