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

推薦する

ipxcore-$2.39/KVM/192m メモリ/10g ハードディスク/300g トラフィック/サンディエゴ/ニュージャージー

小規模ながら優れた VPS 販売業者である ipxcore が、40% 割引コード 40june を...

cheapvps.co.uk - 256m メモリ KVM/10gSSD/1T トラフィック/年間 25 ポンド

cheapvps.co.uk は 2008 年に設立され、Simply Virtual Server...

Webmaster Network からの毎日のレポート: Gmail が最大のメール サービスに、ウェブ ゲームが軽量化

1. comScore: Gmailが世界最大のメールサービスに米国の市場調査会社comScoreの...

A5会議:朱朗CMSが開発した8つの武器を解読

1年前、彼はまだあなたとHTCとサムスンのどちらの携帯電話が優れているか議論したり、顧客を会社の階下...

ハイブリッドクラウド環境における高可用性のコスト効率を向上

ハイブリッド クラウドは、企業がアプリケーションを障害や災害から保護するための新たな機会を提供します...

SEOウェブサイト最適化を行う際にキーワード密度を適切に制御する方法

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス最適化担当者の中には、キ...

10のオンラインマーケティングスキルの5番目: 検索入札ランキング

以前は、検索入札は PPC と呼ばれていましたが、現在では少し不正確になっています。 PPC は P...

電子商取引のトラフィックは少ない:来年はブランドB2Cの再編の年になる

【はじめに】垂直電子商取引は100メートル短距離走というよりマラソンのようなもので、規模を追求するゲ...

SEOトレーニングの価値は主に自分自身によって決まります

業界の中には、SEO は終焉を迎え、入札とブランディングの二重の圧力の下でウェブサイト最適化の役割が...

SEO トレーニングでよく使われる 6 つのレトリックを覚えていますか?

需要があるところに市場がある。ウェブマスター業界に加わる仲間が増えるにつれて、SEOトレーニング市場...

開発者の視点: クラウドは将来、新たなオペレーティングシステムとなる

[51CTO.com クイック翻訳] 現在までに、コンピュータプログラミングの分野では、開発者が操作...

friendhosting: 日本 VPS (Equinix 東京データセンター)、月額 5 ユーロ、1G メモリ/1 コア/10g SSD/1T トラフィック

friendhostingは日本の東京データセンターでVPSを正式に開始し、サーバーはEquinix...

デジタルポイントカードは人気が高まっているが、グルーポンの共同購入モデルは課題に直面している

はじめに:海外メディアは本日、デジタルポイントカードプロジェクトを提供するスタートアップ企業が増えて...

Hologres が MaxCompute の高性能ネイティブ アクセラレーションの中核原理を公開

Hologres(中国語名:Interactive Analysis)は、Alibaba Cloud...