procon_bypass_man 0.1.20.2 → 0.1.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +9 -5
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/.rspec +1 -0
  6. data/CHANGELOG.md +30 -1
  7. data/Gemfile.lock +4 -4
  8. data/README.md +4 -1
  9. data/docs/getting_started.md +81 -11
  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.rb +1 -0
  16. data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +155 -70
  17. data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +2 -0
  18. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/button.rb +28 -0
  19. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/button_list.rb +31 -0
  20. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/disable_macro_if_pressed.rb +28 -0
  21. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/flip_if_pressed.rb +31 -0
  22. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/force_neutral.rb +28 -0
  23. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/if_pressed.rb +26 -0
  24. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/if_pressed_allows_nil.rb +28 -0
  25. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer/open_macro_steps.rb +26 -0
  26. data/lib/procon_bypass_man/buttons_setting_configuration/param_normalizer.rb +17 -0
  27. data/lib/procon_bypass_man/buttons_setting_configuration.rb +6 -5
  28. data/lib/procon_bypass_man/bypass/usb_hid_logger.rb +4 -0
  29. data/lib/procon_bypass_man/bypass.rb +45 -23
  30. data/lib/procon_bypass_man/commands/bypass_command.rb +30 -10
  31. data/lib/procon_bypass_man/commands/print_boot_message_command.rb +1 -1
  32. data/lib/procon_bypass_man/configuration.rb +8 -1
  33. data/lib/procon_bypass_man/device_connector.rb +55 -174
  34. data/lib/procon_bypass_man/plugin/splatoon2/macro/charge_tansan_bomb.rb +21 -0
  35. data/lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb +21 -0
  36. data/lib/procon_bypass_man/plugin/splatoon2/version.rb +1 -1
  37. data/lib/procon_bypass_man/plugins.rb +2 -0
  38. data/lib/procon_bypass_man/procon/analog_stick_cap.rb +4 -23
  39. data/lib/procon_bypass_man/procon/analog_stick_manipulator.rb +36 -0
  40. data/lib/procon_bypass_man/procon/button_collection.rb +0 -8
  41. data/lib/procon_bypass_man/procon/layer_changer.rb +4 -1
  42. data/lib/procon_bypass_man/procon/macro.rb +53 -25
  43. data/lib/procon_bypass_man/procon/macro_builder.rb +43 -35
  44. data/lib/procon_bypass_man/procon/macro_plugin_map.rb +23 -0
  45. data/lib/procon_bypass_man/procon/macro_registry.rb +26 -10
  46. data/lib/procon_bypass_man/procon/suppress_rumble.rb +13 -0
  47. data/lib/procon_bypass_man/procon/user_operation.rb +30 -16
  48. data/lib/procon_bypass_man/procon/value_objects/analog_stick.rb +9 -5
  49. data/lib/procon_bypass_man/procon/value_objects/analog_stick_position.rb +18 -0
  50. data/lib/procon_bypass_man/{domains → procon/value_objects}/binary/base.rb +0 -0
  51. data/lib/procon_bypass_man/{domains → procon/value_objects}/binary/has_immutable_binary.rb +0 -0
  52. data/lib/procon_bypass_man/{domains → procon/value_objects}/binary/has_mutable_binary.rb +0 -0
  53. data/lib/procon_bypass_man/{domains → procon/value_objects}/binary/inbound_procon_binary.rb +5 -0
  54. data/lib/procon_bypass_man/{domains → procon/value_objects}/binary/processing_procon_binary.rb +7 -2
  55. data/lib/procon_bypass_man/procon/value_objects/binary.rb +11 -0
  56. data/lib/procon_bypass_man/{bypass → procon/value_objects}/bypass_mode.rb +0 -0
  57. data/lib/procon_bypass_man/procon/value_objects/rumble_binary.rb +18 -0
  58. data/lib/procon_bypass_man/procon.rb +59 -17
  59. data/lib/procon_bypass_man/remote_macro/queue_over_process.rb +62 -0
  60. data/lib/procon_bypass_man/remote_macro/remote_macro_object.rb +30 -0
  61. data/lib/procon_bypass_man/remote_macro/remote_macro_receiver.rb +37 -0
  62. data/lib/procon_bypass_man/remote_macro/remote_macro_sender.rb +8 -0
  63. data/lib/procon_bypass_man/remote_macro/task.rb +6 -0
  64. data/lib/procon_bypass_man/remote_macro/task_queue.rb +13 -0
  65. data/lib/procon_bypass_man/remote_macro.rb +14 -0
  66. data/lib/procon_bypass_man/remote_pbm_action/value_objects/remote_pbm_action_object.rb +1 -1
  67. data/lib/procon_bypass_man/remote_pbm_action.rb +1 -0
  68. data/lib/procon_bypass_man/runner.rb +11 -7
  69. data/lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb +59 -0
  70. data/lib/procon_bypass_man/support/cycle_sleep.rb +22 -0
  71. data/lib/procon_bypass_man/support/device_mouse_finder.rb +60 -0
  72. data/lib/procon_bypass_man/{device_procon_finder.rb → support/device_procon_finder.rb} +0 -2
  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/support/safe_timeout.rb +7 -1
  76. data/lib/procon_bypass_man/{usb_device_controller.rb → support/usb_device_controller.rb} +7 -4
  77. data/lib/procon_bypass_man/version.rb +1 -1
  78. data/lib/procon_bypass_man/websocket/{pbm_job_client.rb → client.rb} +34 -12
  79. data/lib/procon_bypass_man/websocket/forever.rb +47 -0
  80. data/lib/procon_bypass_man/websocket/watchdog.rb +19 -0
  81. data/lib/procon_bypass_man.rb +25 -23
  82. data/procon_bypass_man.gemspec +1 -1
  83. data/project_template/app.rb +13 -4
  84. data/sig/main.rbs +21 -13
  85. metadata +46 -14
  86. data/lib/procon_bypass_man/domains.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b74bbbe94f6c14a8e8cfbabb306e7229cab042ea9d5fae34ddfe134df0911528
4
- data.tar.gz: b42ea9a421add0181270f5c957c9d10079598871634f5f20da8e7101349c981e
3
+ metadata.gz: f0250a1a8546982fa0d1924606cfeb65b0376b1f0bbd2849a8c6faba39551c1a
4
+ data.tar.gz: 94301f2c9540d370e55479f9ae818de0b0e64ece99b7ad7b44698f8828e241d4
5
5
  SHA512:
6
- metadata.gz: df4ce5c1fc721fe5aa06236a0909c143f49b3616b4c02ca4202f0de7519206a22f5de864e58e50390e47dfe631475cdf1a04c3b4e99ed492913825cf0315039f
7
- data.tar.gz: 8fed8f7f1181bfb51b6b214984af09b0bc1d8b83573174fa276e97e857a0569affb14148aeabf52f0ba3b90cc30083548c191346649e8c534832fcba3b6aee25
6
+ metadata.gz: 8819eed593368519dde453cdb44168c4d05066ec6a52d22b8ca61f57a4f67d59307b41d4cb814a9b89dc2590cab17036ab2c2acf6c460213193cecf3380f8cb7
7
+ data.tar.gz: 5ba74b2733493a2efb74fd9f73ffa5d6a9103acb5e1bd2d050e5c14146e739da4b48e25e84431cab1655e3d9a48a5f8249974f66da5ecc55f8efb4a66c3e86e7
data/.circleci/config.yml CHANGED
@@ -34,6 +34,14 @@ 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 "gem 'procon_bypass_man'" | grep -o -E '[0-9.]+') && test "$GEM_VERSION" = "$GEM_VERSION_IN_BUNDER"
44
+
37
45
  syntax_check:
38
46
  parameters:
39
47
  ruby-version:
@@ -92,11 +100,11 @@ jobs:
92
100
  - run: bundle exec rspec
93
101
 
94
102
  build_jobs: &build_jobs
103
+ - check_pbm_version
95
104
  - syntax_check:
96
105
  matrix:
97
106
  parameters:
98
107
  ruby-version:
99
- - "2.7"
100
108
  - "3.0.1"
101
109
  - "3.0.2"
102
110
  - "3.1.1"
@@ -104,7 +112,6 @@ build_jobs: &build_jobs
104
112
  matrix:
105
113
  parameters:
106
114
  ruby-version:
107
- - "2.7"
108
115
  - "3.0.1"
109
116
  - "3.0.2"
110
117
  - "3.1.1"
@@ -112,7 +119,6 @@ build_jobs: &build_jobs
112
119
  matrix:
113
120
  parameters:
114
121
  ruby-version:
115
- - "2.7"
116
122
  - "3.0.1"
117
123
  - "3.0.2"
118
124
  - "3.1.1"
@@ -122,7 +128,6 @@ build_jobs: &build_jobs
122
128
  matrix:
123
129
  parameters:
124
130
  ruby-version:
125
- - "2.7"
126
131
  # - "3.0.1" # たまにSEGVするので
127
132
  - "3.0.2"
128
133
  - "3.1.1"
@@ -132,7 +137,6 @@ build_jobs: &build_jobs
132
137
  matrix:
133
138
  parameters:
134
139
  ruby-version:
135
- - "2.7"
136
140
  - "3.0.1"
137
141
  - "3.0.2"
138
142
  - "3.1.1"
@@ -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,4 +1,33 @@
1
- ## [0.1.20.2] - 2022-2-18
1
+ ## [0.1.23] - 2022-05-04
2
+ - プロセスを停止するとプロコンがBluetooth経由でSwitchと接続するようになりました
3
+ - 起動時に表示するdevice_idを一部のみ表示するようになりました
4
+ - ライブリロードが不安定になっていたのを修正しました
5
+ - コントローラのバイブレーションを無効にしました
6
+ - プロセスを停止後、再接続しやすくなりました
7
+
8
+ ## [0.1.22] - 2022-04-09
9
+ * スティックを左右に入れるマクロが使えるようになりました
10
+ * スプラトゥーン2でのタンサンボムのチャージに使えます
11
+ * 例: `open_macro :shake, steps: [:shake_left_stick_and_toggle_b_for_0_1sec], if_pressed: [:b, :r], force_neutral: [:b]`
12
+ * pbm-cloudからmacroを発火させる機能に対応しました
13
+ * 設定ファイルで不備があったときに警告が表示されるようになりました
14
+
15
+ ## [0.1.21] - 2022-03-03
16
+ - install_macro_pluginしていないマクロをlayer内で使うとクラッシュしていた問題を修正しました
17
+ - 数十時間起動しっぱなしだとpbm-cloudとのwebsocketの接続が切断される問題を修正しました
18
+ - 誤発動を防ぐために、マクロを無効にする設定ができるようになりました
19
+ - すべてのマクロを無効にする
20
+ - disable_macro :all
21
+ - disable_macro :all, if_pressed: [:a]
22
+ - 特定のマクロを無効にする
23
+ - disable_macro TheMacro
24
+ - disable_macro TheMacro, if_pressed: [:a]
25
+ - スティックを傾けたタイミングでマクロを発動するオプションを実装しました
26
+ - これによってスプラトゥーン2の惰性キャンセルができるようになります
27
+ - ただし、精度がイマイチなので今後改善していきます
28
+ - 詳しくは `スプラトゥーン2: 惰性キャンセル マクロの設定方法` を参照してください
29
+
30
+ ## [0.1.20.2] - 2022-02-18
2
31
  - 起動時にreniceするようにしました
3
32
  - 起動時にusb gadgetモードを有効にするようにしました
4
33
  - pbm-cloudからprocon_bypass_manをアップグレードできるようになりました
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- procon_bypass_man (0.1.20.2)
4
+ procon_bypass_man (0.1.23)
5
5
  action_cable_client
6
6
  pbmenv (>= 0.1.9)
7
7
  sorted_set
@@ -41,7 +41,7 @@ GEM
41
41
  coderay (~> 1.1)
42
42
  method_source (~> 1.0)
43
43
  rack (2.2.3)
44
- rack-protection (2.1.0)
44
+ rack-protection (2.2.0)
45
45
  rack
46
46
  rainbow (3.0.0)
47
47
  rake (13.0.6)
@@ -79,10 +79,10 @@ GEM
79
79
  ruby-progressbar (1.11.0)
80
80
  ruby2_keywords (0.0.5)
81
81
  set (1.0.2)
82
- sinatra (2.1.0)
82
+ sinatra (2.2.0)
83
83
  mustermann (~> 1.0)
84
84
  rack (~> 2.2)
85
- rack-protection (= 2.1.0)
85
+ rack-protection (= 2.2.0)
86
86
  tilt (~> 2.0)
87
87
  sorted_set (1.0.3)
88
88
  rbtree
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,15 +9,15 @@
9
9
  * [pbmenvを使う方法](#pbmenvを使う方法)
10
10
  * [pbmenvを使わない方法](#pbmenvを使わない方法)
11
11
  * [普段使いをするためのセットアップ](#普段使いをするためのセットアップ)
12
- * レイヤー
12
+ * [レイヤー](#レイヤー)
13
13
  * モード
14
- * マクロ
15
- * 左スティックの感度調整
14
+ * [マクロ](#マクロ)
15
+ * [左スティックの感度調整](#左スティックの感度調整)
16
16
  * 設定ファイルの書き方
17
17
  * プラグインの書き方
18
- * 設定ファイルの書き方がわからない、エラーが起きるとき
18
+ * [設定ファイルの書き方がわからない、エラーが起きるとき](#設定ファイルの書き方がわからない、エラーが起きるとき)
19
19
  * [procon_bypass_manのアップグレード方法](#procon_bypass_manのアップグレード方法)
20
- * procon_bypass_man_cloudについて
20
+ * [procon_bypass_man_cloudについて](#procon_bypass_man_cloudについて)
21
21
 
22
22
  ## はじめに
23
23
  ### procon_bypass_manで解決したいこと
@@ -87,16 +87,80 @@ pbmenvを使っていない場合は、 https://github.com/splaplapla/procon_byp
87
87
  ゲームをやめたくなったらSwitchはそのままスリープに入って問題ないです。このときにRaspberry Piも一緒に電源が切れてしまいますが故障することはありません。
88
88
 
89
89
  ## レイヤー
90
- * 後で書きます
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
+ ```
91
112
 
92
113
  ## モード
93
114
  * 後で書きます
94
115
 
95
116
  ## マクロ
96
- * 後で書きます
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で何でも質問してください。
97
161
 
98
162
  ## 左スティックの感度調整
99
- * 後で書きます
163
+ [左スティックの感度調整](/docs/setting/left-analogstick-cap.md)
100
164
 
101
165
  ## 設定ファイルの書き方
102
166
  * 後で書きます
@@ -106,11 +170,17 @@ pbmenvを使っていない場合は、 https://github.com/splaplapla/procon_byp
106
170
 
107
171
  ## 設定ファイルの書き方がわからない、エラーが起きるとき
108
172
 
109
- 設定部分は、Rubyスクリプトになっているので構文エラーが起きることがあります。
173
+ 設定ファイル(setting.yaml)は、内部がRubyスクリプトになっているので構文エラーが起きることがあります。
110
174
  discordで質問してみてください。
111
175
 
112
176
  ## procon_bypass_manのアップグレード方法
113
- [/docs/upgrade_pbm.md](/docs/upgrade_pbm.md)
177
+ [procon_bypass_manのアップグレード方法](/docs/upgrade_pbm.md)
114
178
 
115
179
  ## procon_bypass_man_cloudについて
116
- * 後で書きます
180
+ https://pbm-cloud.herokuapp.com/
181
+ procon_bypass_man_cloudの運用をWEBで完結できるようになる無料のWEBサービスです。
182
+
183
+ procon_bypass_man_cloudとの接続が完了後、Raspberry Piを起動時にprocon_bypass_manが自動で立ち上がるように設定すれば、Raspberry Piへのログインが不要で設定ファイルの変更やprocon_bypass_man自体のアップグレードができます。
184
+ セットアップ方法などでわからないことがあればdiscordで質問してみてください。
185
+
186
+ セットアップ方法は 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
+
@@ -14,3 +14,4 @@ require "procon_bypass_man/background/jobs/report_error_job"
14
14
  require "procon_bypass_man/background/jobs/report_pressed_buttons_job"
15
15
  require "procon_bypass_man/background/jobs/report_completed_upgrade_pbm_job"
16
16
  require "procon_bypass_man/background/jobs/sync_device_stats_job"
17
+ require "procon_bypass_man/background/jobs/post_completed_remote_macro_job"