procon_bypass_man 0.1.16 → 0.1.19
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 +86 -11
- data/.github/workflows/release.yml +2 -2
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +19 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +7 -3
- data/README.md +39 -15
- data/Steepfile +31 -17
- data/docs/getting_started.md +60 -0
- data/docs/setting/left-analogstick-cap.md +60 -0
- data/docs/setting/splatoon2_macro_sokuwari_bubble.md +52 -0
- data/docs/setup_raspi.md +2 -0
- data/docs/setup_raspi.mitamae.rb +7 -8
- data/docs/setup_raspi_by_mitamae.md +37 -1
- data/docs/upgrade_pbm.md +56 -0
- data/lib/ext/module.rb +16 -0
- data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +33 -7
- data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +4 -1
- data/lib/procon_bypass_man/buttons_setting_configuration/validator.rb +36 -0
- data/lib/procon_bypass_man/buttons_setting_configuration.rb +34 -21
- data/lib/procon_bypass_man/bypass/usb_hid_logger.rb +6 -4
- data/lib/procon_bypass_man/commands/bypass_command.rb +2 -2
- data/lib/procon_bypass_man/configuration.rb +5 -1
- data/lib/procon_bypass_man/domains/binary/base.rb +14 -0
- data/lib/procon_bypass_man/domains/binary/inbound_procon_binary.rb +0 -14
- data/lib/procon_bypass_man/domains/binary/processing_procon_binary.rb +2 -16
- data/lib/procon_bypass_man/plugin/splatoon2/macro/fast_return.rb +1 -1
- data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_left_key.rb +1 -1
- data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_right_key.rb +1 -1
- data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_up_key.rb +1 -1
- data/lib/procon_bypass_man/plugin/splatoon2/macro/sokuwari_for_splash_bomb.rb +22 -0
- data/lib/procon_bypass_man/plugin/splatoon2/version.rb +1 -1
- 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/button_collection.rb +8 -0
- 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 +9 -27
- data/lib/procon_bypass_man/procon/mode_registry.rb +4 -4
- data/lib/procon_bypass_man/procon/press_button_aware.rb +6 -5
- data/lib/procon_bypass_man/procon/user_operation.rb +16 -2
- data/lib/procon_bypass_man/procon/value_objects/analog_stick.rb +1 -1
- data/lib/procon_bypass_man/procon.rb +6 -4
- data/lib/procon_bypass_man/remote_pbm_action/restore_pbm_setting.rb +3 -3
- data/lib/procon_bypass_man/support/compress_array.rb +5 -0
- data/lib/procon_bypass_man/support/http_client.rb +4 -0
- data/lib/procon_bypass_man/support/on_memory_cache.rb +3 -1
- data/lib/procon_bypass_man/support/server_pool.rb +4 -0
- data/lib/procon_bypass_man/support/yaml_writer.rb +9 -0
- data/lib/procon_bypass_man/version.rb +1 -1
- data/lib/procon_bypass_man/websocket/pbm_job_client.rb +13 -2
- data/lib/procon_bypass_man.rb +2 -0
- data/procon_bypass_man.gemspec +1 -1
- data/project_template/README.md +10 -5
- data/project_template/app.rb +3 -2
- data/sig/main.rbs +213 -42
- data/sig/on_memory_cache.rbs +16 -0
- metadata +15 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7db95a3b559da58846417c4c1130c20c1fdfabae51f0b089660c3fa0d9ac9f30
|
4
|
+
data.tar.gz: 397b20e751282f15fd65bc22dc81be62cde78e8a765abc5185c4bc45a63b3e5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d83e34d63afbd6e46da32f00cc0a79330d55dfea6c9ae1451c0ed12c14607b5c9623b96c036b6ad2ec8668047212ecf21aa6d6dd80c9b300633d514e4f4c1a0a
|
7
|
+
data.tar.gz: c518539e4d905ccf1754b49ecf9de1a3ff0ed3ce1c71c9e262a6e468126647b415dbfe87d0e99cb468bfd8c3f5267ef4204622b3134831f1ab2600bf3d8dffd4
|
data/.circleci/config.yml
CHANGED
@@ -15,33 +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"
|
117
|
+
- "3.1.0"
|
118
|
+
requires:
|
119
|
+
- bundle_install
|
45
120
|
workflows:
|
46
121
|
version: 2
|
47
122
|
build:
|
@@ -13,10 +13,10 @@ jobs:
|
|
13
13
|
- uses: actions/checkout@v2
|
14
14
|
with:
|
15
15
|
token: ${{ secrets.GITHUB_TOKEN }}
|
16
|
-
- name: Set up Ruby
|
16
|
+
- name: Set up Ruby 3.0.1
|
17
17
|
uses: ruby/setup-ruby@v1
|
18
18
|
with:
|
19
|
-
ruby-version:
|
19
|
+
ruby-version: 3.0.1
|
20
20
|
bundler-cache: true
|
21
21
|
- name: Publish to RubyGems
|
22
22
|
run: |
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
-
## [0.1.
|
1
|
+
## [0.1.19] - 2022-02-09
|
2
|
+
- 設定ファイルを再読み込みするときに構文がエラーがあると、接続が切れる不具合を修正しました
|
3
|
+
- 設定ファイルをpbm-cloudから復元するときに設定ファイルの改行コードが消える不具合を修正しました
|
4
|
+
|
5
|
+
## [0.1.18] - 2022-02-05
|
6
|
+
- macroでできることが増えました
|
7
|
+
- 1ステップで複数のボタン入力と継続時間を指定ができるようになりました
|
8
|
+
- スプラトゥーン2用のバブル即割マクロ(SokuwariForSplashBomb)が使えるようになりました
|
9
|
+
- https://github.com/splaplapla/procon_bypass_man-splatoon2
|
10
|
+
|
11
|
+
## [0.1.17] - 2022-01-26
|
12
|
+
- procon_bypass_man_cloudに組み込むために、内部のデータ構造を変更しました
|
13
|
+
- 設定ファイルにmacroを直接打ち込めるようになりました
|
14
|
+
- ex) `open_macro :special_command, steps: [:x, :y, :up], if_pressed: [:y]`
|
15
|
+
|
16
|
+
## [0.1.16.1] - 2022-01-22
|
17
|
+
- 初期状態ではinternal api(pbm-web)の通信を無効にしました
|
18
|
+
|
19
|
+
## [0.1.16] - 2021-12-26
|
2
20
|
- websocket経由で外部サーバからの命令を受け取れるようになりました
|
3
21
|
|
4
22
|
## [0.1.15] - 2021-12-08
|
data/Gemfile
CHANGED
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.19)
|
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.7)
|
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)
|
@@ -100,6 +100,8 @@ GEM
|
|
100
100
|
unicode-display_width (>= 1.1.1, < 3)
|
101
101
|
tilt (2.0.10)
|
102
102
|
timecop (0.9.4)
|
103
|
+
typeprof (0.20.4)
|
104
|
+
rbs (>= 1.6.2)
|
103
105
|
tzinfo (2.0.4)
|
104
106
|
concurrent-ruby (~> 1.0)
|
105
107
|
unicode-display_width (2.1.0)
|
@@ -119,6 +121,7 @@ PLATFORMS
|
|
119
121
|
arm64-darwin-20
|
120
122
|
arm64-darwin-21
|
121
123
|
armv7l-linux
|
124
|
+
ruby
|
122
125
|
x86_64-linux
|
123
126
|
|
124
127
|
DEPENDENCIES
|
@@ -131,6 +134,7 @@ DEPENDENCIES
|
|
131
134
|
sinatra
|
132
135
|
steep
|
133
136
|
timecop
|
137
|
+
typeprof
|
134
138
|
webrick
|
135
139
|
|
136
140
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -1,18 +1,24 @@
|
|
1
1
|
# ProconBypassMan
|
2
|
+
<img src="https://user-images.githubusercontent.com/1664497/151661582-3a1e8ce9-6c38-4754-8075-7a4453b3109a.jpg" width="500px">
|
3
|
+
|
2
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)
|
3
5
|
|
4
|
-
* Switch
|
6
|
+
* Switchに繋いだプロコンを連射機にしたり、ボタンのリマップをしたり、マクロを実行できる、Raspberry Pi上で動かすツールです
|
5
7
|
* 設定ファイルはrubyスクリプトで記述します
|
6
8
|
* 特定のタイトルに特化した振る舞いにしたい時は各プラグインを使ってください
|
9
|
+
* ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
|
7
10
|
|
8
11
|
![image](https://user-images.githubusercontent.com/1664497/123414210-942f6980-d5ee-11eb-8192-955bd9e37e0b.png)
|
9
12
|
|
13
|
+
|
14
|
+
<!--
|
10
15
|
```
|
11
16
|
@startuml
|
12
|
-
ProController
|
17
|
+
ProController \-\-> (PBM): ZR押しっぱなし
|
13
18
|
Switch <-- (PBM): ZR連打
|
14
19
|
@enduml
|
15
20
|
```
|
21
|
+
-->
|
16
22
|
|
17
23
|
## 使うハードウェア
|
18
24
|
* プロコン
|
@@ -28,19 +34,32 @@ Switch <-- (PBM): ZR連打
|
|
28
34
|
## Usage
|
29
35
|
* USBガジェットモードで起動するRaspberry Pi4を用意する
|
30
36
|
* https://github.com/splaplapla/procon_bypass_man/blob/master/docs/setup_raspi.md
|
31
|
-
* Raspberry Pi4 で
|
37
|
+
* Raspberry Pi4 でprocon_bypass_manを実行するための準備
|
38
|
+
* rubyのインストール
|
39
|
+
* sudo apt-get install rbenv
|
40
|
+
* git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
41
|
+
* rbenv install 3.0.1
|
42
|
+
* gem install pbmenv
|
43
|
+
* sudo [pbmenv](https://github.com/splaplapla/pbmenv) install latest
|
44
|
+
* Raspberry Pi4 でprocon_bypass_manを実行する
|
45
|
+
* cd /usr/share/pbm/current
|
46
|
+
* sudo /home/pi/.rbenv/versions/3.0.1/bin/ruby app.rb
|
32
47
|
* 動いたのを確認したらserviceとして登録にするなどしてください
|
48
|
+
* [serviceとして登録する方法](https://github.com/splaplapla/procon_bypass_man/tree/master/project_template#systemd%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
|
33
49
|
|
34
50
|
## Plugins
|
35
51
|
* https://github.com/splaplapla/procon_bypass_man-splatoon2
|
36
52
|
|
37
53
|
## 関連ソフトウェア
|
38
|
-
*
|
54
|
+
* procon_bypass_man_cloud
|
55
|
+
* webアプリケーション
|
39
56
|
* https://github.com/splaplapla/procon_bypass_man_cloud
|
40
|
-
*
|
41
|
-
*
|
57
|
+
* このwebアプリからOS自体の再起動、設定ファイルのバックアップ・変更、PBMのバージョンアップができます
|
58
|
+
* ご自身でホストティングもできますが、 私がホスティングをしている https://pbm-cloud.herokuapp.com を使うことができます
|
59
|
+
* [使い方](https://pbm-cloud.herokuapp.com/faq)
|
42
60
|
* pbmenv
|
43
|
-
*
|
61
|
+
* procon_bypass_manのバージョンマネージャー
|
62
|
+
* https://github.com/splaplapla/pbmenv
|
44
63
|
|
45
64
|
## FAQ
|
46
65
|
* どうやって動かすの?
|
@@ -50,23 +69,27 @@ Switch <-- (PBM): ZR連打
|
|
50
69
|
* ラズベリーパイ4のセットアップ方法は?
|
51
70
|
* https://github.com/splaplapla/procon_bypass_man/tree/master/docs/setup_raspi.md
|
52
71
|
* モード, マクロの違いは?
|
53
|
-
* modeはProcon
|
54
|
-
*
|
72
|
+
* modeはProconの入力をそのまま再現するため機能。レイヤーを切り替えるまで繰り返し続けます
|
73
|
+
* マクロは特定のキーを順番に入れていく機能。キーの入力が終わったらマクロは終了します
|
55
74
|
* レイヤーとは?
|
56
|
-
*
|
75
|
+
* 自作キーボードみたいな感じでレイヤー毎に設定内容を記述して切り替えれます
|
76
|
+
* レイヤーは4つあって、up, down, left, rightです。十字キーに対応しています
|
77
|
+
* レイヤーを切り替える方法は?
|
78
|
+
* 設定ファイルに記述している `prefix_keys_for_changing_layer`の後ろにあるキーを同時押しながら、十字キーのどれかを押すことで任意のレイヤーに切り替わります
|
57
79
|
* このツールでできることは?
|
58
80
|
* キーリマップ, 連射, マクロ, 特定の同じ操作の繰り返し(mode)
|
59
81
|
* リマップは1つのキーを別のキーに割り当てます
|
60
82
|
* 連射中には特定のキーの入力を無視したり、複数のキーをトリガーに連射することができます
|
61
83
|
* どうしてsudoが必要なの?
|
62
|
-
* 操作するdeviceファイルの所有者がroot
|
84
|
+
* 操作するdeviceファイルの所有者がrootだからです
|
63
85
|
* 市販されているサードパーティ製連射機との違いは?
|
64
|
-
*
|
86
|
+
* サードパーティ製のコントローラーは、設定方法や形状が特殊で買い換えるたびに学習・設定コストが発生します。本ツールを使えば、設定内容はテキストで管理することができ、使い慣れたプロコンで同等のことができます
|
87
|
+
* sshなしで運用は可能ですか?
|
88
|
+
* https://pbm-cloud.herokuapp.com を使えば、sshを使わずに運用が可能です
|
65
89
|
|
66
90
|
## TODO
|
67
91
|
* レコーディング機能(プロコンの入力をマクロとして登録ができる)
|
68
|
-
*
|
69
|
-
* 設定ファイル マクロの引数に、ボタンを取れるようにする
|
92
|
+
* ドキュメントを書く(doing)
|
70
93
|
|
71
94
|
## 開発系
|
72
95
|
### プロコンとの接続を維持したまま、現在の設定ファイルをPBMに反映する
|
@@ -86,11 +109,12 @@ sudo kill -USR2 `cat ./pbm_pid`
|
|
86
109
|
* project_template/web.rb, project_template/app.rb, lib/procon_bypass_man/version.rb のバージョンをあげる
|
87
110
|
* CHANGELOG.md に日付を書く
|
88
111
|
* be rake release
|
112
|
+
* githubのreleaseを作成する
|
89
113
|
|
90
114
|
## License
|
91
115
|
|
92
116
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
93
117
|
|
94
|
-
|
95
118
|
## Links
|
96
119
|
* https://discord.gg/bEcRNKf4ep
|
120
|
+
* 質問などご意見をdiscordでも受け付けています
|
data/Steepfile
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# D = Steep::Diagnostic
|
2
2
|
#
|
3
3
|
# target :lib do
|
4
|
-
# signature
|
4
|
+
# signature 'sig'
|
5
5
|
#
|
6
|
-
# check
|
7
|
-
# check
|
8
|
-
# check
|
9
|
-
# # ignore
|
6
|
+
# check 'lib' # Directory name
|
7
|
+
# check 'Gemfile' # File name
|
8
|
+
# check 'app/models/**/*.rb' # Glob
|
9
|
+
# # ignore 'lib/templates/*.rb'
|
10
10
|
#
|
11
|
-
# # library
|
12
|
-
# # library
|
11
|
+
# # library 'pathname', 'set' # Standard libraries
|
12
|
+
# # library 'strong_json' # Gems
|
13
13
|
#
|
14
14
|
# # configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
|
15
15
|
# # configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
|
@@ -19,21 +19,35 @@
|
|
19
19
|
# end
|
20
20
|
|
21
21
|
# target :test do
|
22
|
-
# signature
|
22
|
+
# signature 'sig', 'sig-private'
|
23
23
|
#
|
24
|
-
# check
|
24
|
+
# check 'test'
|
25
25
|
#
|
26
|
-
# # library
|
26
|
+
# # library 'pathname', 'set' # Standard libraries
|
27
27
|
# end
|
28
28
|
|
29
29
|
target :lib do
|
30
|
-
check
|
31
|
-
check
|
32
|
-
check
|
30
|
+
check 'lib/procon_bypass_man/timer.rb'
|
31
|
+
check 'lib/procon_bypass_man/configuration.rb'
|
32
|
+
check 'lib/procon_bypass_man/processor'
|
33
|
+
check 'lib/procon_bypass_man/procon/macro_registry'
|
34
|
+
check 'lib/procon_bypass_man/procon/mode_registry'
|
35
|
+
check 'lib/procon_bypass_man/domains/*'
|
36
|
+
check 'lib/procon_bypass_man/domains'
|
37
|
+
check 'lib/procon_bypass_man/support/report_http_client'
|
38
|
+
check 'lib/procon_bypass_man/support/http_client'
|
39
|
+
check 'lib/procon_bypass_man/support/send_device_stats_http_client'
|
40
|
+
check 'lib/procon_bypass_man/support/on_memory_cache'
|
41
|
+
check 'lib/procon_bypass_man/support/server_pool'
|
42
|
+
check 'lib/procon_bypass_man/support/uptime.rb'
|
43
|
+
check 'lib/procon_bypass_man/support/safe_timeout'
|
44
|
+
check 'lib/procon_bypass_man/support/update_remote_pbm_action_status_http_client'
|
45
|
+
check 'lib/procon_bypass_man/support/compress_array'
|
33
46
|
|
34
|
-
signature
|
47
|
+
signature 'sig'
|
35
48
|
|
36
|
-
library
|
37
|
-
library
|
38
|
-
library
|
49
|
+
library 'time'
|
50
|
+
library 'logger'
|
51
|
+
library 'monitor'
|
52
|
+
library 'uri'
|
39
53
|
end
|
@@ -0,0 +1,60 @@
|
|
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のインストール
|
9
|
+
* pbmenvを使う方法
|
10
|
+
* pbmenvを使わない方法
|
11
|
+
* とりあえず動かす方法
|
12
|
+
* [普段使いをするためのセットアップ](#普段使いをするためのセットアップ)
|
13
|
+
* レイヤー
|
14
|
+
* モード
|
15
|
+
* マクロ
|
16
|
+
* 左スティックの感度調整
|
17
|
+
* 設定ファイルの書き方
|
18
|
+
* layer
|
19
|
+
* プラグインの書き方
|
20
|
+
* 設定ファイルの書き方がわからない、エラーが起きるとき
|
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
|
+
* [活用例](/docs/setting/splatoon2_macro_sokuwari_bubble.md)
|
37
|
+
* 特定の同じ操作の繰り返し(モード)
|
38
|
+
* 左スティックの感度調整
|
39
|
+
* [設定方法](/docs/setting/left-analogstick-cap.md)
|
40
|
+
* WEBから設定状態の閲覧・反映
|
41
|
+
* ボタンリマップ
|
42
|
+
|
43
|
+
## セットアップ
|
44
|
+
* 後で書きます
|
45
|
+
|
46
|
+
## 普段使いをするためのセットアップ
|
47
|
+
|
48
|
+
procon_bypass_manを起動するだけでプロコンと接続ができるようになったら、Raspberry Piを起動したときにprocon_bypass_manも自動起動するように設定しましょう。
|
49
|
+
これを設定すると、Switch本体の電源ボタンを押すだけで使えるようになります。(実際には、Raspberry Piが起動して、procon_bypass_manが動き始めるまでに30秒くらいかかります。)
|
50
|
+
|
51
|
+
自動起動方法は、pbmenvを使っているなら以下の2行をshellで実行すれば完了です。
|
52
|
+
|
53
|
+
```
|
54
|
+
sudo systemctl link /usr/share/pbm/current/systemd_units/pbm.service
|
55
|
+
sudo systemctl enable pbm.service
|
56
|
+
```
|
57
|
+
|
58
|
+
pbmenvを使っていない場合は、 https://github.com/splaplapla/procon_bypass_man/blob/master/project_template/systemd_units/pbm.service をダウンロードして、 `systemctl link` をしてください。
|
59
|
+
|
60
|
+
ゲームをやめたくなったらSwitchはそのままスリープに入って問題ないです。このときにRaspberry Piも一緒に電源が切れてしまいますが故障することはありません。
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# 左アナログスティック感度調整の設定方法
|
2
|
+
https://user-images.githubusercontent.com/1664497/150636857-f3d40900-2713-41b8-856a-279c200d9ae7.mp4
|
3
|
+
|
4
|
+
* procon_bypass_man: 0.1.9以上が必要です
|
5
|
+
* PBMには、左アナログスティックの入力の最大値を書き換える機能があります。それをsetting.ymlに書く方法を説明します
|
6
|
+
* これを使うと、特定のボタンを押している間は、スティックを完全に倒している状態で、スプラトゥーンでいうところの `スニーキング` で移動ができるようになります
|
7
|
+
|
8
|
+
## 1. プロコンの左スティックのほぼニュートラルな状態の座標を記述する
|
9
|
+
* `set_neutral_position x, y`を使って、プロコンの左スティックのほぼニュートラルな状態の座標を記述します
|
10
|
+
* 完全にニュートラルな値を記述すると最速のスニーキングが出ないので微妙にずらします
|
11
|
+
* プロコンごとにニュートラルな状態の座標に個体差があって、最速のスニーキングを出すには本数値を調整する必要があります
|
12
|
+
* 実際に設定している座標の例
|
13
|
+
* `set_neutral_position 1906, 1886`
|
14
|
+
* `set_neutral_position 2100, 2000`
|
15
|
+
|
16
|
+
## 2. 左アナログスティックの入力の最大値を設定する
|
17
|
+
* ニュートラルな状態の座標が決まったら、次はどのボタンを押したときに、どれくらいスティック感度を書き換えるか、を設定します
|
18
|
+
* 設定には `left_analog_stick_cap` を使います
|
19
|
+
* 実際にパラメータを記述した例を用いると `left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a` のようになります
|
20
|
+
* パラメータは3つあります
|
21
|
+
* `cap: 1100`
|
22
|
+
* こちらはニュートラル座標からの最大距離をどのくらいにするか、を決めます
|
23
|
+
* 指定したボタンが押されている間は、ニュートラル座標から1100までの範囲に「現在の座標」を書き換える、という設定になります
|
24
|
+
* スプラトゥーンのスニーキング用途であれば、1100固定で問題ありません
|
25
|
+
* `if_pressed: [:zl, :a]`
|
26
|
+
* こちらは zlボタン, aボタンが両方押されている状態の時に本設定が発動する、という設定になります。トリガーです
|
27
|
+
* つまり、zlとaを同時押ししている時に、左アナログスティックの入力を書き換えます
|
28
|
+
* `force_neutral: :a`
|
29
|
+
* こちらは、左アナログスティックの入力を書き換えている時は、「強制的にaボタンを押していない状態にする」という設定になります
|
30
|
+
* つまり、zlボタンとaボタンを同時押ししている時には、左アナログスティックの入力を書き換えて、aボタンは押していない状態になります
|
31
|
+
* どうしてこれが必要かというと、ゲームタイトルによるのですが、スプラトゥーンの場合は、ガチアサリ中に、保有しているアサリを投げないために必要になっています
|
32
|
+
* force_neutralはoptionalです
|
33
|
+
|
34
|
+
## 3. 設定を反映させる
|
35
|
+
* 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
|
36
|
+
* ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
|
37
|
+
* 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
|
38
|
+
* setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
|
39
|
+
|
40
|
+
```shell
|
41
|
+
sudo kill -USR2 `cat ./pbm_pid`
|
42
|
+
```
|
43
|
+
|
44
|
+
## まとめ
|
45
|
+
* スティックの中央値を設定します
|
46
|
+
* スプラトゥーンでの最速スニーキングを出すには、set_neutral_positionの値を変更してください
|
47
|
+
* 発動するボタンを設定します
|
48
|
+
* setting.ymlを再読み込みします
|
49
|
+
|
50
|
+
## 設定例
|
51
|
+
```yaml
|
52
|
+
version: 1.0
|
53
|
+
setting: |-
|
54
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
55
|
+
set_neutral_position 2100, 2000
|
56
|
+
|
57
|
+
layer :up, mode: :manual do
|
58
|
+
left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
|
59
|
+
end
|
60
|
+
```
|
@@ -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
|
+
```
|
data/docs/setup_raspi.md
CHANGED
data/docs/setup_raspi.mitamae.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
run_command "apt-get update"
|
2
2
|
|
3
|
-
package '
|
3
|
+
package 'rbenv' do
|
4
4
|
action :install
|
5
5
|
end
|
6
6
|
|
@@ -41,16 +41,15 @@ execute "Initialize PBM" do
|
|
41
41
|
SHELL
|
42
42
|
end
|
43
43
|
|
44
|
-
# rbenv
|
45
|
-
execute "Install rbenv" do
|
46
|
-
not_if "which rbenv"
|
47
|
-
command "git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build"
|
48
|
-
end
|
49
|
-
|
50
44
|
# ruby
|
51
45
|
execute "Install ruby" do
|
46
|
+
user "pi"
|
52
47
|
not_if "rbenv versions | grep 3.0.1"
|
53
|
-
command
|
48
|
+
command <<~EOH
|
49
|
+
mkdir -p "$(rbenv root)"/plugins
|
50
|
+
git clone https://github.com/rbenv/ruby-build.git --depth 1 "$(rbenv root)"/plugins/ruby-build
|
51
|
+
rbenv install 3.0.1
|
52
|
+
EOH
|
54
53
|
end
|
55
54
|
|
56
55
|
run_command 'sudo systemctl disable triggerhappy.socket'
|