procon_bypass_man 0.1.17 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +85 -11
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +22 -1
- data/Gemfile.lock +4 -3
- data/README.md +19 -20
- data/docs/getting_started.md +88 -0
- data/docs/setting/splatoon2_macro_sokuwari_bubble.md +52 -0
- data/docs/setting/splatoon2_recommended_setting.md +127 -0
- data/docs/upgrade_pbm.md +56 -0
- data/lib/ext/module.rb +16 -0
- data/lib/procon_bypass_man/background/jobs/report_error_reload_config_job.rb +11 -0
- data/lib/procon_bypass_man/background/jobs/report_start_reboot_job.rb +10 -0
- data/lib/procon_bypass_man/background.rb +2 -0
- data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +24 -3
- data/lib/procon_bypass_man/buttons_setting_configuration/validator.rb +12 -2
- data/lib/procon_bypass_man/buttons_setting_configuration.rb +9 -9
- data/lib/procon_bypass_man/bypass.rb +9 -8
- data/lib/procon_bypass_man/commands/bypass_command.rb +4 -11
- data/lib/procon_bypass_man/commands/connect_device_command.rb +23 -11
- data/lib/procon_bypass_man/configuration.rb +15 -1
- data/lib/procon_bypass_man/device_connector.rb +6 -33
- data/lib/procon_bypass_man/device_procon_finder.rb +65 -0
- data/lib/procon_bypass_man/never_exit_accidentally.rb +12 -0
- data/lib/procon_bypass_man/plugin/splatoon2/macro/sokuwari_for_splash_bomb.rb +22 -0
- data/lib/procon_bypass_man/plugins.rb +1 -0
- data/lib/procon_bypass_man/procon/button.rb +1 -1
- data/lib/procon_bypass_man/procon/macro.rb +89 -0
- data/lib/procon_bypass_man/procon/macro_builder.rb +123 -0
- data/lib/procon_bypass_man/procon/macro_registry.rb +2 -23
- data/lib/procon_bypass_man/procon/user_operation.rb +16 -2
- data/lib/procon_bypass_man/procon.rb +2 -0
- data/lib/procon_bypass_man/remote_pbm_action/reboot_os_action.rb +1 -0
- data/lib/procon_bypass_man/remote_pbm_action/restore_pbm_setting.rb +9 -2
- data/lib/procon_bypass_man/runner.rb +7 -7
- data/lib/procon_bypass_man/support/yaml_writer.rb +16 -0
- data/lib/procon_bypass_man/version.rb +1 -1
- data/lib/procon_bypass_man.rb +25 -24
- data/procon_bypass_man.gemspec +1 -1
- data/project_template/app.rb +5 -2
- data/project_template/setting.yml +6 -22
- data/sig/main.rbs +5 -0
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ce5a36623cb9c5ec02d78df78f1c50d8b6f23f54cedf4297bfe76d122def428
|
4
|
+
data.tar.gz: 6d459721f4dcbf4bde02c62e1ffb0aba296a39718e95d7cb5bbbbc6d27c845a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a15285db88ece865db72a73d94f8f5dceff3958bc1fccd6422e5b63441e9c9f6238d080883220b934b14bd5d7a25ce0509cce00ca2995e7385dce90c8297584
|
7
|
+
data.tar.gz: f4cbd2665d0733016eb2311b95578360a6f111f847f32bf79a798b215d0e0a59d914fe743b4fd9c3fdeedb8e2d4fefdd3fc442de4c9c285fad7cf56f6a708b5a
|
data/.circleci/config.yml
CHANGED
@@ -15,34 +15,108 @@ executors:
|
|
15
15
|
BUNDLE_JOBS: 4
|
16
16
|
working_directory: ~/app
|
17
17
|
|
18
|
+
commands: &commands
|
19
|
+
bundle_install:
|
20
|
+
parameters:
|
21
|
+
ruby-version:
|
22
|
+
type: string
|
23
|
+
steps:
|
24
|
+
- checkout
|
25
|
+
- restore_cache:
|
26
|
+
keys:
|
27
|
+
- gem-cache-v1-<< parameters.ruby-version >>-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
|
28
|
+
- gem-cache-v1-<< parameters.ruby-version >>-{{ arch }}-{{ .Branch }}
|
29
|
+
- gem-cache-v1
|
30
|
+
- run: gem i bundler && bundle install --path vendor/bundle --jobs 100 && bundle clean
|
31
|
+
- save_cache:
|
32
|
+
key: gem-cache-v1-<< parameters.ruby-version >>-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
|
33
|
+
paths:
|
34
|
+
- vendor/bundle
|
35
|
+
|
18
36
|
jobs:
|
37
|
+
bundle_install:
|
38
|
+
parameters:
|
39
|
+
ruby-version:
|
40
|
+
type: string
|
41
|
+
executor:
|
42
|
+
name: ruby
|
43
|
+
tag: << parameters.ruby-version >>
|
44
|
+
steps:
|
45
|
+
- bundle_install:
|
46
|
+
ruby-version: << parameters.ruby-version >>
|
47
|
+
lint:
|
48
|
+
parameters:
|
49
|
+
ruby-version:
|
50
|
+
type: string
|
51
|
+
executor:
|
52
|
+
name: ruby
|
53
|
+
tag: << parameters.ruby-version >>
|
54
|
+
steps:
|
55
|
+
- bundle_install:
|
56
|
+
ruby-version: << parameters.ruby-version >>
|
57
|
+
- run: bundle exec rubocop -P
|
58
|
+
type_check:
|
59
|
+
parameters:
|
60
|
+
ruby-version:
|
61
|
+
type: string
|
62
|
+
executor:
|
63
|
+
name: ruby
|
64
|
+
tag: << parameters.ruby-version >>
|
65
|
+
steps:
|
66
|
+
- bundle_install:
|
67
|
+
ruby-version: << parameters.ruby-version >>
|
68
|
+
- run: bundle exec steep check
|
19
69
|
rspec:
|
20
70
|
parameters:
|
21
|
-
version:
|
71
|
+
ruby-version:
|
22
72
|
type: string
|
23
73
|
executor:
|
24
74
|
name: ruby
|
25
|
-
tag: << parameters.version >>
|
75
|
+
tag: << parameters.ruby-version >>
|
26
76
|
steps:
|
27
|
-
-
|
28
|
-
|
29
|
-
- run: bundle --version
|
30
|
-
- run: gem --version
|
31
|
-
- run: gem install bundler
|
32
|
-
- run: bundle install --jobs 4
|
33
|
-
- run: bundle exec rubocop
|
77
|
+
- bundle_install:
|
78
|
+
ruby-version: << parameters.ruby-version >>
|
34
79
|
- run: bundle exec rspec
|
35
|
-
- run: bundle exec steep check
|
36
80
|
|
37
81
|
build_jobs: &build_jobs
|
82
|
+
- bundle_install:
|
83
|
+
matrix:
|
84
|
+
parameters:
|
85
|
+
ruby-version:
|
86
|
+
- "2.7"
|
87
|
+
- "3.0.1"
|
88
|
+
- "3.0.2"
|
89
|
+
- "3.1.0"
|
90
|
+
- lint:
|
91
|
+
matrix:
|
92
|
+
parameters:
|
93
|
+
ruby-version:
|
94
|
+
- "2.7"
|
95
|
+
- "3.0.1"
|
96
|
+
- "3.0.2"
|
97
|
+
- "3.1.0"
|
98
|
+
requires:
|
99
|
+
- bundle_install
|
100
|
+
- type_check:
|
101
|
+
matrix:
|
102
|
+
parameters:
|
103
|
+
ruby-version:
|
104
|
+
- "2.7"
|
105
|
+
# - "3.0.1" # たまにSEGVするので
|
106
|
+
- "3.0.2"
|
107
|
+
- "3.1.0"
|
108
|
+
requires:
|
109
|
+
- bundle_install
|
38
110
|
- rspec:
|
39
111
|
matrix:
|
40
112
|
parameters:
|
41
|
-
version:
|
113
|
+
ruby-version:
|
42
114
|
- "2.7"
|
43
115
|
- "3.0.1"
|
44
116
|
- "3.0.2"
|
45
117
|
- "3.1.0"
|
118
|
+
requires:
|
119
|
+
- bundle_install
|
46
120
|
workflows:
|
47
121
|
version: 2
|
48
122
|
build:
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,25 @@
|
|
1
|
-
## [0.1.
|
1
|
+
## [0.1.20] - 2022-02-13
|
2
|
+
- pbm-cloudから再起動・設定ファイルの適用指示があったときにackイベントを返すようになりました
|
3
|
+
- 起動オプションにnever_exit_accidentallyを追加しました。これを有効にすると想定外のエラーが起きたときにプロセスが停止しなくなります。デフォルトで無効です。
|
4
|
+
- pbm-cloudから設定ファイルの適用に失敗したときにファイルへの書き込みをしないようになりました
|
5
|
+
- まだadd_procon_gadget.shを実行していないときに、接続処理をする前に処理を停止するようにしました
|
6
|
+
- ラズパイの複数のUSBデバイスが刺さっていてもプロコンのデバイスを選択できるようにしました
|
7
|
+
- Switchからプロコンへ送信するバイパスを動かし続けるようにしました(切断対策)
|
8
|
+
|
9
|
+
## [0.1.19.1] - 2022-02-09
|
10
|
+
- 設定ファイルをpbm-cloudから復元するときに設定ファイルの改行コードが消える不具合を修正しました
|
11
|
+
|
12
|
+
## [0.1.19] - 2022-02-09
|
13
|
+
- 設定ファイルを再読み込みするときに構文がエラーがあると、接続が切れる不具合を修正しました
|
14
|
+
- ~設定ファイルをpbm-cloudから復元するときに設定ファイルの改行コードが消える不具合を修正しました~
|
15
|
+
|
16
|
+
## [0.1.18] - 2022-02-05
|
17
|
+
- macroでできることが増えました
|
18
|
+
- 1ステップで複数のボタン入力と継続時間を指定ができるようになりました
|
19
|
+
- スプラトゥーン2用のバブル即割マクロ(SokuwariForSplashBomb)が使えるようになりました
|
20
|
+
- https://github.com/splaplapla/procon_bypass_man-splatoon2
|
21
|
+
|
22
|
+
## [0.1.17] - 2022-01-26
|
2
23
|
- procon_bypass_man_cloudに組み込むために、内部のデータ構造を変更しました
|
3
24
|
- 設定ファイルにmacroを直接打ち込めるようになりました
|
4
25
|
- ex) `open_macro :special_command, steps: [:x, :y, :up], if_pressed: [:y]`
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
procon_bypass_man (0.1.
|
4
|
+
procon_bypass_man (0.1.20)
|
5
5
|
action_cable_client
|
6
6
|
pbmenv
|
7
7
|
sorted_set
|
@@ -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.
|
39
|
+
pbmenv (0.1.8)
|
40
40
|
pry (0.14.1)
|
41
41
|
coderay (~> 1.1)
|
42
42
|
method_source (~> 1.0)
|
@@ -49,7 +49,7 @@ GEM
|
|
49
49
|
rb-inotify (0.10.1)
|
50
50
|
ffi (~> 1.0)
|
51
51
|
rbs (1.7.1)
|
52
|
-
rbtree (0.4.
|
52
|
+
rbtree (0.4.5)
|
53
53
|
regexp_parser (2.2.0)
|
54
54
|
rexml (3.2.5)
|
55
55
|
rspec (3.10.0)
|
@@ -121,6 +121,7 @@ PLATFORMS
|
|
121
121
|
arm64-darwin-20
|
122
122
|
arm64-darwin-21
|
123
123
|
armv7l-linux
|
124
|
+
ruby
|
124
125
|
x86_64-linux
|
125
126
|
|
126
127
|
DEPENDENCIES
|
data/README.md
CHANGED
@@ -1,18 +1,25 @@
|
|
1
1
|
# ProconBypassMan
|
2
|
+
<img src="https://user-images.githubusercontent.com/1664497/151661582-3a1e8ce9-6c38-4754-8075-7a4453b3109a.jpg" width="500px">
|
3
|
+
|
2
4
|
[](https://github.com/splaplapla/procon_bypass_man/actions/workflows/ruby.yml)
|
3
5
|
|
4
|
-
* Switch
|
6
|
+
* Switchに繋いだプロコンを連射機にしたり、ボタンのリマップをしたり、マクロを実行できる、Raspberry Pi上で動かすツールです
|
5
7
|
* 設定ファイルはrubyスクリプトで記述します
|
6
8
|
* 特定のタイトルに特化した振る舞いにしたい時は各プラグインを使ってください
|
9
|
+
* ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
|
10
|
+
* https://pbm-cloud.herokuapp.com を使うと、webだけで運用が可能です
|
7
11
|
|
8
12
|

|
9
13
|
|
14
|
+
|
15
|
+
<!--
|
10
16
|
```
|
11
17
|
@startuml
|
12
|
-
ProController
|
18
|
+
ProController \-\-> (PBM): ZR押しっぱなし
|
13
19
|
Switch <-- (PBM): ZR連打
|
14
20
|
@enduml
|
15
21
|
```
|
22
|
+
-->
|
16
23
|
|
17
24
|
## 使うハードウェア
|
18
25
|
* プロコン
|
@@ -33,7 +40,7 @@ Switch <-- (PBM): ZR連打
|
|
33
40
|
* sudo apt-get install rbenv
|
34
41
|
* git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
35
42
|
* rbenv install 3.0.1
|
36
|
-
*
|
43
|
+
* gem install pbmenv
|
37
44
|
* sudo [pbmenv](https://github.com/splaplapla/pbmenv) install latest
|
38
45
|
* Raspberry Pi4 でprocon_bypass_manを実行する
|
39
46
|
* cd /usr/share/pbm/current
|
@@ -44,14 +51,6 @@ Switch <-- (PBM): ZR連打
|
|
44
51
|
## Plugins
|
45
52
|
* https://github.com/splaplapla/procon_bypass_man-splatoon2
|
46
53
|
|
47
|
-
## 関連ソフトウェア
|
48
|
-
* サーバソフトウェア(WIP)
|
49
|
-
* https://github.com/splaplapla/procon_bypass_man_cloud
|
50
|
-
* このサーバからOS自体の再起動、設定ファイルの変更、PBMのバージョンアップができます
|
51
|
-
* 自分でホストティングしてください
|
52
|
-
* pbmenv
|
53
|
-
* バージョンマネージャー
|
54
|
-
|
55
54
|
## FAQ
|
56
55
|
* どうやって動かすの?
|
57
56
|
* このツールはRaspberry Pi4をUSBガジェットモードで起動して有線でプロコンとSwitchに接続して使います
|
@@ -60,10 +59,11 @@ Switch <-- (PBM): ZR連打
|
|
60
59
|
* ラズベリーパイ4のセットアップ方法は?
|
61
60
|
* https://github.com/splaplapla/procon_bypass_man/tree/master/docs/setup_raspi.md
|
62
61
|
* モード, マクロの違いは?
|
63
|
-
* modeはProcon
|
64
|
-
*
|
62
|
+
* modeはProconの入力をそのまま再現するため機能。レイヤーを切り替えるまで繰り返し続けます
|
63
|
+
* マクロは特定のキーを順番に入れていく機能。キーの入力が終わったらマクロは終了します
|
65
64
|
* レイヤーとは?
|
66
|
-
*
|
65
|
+
* 自作キーボードみたいな感じでレイヤー毎に設定内容を記述して切り替えれます
|
66
|
+
* レイヤーは4つあって、up, down, left, rightです。十字キーに対応しています
|
67
67
|
* レイヤーを切り替える方法は?
|
68
68
|
* 設定ファイルに記述している `prefix_keys_for_changing_layer`の後ろにあるキーを同時押しながら、十字キーのどれかを押すことで任意のレイヤーに切り替わります
|
69
69
|
* このツールでできることは?
|
@@ -71,17 +71,15 @@ Switch <-- (PBM): ZR連打
|
|
71
71
|
* リマップは1つのキーを別のキーに割り当てます
|
72
72
|
* 連射中には特定のキーの入力を無視したり、複数のキーをトリガーに連射することができます
|
73
73
|
* どうしてsudoが必要なの?
|
74
|
-
* 操作するdeviceファイルの所有者がroot
|
74
|
+
* 操作するdeviceファイルの所有者がrootだからです
|
75
75
|
* 市販されているサードパーティ製連射機との違いは?
|
76
|
-
*
|
76
|
+
* サードパーティ製のコントローラーは、設定方法や形状が特殊で買い換えるたびに学習・設定コストが発生します。本ツールを使えば、設定内容はテキストで管理することができ、使い慣れたプロコンで同等のことができます
|
77
77
|
* sshなしで運用は可能ですか?
|
78
|
-
*
|
79
|
-
* https://github.com/splaplapla/procon_bypass_man_cloud
|
80
|
-
* 機能開発中ですが、使ってくれる人を探しているのでdiscordからお問合せください
|
78
|
+
* https://pbm-cloud.herokuapp.com を使えば、sshを使わずに運用が可能です
|
81
79
|
|
82
80
|
## TODO
|
83
81
|
* レコーディング機能(プロコンの入力をマクロとして登録ができる)
|
84
|
-
*
|
82
|
+
* ドキュメントを書く(doing)
|
85
83
|
|
86
84
|
## 開発系
|
87
85
|
### プロコンとの接続を維持したまま、現在の設定ファイルをPBMに反映する
|
@@ -101,6 +99,7 @@ sudo kill -USR2 `cat ./pbm_pid`
|
|
101
99
|
* project_template/web.rb, project_template/app.rb, lib/procon_bypass_man/version.rb のバージョンをあげる
|
102
100
|
* CHANGELOG.md に日付を書く
|
103
101
|
* be rake release
|
102
|
+
* githubのreleaseを作成する
|
104
103
|
|
105
104
|
## License
|
106
105
|
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# GETTING STARTED
|
2
|
+
## 目次
|
3
|
+
* [はじめに](#はじめに)
|
4
|
+
* [procon_bypass_manで解決したいこと](#procon_bypass_manで解決したいこと)
|
5
|
+
* [procon_bypass_manでできること](#procon_bypass_manでできること)
|
6
|
+
* [セットアップ](#セットアップ)
|
7
|
+
* [ラズベリーパイのセットアップ](#ラズベリーパイのセットアップ)
|
8
|
+
* [procon_bypass_manのインストール](#procon_bypass_manのインストール)
|
9
|
+
* [pbmenvを使う方法](#pbmenvを使う方法)
|
10
|
+
* [pbmenvを使わない方法](#pbmenvを使わない方法)
|
11
|
+
* [普段使いをするためのセットアップ](#普段使いをするためのセットアップ)
|
12
|
+
* レイヤー
|
13
|
+
* モード
|
14
|
+
* マクロ
|
15
|
+
* 左スティックの感度調整
|
16
|
+
* 設定ファイルの書き方
|
17
|
+
* layer
|
18
|
+
* プラグインの書き方
|
19
|
+
* 設定ファイルの書き方がわからない、エラーが起きるとき
|
20
|
+
* procon_bypass_manのアップグレード方法
|
21
|
+
* procon_bypass_man_cloudについて
|
22
|
+
|
23
|
+
## はじめに
|
24
|
+
### procon_bypass_manで解決したいこと
|
25
|
+
|
26
|
+
通常、ボタン連射をするには、市販されているサードパーティー製のコントローラーを使う必要があるのですが、ボタンの押した感覚や各種設定方法は各社の独自仕様であるため、それらを手に馴染ませるのがとても大変です。
|
27
|
+
特に「説明書を熟読してコントローラーの設定方法を覚えること、設定されている状態を思い出す」がつらい。
|
28
|
+
|
29
|
+
このツールを使うことで、使い慣れたコントローラーを使ってボタン連射ができます。また、設定内容はテキストで管理しているため一目瞭然です。
|
30
|
+
|
31
|
+
### procon_bypass_manでできること
|
32
|
+
|
33
|
+
* 設定内容を即時に入れ替え(レイヤー管理)
|
34
|
+
* 連射
|
35
|
+
* 連射中は特定のキーの入力を無視したり、複数のキーをトリガーに連射することもできます
|
36
|
+
* マクロ
|
37
|
+
* [活用例](/docs/setting/splatoon2_macro_sokuwari_bubble.md)
|
38
|
+
* 特定の同じ操作の繰り返し(モード)
|
39
|
+
* 左スティックの感度調整
|
40
|
+
* [設定方法](/docs/setting/left-analogstick-cap.md)
|
41
|
+
* WEBから設定状態の閲覧・反映
|
42
|
+
* ボタンリマップ
|
43
|
+
|
44
|
+
## セットアップ
|
45
|
+
### ラズベリーパイのセットアップ
|
46
|
+
|
47
|
+
* 後で書きます
|
48
|
+
|
49
|
+
### procon_bypass_manのインストール
|
50
|
+
|
51
|
+
pbmenvを使うと https://pbm-cloud.herokuapp.com と連携ができるのでおすすめですが、pbmenvを使わなくてもprocon_bypass_manをインストールすることは可能です。
|
52
|
+
|
53
|
+
#### pbmenvを使う方法
|
54
|
+
|
55
|
+
https://github.com/splaplapla/pbmenv
|
56
|
+
pbmenvはprocon_bypass_manのバージョンマネジャーです。procon_bypass_manはバージョンアップによって起動スクリプトに変更が入ることがあって、バージョンアップするときはpbmenvを使うとエラーが起きることなくインストールができるようになります。また、pbm-cloudと連携してすべての機能を使うには、pbmenvの利用が必須になります。
|
57
|
+
|
58
|
+
```
|
59
|
+
gem install pbmenv
|
60
|
+
sudo pbmenv install latest
|
61
|
+
cd /usr/share/pbm/current
|
62
|
+
sudo /home/pi/.rbenv/versions/3.0.1/bin/ruby app.rb
|
63
|
+
```
|
64
|
+
|
65
|
+
#### pbmenvを使わない方法
|
66
|
+
|
67
|
+
https://github.com/jiikko/procon_bypass_man_sample にある app.rb と setting.yml を Raspberry Pi にダウンロードし、ruby 3.0.1 をインストールすれば起動することができます。
|
68
|
+
|
69
|
+
```
|
70
|
+
rbenv install 3.0.1
|
71
|
+
sudo /home/pi/.rbenv/versions/3.0.1/bin/ruby app.rb
|
72
|
+
```
|
73
|
+
|
74
|
+
## 普段使いをするためのセットアップ
|
75
|
+
|
76
|
+
procon_bypass_manを起動するだけでプロコンと接続ができるようになったら、Raspberry Piを起動したときにprocon_bypass_manも自動起動するように設定しましょう。
|
77
|
+
これを設定すると、Switch本体の電源ボタンを押すだけで使えるようになります。(実際には、Raspberry Piが起動して、procon_bypass_manが動き始めるまでに30秒くらいかかります。)
|
78
|
+
|
79
|
+
自動起動方法は、pbmenvを使っているなら以下の2行をshellで実行すれば完了です。
|
80
|
+
|
81
|
+
```
|
82
|
+
sudo systemctl link /usr/share/pbm/current/systemd_units/pbm.service
|
83
|
+
sudo systemctl enable pbm.service
|
84
|
+
```
|
85
|
+
|
86
|
+
pbmenvを使っていない場合は、 https://github.com/splaplapla/procon_bypass_man/blob/master/project_template/systemd_units/pbm.service をダウンロードして、 `systemctl link` をしてください。
|
87
|
+
|
88
|
+
ゲームをやめたくなったらSwitchはそのままスリープに入って問題ないです。このときにRaspberry Piも一緒に電源が切れてしまいますが故障することはありません。
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# スプラトゥーン2: バブル即割(スプラッシュボム)マクロの設定方法
|
2
|
+
https://user-images.githubusercontent.com/1664497/152633205-ab44896b-9fa4-402c-b9aa-667e00676032.mp4
|
3
|
+
|
4
|
+
* procon_bypass_man: 0.1.18以上が必要です
|
5
|
+
* このマクロは、バブルの1個目のみを即割します
|
6
|
+
|
7
|
+
## 1. install_macro_pluginで即割マクロを有効化します
|
8
|
+
* `setting.yml` に`install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb` と書きます
|
9
|
+
* これを記述することで、layer内で呼び出せるようになります
|
10
|
+
|
11
|
+
## 2. どのlayerで発動するかを宣言します
|
12
|
+
* `setting.yml` のlayer内に`macro ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb, if_pressed: [:zl, :right]` と書きます
|
13
|
+
* `if_pressed` がどのボタンを押したときにこのマクロが発動するかの設定です
|
14
|
+
* ここのオプションは、自由に変更可能です
|
15
|
+
* この場合は、ZLと十字キーの左を同時すると、このマクロが発動します
|
16
|
+
|
17
|
+
## 3. 設定を反映させる
|
18
|
+
* 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
|
19
|
+
* ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
|
20
|
+
* 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
|
21
|
+
* setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
|
22
|
+
|
23
|
+
## まとめ
|
24
|
+
* 次の2行の追加が必要です。
|
25
|
+
* `install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb`
|
26
|
+
* `macro ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb, if_pressed: [:zl, :right]`
|
27
|
+
|
28
|
+
## 設定例1
|
29
|
+
```yaml
|
30
|
+
version: 1.0
|
31
|
+
setting: |-
|
32
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
33
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb
|
34
|
+
|
35
|
+
layer :up do
|
36
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb, if_pressed: [:zl, :right]
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
## 設定例2
|
41
|
+
* `open_macro` キーワードを使っても同じことが実行可能です。
|
42
|
+
* この場合は、 `install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb` が不要です。
|
43
|
+
|
44
|
+
```yaml
|
45
|
+
version: 1.0
|
46
|
+
setting: |-
|
47
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
48
|
+
|
49
|
+
layer :up do
|
50
|
+
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]
|
51
|
+
end
|
52
|
+
```
|
@@ -0,0 +1,127 @@
|
|
1
|
+
# スプラトゥーン2: おすすめの設定
|
2
|
+
## 1 全般
|
3
|
+
### 1.1 デスしてから最速スパジャンのためのAボタン連打
|
4
|
+
|
5
|
+
`flip :a, if_pressed: [:a]`
|
6
|
+
Aボタンを連打にします。復帰してから最速で前線復帰ができます
|
7
|
+
|
8
|
+
### 1.2 簡単スニーキング
|
9
|
+
|
10
|
+
ボタンを押している間は、水飛沫のたたないスニーキングの感度まで調整することができます。
|
11
|
+
[設定方法](/docs/setting/left-analogstick-cap.md)
|
12
|
+
|
13
|
+
### 1.3 ナイス玉連打
|
14
|
+
|
15
|
+
`flip :down, if_pressed: :down`
|
16
|
+
十字キーの下ボタンは常に連打にしておくとナイス玉が来たときに楽です。
|
17
|
+
|
18
|
+
### 1.4 最速スーパージャンプ
|
19
|
+
|
20
|
+
```
|
21
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::FastReturn
|
22
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::JumpToUpKey
|
23
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::JumpToRightKey
|
24
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::JumpToLeftKey
|
25
|
+
|
26
|
+
layer :up do
|
27
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::FastReturn, if_pressed: [:y, :b, :down]
|
28
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
|
29
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
|
30
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
マップを開かずにジャンプができます。トリガーは自由に設定できます。
|
35
|
+
|
36
|
+
## 2 武器に特化した設定
|
37
|
+
### 2.1 パブロ向け
|
38
|
+
|
39
|
+
`flip :zr, if_pressed: :zr, force_neutral: :zl`
|
40
|
+
zrを連打にします。`force_neutral: :zl` というオプションをつけることで、ZRを押している間はZLを押しても無視されるようになります。パブロでは意味がありませんが、シューターだと煽りのような動作を抑制することができます。
|
41
|
+
|
42
|
+
### 2.2 ボトルガイザー(フォイル)向け
|
43
|
+
|
44
|
+
バブル即割のマクロがあります。
|
45
|
+
[設定方法](/docs/setting/splatoon2_macro_sokuwari_bubble.md)
|
46
|
+
|
47
|
+
## 3 設定例
|
48
|
+
### 3.1 シンプルなパブロ向け
|
49
|
+
|
50
|
+
* ZRボタン, ZLボタン, Lボタンを同時押しながら十字キーを押すとレイヤーを切り替える
|
51
|
+
* ナイス玉が来たときにゲージを貯めるために十字キーの下を連打
|
52
|
+
* 復帰から最速ジャンプのためにAボタンを連打
|
53
|
+
* 筆を振るためにZRボタンを連打
|
54
|
+
* 筆ダッシュをするためにLボタンをZRボタンに変更
|
55
|
+
|
56
|
+
```yaml
|
57
|
+
version: 1.0
|
58
|
+
setting: |-
|
59
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
60
|
+
|
61
|
+
layer :up do
|
62
|
+
flip :zr, if_pressed: :zr, force_neutral: :zl
|
63
|
+
flip :a, if_pressed: [:a]
|
64
|
+
flip :down, if_pressed: :down
|
65
|
+
remap :l, to: :zr
|
66
|
+
end
|
67
|
+
|
68
|
+
layer :right do
|
69
|
+
end
|
70
|
+
|
71
|
+
layer :left do
|
72
|
+
end
|
73
|
+
|
74
|
+
layer :down do
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
### 3.2 全部盛り
|
79
|
+
|
80
|
+
* ZRボタン, ZLボタン, Lボタンを同時押しながら十字キーを押すとレイヤーを切り替える
|
81
|
+
* ナイス玉が来たときにゲージを貯めるために十字キーの下を連打
|
82
|
+
* 筆を振るためにZRボタンを連打
|
83
|
+
* 復帰から最速ジャンプのためにAボタンを連打
|
84
|
+
* YボタンとBボタンと十字キーの上を同時に押したときに、マップ開いた時の↑に設定されている味方にスーパージャンプ
|
85
|
+
* YボタンとBボタンと十字キーの左を同時に押したときに、マップ開いた時の←に設定されている味方にスーパージャンプ
|
86
|
+
* YボタンとBボタンと十字キーの右を同時に押したときに、マップ開いた時の→に設定されている味方にスーパージャンプ
|
87
|
+
* YボタンとBボタンと十字キーの下を同時に押したときに、リスポーンにスーパージャンプ
|
88
|
+
* ZLボタンと十字キーの右ボタンを同時に、バブル即割を発動
|
89
|
+
* 筆ダッシュをするためにLボタンをZRボタンに変更
|
90
|
+
* ZLボタンとAボタンを同時に押したときに移動するとスニーキング
|
91
|
+
|
92
|
+
```yaml
|
93
|
+
version: 1.0
|
94
|
+
setting: |-
|
95
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::FastReturn
|
96
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::JumpToUpKey
|
97
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::JumpToRightKey
|
98
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::JumpToLeftKey
|
99
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb
|
100
|
+
|
101
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
102
|
+
set_neutral_position 2100, 2000
|
103
|
+
|
104
|
+
layer :up do
|
105
|
+
flip :zr, if_pressed: :zr, force_neutral: :zl
|
106
|
+
flip :a, if_pressed: [:a]
|
107
|
+
flip :down, if_pressed: :down
|
108
|
+
|
109
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::FastReturn, if_pressed: [:y, :b, :down]
|
110
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
|
111
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
|
112
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
|
113
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::SokuwariForSplashBomb, if_pressed: [:zl, :right]
|
114
|
+
|
115
|
+
remap :l, to: :zr
|
116
|
+
left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
|
117
|
+
end
|
118
|
+
|
119
|
+
layer :right do
|
120
|
+
end
|
121
|
+
|
122
|
+
layer :left do
|
123
|
+
end
|
124
|
+
|
125
|
+
layer :down do
|
126
|
+
end
|
127
|
+
```
|
data/docs/upgrade_pbm.md
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# procon_bypass_man のアップグレード方法
|
2
|
+
* pbm-cloudを使う方法、pbmenvを使う方法、pbmenvを使わない方法があります
|
3
|
+
|
4
|
+
## pbm-cloudを使う方法
|
5
|
+
* https://pbm-cloud.herokuapp.com からデバイス詳細画面を開いてください
|
6
|
+
* `デバイスの設定` => `PBMのバージョンアップ`を選択して、表示されるモーダルからインストールしたいバージョンを選択し、 `このバージョンでバージョンアップする` をクリックしてください
|
7
|
+
* クリックするとRaspberry Piが再起動するのでしばらく待ってください
|
8
|
+
* 設定ファイルが初期状態に戻っているので適宜復元してください
|
9
|
+
* デバイス詳細画面からバージョンが上がっていることを確認してください
|
10
|
+
|
11
|
+
## pbmenvを使う方法
|
12
|
+
* sshをして、以下の3行を実行してください
|
13
|
+
|
14
|
+
```
|
15
|
+
sudo gem i pbmenv
|
16
|
+
sudo pbmenv install latest
|
17
|
+
sudo pbmenv use latest
|
18
|
+
```
|
19
|
+
|
20
|
+
* `sudo pbmenv use latest` を実行すると、 `/usr/share/pbm/current/` に新しいバージョンのprocon_bypass_manを配備します
|
21
|
+
* `/usr/share/pbm/current/setting.yml` が初期状態になっているので適宜変更してください
|
22
|
+
* 前バージョンのsetting.ymlは消していないので残っています
|
23
|
+
* 変更後は、プログラムを起動し直してください
|
24
|
+
|
25
|
+
## pbmenvを使わない方法
|
26
|
+
* rbファイル内にある `gem 'procon_bypass_man', ` の後ろの番号を変更することで、procon_bypass_manのバージョンを変更できます
|
27
|
+
* 最新バージョンは https://rubygems.org/gems/procon_bypass_man を参照してください
|
28
|
+
* 変更後は、プログラムを起動し直してください
|
29
|
+
* バージョンを変更後、エラーになる場合はサポートするので、discordやissueに報告をお願いします
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
#!/usr/bin/env ruby
|
33
|
+
|
34
|
+
require 'bundler/inline'
|
35
|
+
|
36
|
+
gemfile do
|
37
|
+
source 'https://rubygems.org'
|
38
|
+
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
39
|
+
gem 'procon_bypass_man', '0.1.16.1'
|
40
|
+
end
|
41
|
+
|
42
|
+
ProconBypassMan.configure do |config|
|
43
|
+
config.root = File.expand_path(__dir__)
|
44
|
+
config.logger = Logger.new("#{ProconBypassMan.root}/app.log", 5, 1024 * 1024 * 10)
|
45
|
+
config.logger.level = :debug
|
46
|
+
# config.api_servers = ['https://...']
|
47
|
+
config.enable_critical_error_logging = true
|
48
|
+
end
|
49
|
+
|
50
|
+
ProconBypassMan.run(setting_path: "/usr/share/pbm/current/setting.yml")
|
51
|
+
```
|
52
|
+
|
53
|
+
```diff
|
54
|
+
- gem 'procon_bypass_man', '0.1.16.1'
|
55
|
+
+ gem 'procon_bypass_man', '0.1.17'
|
56
|
+
```
|
data/lib/ext/module.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# pluginの定数未定義を握りつぶす
|
2
|
+
class Module
|
3
|
+
module ExtModule
|
4
|
+
def const_missing(id)
|
5
|
+
if self.name =~ /^ProconBypassMan::Plugin/
|
6
|
+
parent_const = Object.const_get("#{self.name}")
|
7
|
+
parent_const.const_set(id, Module.new)
|
8
|
+
Object.const_get("#{self.name}::#{id}")
|
9
|
+
else
|
10
|
+
super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
prepend ExtModule
|
16
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class ProconBypassMan::ReportErrorReloadConfigJob < ProconBypassMan::ReportEventBaseJob
|
2
|
+
extend ProconBypassMan::HasExternalApiSetting
|
3
|
+
|
4
|
+
# @param [String] body
|
5
|
+
def self.perform(body)
|
6
|
+
ProconBypassMan::ReportHttpClient.new(
|
7
|
+
path: path,
|
8
|
+
server_pool: server_pool,
|
9
|
+
).post(body: body, event_type: :error_reload_config)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class ProconBypassMan::ReportStartRebootJob < 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: :start_reboot)
|
9
|
+
end
|
10
|
+
end
|