Skip to content

v0.2.0

Choose a tag to compare

@tarosay tarosay released this 07 Aug 07:38
· 25 commits to main since this release

UIAPduino が本物のキーボードとマウスになりました。

v0.1.1 まではピンの読み書きだけでしたが、USB-HID のブロックが入りました。
Scratch から PC 本体のキーボード入力とマウス操作ができます。
動く先は Scratch の中ではなく、そのときフォーカスのあるウィンドウです。

⚠ 基板の書き込み直しが必要です

同梱の Scratch-UIAPduino-3.29.1-sketch.zip を書き込んでください(プロトコル 1 → 5)。

古いスケッチのままだと接続時に弾かれます。開発者コンソール(Ctrl+Shift+I)に
デバイス=1 / この拡張機能=5 のように出ます。

USB 設定も変わりましたWebHID OnlyKeyboard+Mouse+WebHID)。
同梱の sketch.yaml に書いてあるので、Arduino IDE 2.x でスケッチを開けば自動で選ばれます。
手で設定する場合は Tools → USB を変えてください。取り違えるとコンパイル時に止まります。

同梱物

ファイル 内容
Scratch-UIAPduino-3.29.1-Setup.exe インストーラ
Scratch-UIAPduino-3.29.1-portable.zip インストール不要版
Scratch-UIAPduino-3.29.1-sketch.zip UIAPduino に書き込むスケッチ

アプリとスケッチは必ずこのリリースの組み合わせで使ってください。

UIAPduino に書き込む

1. Arduino IDE にボードを入れる(初回だけ)

ファイル → 環境設定 → 追加のボードマネージャのURL に次を追加します。

https://github.com/tarosay/board_manager_files/raw/main/package_uiap_hid_index.json

「ボードマネージャ」で UIAPduino を検索してインストールし、
ツール → ボード → UIAP_HID → HID ProMicro CH32V003 を選びます。

基板はお店やネットショップで購入してください。
配布しているのは Arduino IDE の Core(ボード定義)で、基板そのものではありません。

2. 基板を書き込みモードにする

基板のボタンを押しながら USB ケーブルを接続し、すぐにボタンを離します。

3. 書き込む

Scratch-UIAPduino-3.29.1-sketch.zip を解凍し、ScratchUiapduino.ino
Arduino IDE で開いて「書き込み」を実行します。

書き込み器(WCH-LinkE など)は要りません。 USB ケーブル 1 本で書けます。
ツール → Upload method も既定の minichlink のままで構いません。

同梱の sketch.yaml にボードと Tools の設定が入っているので、
手で設定し直す必要はありません。

詳しくは Core 側の
README を見てください。

v0.1.1 からの変更

マウスのブロック(新規)

ブロック すること
マウスを 右へ [ ] 下へ [ ] 動かす 相対移動
マウスの [左▼] ボタンをクリックする 左 / 右 / 真ん中
マウスの [左▼] ボタンでダブルクリックする 判定時間はデバイス側で完結
マウスの [左▼] ボタンで 右へ [ ] 下へ [ ] ドラッグする 押す→動かす→離すを一括
マウスの [左▼] ボタンでドラッグしながら〔 〕 囲みの中を実行する間だけ押しておく
マウスのホイールを [下▼] に [ ] 回す

ドラッグしながら〔 〕 の中に 動かす を並べれば、円や折れ線を 1 本のストロークとして
描けます。囲みを抜ければ必ず離れます。

キーボードのブロック(新規)

ブロック すること
キーボードで [ ] と打つ 文字列をタイプする
キーボードの [Enter▼] キーを押して離す Enter / Tab / Backspace / 矢印 / F1〜F12 など 29 種類
キーボードの [Ctrl▼] を押しながら〔 〕 囲みの中を実行する間だけ修飾キーを押しておく

Ctrl + C はこう書きます。

キーボードの [Ctrl▼] を押しながら〔
    キーボードで [c] と打つ
〕

入れ子にできます。Ctrl の中に Shift を置けば Ctrl + Shift + … になります。

Shift を押しながら打つと、大文字小文字が入れ替わります。

書いたもの 打たれるもの
キーボードで [Hello] と打つ Hello
Shift を押しながら 同上 hELLO
Shift を押しながら [1] !

「押したままにする」ブロックは置いていません

マウスのボタンもキーも、押しっぱなしにできるブロックを意図的に用意していません。

離すのを書き忘れると押されたまま残ります。そこで USB を抜かれると、操作していたアプリに
その状態が取り残されます。特に ShiftCtrl は気づきにくく、
その後のすべてのキー入力が化けます。

押しっぱなしは ドラッグしながら〔 〕押しながら〔 〕内側にしか作れません。
囲みを抜ければ必ず離れます。

暴走したときに止められること

Scratch から PC のキーボードとマウスを乗っ取れるということは、暴走もするということです。

手段 動き
停止ボタン / 緑の旗 実行待ちを捨てて、キーとマウスをすべて離す
「切断」ボタン / アプリを閉じる 閉じる前に離す
キーとマウスをすべて離す ブロック 手動の非常停止
デバイス側の見張り 最後のコマンドから 5 秒で自動的に離す
USB を抜く デバイスは必ず止まります。最終手段として成立します

マウスが暴れていると停止ボタンを押すこと自体が難しくなります。
緑の旗を押す前に、キーボードだけで止められる手順(Alt+Tab など)を
確かめておくことをおすすめします。

A0〜A3 をステージに表示できます

A0 の値A3 の値 のブロックが増えました。チェックを入れると
4 つ別々にステージへ並び、緑の旗を押していなくても値が更新されます。

これまでの ピン [ ] の値 は引数があるためステージに出せませんでした。

キーボードの制限

  • 日本語は打てません。 USB-HID はキーコードを送るだけで IME を通りません。
    日本語を渡すと、無言で化けずに開発者コンソールへ警告が出ます
  • US 配列前提です。 日本語配列の PC では @ : _ [ ] \ ^ などがずれます。
    英数字と空白は配列によらず正しく入ります
  • Ctrl と組み合わせる文字は小文字で書いてください。[C] と大文字にすると
    大文字を出すための Shift が入り、Ctrl + Shift + c になります

制限

  • Windows のみです。macOS / Linux 版はありません
  • 押しっぱなしのまま USB を抜くと、操作していた他アプリのドラッグは残ります。
    どこかを 1 回クリックすれば消えます
  • USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
    「つなぐ」ブロックをもう一度実行してください
  • 接続に失敗した理由は開発者コンソール (Ctrl+Shift+I) に出ます

動作確認環境

Windows 11 / Node.js v16.20.0 / Electron 15.3.1

インストーラは 32bit ですが 64bit Windows でも動作します。

ライセンス

このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。