procon_bypass_man 0.1.18 → 0.1.20.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +85 -11
- data/CHANGELOG.md +19 -1
- data/Gemfile.lock +3 -3
- data/README.md +16 -22
- data/docs/getting_started.md +88 -0
- data/docs/setting/splatoon2_recommended_setting.md +127 -0
- data/docs/upgrade_pbm.md +25 -1
- 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 +21 -2
- 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/bypass_mode.rb +21 -0
- data/lib/procon_bypass_man/bypass.rb +10 -8
- data/lib/procon_bypass_man/commands/bypass_command.rb +20 -8
- data/lib/procon_bypass_man/commands/connect_device_command.rb +23 -11
- data/lib/procon_bypass_man/configuration.rb +30 -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/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/scheduler.rb +1 -1
- 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 +24 -11
- data/project_template/app.rb +5 -1
- data/project_template/setting.yml +6 -22
- data/sig/main.rbs +5 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29c989ae104586849ff797f9086b997294925372a2997797da279c6b2178098a
|
4
|
+
data.tar.gz: d23be38b1c10f9f856407fa65db924e4f8528d453c5fe59f8bdc0832dc3e93f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53a8875027f7b2e172bbb1873d1b76ff7ec191531e36c43dd044cc26e9bb54c80c2e1c9b63e5c9c0ec9f42829fd502f3cdbd9ac2ba41862c7835b97c8d3b66ac
|
7
|
+
data.tar.gz: 5476c22c2648861968b08ace121eef62993c3c05685ecbd08829ab5bdae7a66045a96eb3b22c50af154393edf7f9b027e91a66d70e10f4d1db67bf8d8b240822
|
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/CHANGELOG.md
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
-
## [0.1.
|
1
|
+
## [0.1.20.1] - 2022-02-13
|
2
|
+
- Switchからプロコンへ送信するバイパスのインターバルを設定できるようにしました(切断対策)
|
3
|
+
|
4
|
+
## [0.1.20] - 2022-02-13
|
5
|
+
- pbm-cloudから再起動・設定ファイルの適用指示があったときにackイベントを返すようになりました
|
6
|
+
- 起動オプションにnever_exit_accidentallyを追加しました。これを有効にすると想定外のエラーが起きたときにプロセスが停止しなくなります。デフォルトで無効です。
|
7
|
+
- pbm-cloudから設定ファイルの適用に失敗したときにファイルへの書き込みをしないようになりました
|
8
|
+
- まだadd_procon_gadget.shを実行していないときに、接続処理をする前に処理を停止するようにしました
|
9
|
+
- ラズパイの複数のUSBデバイスが刺さっていてもプロコンのデバイスを選択できるようにしました
|
10
|
+
- Switchからプロコンへ送信するバイパスを動かし続けるようにしました(切断対策)
|
11
|
+
|
12
|
+
## [0.1.19.1] - 2022-02-09
|
13
|
+
- 設定ファイルをpbm-cloudから復元するときに設定ファイルの改行コードが消える不具合を修正しました
|
14
|
+
|
15
|
+
## [0.1.19] - 2022-02-09
|
16
|
+
- 設定ファイルを再読み込みするときに構文がエラーがあると、接続が切れる不具合を修正しました
|
17
|
+
- ~設定ファイルをpbm-cloudから復元するときに設定ファイルの改行コードが消える不具合を修正しました~
|
18
|
+
|
19
|
+
## [0.1.18] - 2022-02-05
|
2
20
|
- macroでできることが増えました
|
3
21
|
- 1ステップで複数のボタン入力と継続時間を指定ができるようになりました
|
4
22
|
- スプラトゥーン2用のバブル即割マクロ(SokuwariForSplashBomb)が使えるようになりました
|
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.1)
|
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)
|
data/README.md
CHANGED
@@ -3,18 +3,23 @@
|
|
3
3
|
|
4
4
|
[![Ruby](https://github.com/splaplapla/procon_bypass_man/actions/workflows/ruby.yml/badge.svg?branch=master)](https://github.com/splaplapla/procon_bypass_man/actions/workflows/ruby.yml)
|
5
5
|
|
6
|
-
* Switch
|
6
|
+
* Switchに繋いだプロコンを連射機にしたり、ボタンのリマップをしたり、マクロを実行できる、Raspberry Pi上で動かすツールです
|
7
7
|
* 設定ファイルはrubyスクリプトで記述します
|
8
8
|
* 特定のタイトルに特化した振る舞いにしたい時は各プラグインを使ってください
|
9
|
+
* ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
|
10
|
+
* https://pbm-cloud.herokuapp.com を使うと、webだけで運用が可能です
|
9
11
|
|
10
12
|
![image](https://user-images.githubusercontent.com/1664497/123414210-942f6980-d5ee-11eb-8192-955bd9e37e0b.png)
|
11
13
|
|
14
|
+
|
15
|
+
<!--
|
12
16
|
```
|
13
17
|
@startuml
|
14
|
-
ProController
|
18
|
+
ProController \-\-> (PBM): ZR押しっぱなし
|
15
19
|
Switch <-- (PBM): ZR連打
|
16
20
|
@enduml
|
17
21
|
```
|
22
|
+
-->
|
18
23
|
|
19
24
|
## 使うハードウェア
|
20
25
|
* プロコン
|
@@ -35,7 +40,7 @@ Switch <-- (PBM): ZR連打
|
|
35
40
|
* sudo apt-get install rbenv
|
36
41
|
* git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
37
42
|
* rbenv install 3.0.1
|
38
|
-
*
|
43
|
+
* gem install pbmenv
|
39
44
|
* sudo [pbmenv](https://github.com/splaplapla/pbmenv) install latest
|
40
45
|
* Raspberry Pi4 でprocon_bypass_manを実行する
|
41
46
|
* cd /usr/share/pbm/current
|
@@ -46,17 +51,6 @@ Switch <-- (PBM): ZR連打
|
|
46
51
|
## Plugins
|
47
52
|
* https://github.com/splaplapla/procon_bypass_man-splatoon2
|
48
53
|
|
49
|
-
## 関連ソフトウェア
|
50
|
-
* procon_bypass_man_cloud
|
51
|
-
* webアプリケーション
|
52
|
-
* https://github.com/splaplapla/procon_bypass_man_cloud
|
53
|
-
* このwebアプリからOS自体の再起動、設定ファイルのバックアップ・変更、PBMのバージョンアップができます
|
54
|
-
* ご自身でホストティングもできますが、 私がホスティングをしている https://pbm-cloud.herokuapp.com を使うことができます
|
55
|
-
* [使い方](https://pbm-cloud.herokuapp.com/faq)
|
56
|
-
* pbmenv
|
57
|
-
* procon_bypass_manのバージョンマネージャー
|
58
|
-
* https://github.com/splaplapla/pbmenv
|
59
|
-
|
60
54
|
## FAQ
|
61
55
|
* どうやって動かすの?
|
62
56
|
* このツールはRaspberry Pi4をUSBガジェットモードで起動して有線でプロコンとSwitchに接続して使います
|
@@ -65,10 +59,11 @@ Switch <-- (PBM): ZR連打
|
|
65
59
|
* ラズベリーパイ4のセットアップ方法は?
|
66
60
|
* https://github.com/splaplapla/procon_bypass_man/tree/master/docs/setup_raspi.md
|
67
61
|
* モード, マクロの違いは?
|
68
|
-
* modeはProcon
|
69
|
-
*
|
62
|
+
* modeはProconの入力をそのまま再現するため機能。レイヤーを切り替えるまで繰り返し続けます
|
63
|
+
* マクロは特定のキーを順番に入れていく機能。キーの入力が終わったらマクロは終了します
|
70
64
|
* レイヤーとは?
|
71
|
-
*
|
65
|
+
* 自作キーボードみたいな感じでレイヤー毎に設定内容を記述して切り替えれます
|
66
|
+
* レイヤーは4つあって、up, down, left, rightです。十字キーに対応しています
|
72
67
|
* レイヤーを切り替える方法は?
|
73
68
|
* 設定ファイルに記述している `prefix_keys_for_changing_layer`の後ろにあるキーを同時押しながら、十字キーのどれかを押すことで任意のレイヤーに切り替わります
|
74
69
|
* このツールでできることは?
|
@@ -76,16 +71,15 @@ Switch <-- (PBM): ZR連打
|
|
76
71
|
* リマップは1つのキーを別のキーに割り当てます
|
77
72
|
* 連射中には特定のキーの入力を無視したり、複数のキーをトリガーに連射することができます
|
78
73
|
* どうしてsudoが必要なの?
|
79
|
-
* 操作するdeviceファイルの所有者がroot
|
74
|
+
* 操作するdeviceファイルの所有者がrootだからです
|
80
75
|
* 市販されているサードパーティ製連射機との違いは?
|
81
|
-
*
|
76
|
+
* サードパーティ製のコントローラーは、設定方法や形状が特殊で買い換えるたびに学習・設定コストが発生します。本ツールを使えば、設定内容はテキストで管理することができ、使い慣れたプロコンで同等のことができます
|
82
77
|
* sshなしで運用は可能ですか?
|
83
|
-
*
|
84
|
-
* https://github.com/splaplapla/procon_bypass_man_cloud
|
85
|
-
* 機能開発中ですが、使ってくれる人を探しているのでdiscordからお問合せください
|
78
|
+
* https://pbm-cloud.herokuapp.com を使えば、sshを使わずに運用が可能です
|
86
79
|
|
87
80
|
## TODO
|
88
81
|
* レコーディング機能(プロコンの入力をマクロとして登録ができる)
|
82
|
+
* ドキュメントを書く(doing)
|
89
83
|
|
90
84
|
## 開発系
|
91
85
|
### プロコンとの接続を維持したまま、現在の設定ファイルをPBMに反映する
|
@@ -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,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
CHANGED
@@ -1,7 +1,31 @@
|
|
1
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を使わない方法
|
2
26
|
* rbファイル内にある `gem 'procon_bypass_man', ` の後ろの番号を変更することで、procon_bypass_manのバージョンを変更できます
|
3
27
|
* 最新バージョンは https://rubygems.org/gems/procon_bypass_man を参照してください
|
4
|
-
*
|
28
|
+
* 変更後は、プログラムを起動し直してください
|
5
29
|
* バージョンを変更後、エラーになる場合はサポートするので、discordやissueに報告をお願いします
|
6
30
|
|
7
31
|
```ruby
|
@@ -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
|
@@ -6,7 +6,9 @@ require "procon_bypass_man/background/job_performer"
|
|
6
6
|
require "procon_bypass_man/background/jobs/base_job"
|
7
7
|
require "procon_bypass_man/background/jobs/report_event_base_job"
|
8
8
|
require "procon_bypass_man/background/jobs/report_boot_job"
|
9
|
+
require "procon_bypass_man/background/jobs/report_start_reboot_job"
|
9
10
|
require "procon_bypass_man/background/jobs/report_reload_config_job"
|
11
|
+
require "procon_bypass_man/background/jobs/report_error_reload_config_job"
|
10
12
|
require "procon_bypass_man/background/jobs/report_load_config_job"
|
11
13
|
require "procon_bypass_man/background/jobs/report_error_job"
|
12
14
|
require "procon_bypass_man/background/jobs/report_pressed_buttons_job"
|
@@ -5,6 +5,8 @@ module ProconBypassMan
|
|
5
5
|
|
6
6
|
# @return [ProconBypassMan::ButtonsSettingConfiguration]
|
7
7
|
def self.load(setting_path: )
|
8
|
+
ProconBypassMan::ButtonsSettingConfiguration.instance.setting_path = setting_path
|
9
|
+
|
8
10
|
ProconBypassMan::ButtonsSettingConfiguration.switch_new_context(:validation) do |new_instance|
|
9
11
|
yaml = YAML.load_file(setting_path) or raise "読み込みに失敗しました"
|
10
12
|
new_instance.instance_eval(yaml["setting"])
|
@@ -12,17 +14,19 @@ module ProconBypassMan
|
|
12
14
|
if validator.valid?
|
13
15
|
next
|
14
16
|
else
|
15
|
-
raise ProconBypassMan::CouldNotLoadConfigError, validator.
|
17
|
+
raise ProconBypassMan::CouldNotLoadConfigError, validator.errors_to_s
|
16
18
|
end
|
17
19
|
rescue SyntaxError
|
20
|
+
fallback_setting_if_has_backup(current_setting_path: setting_path)
|
18
21
|
raise ProconBypassMan::CouldNotLoadConfigError, "Rubyスクリプトのシンタックスエラーです"
|
19
22
|
rescue NoMethodError
|
23
|
+
fallback_setting_if_has_backup(current_setting_path: setting_path)
|
20
24
|
raise ProconBypassMan::CouldNotLoadConfigError, "Rubyスクリプトに未定義の定数・変数があります"
|
21
25
|
rescue Psych::SyntaxError
|
26
|
+
fallback_setting_if_has_backup(current_setting_path: setting_path)
|
22
27
|
raise ProconBypassMan::CouldNotLoadConfigError, "yamlのシンタックスエラーです"
|
23
28
|
end
|
24
29
|
|
25
|
-
ProconBypassMan::ButtonsSettingConfiguration.instance.setting_path = setting_path
|
26
30
|
ProconBypassMan::ButtonsSettingConfiguration.instance.reset!
|
27
31
|
ProconBypassMan.reset!
|
28
32
|
|
@@ -38,12 +42,27 @@ module ProconBypassMan
|
|
38
42
|
|
39
43
|
File.write(ProconBypassMan.digest_path, Digest::MD5.hexdigest(yaml["setting"]))
|
40
44
|
|
45
|
+
if File.exist?(ProconBypassMan.fallback_setting_path)
|
46
|
+
FileUtils.rm_rf(ProconBypassMan.fallback_setting_path)
|
47
|
+
end
|
48
|
+
|
41
49
|
ProconBypassMan::ButtonsSettingConfiguration.instance
|
42
50
|
end
|
43
51
|
|
44
52
|
def self.reload_setting
|
45
53
|
self.load(setting_path: ProconBypassMan::ButtonsSettingConfiguration.instance.setting_path)
|
46
54
|
end
|
55
|
+
|
56
|
+
def self.fallback_setting_if_has_backup(current_setting_path: )
|
57
|
+
return unless File.exist?(ProconBypassMan.fallback_setting_path)
|
58
|
+
return if current_setting_path.nil?
|
59
|
+
|
60
|
+
FileUtils.copy(
|
61
|
+
ProconBypassMan.fallback_setting_path,
|
62
|
+
current_setting_path,
|
63
|
+
)
|
64
|
+
FileUtils.rm_rf(ProconBypassMan.fallback_setting_path)
|
65
|
+
end
|
47
66
|
end
|
48
67
|
end
|
49
68
|
end
|
@@ -32,6 +32,16 @@ module ProconBypassMan
|
|
32
32
|
@errors ||= Hash.new {|h,k| h[k] = [] }
|
33
33
|
end
|
34
34
|
|
35
|
+
# @return [Array<String>]
|
36
|
+
def errors_to_s
|
37
|
+
errors.map { |_x, message|
|
38
|
+
value = <<~EOH
|
39
|
+
#{message.map { |m| "layer #{m}" }.join("\n")}
|
40
|
+
EOH
|
41
|
+
value.chomp
|
42
|
+
}.join("\n")
|
43
|
+
end
|
44
|
+
|
35
45
|
private
|
36
46
|
|
37
47
|
def validate_config_of_button_lonely
|
@@ -100,7 +110,7 @@ module ProconBypassMan
|
|
100
110
|
end
|
101
111
|
|
102
112
|
if(const = Module.const_get(key.to_s))
|
103
|
-
if not const.respond_to?(:binaries) && mode.call
|
113
|
+
if not (const.respond_to?(:binaries) && mode.call)
|
104
114
|
@errors[:mode] << "モード #{key}を読み込めませんでした。"
|
105
115
|
end
|
106
116
|
end
|
@@ -116,7 +126,7 @@ module ProconBypassMan
|
|
116
126
|
end
|
117
127
|
|
118
128
|
if(const = Module.const_get(key.to_s))
|
119
|
-
if not const.respond_to?(:steps) && macro.call
|
129
|
+
if not (const.respond_to?(:steps) && macro.call)
|
120
130
|
@errors[:macro] << "マクロ #{key}を読み込めませんでした。"
|
121
131
|
end
|
122
132
|
end
|