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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +86 -11
  3. data/.github/workflows/release.yml +2 -2
  4. data/.rubocop.yml +2 -0
  5. data/CHANGELOG.md +19 -1
  6. data/Gemfile +1 -0
  7. data/Gemfile.lock +7 -3
  8. data/README.md +39 -15
  9. data/Steepfile +31 -17
  10. data/docs/getting_started.md +60 -0
  11. data/docs/setting/left-analogstick-cap.md +60 -0
  12. data/docs/setting/splatoon2_macro_sokuwari_bubble.md +52 -0
  13. data/docs/setup_raspi.md +2 -0
  14. data/docs/setup_raspi.mitamae.rb +7 -8
  15. data/docs/setup_raspi_by_mitamae.md +37 -1
  16. data/docs/upgrade_pbm.md +56 -0
  17. data/lib/ext/module.rb +16 -0
  18. data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +33 -7
  19. data/lib/procon_bypass_man/buttons_setting_configuration/loader.rb +4 -1
  20. data/lib/procon_bypass_man/buttons_setting_configuration/validator.rb +36 -0
  21. data/lib/procon_bypass_man/buttons_setting_configuration.rb +34 -21
  22. data/lib/procon_bypass_man/bypass/usb_hid_logger.rb +6 -4
  23. data/lib/procon_bypass_man/commands/bypass_command.rb +2 -2
  24. data/lib/procon_bypass_man/configuration.rb +5 -1
  25. data/lib/procon_bypass_man/domains/binary/base.rb +14 -0
  26. data/lib/procon_bypass_man/domains/binary/inbound_procon_binary.rb +0 -14
  27. data/lib/procon_bypass_man/domains/binary/processing_procon_binary.rb +2 -16
  28. data/lib/procon_bypass_man/plugin/splatoon2/macro/fast_return.rb +1 -1
  29. data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_left_key.rb +1 -1
  30. data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_right_key.rb +1 -1
  31. data/lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_up_key.rb +1 -1
  32. data/lib/procon_bypass_man/plugin/splatoon2/macro/sokuwari_for_splash_bomb.rb +22 -0
  33. data/lib/procon_bypass_man/plugin/splatoon2/version.rb +1 -1
  34. data/lib/procon_bypass_man/plugins.rb +1 -0
  35. data/lib/procon_bypass_man/procon/button.rb +1 -1
  36. data/lib/procon_bypass_man/procon/button_collection.rb +8 -0
  37. data/lib/procon_bypass_man/procon/macro.rb +89 -0
  38. data/lib/procon_bypass_man/procon/macro_builder.rb +123 -0
  39. data/lib/procon_bypass_man/procon/macro_registry.rb +9 -27
  40. data/lib/procon_bypass_man/procon/mode_registry.rb +4 -4
  41. data/lib/procon_bypass_man/procon/press_button_aware.rb +6 -5
  42. data/lib/procon_bypass_man/procon/user_operation.rb +16 -2
  43. data/lib/procon_bypass_man/procon/value_objects/analog_stick.rb +1 -1
  44. data/lib/procon_bypass_man/procon.rb +6 -4
  45. data/lib/procon_bypass_man/remote_pbm_action/restore_pbm_setting.rb +3 -3
  46. data/lib/procon_bypass_man/support/compress_array.rb +5 -0
  47. data/lib/procon_bypass_man/support/http_client.rb +4 -0
  48. data/lib/procon_bypass_man/support/on_memory_cache.rb +3 -1
  49. data/lib/procon_bypass_man/support/server_pool.rb +4 -0
  50. data/lib/procon_bypass_man/support/yaml_writer.rb +9 -0
  51. data/lib/procon_bypass_man/version.rb +1 -1
  52. data/lib/procon_bypass_man/websocket/pbm_job_client.rb +13 -2
  53. data/lib/procon_bypass_man.rb +2 -0
  54. data/procon_bypass_man.gemspec +1 -1
  55. data/project_template/README.md +10 -5
  56. data/project_template/app.rb +3 -2
  57. data/sig/main.rbs +213 -42
  58. data/sig/on_memory_cache.rbs +16 -0
  59. metadata +15 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ece30577af00d56afa2e2e0be7e09d8328c9d7f8cc96c2e49d207a2bb423b867
4
- data.tar.gz: faf86731651a110fd63ce977f65b76f46c31fe6215a2512d4c3a1ba545fd4f81
3
+ metadata.gz: 7db95a3b559da58846417c4c1130c20c1fdfabae51f0b089660c3fa0d9ac9f30
4
+ data.tar.gz: 397b20e751282f15fd65bc22dc81be62cde78e8a765abc5185c4bc45a63b3e5e
5
5
  SHA512:
6
- metadata.gz: 313d36b543a7c539effaabb6fca121a5112b4076a196ad52386924f3e043ad25e52c5c880a710c1d8aafc66d4a647b3387cebe0b82391eb4ccffa10dd1f4af65
7
- data.tar.gz: 55e7a87c35f972e8537654b86a1f5e1815ed22144a4097e1993ad986666f1111972ce8ce1a744e56196c16957a56c328ba510b6b19af4ff8961ac989d216af20
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
- - checkout
28
- - run: ruby --version
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 2.6
16
+ - name: Set up Ruby 3.0.1
17
17
  uses: ruby/setup-ruby@v1
18
18
  with:
19
- ruby-version: 2.6
19
+ ruby-version: 3.0.1
20
20
  bundler-cache: true
21
21
  - name: Publish to RubyGems
22
22
  run: |
data/.rubocop.yml CHANGED
@@ -24,3 +24,5 @@ Lint/EmptyBlock:
24
24
  Enabled: false
25
25
  Lint/ReturnInVoidContext:
26
26
  Enabled: false
27
+ Lint/AssignmentInCondition:
28
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,4 +1,22 @@
1
- ## [0.1.16] - 202
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
@@ -11,6 +11,7 @@ gem "pry"
11
11
  gem "timecop"
12
12
  gem "rubocop", require: false
13
13
  gem "steep", require: false
14
+ gem 'typeprof', require: false
14
15
  gem 'rbs', require: false
15
16
  gem "sinatra", require: false
16
17
  gem "webrick", require: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- procon_bypass_man (0.1.16)
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.6)
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.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 --> (PBM): ZR押しっぱなし
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 で sudo pbmenv install latest && cd /usr/share/pbm/current && sudo ruby app.rb
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
- * サーバソフトウェア(WIP)
54
+ * procon_bypass_man_cloud
55
+ * webアプリケーション
39
56
  * https://github.com/splaplapla/procon_bypass_man_cloud
40
- * このサーバからOS自体の再起動、設定ファイルの変更、PBMのバージョンアップができます
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
- * マクロにdelayを入れれるようにする
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 "sig"
4
+ # signature 'sig'
5
5
  #
6
- # check "lib" # Directory name
7
- # check "Gemfile" # File name
8
- # check "app/models/**/*.rb" # Glob
9
- # # ignore "lib/templates/*.rb"
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 "pathname", "set" # Standard libraries
12
- # # library "strong_json" # Gems
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 "sig", "sig-private"
22
+ # signature 'sig', 'sig-private'
23
23
  #
24
- # check "test"
24
+ # check 'test'
25
25
  #
26
- # # library "pathname", "set" # Standard libraries
26
+ # # library 'pathname', 'set' # Standard libraries
27
27
  # end
28
28
 
29
29
  target :lib do
30
- check "lib/procon_bypass_man/timer.rb"
31
- check "lib/procon_bypass_man/uptime.rb"
32
- check "lib/procon_bypass_man/configuration.rb"
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 "sig"
47
+ signature 'sig'
35
48
 
36
- library "time"
37
- library "logger"
38
- library "monitor"
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
@@ -1,3 +1,5 @@
1
+ https://github.com/splaplapla/procon_bypass_man/blob/master/docs/setup_raspi_by_mitamae.md に半自動化した手順があります
2
+
1
3
  # Raspberry Pi4のセットアップ手順
2
4
  * SDカードにRaspberry Pi OS (32-bit)を焼く
3
5
  * SDカードをRaspberry Pi4本体に挿して起動する
@@ -1,6 +1,6 @@
1
1
  run_command "apt-get update"
2
2
 
3
- package 'ruby' do
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 "rbenv install 3.0.1"
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'