739605 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

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

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

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Profile

あとぐ

あとぐ

Recent Posts

Category

Calendar

Keyword Search

▼キーワード検索

2023/12/21
XML
2012年よりiPadを使い始めて10年が経過しました。
僕は当初よりWindowsPCも持ち運びたかったのですが、iPad/NotePC合計で
1.5kg超えが確実だったので何とか軽量化という事を考えていました。
ここではiPadをBLEキーボードとして使えないかソフトを作って検討しています。

​​一応完成しました             ​​
   詳細は作成記録に任せますが、実機で本ブログの入力が出来る様になりました。

キーボード入力はどんな感じ?       
   大前提でiPad標準のキーボードに慣れているのが必要だと思います。
   後はキー配置の作り込みでiPadと106キーボードの違和感を調整する感じです。
   キークリック音が出る様に直すと結構安心して入力出来る様になりました。
   現状はブログ書き込み用キーボードとして使っていけそうです。


            ココからは作成記録です。

キーボードを作る際の仕様と都度出てきた悩み
  =>どんな作りにするか?で  接続はこんな感じになりました
      iPadPro ー①ー> ESP32C3 ー②ー> ESP32C3 ー③ー> PC
      ①:BLE通信(既に自作した通信関数を利用)
      ②:UART通信(新規作成)
      ③:Bluetooth Keyboard接続(サンプルを流用)
      
      検討用ハードと作成中画面
  =>実際にハードをつくりました。 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などがワンクッション遅れでの動作の様な気がする・・・
       >>>ESP32のデバッグ用ログが遅かった様で出力を削除

   疑似解決>>キー入力後にKeyPress状態の色のキーが残って押しっぱなし
       ボタンでReleaseイベントが発生しない状況がありました。
       ※複数ボタンを押したまま指を画面外に移動させると起こる。
       ※手のひら部分で画面を抑えたり放したりすると起こる。
       現状は正しく対処する方法が判りません。
       全体のキーの状態が1秒変化無ければ全キーReleaseしてます。

   解決済>>キーロック状態を忘れていました
       CapsLockとか何種類かはロック状態を維持できる事を忘れてました。
       サンプルコードで対応できないモノがあったので処理を追加しました。


ESP32のソフト作成で起きた問題
   解決済>>日本語入力できない
                     ディスクリプタを書き換えて106キーにしました。

   解決済>>ライブラリの関数はCTRL/SHIFTなどの入力は受け付けない
       keyreport定義にはmodifiersにセットする仕組みを追加しました。

   >>Keyboard/Mouseコンボのライブラリを見つけました。
       ディスクリプタを106キーボードに書き換えて動作確認中。
       う少ししたらマウスの動作確認も行う予定。

   実装しました>>ESP32-S3/ESP32-C3って凄く良さそうです
       ESP32-S3はUSB HIDも実装できるそうです。USB HIDのキーボード
       サンプルは101キーボードなので日本語入力化を解決してからデス。
       とりあえずBLEキーボードという事でESP32C3の2台で使っています。


2024年9月 なんか一応使える様になっています。
   キーが押しっぱなしになる問題を一定時間触らないと強制リリースで対処。
   ESP32C3でも動作したので検討用にユニットを作ってみました。
   
   2台を使い5v・GND・RX・TXだけなので、親子亀方式でつなぎました。
   ESP32s3ならBLE/USBKEYBOARDの1台で済む様ですが、それはまた今度。


2024年4月   MAC買ってソフト作るにはチョット悩ましい
          swiftplaygroundのお陰でiOSでアプリを作成出来そうな気分です。
          ただiphoneや旧ipad向けで作るならMACで開発する必要があります。
          MACを手に入れるのは良いのですが、デベロッパー登録に年会費などなど
          必要コストが悩ましい感じです。

          そんな事ならAndroidに移行して安く上げたいですが、BLE通信ソフト開発デスヨー
          どうしましょうかねー。    どっかAndroidのBLE通信と開発環境を手ほどき
          して欲しい今日この頃であります。


PVアクセスランキング にほんブログ村​​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2024/10/24 12:24:07 PM
コメント(0) | コメントを書く
[部品:電気・電子・USBの工作や部品等の検討・紹介] カテゴリの最新記事



© Rakuten Group, Inc.
X