きょうは毒きのこ日和です

2024/04/25(木)09:19

SwiftPlayground/ESP32を使って iPadをBluetooth Keyboardにするぞ!

部品:電気・電子・USBの工作や部品等の検討・紹介(25)

2012年よりiPadを使い始めて10年が経過しました。​ 僕は当初よりWindowsPCも持ち運びたかったのですが、iPad/NotePC合計で 1.5kg超えが確実だったので何とか軽量化という事を考えていました。 ここではiPadをBLEキーボードとして使えないかソフトを作って検討しています。 現状何処まで作れたの?    詳細は作成記録に任せますが、一応実機で本ブログの入力が出来る様になりました。    但しipadのソフトキーボードの入力感に及ばず、まだまだ改善していく予定です。        とは言え・・・  現状で気付く問題/修正点はSwiftPlaygrounds側ばかりです。    なので、SwiftPlaygroundsの使い方の調査・修正・確認のターンが長引くばかり。    SwiftのGUI周りをサポートしてくれる方が欲しいな~と悶々とする今日この頃です。             ココからは作成記録です。 キーボードを作る仕様とその進捗   =>どんな作りにするか?で  接続はこんな感じ考えています       iPadPro ー①ー> ESP32 ー②ー> ESP32 ー③ー> PC       ①:BLE通信(既に自作した通信関数を利用)       ②:UART通信(新規作成)       ③:Bluetooth Keyboard接続(サンプルを流用)       普段から利用している①と②なので、主にiPadPro部と③の作成です。   =>実際にハードをつくりました。 2台のESP32をUARTで繋ぐだけです。              ソフト書き込みで不具合が起きたので電源スイッチを付けました。   =>iPadのSwiftPlaygroundでキーボードGUIとBLE通信を作ります              各キーはkeycodeを持ちpress/releaseが検知できる仕組みです。      press/releaseを検知すると全キーのpress/release状態をkeycode順の      bit配列にしてBLE通信で送信します。      以上w                              ※まずココからですよね~~~~ SwiftPlaygroundのソフト作成で起きた問題    解決済 >>キーボードレイアウトがががが        SwiftUIの基本的なモノで作っています。(不勉強であまり知らない為)        HStack/VStackでの対応なので現在は四角形しか作れていません。        反L字型のリターンキーは挫折して四角で我慢しました。    解決済 >>キーボタンのonPress / onReleaseイベントが取れない        基本構想でも紹介しているとうりkeydown/keyupが必要であり、        clickイベントはお呼びでは無いので実現方法を探しました。        ​アチコチ探した末にコチラのサイトに紹介がありました。(感謝~​    解決済 >>ButtonUIの登録部分のソースコードが長すぎる        10キー無しキーボードでも90個分ぐらいのキー位置登録があるので、        1キー1行でないと見通しが悪く作りにくい事が判りました。        ※別途struct ***key : view等で詳細を記述して登録部を改善    >>入力が変だ        ipadのソフトキーボードの様に入力できないので不具合をセッセと潰します        SHIFT/CTRLなどがワンクッション遅れでの動作の様な気がする・・・        キーリピートも気にする必要もありそうだし、問題山積な予感    >>キー入力後にKeyPress状態の色のキーが残っている        Releaseイベントが発生しない状況があるらしい・・・・        Pressイベント時にBLE電文送信をしているが、タイミングを変えてみるか?    >>キーロック状態を忘れていました        CapsLockとか何種類かはロック状態を維持できる事を忘れてました。        iOSの画面側は判る表示が出来る様にしたいと思っています。 ESP32のソフト作成で起きた問題    解決済>>ライブラリが101キーボードのディスクリプタで日本語入力できない                      ディスクリプタを2か所書き換えて106キーにすると可能になりました。    解決済>>ライブラリの関数はCTRL/SHIFTなどの入力は受け付けない        keyreport定義にはmodifiersにセットする仕組みを追加しました。    >>Keyboard/Mouseコンボのライブラリを見つけました。        ディスクリプタを106キーボードに書き換えて動作確認中。        う少ししたらマウスの動作確認も行う予定。    >>ESP32-S3/ESP32-C3って凄く良さそうです        ESP32-S3はUSB HIDも実装できるそうです。USB HIDのキーボード        サンプルは101キーボードなので日本語入力化を解決してからデス。        またESP32-C3は安くて小さいので本ユニットの最終版で使うかな? 2024年某日 まだマトモに使えないんです    ある程度は上手く動く様な感じです。    しかし僕が普通にタイピングする速度にするとキーupが認識されないモノがあり、    破綻している感じです。 SwiftPlaygroundのプログラムが悪いのか?    ESP32側のソフト・動作設定が悪いのか?   悩ましいトコです。 2024年4月   MAC買ってソフト作るにはチョット悩ましい           swiftplaygroundのお陰でiOSでアプリを作成出来そうな気分です。           ただiphoneや旧ipad向けで作るならMACで開発する必要があります。           MACを手に入れるのは良いのですが、デベロッパー登録に年会費などなど           必要コストが悩ましい感じです。           そんな事ならAndroidに移行して安く上げたいですが、BLE通信ソフト開発デスヨー           どうしましょうかねー。    どっかAndroidのBLE通信と開発環境を手ほどき           して欲しい今日この頃であります。

続きを読む

このブログでよく読まれている記事

もっと見る

総合記事ランキング

もっと見る