5 分間の技術講演 |クラウドコンピュータ端末のマウスとキーボードの適応原理

5 分間の技術講演 |クラウドコンピュータ端末のマウスとキーボードの適応原理

パート01

クラウドコンピュータとキーボードとマウスの適応とは何ですか?

クラウドコンピューティングは現在非常に人気のある新しいテクノロジーです。クラウド コンピューティングをベースとし、大量のストレージとコンピューティング リソースを大規模なリソース プールに統合してクラウドに保存し、必要に応じてユーザーに割り当てられます。クラウドは、高速ネットワークを介してコンピューターの画面をユーザーのデバイスに投影します。

クラウドコンピュータの端末デバイスには、持ち運びできる通常の携帯電話やPad、テレビに接続できるセットトップボックス、古いコンピュータ端末など、さまざまな種類があります。

通常のコンピュータでは、最もよく使用される入力デバイスはマウスとキーボードです。クラウド コンピューターが従来のラップトップを置き換えるには、さまざまな端末のキーボードやマウスと互換性がある必要があります。ただし、多くのモバイル デバイスはタッチ操作に重点を置いているため、キーボードとマウスのサポートが不十分な場合がよくあります。さらに、端末メーカーは端末デバイス システムを高度にカスタマイズするため、クラウド コンピューターにおけるキーボードとマウスの適応サポートの断片化がさらに悪化します。各メーカーの端末にはそれぞれ固有の問題があります。したがって、キーボードとマウスの適応は、クラウドコンピュータ端末デバイスの全体的な適応作業の大部分を占めます。

パート02

Androidキーボードの仕組み

Android アプリケーションでは、リアルタイム検出ページで onKeyDown、onKeyUp、dispatchKeyEvent などのメソッドを使用することで、ほとんどのキーボード キーの使用をリアルタイムで検出できます。しかし、Android システムのサポート問題やメーカーファームウェアの断片化により、実際にこれらの方法を使用すると、同じキーでも端末によってキー値が異なったり、キー値がまったくなかったりすることがわかります。すべての端末デバイスのキー値を統一するために、システム全体の物理キー値のマッピング原則を次のように分析しました。

Android カーネルでは、キーが押されると、IR ハードウェア スキャン コードがドライバーの input.h で定義されたキー値にマッピングされます。たとえば、キーボードのような HID デバイスの場合、キーが押されると、カーネル内のキー値変換が drivers/hid/hid-input.c にマッピングされ、変換された値が scanCode になります。

hid-input.c のマッピング テーブルは次のとおりです。

図1 システムhid-input.cソースコードのスクリーンショット

同時に、これらのキー値によって表されるキー名も、Android システム層のヘッダー ファイル input-event-codes.h で定義されます。以下に示すように(傍受):

図2 システムinput-event-codes.hソースコードのスクリーンショット

カーネルでマッピングした後、Linux キー値を Android システムで使用されるキー値マッピングにマッピングする必要があります。この部分は通常、システムの device/xxx/xxx.kl (keylayout) ファイルで定義されます。

キーレイアウト ファイルの内容は次のとおりです (一部)。

図3 システムキーレイアウトファイルの部分スクリーンショット

kl ファイルでは、カーネルによってマップされたスキャンコードが最終的に Android システムに必要なキー値にマップされ、最終的にアプリケーションに必要なキーコードに変換されます。

全体的なプロセスは次のとおりです。

写真

パート03

クラウドコンピュータ対応キーボード

キーと値のマッピングプロセス全体を理解します。異なる端末で最終キー値が異なる原因は何ですか?そして、クラウド コンピューターはどのようにしてキー値を複数の端末に適応させるのでしょうか?

複数の端末デバイスの設定ファイルを比較した結果、異なるメーカーの端末キー値の不一致は、主にシステムに組み込まれた kl ファイルの内容が異なることが原因であることがわかりました。したがって、クラウド コンピュータのキー値の適応は、主に kl ファイルを適応することによって実現されます。

kl ファイルはどのように適応すればよいですか?主なオプションは 4 つあります。

(1)アプリケーション層では、クラウドコンピュータは、異なる端末のコールバックキー値に応じて、誤ったキー値を正しいキー値に変換します。キーの正しいマッピングが完了すると、通常のキー値がクラウド コンピューターの入力操作に使用されます。

(2)さまざまなキーボード用のアダプターファイルをシステムに追加します。クラウド コンピューターは、互換性のあるキーボードに応じてさまざまなアダプター ファイルをカスタマイズし、システムに統合します。

(3)システムのデフォルトアダプタファイルを変更して、キーボードボタンの機能を優先する。

(4)クラウドコンピュータを使用する場合は、別のアダプタファイルを使用します。クラウド コンピューターのアダプター ファイルは、相互干渉を避けるために他のアプリケーションと区別する必要があります。

それぞれのソリューションには、それぞれ長所と短所があります。たとえば、ソリューション 1 では、一部の端末デバイスでキー値が欠落していたり​​、重複していたり​​します。アプリケーション側で適応のみを実行すると、これらのキーは適切にサポートされません。ソリューション 2 では、キーボードに合わせて調整する必要があるキーレイアウト ファイルを追加することで、クラウド コンピューターでサポートされるキーボードの数が非常に制限される可能性があり、調整テストの作業負荷も増加します。解決策 3 はシステムのデフォルトの適応ファイルを変更するため、元のリモート コントロール ボタンの一部にエラーが発生する可能性があります。ソリューション 4 を使用する場合、Android システムの基盤となるキーボード適応ファイルのマッチング プロセスを完全に再構築する必要があり、適応作業量は膨大になります。

上記のソリューションの長所と短所を組み合わせ、リモコンとキーボードのキーの重複が少なく、リモコンキーのキー値が一般的に標準キー値であることを考慮して、最終的にソリューション 3 をクラウド コンピューター キーボードの適応ソリューションとして選択し、同時に適応されたすべてのキー値が標準キー値であることを確認しました。

適応計画を決定した後、すべての端末の Generic.kl ファイルを変更し、登録されたキー値をクラウド コンピューターの使用に必要な標準キー値と項目ごとに比較し、適応されたすべての端末のキーボード適応を完了する必要があります。

パート04

マウスの適応

Android システムでは、マウスのスライドとクリックは、システムの onGenericMotionEvent メソッドのリアルタイム検出によって識別されます。 onGenericMotionEvent メソッドでは、MotionEvent 内のアクション値を使用して、マウスの左クリック、マウスの右クリック、マウスのスライドなどのさまざまな操作方法を区別します。マウス操作の端末デバイスの戻り値は基本的に同じままなので、追加の適応は基本的に必要ありません。

パート05

仮想キーボードとマウスのソリューション

各端末デバイスは基本的にクラウドコンピュータに適応する際にキーボードのキー値を適応させる必要があるため、携帯電話やパッドなどを外部のリモート操作デバイスとして使用し、実際のキーボードとマウスをシミュレートしてクラウドコンピュータを操作するのは理にかなっています。

仮想キーボードとマウスには主に 2 つの方法があります。

(1)ローカルエリアネットワーク内に通信サービスを構築する。モバイル アプリケーションが QR コードをスキャンしてチャネルに直接接続すると、クラウド コンピューターはカスタマイズされたキーボード コマンドとマウス コマンドを送信してこれらのコマンドを実際の操作コマンドに変換し、クラウド コンピューターの操作を完了します。

(2)Bluetooth HIDを介して、2つのデバイスがBluetooth接続された後、モバイル端末はBluetooth HIDコマンドを送信してクラウドコンピュータを操作します。

Bluetooth HID では両方のデバイスが Bluetooth をサポートする必要があり、より高いシステム バージョンが必要になるため、多くのユーザーにとって Bluetooth 接続はコストが高くなり、仮想キーボードとマウスのソリューションとしてソリューション 1 が選択されます。

ソリューション 1 では、端末上で安定したデータ チャネルを確立する必要があり、このデータ チャネルでは WebSocket を使用できます。マウスをクリックしてスライドさせると、チャネル内で大量のデータを送信する必要があるため、データチャネル内で送信されるデータ形式としてprotobufを使用できます。プロトコル バッファーは、構造化データのシリアル化、つまりシリアル化に使用できる軽量で効率的な構造化データ ストレージ形式です。データ ストレージや RPC データ交換形式として最適です。通信プロトコル、データ ストレージ、およびその他の分野で使用できる、言語やプラットフォームに依存せず、拡張可能なシリアル化された構造化データ形式。

モバイル端末がマウスデータを大画面端末に送信する際には、ユーザーの操作ジェスチャーをボタンの押す、持ち上げる、移動するといった最も基本的な操作に分解し、これらの操作を操作データに変換してから送信する必要があります。たとえば、通常の左ボタンのクリック操作の場合、クリック操作は、左ボタンが押されたイベントと左ボタンが離されたイベントの 2 つのイベントに分割する必要があります。別の例として、左ボタンのクリック アンド ドラッグ操作は、左ボタンの押下、マウスの移動、左ボタンの解放という 3 つのイベントに分割する必要があります。

最も一般的に使用される 2 つのデバイスであるマウスとキーボードに加えて、リモート コントロールやゲーム コントローラーなどの他のさまざまな種類の入力デバイスを使用して、この方法でクラウド コンピューターを操作できるため、多くの適応作業を回避できます。

<<:  NetEase Cloud ComputingはAIGCの機能を完全に統合することで、デジタルインテリジェンスビジネスに注力し続けています。

>>:  5 分間の技術講演 |クラウドコンピュータビデオストリーミングフレームレートネゴシエーションメカニズム

推薦する

ターンキーインターネット - $3.89/年/KVM/1G メモリ/1Gbps 無制限トラフィック

Turnkeyinternet は、知らない人もいるかもしれませんが、ベテランなら知っているはずです...

分散ストレージシステムの理論的指針をCAPからPACELCに移行する時期が来ている

CAP 理論は、分散ストレージ システムの現在の設計に対する理論的ガイドラインであり、PACELC ...

ウェブサイトがテキストから動画へと大きく飛躍したのは恥ずかしいことだ

ショートビデオの人気により、DouyinとKuaishouという2つのプラットフォームの人気が急速に...

ランキングのために外部リンクを送信せずにウェブサイトの関連性を高める

ウェブサイトのランキングの重要な要素は誰もが知っています。Google は外部リンクを重視しますが、...

OnePoundWebHosting - 5.4 ポンド/Xen/512m メモリ/500g ハードディスク/600g 帯域幅

OnePoundWebHosting は、英国で正式に登録された会社で、登録番号は 05886975...

悪魔は細部に宿る:インタラクティブなウェブボタンのサイズ

製品がコア要件を満たしたら、詳細の作業をゆっくりと開始できます。製品のほぼすべてのレベルで、表面上見...

ローカルサイト起業シリーズ: 商人交渉

皆さんこんにちは。私は曹源葛です。前回のCool Grassrootsの記事では、ブランド構築につい...

ウェブサイトのトラフィックが消えてしまったら、新たな命を勝ち取るためにその源をたどる必要があります

インターネットの急速な発展に伴い、ウェブサイトのトラフィックはウェブサイトの存続にとって重要な要素と...

WordPress 5.x が気に入らないですか? WordPressのバージョンをダウングレードしましょう!

WordPress 5.4 から 5.5 へのアップグレードでは多くの変更があり、アップグレード後に...

ウェブサイトのセキュリティはウェブマスターの最優先事項です

2 日前、私の Web サイトがハッキングされました。バックエンド ディレクトリ フォルダーに PH...

医療業界におけるウェブサイトの最適化はどこに向かうべきでしょうか?

百度はこれまでずっとすべてのウェブサイトを平等に扱うと述べてきたが、実は6月28日の事件以降、百度は...

Google が、広告が多すぎるウェブサイトの所有者を罰すると明言した場合、私たちはどう対応すべきでしょうか?

現在、ほとんどの個人ウェブサイトは依然として利益のために広告に依存していますが、ほんの数日前、Goo...

SpringBoot 分散トランザクションのベスト エフォート通知

[[393657]]環境: springboot.2.4.9 + RabbitMQ3.7.4ベストエ...

信頼できるオランダのVPSの推奨事項とオランダのサーバーの推奨事項

オランダはヨーロッパのデータセンターの中心地に位置しており、ヨーロッパ全体と非常に友好的な関係を築い...