コントローラー部分はこちらのPoke-Controllerを参考にPython3.10+PySide2で動作するよう作り直しています
![Untitled](https://private-user-images.githubusercontent.com/24750772/270110463-fb1b281e-b27b-4bc3-9c96-45a9e9e42346.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU1NDU4MDksIm5iZiI6MTcyNTU0NTUwOSwicGF0aCI6Ii8yNDc1MDc3Mi8yNzAxMTA0NjMtZmIxYjI4MWUtYjI3Yi00YmMzLTljOTYtNDVhOWU5ZTQyMzQ2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA1VDE0MTE0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJiZjk1ZmRkNTE1MWFkZDdkZmRmNTFlZWRmMTAxOGZhOTYyYjg4MmQ2ZDQxOGMyNjk3MTAzN2E3NDVmYjMwNmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.33m-NYW3w_7EbS76uhC2hi83CoQ7IDyYkFxfyNew1z8)
先ずは動くものを目指し、サポート範囲を絞っています
- OSサポートはWindowsのみ
- Mcuコマンドの削除
- GUIのベースをTkinterからPySide2に変更
- UIレイアウトの変更
- Lower camel caseからSnake caseに変更
また、Joystick.hexに関してはPoke-Controllerの派生先であるPoke-Controller-Modifiedのもので動作するようになっています
開発開始時はPython3.11+PySide6で開発を進めていましたが、自分の環境では4Kモニター2枚scale150%の状態で
- PySide6でのモニターのプライマリー・セカンダリーの認識がおかしい
- キャプチャー動画のスケールが1.5倍になる
という2点の問題が発生したことからPySide2に変更をしました
PySide2がPython3.10にまでしか対応していないためPython3.11も変更になりました
2.については仕様かもしれませんが、1.の方はPyQt6でも同じ現象が起きたため、Qt6の問題と思われます
また、自分のキャプチャーボードがswitchの画面も1980x1080 60fpsでしかチャプチャーしないため、 テンプレートマッチの画像も1980x1080に対応したものを自分で用意する必要がありました
今は自分しか使用していないのでキャプチャー時の設定をいじらず使用していますが 環境によっては色々変えられるようにしておいたほうが良さそうだと思っています
スクリーンショットを保存します
保存したスクリーンショットの場所を開きます
Pythonスクリプトが選択できます
Pythonスクリプトを再読み込みします
Pythonスクリプトを実行・停止します 実行中は安全のために一部機能が停止します
INFOレベル以上の最後のログが表示されます
また、開発者のためにコンソールにはDEBUG以上のログが表示されるようにしています
PythonロガーのINFOレベル以上のログが表示されるウィンドウを新たに開きます
設定画面がポップアップで出ます
- キャプチャーデバイス
- シリアルポート
- 画面解像度
が選択できます
キャプチャーデバイスとシリアルポートは読み込みが成功した1番目のものをデフォルトで使うようにしています
将来的には設定ファイルに保存・読込ができるようにする予定です
キーボードをスイッチのコントローラとして使用することができます
Stream版ライザのアトリエを参考にキーボードを割り当てています
キーボード | Switchコントローラ |
---|---|
'l' | Button.A |
'k' | Button.B |
'j' | Button.X |
'i' | Button.Y |
'q' | Button.L |
'e' | Button.R |
'u' | Button.ZL |
'o' | Button.ZR |
Key.shift_l | Button.L_CLICK |
Key.shift_r | Button.R_CLICK |
Key.ctrl_l | Button.MINUS |
Key.ctrl_r | Button.PLUS |
'h' | Button.HOME |
'f' | Button.CAPTURE |
'w' | Direction.UP |
'd' | Direction.RIGHT |
's' | Direction.DOWN |
'a' | Direction.LEFT |
Key.up | Hat.TOP |
Key.right | Hat.RIGHT |
Key.down | Hat.BTM |
Key.left | Hat.LEFT |
キャプチャー画面内にカーソルがある場合のみ入力を受け付けます
:::note alert 直感的にタッチ操作できる訳ではないので注意してください :::
マウス | Switchコントローラ |
---|---|
左クリック | Button.A |
右クリック | Button.B |
中クリック | Button.X |