本質的な部分はそのままに、機能を一部追加します
- ログ機能の追加
ボタン入力をメインウィンドウに表示、加えて各関数のログをコンソール画面に表示&ファイル出力を行う
ある程度確認しましたがボタン入力表示にはバグがあるかもしれないので注意 - 画像認識時に該当部分を青枠で表示する機能を追加
isContainTemplate
関数にshow_position=False
を引数で渡すと表示しない - サンプルスクリプトの追加
-
InputSwitchKeyboard.py
Switchのキーボードの自動入力のサンプルコード
-
InputSerial.py
シリアルコードの入力自動化サンプルコード
-
LoggingSample.py
マクロプログラム中でのログのとり方のサンプルコード
-
-
開発の都合でpythonの動作確認バージョンを3.7.xとしています(とはいえ3.6でも動くはずです。)
-
FPSの設定の追加
-
画面表示サイズの変更オプションの追加
-
ログエリアはサイズの変更に応じて横方向に伸縮するように
-
スティック周りの機能追加
スティックの傾きの強さの設定
- スティックの移動可能な範囲を単位円の内部と考えて、
傾き度合いを0以上1以下で設定可能にしました。
例えばDirection(Stick.LEFT, θ, r)
というコマンドは、左スティックのx,y座標がとなるような入力をします。この場合は半径rの円となります。x=r*cosθ y=r*sinθ
- r=1.0をデフォルト値としているので
Direction(Stick.LEFT, θ)
と書いた場合はr=1として認識されます。
より詳しくはサンプルコードを同梱していますので
そちらとSwitch内設定のスティックの補正画面を合わせて確認してください
マウスでスティック操作機能
- マウスで直感的な操作ができそうな感じにしています。
ラグがあるので操作は結構難しいです。
操作円の半径は変更可能なので、需要があればConfigファイルに載せます。 タッチパネル対応モニタ使用の際などの挙動は不明ですが、そちらのほうが向いているかもしれません。
またこの機能の追加に伴い、'Ctrl+左クリック'がクリック点座標表示になっています。
- スティックの移動可能な範囲を単位円の内部と考えて、
-
画面キャプチャ機能の追加
- キャプチャしている画面部分を'Ctrl+Shift+左クリック'しながらドラッグした範囲をキャプチャすることができます。
-
メニュー機能の追加
現状は以下の機能のみ
-
LINE連携機能のToken確認
Python Commandの関数にLine通知コマンドを追加しています。その設定がちゃんとできているかの確認です
Usage- LINE Notifyより通知用のTokenを取得 Tokenをline_token.iniの
paste_your_token_here
部分に貼り付け テキスト通知をしたいときは画像認識を用いるプログラム内ではself.LINE_text("通知したい内容")
画像とテキストを同時に通知することが可能でと書きますself.LINE_image("通知したい内容")
- アプリ起動時にLINE Token Check FAILED.と表示される間はtokenが間違っています。
- Tokenが正しい場合、アプリ起動時にAPI制限までの回数・リセットされる時刻が表示されます。メニューのLINE Token checkから残数を確認できます。 頻繁に通知を行うと制限に達することがあるので気をつけましょう
- 複数のトークンに対応しています。 tokenファイルに改行して別のトークン名を追記し、関数に引数として渡すことで使い分けてください。 詳しくはサンプルコードを参考にしてください
- LINE Notifyより通知用のTokenを取得 Tokenをline_token.iniの
-
Pokémon Home連携
そのうち大幅に変わるかもしれません
フォルム別の名前があるポケモン(ロトムなど)については現在第7世代までしか対応していません
SerialController/db/poke_form_name.csv
に追記することで対応可能になります -
キーコンフィグ追加
主要なキーのコンフィグ機能を追加しています。
注意点として、複数キーを同時に割り当てても、同時に入力されることはありません。少々不親切ですがお許しください
また、これにともなって設定ファイルの書式が変わっています。手動で書き換え可能になっています。
デフォルトに戻す機能はつけていないので、戻したいときは設定ファイルを消すか、Setting.pyを読んでください。
-
-
ボタン入力関数表示機能追加プログラム(作 KCT様)を組み込みver3.0以降独自の入力表示機能実装に変更 -
その他GUIのブラッシュアップ
-
Codeのリファクタリング
私の開発環境の関係で全体的にPEP8準拠寄りにしました
- タブインデントからスペース4つインデントに変更
- 不要なimportの削除、並び替えなど最適化
必要なライブラリ(+推奨するライブラリ)が増えています。 構築した環境にインストールしてください。
pygubu
requests
pandas
numpy
scipy
requirements.txtを使用して、必要なライブラリを一括でインストールできます。
pip install -r .\requirements.txt
-
好みの表示サイズがある場合は、Window.pyのそれっぽいところに自分好みのサイズを追記してください。fpsも同様です。
-
OpenCVで行う処理をNVIDIA GPU(CUDA)で動かすためのサンプルコードを同梱しています(TemplateMatchingTimeMeasure.py)。
ただし、pip install でインストール可能なライブラリでは使用できません
使用してみたい方は、各自で自分のGPUに対応したオプションでpython用のOpenCVをソースコードからビルドして貰う必要があります。
それなりに難易度が高くかなり手間な処理になりますが、余裕がある方は試してみてください。
OpenCV + CUDA (+ Windows)
などと検索すればビルドの解説ページが出てきます。 -
SciPyは最短経路の算出に使用しています。
具体的には、Switchのソフトウェアキーボードを有向グラフに見立てて、文字入力の最適化を試みています。
サンプルコードを同梱しているので、興味のある方は試してみてください。
以下は本家様の説明になります。
Pythonで書く!Switchの自動化支援ソフトウェア
-
まずはモノの準備
-
準備ができたら進みましょう
分からないことや改善要望などがあれば遠慮なくIssueまで
Q&Aや解決済みIssueなども役に立つかもしれません
簡単に機能を見てみましょう
通常のボタン押下
self.press(Button.A) # Aボタンを押して離す
self.press(Button.A, 0.1, 1) # Aボタンを0.1秒間押して離した後, 1秒待機
左右スティック & HAT(十字)キー
self.press(Direction.RIGHT, 5) # 左スティックを右に5秒間倒す
self.press(Hat.LEFT) # 十字キー左を押して離す
同時押し
self.press([Button.A, Button.B]) # AボタンとBボタンを同時に押して離す
ホールド
self.hold([Direction.UP, Direction.R_DOWN], wait=1) # 左スティックを上, 右スティックを下に倒して1秒待つ
self.press(Button.A) # スティックを倒した状態でAボタンを押して離す
リファレンスやデフォルトのコマンドなども参考にして中身を覗いてみましょう
作成したコマンドや便利な機能はプルリクやIssueで頂けると非常に喜びます
作成したコマンドのclassは1つのPythonファイルの中にいくつも記述できます
またPythonCommandsのフォルダ内であればいくつもフォルダを作成可能です
自由に配置していきましょう
配置したコマンド群はマウス操作で簡単に切り替えることができます
Poke-Controllerを動作しながらファイルの変更を再読込して反映することができます
こつこつデバグしたい方におすすめ!
キャプチャボードでSwitchの画面を取り込めば, シリアル通信だけでは叶わない操作もできるかも
これらもライブラリとして機能を提供しています
self.isContainTemplate('status.png') # テンプレートマッチング
現在の機能(実装内容)は少ないがアップデート予定
キーボードをスイッチのコントローラとして使用することができます
Switchコントローラ | キーボード |
---|---|
A, B, X, Y, L, R | 'a', 'b', ...キー |
ZL | 'k'キー |
ZR | 'e'キー |
MINUS | 'm'キー |
PLUS | 'p'キー |
LCLICK | 'q'キー |
RCLICK | 'w'キー |
HOME | 'h'キー |
CAPTURE | 'c'キー |
左スティック | 矢印キー |
-
過去リリース
-
進捗状況の確認
-
ロードマップ
これらの貢献者に感謝します (emoji key):
KawaSwitch 💻 🚧 📖 💬 |
Moi-poke 💻 💬 |
xv13 🐛 |
vyPeony 💻 |
このプロジェクトは, all-contributors仕様に準拠しています. どんな貢献も歓迎します!
本プロジェクトはMITライセンスです
詳細は LISENCE を参照ください
また, 本プロジェクトではLGPLライセンスのDirectShowLib-2005.dllを同梱し使用しています
About DirectShowLib