JP2017201505A - 仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(ime)アクティビティーの調整方法 - Google Patents

仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(ime)アクティビティーの調整方法 Download PDF

Info

Publication number
JP2017201505A
JP2017201505A JP2017041435A JP2017041435A JP2017201505A JP 2017201505 A JP2017201505 A JP 2017201505A JP 2017041435 A JP2017041435 A JP 2017041435A JP 2017041435 A JP2017041435 A JP 2017041435A JP 2017201505 A JP2017201505 A JP 2017201505A
Authority
JP
Japan
Prior art keywords
ime
client
server
virtual application
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017041435A
Other languages
English (en)
Other versions
JP6607876B2 (ja
Inventor
ティェンゼェ ジィァン,
Tianze Jiang
ティェンゼェ ジィァン,
トウバオ ディン,
Debao Ding
トウバオ ディン,
カイ ルー,
Kai Lu
カイ ルー,
ヤン ヂャン,
Yang Zhang
ヤン ヂャン,
イーワン ルー,
Yiwan Lu
イーワン ルー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of JP2017201505A publication Critical patent/JP2017201505A/ja
Application granted granted Critical
Publication of JP6607876B2 publication Critical patent/JP6607876B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Abstract

【課題】人間言語の文字を仮想アプリケーションへと入力するための技術を提供する。
【解決手段】クライアント・マシン上で稼働するクライアントIMEと、サーバ上で稼働するサーバIME(インプット・メソッド・エディタ)との間において通信チャネルを確立し、クライアントIMEが、プロキシとしてサーバIMEを使用し、サーバ上で稼働する仮想アプリケーションと対話することを可能にするステップを含む。サーバIMEは、クライアントIMEからの情報を仮想アプリケーションへ中継する。サーバIMEはまた、仮想アプリケーションからの情報をクライアントIMEへ中継する。サーバIMEは、クライアントIMEが、ローカル・アプリケーションと対話するように仮想アプリケーションと対話することを可能にする。仮想アプリケーションおよびローカル・アプリケーションの両方に関して、同様のユーザ経験を促進する。
【選択図】図1

Description

本発明は、仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(IME)アクティビティーの調整方法に関する。
オペレーティング・システムは、一般的に、人間の言語の文字をソフトウェア・アプリケーションへと入力することを支援するためにIME(Input Method Editor)をサポートしている。たとえば、IMEは、繁体字中国語、日本語、および韓国語の文字を入力するために提供されており、これらに関しては、対応するキーボード・ボタンが提供されていない。一般的な構成においては、IMEは、稼働中のアプリケーション、たとえば、ワード・プロセッシング・ドキュメント、スプレッドシート、ウェブ・ブラウザなどへの文字入力を支援するために、合成ウィンドウおよび候補ウィンドウなどのIME要素を提示するヘルパー・アプリケーションとして稼働する。
たとえば、ユーザのキーボード・レイアウトは、簡体字中国語(たとえばピンイン)、日本語、または韓国語などをサポートすることができる。ユーザがキーボード・ボタンをタイプすると、これに応答してIMEは、合成ウィンドウを生成する。合成ウィンドウは、表示属性に従って表示される合成文字を含む。合成文字は、アプリケーションへと入力されるか、または入力されない場合がある一時的な文字である。合成文字の表示属性は、合成文字を強調し、既に確定されている文字から合成文字を区別し、合成文字のステータスを識別するために、合成文字がどのように表示されるかを指定する。いくつかの例において、合成文字は、単に(たとえば、Microsoft Pinyin IMEにおけるように)、直接のキーボード入力が反映される。その他の例においては、合成文字は、(たとえば、Google Pinyin IMEにおけるように)IMEがキーボード入力からターゲット言語への変換を行った複雑な文字である。
IMEが合成ウィンドウを生成するのと同時に、IMEは、候補ウィンドウも生成する。候補ウィンドウは、候補リスト、すなわち、キーボード入力に対応するターゲット言語における1または複数の文字に関する予測のリストを含む。たとえば、ユーザは、ターゲット言語における文字が話されたときに発音される方法と同様に発音されるキーボード・シンボルを入力することができる。ユーザがアプリケーションへのキーボード入力をタイプするにつれて、IMEは、さらなるユーザ入力に基づいて合成文字および候補リストを動的に更新して絞り込む。ユーザは、たとえば、候補リスト上のアイテムをクリックすることによって、矢印キーを使用して「エンター」もしくは「スペースバー」をクリックすることによって、または候補リスト上のアイテムを識別する数字を入力することによって、候補リストから1または複数の文字を選択することができる。ユーザが候補リストから候補を選択すると、IMEは、選択された1または複数の文字をアプリケーションへと(たとえば、ドキュメント、セル、入力フィールドなどへと)挿入する。
Microsoft Word、Microsoft Notepad、およびMicrosoft Wordpadなど、いわゆる「部分的にIMEを認識する」アプリケーションに関しては、アプリケーションは、合成要素を表示することを担当するが、候補ウィンドウを表示することは担当しない。IMEは、ユーザ入力に基づいて合成要素を生成し、これらの要素をアプリケーションに提供する。アプリケーションは次いで、現在のカーソル位置において合成要素を表示する。同時にIMEは、合成要素の隣に候補ウィンドウを表示する。Microsoft Commandなど、いわゆる「完全にIMEを認識する」アプリケーションに関しては、アプリケーションは、合成要素および候補リスト要素の両方を表示することを担当する。これらのケースにおいては、IMEは、これらの要素を生成し、これらの要素をアプリケーションに提供し、アプリケーションは、自分自身のプログラミングに従ってこれらの要素を表示する。
ユーザは、ローカルに稼働しているアプリケーションへと文字を入力するためだけでなく、仮想アプリケーションへと文字を入力するためにもIMEを採用したいと望む場合がある。知られているように、「仮想アプリケーション」は、リモート・サーバからホストされているがクライアント・マシン上でローカルにユーザ・インターフェースを提示するアプリケーションである。仮想アプリケーションは、仮想デスクトップのコンテキストにおいて、またはデスクトップ・コンテキストを伴わずにアプリケーション・ウィンドウにおいて提供されることが可能である。仮想アプリケーションは、仮想デスクトップにおいて提供されるか否かにかかわらず、クライアント・マシン上でローカルに稼働されるアプリケーションと同様のルック・アンド・フィールを有することができる。しかしながら、舞台裏では、ローカルのルック・アンド・フィールを保持するために、クライアントとサーバとの間においてデータがやり取りされている。
残念なことに、ユーザが、言語の文字を仮想アプリケーションへと入力するためにIMEを採用したいと望む場合には、ローカルでの実行の印象を保持することは困難であることがわかっている。たとえば、ユーザが、文字を仮想アプリケーションへと入力するためにローカル・クライアントのIMEを呼び出したいと望む場合があるが、クライアントとサーバとの間においてIME動作の通信を可能にする構造が存在しない場合がある。結果として、いくつかのIME機能は、ローカルに稼働されているアプリケーションに対して働くのと同じ方法では仮想アプリケーションに対して働かない場合があり、結果的にユーザ経験が損なわれる。仮想アプリケーションのいくつかのサーバは、自分自身のIMEを提供し、これらのIMEをユーザがリモートで動作させることができる。しかしこのようなIMEは、ユーザが好むIMEとは異なる場合がある。したがって、これらの状況においてもユーザ経験が損なわれる。
従来のアプローチとは対照的に、人間言語の文字を仮想アプリケーションへと入力するための改良された技術は、クライアント・マシン上で稼働するクライアントIMEと、サーバ上で稼働するサーバIMEとの間において通信チャネルを確立して、クライアントIMEが、プロキシとしてサーバIMEを使用して、サーバ上で稼働する仮想アプリケーションと対話することを可能にするステップを含む。サーバIMEは、クライアントIMEからの情報を仮想アプリケーションへ中継する。サーバIMEはまた、仮想アプリケーションからの情報をクライアントIMEへ中継する。したがってサーバIMEは、クライアントIMEが、ローカル・アプリケーションと対話するかのように仮想アプリケーションと対話することを可能にし、仮想アプリケーションおよびローカル・アプリケーションの両方に関して同様のユーザ経験を促進する。ユーザは、自分の好ましいクライアントIMEを引き続き採用することができ、このようなIMEは、仮想アプリケーションとともに使用される場合に、ローカル・アプリケーションとともに使用される場合と同様に動作する。
一例においては、サーバIMEは、クライアントIMEによって生成された合成要素を仮想アプリケーションへ中継し、それによって仮想アプリケーションは、ローカル・アプリケーションが表示するのと同じ様式で合成ウィンドウを表示することができる。
別の例においては、サーバIMEは、仮想アプリケーションから合成ウィンドウの座標またはカーソルの座標を入手し、これらの座標をクライアントIMEに提供し、それによってクライアントIMEは、合成ウィンドウまたはカーソルの隣に候補リストを表示することができる。
別の例においては、サーバIMEは、候補リストを仮想アプリケーションが表示すべきか、またはクライアントIMEが表示すべきかを示す情報を仮想アプリケーションから入手する。サーバIMEは、この情報をクライアントIMEに送信し、それによってクライアントIMEは、自分自身で候補リストを表示するか、または候補ウィンドウ要素をサーバへ送信することができ、それによって仮想アプリケーションは、候補ウィンドウを表示することができる。
特定の実施形態は、人間言語の文字を仮想アプリケーションへと入力する方法を対象としている。この方法は、クライアント・マシン上で稼働するクライアントIME(Input Method Editor)と、サーバ上で稼働するサーバIMEとの間において通信チャネルを確立するステップであって、通信チャネルが、クライアントIMEがサーバIMEを介して仮想アプリケーションと対話することを可能にする、ステップを含む。仮想アプリケーションは、サーバ上で稼働し、スクリーン出力を提供し、スクリーン出力は、クライアント・マシン上にレンダリングされる。この方法は、クライアントIMEから通信チャネルを介して受信されたIMEデータをサーバIMEによって仮想アプリケーションへ中継して、仮想アプリケーションにIMEデータを提供するステップであって、IMEデータが、クライアント・マシンへのユーザ入力に応答してクライアントIMEによって生成されるステップをさらに含む。この方法はまた、サーバIMEによって仮想アプリケーションから受信されたアプリケーション情報をサーバIMEによって通信チャネルを介してクライアントIMEへ中継して、クライアントIMEにアプリケーション情報を提供するステップをさらに含む。
その他の実施形態は、コンピュータ・プログラム製品を対象としている。このコンピュータ・プログラム製品は、制御回路によって実行されたときに、上述の方法など、人間言語の文字を仮想アプリケーションへと入力する方法を制御回路に実行させる命令を有する非一時的なコンピュータ可読メディアのセットを含む。
また、さらなる実施形態は、上述の方法など、人間言語の文字を仮想アプリケーションへと入力する方法を実行するように構築および構成されているサーバ装置を対象としている。いくつかの実施形態は、単一のロケーションにおいて実行されるアクティビティーを含み、その一方でその他の実施形態は、コンピュータ化された環境を介して(たとえば、ネットワークを介して)分散されるアクティビティーを含む。
前述の概要は、本明細書において提示されている例示的な特徴を読者が容易に理解することを支援するために例示の目的で提示されており、限定的であることを意図されているものではない。
前述のおよびその他の特徴および利点は、添付の図面において示されている本発明の特定の実施形態についての以降の説明から明らかになるであろう。それらの図面においては、同様の参照文字は、別々の図を通じて同じまたは同様の部分を指している。
本明細書の改良された技術の実施形態を実践することができる例示的な環境のブロック図である。 図1のクライアントIMEによって生成された例示的な合成要素を示すスクリーンショットであり、これらの合成要素は、仮想アプリケーションにおいて現在のカーソル位置の後に続く。 クライアントIMEが仮想アプリケーションと対話することを可能にするための例示的な通信を示すブロック図である。 クライアントIMEおよびサーバIMEのためのIMEコンパートメントどうしの例示的な同期化を示すスクリーンショットである。 図1の環境においてクライアントIMEを初期化し、動作させるためのアクティビティーの例示的なシーケンスを示すフローチャートである。 人間言語シンボルを仮想アプリケーションへと入力する例示的な方法のフローチャートである。
本発明の実施形態について説明する。このような実施形態は、本発明のさまざまな特徴および原理を例示するために例として提供されており、本明細書の発明は、開示されている特定の例示的な実施形態よりも広範である。
人間言語の文字を仮想アプリケーションへと入力するための改良された技術は、クライアント・マシン上で稼働するクライアントIMEと、サーバ上で稼働するサーバIMEとの間において通信チャネルを確立して、クライアントIMEが、プロキシとしてサーバIMEを使用して、サーバ上で稼働する仮想アプリケーションと対話することを可能にするステップを含む。したがってサーバIMEは、クライアントIMEが、ローカル・アプリケーションと対話するかのように仮想アプリケーションと対話することを可能にし、仮想アプリケーションおよびローカル・アプリケーションの両方に関して同様のユーザ経験を促進する。
図1は、本明細書の改良された技術の実施形態を実践できる例示的な環境100を示している。ここでは、クライアント・マシン(「クライアント」)110が、ネットワーク130を介してサーバ装置(「サーバ」)120に接続している。ネットワーク130は、任意のタイプのネットワークまたはネットワークの組合せ、たとえば、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、および/またはその他の何らかのタイプのネットワークもしくはネットワークの組合せなどであることが可能である。サーバ120は、仮想化ソフトウェアを備えており、仮想化ソフトウェアは、サーバ120が内部でアプリケーション・インスタンス(「アプリケーション」)を実行することを可能にする一方、たとえば、スクリーンシェアリングおよび/またはその他の手段を介して、それらのアプリケーションのユーザ・インターフェースがクライアント・マシン110などのクライアント・マシン上にレンダリングされることを可能にする。サーバ120上の仮想化ソフトウェアは、アプリケーション仮想化および/または完全なデスクトップ仮想化をサポートすることができ、本明細書において開示されている改良された技術は、両方のケースにおいて当てはまることが意図されている。
知られているように、「アプリケーション仮想化」とは、サーバがアプリケーション・インスタンスを稼働させる一方、アプリケーションのユーザ・インターフェースをクライアントへエクスポートする構成を指す。たとえば、サーバ上で稼働する仮想アプリケーションは、クライアントのデスクトップ上のアプリケーション・ウィンドウ内に現れ、ユーザは、アプリケーション・ウィンドウ内で、たとえば、ユーザのキーボード、マウスなどを使用して、クライアント上の仮想アプリケーションと対話することができる。
対照的に、「デスクトップ仮想化」とは、サーバがユーザの代わりに、自分自身のデスクトップおよびアプリケーションを完備して、ユーザ・セッション全体を稼働させる構成を指す。サーバは、仮想デスクトップをユーザのマシンへエクスポートし、ユーザのマシンは、仮想デスクトップをスクリーン全体に、またはマシン自体のデスクトップ上のウィンドウ内に表示する。ユーザは、仮想デスクトップ内のアプリケーションを始動して、これらのアプリケーションと対話することができ、ネイティブ・デスクトップを使用するのと同じ方法で仮想デスクトップを使用することができる。
図1は、クライアント110の、およびサーバ120の例示的な実施態様をさらに詳細に示している。これらの例は簡略化されており、限定的であるよりもむしろ例示的であるように意図されている。
示されているように、サーバ120は、1または複数のネットワーク・インターフェース160と、プロセッサ162のセットと、メモリ170とを含む。ネットワーク・インターフェース160は、たとえば、ネットワーク130を介して受信された電子信号および/または光信号を、サーバ120によって使用するための電子的な形態へ変換するための1または複数のネットワーク・インターフェース・アダプタを含む。プロセッサ162のセットは、1または複数の処理チップ、コア、および/またはアセンブリ、ならびに関連付けられているコプロセッサおよびチップセットを含む。メモリ170は、揮発性メモリ(たとえば、RAM)、および不揮発性メモリ(たとえば、1または複数のROM、ディスク・ドライブ、ソリッド・ステート・ドライブなど)の両方を含む。プロセッサ162のセットおよびメモリ170は、ともに制御回路を形成し、制御回路は、本明細書において説明されているさまざまな方法および機能を実行するように構築および構成されている。またメモリ170は、実行可能な命令の形態で実現されるさまざまなソフトウェア構造を含む。実行可能な命令がプロセッサ162のセットによって稼働されたときに、プロセッサ162のセットは、ソフトウェア構造の動作を実行させられる。特定のソフトウェア構造が特に示され説明されているが、メモリ170は典型的には、オペレーティング・システム、さまざまなアプリケーション、プロセス、およびデーモンなど、示されていないその他の多くのソフトウェア構造を含むことがわかる。サーバ120は単一のマシンとして示されているが、サーバ120は、代替的に、たとえば、データ・センター、サーバ・ファーム、もしくは、「クラウド」内の任意の場所におけるマシンのバンクなど、複数のマシンとして、および/または1もしくは複数の仮想マシンとして実装されてもよい。サーバ120は、モバイル・デバイス、たとえば、スマートフォン、タブレットなどとして実装されてもよいが、この構成は、あまり一般的ではないと予想される。
メモリ170内で、サーバ120は、サーバ仮想化コンポーネント172を「含む」、すなわち、ソフトウェア命令の実行によって実現する。サーバ仮想化コンポーネント172は、サーバ・エージェント174、サーバIME176、および仮想アプリケーション178を含む。サーバIME176および仮想アプリケーション178は、代替的に、サーバ仮想化コンポーネント172の外部に、たとえば、メモリ170内の独立したコンポーネントとして、またはその他のコンポーネントの部分として提供されてもよい。サーバ・エージェント174は、インターフェース176aを介した、サーバIME176との動作可能な通信状態で配置されている。またサーバIME176は、インターフェース178aを介した、仮想アプリケーション178との動作可能な通信状態で配置されている。インターフェース176aおよび178aは、たとえば、API(Application Program Interface)、システム・メッセージ、またはその他の何らかの1もしくは複数の形態のインターフェースを使用して実装されてもよい。
サーバ120上のサーバ・エージェント144は、クライアント110上のクライアント・エージェント144と通信するように構成されている。サーバ・エージェント174およびクライアント・エージェント144は、サーバ120とクライアント110との間における通信チャネル180を確立する。チャネル180は、ネットワーク130を介して物理的に実装され、ユーザ入力関連の情報をサーバ120とクライアント110との間においてやり取りするリアルタイムの(またはリアルタイムに近い)手段を提供する。チャネル180は、サーバ120またはクライアント110のいずれかによるアクションに基づいて確立されることが可能であり、「仮想セッション」、すなわち、アプリケーション仮想化セッションまたはデスクトップ仮想化セッション(どちらが該当するかにかかわらず)の持続時間にわたって保持されることが可能である。
図1は、単一の仮想アプリケーション178を示しているが、サーバ120は、任意の数の仮想アプリケーションをホストすることができる。また、仮想デスクトップは示されていないが、示されている仮想アプリケーション178は仮想デスクトップ内で稼働されることが可能である。複数の仮想デスクトップが、たとえば別々のユーザごとに提供されることが可能であり、それぞれの仮想デスクトップ内で任意の数の仮想アプリケーションが稼働されることが可能である。一例においては、仮想セッションごとに1つのサーバ・エージェント174が提供される。しかしながら、仮想アプリケーションごとに1つのサーバIME176が提供されることが可能であり、それぞれの仮想アプリケーション178が自分自身のサーバIME176を有する状態となる。したがって、たとえば、単一の仮想セッションにおける複数の仮想アプリケーション178は、自分自身のサーバIMEインスタンスをそれぞれ有する一方で同じサーバ・エージェント174インスタンスを共有することが可能である。
示されている例においては、クライアント・マシン110は、ネットワーク・インターフェース130、プロセッサ132、およびメモリ140を含む。プロセッサ132のセットおよびメモリ140は、ともに制御回路を形成し、制御回路は、説明されているさまざまな方法および機能を実行するように構築および構成されている。クライアント・マシン110はまた、ディスプレイ150(たとえば、モニタ、スクリーン、タッチ・スクリーン、テレビジョンなど)を含む。メモリ140は、実行可能な命令の形態で実現されるさまざまなソフトウェア構造を含む。これらの実行可能な命令がプロセッサ142のセットによって稼働されたときに、プロセッサ142のセットは、これらのソフトウェア構造の動作を実行させられる。クライアント・マシン110はコンピュータとして示されているが、クライアント・マシン110は、広範囲のマシン、デバイス、およびアプライアンス、たとえば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、タブレット、パーソナル・リーダ、セットトップ・ボックス、ビデオ・ストリーミング・デバイス、スマートTV、ゲーミング・システム、スマート・アプライアンスなど、ならびにそれらの組合せを使用して実装されることが可能である。
クライアント110は、クライアント仮想化コンポーネント142およびクライアントIME146を含む。クライアント仮想化コンポーネント142は、クライアント・エージェント144を含む。クライアント・エージェント144は、インターフェース146aを介した、クライアントIME146との動作可能な通信状態で配置されている。インターフェース146aは、たとえば、API、システム・メッセージ、またはその他の何らかの形態のインターフェースを使用して実装されることが可能である。
クライアント仮想化コンポーネント142は、サーバ120との通信セッションを確立および保持すること、サーバ120から受信された仮想化されたアプリケーションのおよび/または仮想化されたデスクトップのスクリーン・コンテンツを表示すること、ならびにユーザ入力を、たとえば、キーボード、マウスなど(または同等のソフトウェア実施機能)からサーバ120へ導くことなどによって、アプリケーション仮想化および/またはデスクトップ仮想化に関するクライアント・サポートを提供する。
クライアント110上で稼働するクライアントIME146は、直接のキーボード入力に適していない非表音文字などの人間言語シンボルのユーザ入力を容易にする。ユーザは、ユーザ自身の好みに基づいてクライアントIME146をインストールすることができる。簡潔にするために単一のクライアントIME146のみが示されているが、クライアント・マシン110は、たとえば、さまざまなターゲット言語に関する、および/またはさまざまなベンダーからの任意の数のクライアントIMEを稼働させることができ、ユーザは、仮想セッション中にさまざまなクライアントIMEの間において切り替えを行うことができる。
例示的な動作においては、クライアント・マシン110のユーザ112が、たとえば、プログラムを起動することによって、またはブラウザを使用して特定のウェブ・アドレスへナビゲートすることによって仮想セッションを始動する。ユーザ112によるこのアクションに応答して、サーバ120は、たとえば、コンテナにおいて仮想アプリケーション178を開くことによって、および/または新たなデスクトップ・セッションを作成することによって、仮想セッションをインスタンス化する。クライアント仮想化コンポーネント142は、サーバ仮想化コンポーネント172との間で調整を行って、クライアント・エージェント144とサーバ・エージェント174との間においてチャネル180を確立する。サーバ120は、仮想アプリケーション178の、または仮想デスクトップ全体のユーザ・インターフェースをクライアント110へエクスポートし、クライアント110は、仮想アプリケーション178または仮想デスクトップのグラフィカル出力をディスプレイ150上に表示する。
チャネル180が確立されて仮想アプリケーション178が稼働している状態で、ユーザ112は、続けてクライアントIME146を起動することができる。たとえば、ユーザ112は、普通のQUERTYスタイルのキーボードを使用して繁体字中国語の文字をドキュメントへと入力するためにワード・プロセッサまたはEメール・プログラムを使用したいと望む可能性がある。
ユーザがクライアントIME146を動作させたときに、クライアントIME146は、IMEデータ182を生成する。IMEデータ182は、インターフェース146aを介してクライアント・エージェント144へ流れ、チャネル180を介してサーバ・エージェント174へ転送される。サーバ120内で、IMEデータ182は、サーバIME176へ流れ、サーバIME176は、IMEデータ182を仮想アプリケーション178に提供する。同様に、仮想アプリケーション178が動作したときに、仮想アプリケーション178は、IME動作に関連するアプリケーション・データ184を生成する。サーバIME176は、アプリケーション・データ184を受信し、アプリケーション・データ184を、チャネル180を介してクライアントIME146に返す。したがってサーバIME176は、クライアントIME146のためのプロキシまたは中継器として動作して、IMEデータ182を仮想アプリケーション178へ転送し、アプリケーション・データ184をクライアントIME146に返す。たとえば、クライアントIME146が、ユーザ入力に応答して、合成要素および候補リストなどのUI要素を生成するように動作したときに、サーバIME176は、クライアントIME146の代わりに仮想アプリケーション178と対話して、IMEデータ182を仮想アプリケーション178に提供し、アプリケーション・データ184をクライアントIME146に返す。したがって、エージェント144および174、サーバIME176、ならびにチャネル180は、クライアントIME146が、ローカル・アプリケーションと対話するかのように仮想アプリケーション178とリモートで対話することを可能にする。
図2は、図1の構成に従って文字を仮想アプリケーション178へと入力するためのクライアントIME146の例示的な動作を示すスクリーンショット200である。ここでは、クライアントIME146は、Google Pinyin IMEであるが、任意のIMEが使用されてもよい。仮想デスクトップ210が、クライアント・マシン110のネイティブ・デスクトップ250上のウィンドウ212内に示されている。仮想デスクトップ210は、仮想システム・トレイ214を含み、ネイティブ・デスクトップ250は、ネイティブ・システム・トレイ254を含む。
仮想デスクトップ210は、仮想アプリケーション178としてMicrosoft Notepadのインスタンスを稼働させている。Notepadは、仮想デスクトップ210上のアプリケーション・ウィンドウ220内で稼働しているように見える。Notepadのみが稼働しているように見えるが、任意の数の仮想アプリケーションが仮想デスクトップ210上で稼働することができる。
複数のIME要素を図2において見ることができる。たとえば、合成ウィンドウ154は、表示属性154b(たとえば、示されているようなアンダーライン付け。ただしボールド、カラー、およびその他の設定を含むこともできる)を伴ってレンダリングされている合成文字154aを含む。候補ウィンドウ156は、候補リスト156aを含む。ユーザが、キーボード入力(合成ウィンドウ154の下に示されている)を提供し、クライアントIME146は、合成文字154aおよび候補リスト156aを生成することによって応答している。候補リスト156aは、ターゲット言語でのキーボード入力に対するベスト・マッチの予測(図においては番号が付けられている)を提供する。ユーザは、次いで、クライアントIME146を動作させて、所望の候補、すなわち、ユーザが入力することを意図している候補を選択することができる。ユーザが、たとえば番号を入力することによって選択を行うと、選択された文字は、確定された文字となり、アプリケーションのドキュメントへと入力される。いくつかの確定された文字152が示されており、これらの文字152は、ユーザによってクライアントIME146を使用して既に入力されている。示されている例においては、合成文字154は、候補リスト156aにおける現在の選択と一致している。
図2はまた、カーソル158を示している。カーソル158は、合成ウィンドウ154の直後に現れ、新たな文字が入力されるにつれて、または異なる幅の文字が選択されるにつれて、前へ進む。
図1の、すなわち、エージェント144、エージェント174、チャネル180、クライアントIME146、およびサーバIME176の構成は、クライアントIME146が、仮想アプリケーション178へと文字を入力する際に、ローカル・アプリケーションへと文字を入力する際に行うのとそっくり同じように動作することを可能にする。たとえば、図1の構成は、仮想アプリケーション178が、合成ウィンドウ154をアプリケーション・ウィンドウ220内にレンダリングすることを、すなわち、IMEデータ182をサーバIME176へ送信することによって可能にし、サーバIME176は、仮想アプリケーション178と通信する。仮想アプリケーション178は、クライアントIME146からの入力に基づいて合成ウィンドウ154を、ローカル・アプリケーションが表示するのとちょうど同じように表示する。また、この構成は、クライアントIME146が候補ウィンドウ156を合成ウィンドウ154の隣に、または合成ウィンドウが空である場合にはカーソル158の隣に配置することを可能にする。たとえば、クライアントIME146は、合成ウィンドウ154またはカーソル158のスクリーン座標を要求し、これらのスクリーン座標をアプリケーション・データ184として仮想アプリケーション178から受信することができる。クライアントIME146は次いで、候補ウィンドウ156を配置する際に、受信された座標を適用することができる。さらにまた、クライアントIME146は、仮想アプリケーション178が自分自身で候補リストを表示することができるかどうかを、すなわち、仮想アプリケーション178が、部分的にIMEを認識するか、または完全にIMEを認識するかを示すアプリケーション・データ184を仮想アプリケーション178から入手することができる。受信されたアプリケーション・データ184に基づいて、クライアントIME146は、続いて(Notepadのように、部分的にIMEを認識するアプリケーションに関しては)自分自身で候補ウィンドウ156を表示するか、または(Commandのように、完全にIMEを認識するアプリケーションに関しては)候補リスト156aおよび関連付けられている設定を(チャネル180を介して)仮想アプリケーション178へ送信して、仮想アプリケーション178が自分自身で候補リストを表示することを可能にすることができる。
図3は、チャネル180を介した、クライアントIME146と仮想アプリケーション178との間における例示的な通信を示している。この通信は、クライアントIME146が、ローカル・アプリケーションとともに動作するかのように仮想アプリケーション178と動作することを可能にする。
ここでは、ユーザ・アクションに応答して、たとえば、ユーザが第1のキーボード・シンボルをクライアントIME146へと入力したことに応答して、クライアントIME146によってIMEデータ182として合成始動メッセージ310が生成される。合成始動メッセージ310は、クライアントIME146からクライアント・エージェント144へ、チャネル180を介してサーバ・エージェント174へ、そしてサーバIME176へ伝搬する。サーバIME176は、合成始動メッセージ(または合成始動メッセージの処理されたバージョン)を仮想アプリケーション178に提供する。それに応答して、仮想アプリケーション178は、合成手順を始動する用意を行う。
合成要素312は、合成文字154aおよび表示属性154bを含む。クライアントIME146は、ユーザ入力に応答してこれらの合成要素312を生成し、これらの合成要素312を、チャネル180を介してサーバIME176へ送信し、サーバIME176は、これらの合成要素312を仮想アプリケーション178に提供する。次いで仮想アプリケーション178は、受信された合成要素を使用して合成ウィンドウ154を表示する。
始動要求320は、合成ウィンドウ内の合成文字のセットに基づいて文字の予測を識別するための候補ウィンドウを始動したいという要求である。始動要求320は、サーバIME176によって受信され、サーバIME176は、この要求を仮想アプリケーション178へ転送する。
アプリケーション178は、始動応答322を用いて始動要求320に答え、アプリケーション178は、始動応答322を、チャネル180を介してクライアントIME146に返す。始動応答322は、仮想アプリケーション178が候補ウィンドウ156を表示するかどうか、またはクライアントIME146が候補ウィンドウ156を表示するかどうかを示す。たとえば、始動応答322は、候補ウィンドウ156を表示することを仮想アプリケーション178が担当する場合には“FALSE”とし、候補ウィンドウ156を表示することをクライアントIME146が担当する場合には“TRUE”とすることが可能である。
始動応答322が“FALSE”である場合には、クライアントIME146は、候補リスト要素330(たとえば、候補リスト文字、ページ・インデックス、現在のページなど)をサーバIME176へ送信し、サーバIME176は、候補リスト要素330を仮想アプリケーション178に提供する。仮想アプリケーション178は次いで、候補リスト要素330を使用して仮想アプリケーション178のスクリーン出力内に候補ウィンドウ156を表示する。これは典型的には、完全にIMEを認識するアプリケーションに関するケースであるということに留意されたい。
しかしながら、始動応答322が“TRUE”である場合には、クライアントIME146は、続いて候補ウィンドウ156をディスプレイ150上にローカルに表示する。これは典型的には、部分的にIMEを認識するアプリケーションに関するケースであるということに留意されたい。
クライアントIME146が候補ウィンドウ156を表示する状況においては、図1の構成は、クライアントIME146が候補ウィンドウ156を適切なロケーションに、すなわち、ローカル・アプリケーションに関して候補ウィンドウ156が配置されるのと同じロケーションに配置することを可能にする。たとえば、クライアントIME146は、座標要求340を、チャネル180を介して仮想アプリケーション178へ送信する。仮想アプリケーション178は、座標要求340を受信し、座標応答342を提供する。座標応答342は、チャネル180を介してクライアントIME146に返される。一例においては、座標応答342は、仮想アプリケーション178によって表示される合成ウィンドウ154のエクステント・エリアを示す座標のセットを提供する。これらの座標は、たとえば、合成ウィンドウ154を含む長方形の頂点として表されることが可能である。クライアントIME146は次いで、候補ウィンドウ156を合成ウィンドウ154と相対的に、ローカル・アプリケーションに関して配置するのと同じ方法で、たとえば(図2において示されているように)合成ウィンドウ154のすぐ下に配置することができる。別の例においては、座標応答342は、カーソル158の座標を提供する。そのようなケースにおいては、クライアントIME146は、候補ウィンドウ156をカーソル158のロケーションと相対的に配置する。いくつかの例においては、座標応答342は、合成ウィンドウ154が合成文字154aを含む場合には合成ウィンドウ154のエクステント・エリアを提供するが、合成ウィンドウ154が空である場合にはカーソル158の座標を提供する。
合成終了メッセージ350は、合成の終了をトリガーする。たとえば、クライアントIME146は、ユーザが候補リスト156aから候補を選択した後に、合成終了メッセージ350を送信する。合成終了メッセージ350に応答して、仮想アプリケーション178は、確定された文字152をアプリケーション・ウィンドウ220内に配置し、合成ウィンドウ154をクリアする。そして合成手順は完了する。
上述の通信は、新たなキーボード入力をユーザが提供するにつれて任意の回数繰り返されることが可能である。たとえば、クライアントIME146は、新たなキーボード入力をユーザがタイプし続けていることに応答して、新たな合成要素312を繰り返し送信することができる。また、合成ウィンドウ154がサイズを変えるにつれて、ならびに/またはユーザがアプリケーション・ウィンドウ220および/もしくはデスクトップ・ウィンドウ212を移動させるかもしくはサイズ変更するにつれて、座標要求340および応答342が繰り返されることが可能である。たとえば、クライアントIME146は、候補ウィンドウ156の位置を継続的に更新することができ、それによって候補ウィンドウ156は、常に合成ウィンドウ154またはカーソル158の後に続く。
図4は、例示的なスクリーンショット400を示している。これは、図2のスクリーンショット200に類似しているが、システム・トレイ214および254のさらに接近したビューを提供する。図4はまた、クライアントIME146のステータス・ウィンドウ402を示している。ネイティブ・デスクトップ250においては、システム・トレイ254は、キーボード・データを解釈する際にクライアント・マシン110が適用する人間言語を識別するキーボード言語設定440を含む。仮想デスクトップ210においては、システム・トレイ214は、キーボード言語設定430を含む。システム・トレイ214内のキーボード言語430は、サーバ120に関するキーボード言語選択、すなわち、キーボード入力を解釈する際にサーバ120が適用する人間言語を識別する。
本明細書のさらなる改良によれば、キーボード言語設定440における変更は、キーボード言語設定をクライアント110からサーバ120へ自動的に同期化することをトリガーする。同期化は、新たなキーボード言語での入力に関して特定のサーバIME176をアクティブ化することを含むことができる。したがって、たとえば、ネイティブ・デスクトップ450におけるキーボード設定440を日本語(JP)から簡体字中国語(zh−CN)へ変更することは、仮想デスクトップ210におけるキーボード設定430およびサーバIME176を日本語から簡体字中国語へ自動的に切り替えることをトリガーする。このような同期化は、クライアント110とサーバ120との間においてやり取りされるIMEデータがクライアント110およびサーバ120の両方によって同じ方法で解釈されることを確実にする。
仮想デスクトップ210におけるシステム・トレイ214はまた、サーバ・コンパートメント設定410を変更するためのオプションを含む。サーバ・コンパートメント設定410は、サーバIME176の設定に関連しており、また、サーバIME176によって入力されるシンボルの人間言語を指定するために使用されるターゲット言語設定410aと、特定の言語におけるシンボルに関して、これらのシンボルが半角の間隔を使用して入力されるか、または全角の間隔を使用して入力されるかを指定するために使用される幅設定410bとを含むことができる。さらなるまたはその他のサーバ・コンパートメント設定が提供されることが可能である。
ステータス・ウィンドウ402は、クライアント・コンパートメント設定420を変更するためのオプションを含む。クライアント・コンパートメント設定420は、クライアントIME146の設定に関連し、ターゲット言語設定(420a)およびシンボル間隔設定(420b)を含むこともできる。さらなるまたはその他のクライアント・コンパートメント設定が提供されてもよい。したがって、クライアント・コンパートメント設定420は、サーバ・コンパートメント設定410がサーバ側でコントロールするのと同じ設定をクライアント側でコントロールすることがわかる。
さらなる改良によれば、クライアントIME146のクライアント・コンパートメント設定420のうちのいずれかにおける変更は、その設定を、サーバIME176の対応するサーバ・コンパートメント設定と自動的に同期化すること、およびその逆に、自動的に同期化することをトリガーする。したがって、たとえば、ステータス・ウィンドウ402内のクライアント・ターゲット言語設定420aを変更することは、サーバ・ターゲット言語設定410aにおける自動的な変更をトリガーする。同様に、システム・トレイ214におけるサーバ間隔設定410bを変更することは、ステータス・ウィンドウ402内のクライアント間隔設定420bにおける自動的な変更をトリガーする。この同期化は、クライアントIME146およびサーバIME176が同じターゲット言語で同じ設定を伴って動作し、それによって、チャネル180を介してクライアントIME146とサーバIME176との間において送信されたデータが正しく解釈されることを確実にする。
図5は、仮想アプリケーションをサポートするためにクライアント110とサーバ120との間におけるIMEアクティビティーの調整に含まれる動作500の例示的なフェーズを示している。これらのフェーズは、オープニング・フェーズ510、結合フェーズ520、アクティブ化フェーズ530、および合成フェーズ540を含む。これらのフェーズは典型的には、示されている順序で実行されるが、別のクライアントIME146が選択された場合にはアクティブ化フェーズ530が繰り返されることが可能である。
オープニング・フェーズ510中に、仮想セッションが作成される。クライアント110は、クライアント・エージェント144をインスタンス化し、サーバ120は、サーバ・エージェント174をインスタンス化する。クライアント・エージェント144およびサーバ・エージェント174は、クライアント110とサーバ120との間においてIME関連情報を搬送するためにチャネル180を確立する。
結合フェーズ520中に、サーバ120は、チャネル180を介してクライアント110に連絡を取り、サーバ120がサポートする言語など、サーバ120自身の機能をクライアントに知らせる。それに応答して、クライアント110は、クライアント110がサポートする言語など、クライアント110の機能を提供する。一例においては、サーバ120は次いで、クライアントおよびサーバの両方がサポートするそれぞれの言語に関する言語プロファイルを用意する。サーバは次いで、サポートされる言語を確認する結合コミット・メッセージをクライアントへ送信する。
アクティブ化フェーズ530は、ユーザがクライアントIME146およびターゲット言語を選択したときに始動する。クライアント・エージェント144は、選択されたターゲット言語を、チャネル180を介してサーバ・エージェント174へ通信する。それに応答して、サーバ・エージェント174は、サーバIME176をアクティブ化し(サーバIME176がまだアクティブ化されていないと想定して)、サーバIME176を、選択されたターゲット言語のプロファイルを使用して動作するように構成する。現在の仮想セッションがデスクトップ仮想化を実行していて、複数の仮想アプリケーション178が稼働している場合には、サーバ・エージェント174は、新たにアクティブ化されたサーバIME176を、すべての稼働しているアプリケーションに対して、仮想セッションに関するシステム・デフォルトIMEとして適用する。このフェーズ中に、クライアント・エージェント144はまた、現在のクライアント・キーボード言語(すなわち、設定440によって示されているような。図4を参照されたい)をサーバ・エージェント174へ送信し、サーバ・エージェント174は、サーバ・キーボード言語(すなわち、設定430によって示されているような)を、クライアント・キーボード言語と同じであるように設定する。
合成フェーズ540は、アクティブ化フェーズの後に続き、クライアント・マシン110のユーザが、言語シンボルを入力するためにクライアントIME146を使用しているときに、クライアント・エージェント144とサーバ・エージェント174との間におけるチャネル180を介した通信を保持することを含む。仮想セッションは、合成フェーズ540において仮想セッションの残りの持続時間にわたって、またはユーザがクライアントIME146、ターゲット言語、および/もしくはキーボード言語を変更するまで、残存することが可能であり、その時点で動作は、アクティブ化フェーズ530へ戻り、次いでアクティブ化が完了すると、再び合成フェーズ540へ進むことが可能である。
図6は、人間言語シンボルを仮想アプリケーションへと入力するための例示的なプロセス600を示している。プロセス600は、たとえば環境100に関連して、たとえば、図1に関連して説明されているソフトウェア構造によって実行されることが可能であり、これらのソフトウェア構造は、クライアント・マシン110のメモリ140内に存在してプロセッサ132のセットによって稼働され、および/またはサーバ120のメモリ170内に存在してプロセッサ162のセットによって稼働される。プロセス600のさまざまな行為は、任意の適切な方法で順序付けられることが可能である。したがって、例示されている順序とは異なる順序で行為が実行される実施形態が構築されることが可能であり、これらの実施形態は、いくつかの行為を同時に実行すること(たとえこれらの行為が、例示されている実施形態においては、順次生じるものとして示されていても)を含むことができる。
610において、方法600は、クライアント・マシン110上で稼働するクライアントIME(Input Method Editor)146と、サーバ120上で稼働するサーバIME176との間において通信チャネル180を確立するステップを含む。通信チャネル180は、クライアントIME146がサーバIME176を介して仮想アプリケーション178と対話することを可能にする。仮想アプリケーション178は、サーバ120上で稼働し、クライアント・マシン110上にレンダリングされるスクリーン出力220を提供する。
620において、方法600は、クライアントIME146から通信チャネル180を介して受信されたIMEデータ182をサーバIME176によって仮想アプリケーション178へ中継して、仮想アプリケーション178にIMEデータ182を提供するステップを含む。IMEデータ182は、クライアント・マシン110へのユーザ入力に応答してクライアントIME146によって生成される。
630において、方法600は、サーバIME176によって仮想アプリケーション178から受信されたアプリケーション情報184をサーバIME176によって通信チャネル180を介してクライアントIME146へ中継して、クライアントIME146にアプリケーション情報184を提供するステップをさらに含む。
人間言語の文字を仮想アプリケーションへと入力するための改良された技術について説明してきた。この技術は、クライアント・マシン110上で稼働するクライアントIME146と、サーバ120上で稼働するサーバIME176との間において通信チャネル180を確立し、クライアントIME146が、プロキシとしてサーバIME176を使用して、サーバ120上で稼働する仮想アプリケーション178と対話することを可能にするステップを含む。サーバIME176は、クライアントIME146からの情報182を仮想アプリケーション178へ中継する。サーバIME176はまた、仮想アプリケーション178からの情報184をクライアントIME146へ中継する。したがってサーバIME176は、クライアントIME146が、ローカル・アプリケーションと対話するかのように仮想アプリケーション178と対話することを可能にし、仮想アプリケーションおよびローカル・アプリケーションの両方に関して同様のユーザ経験を促進する。ユーザは、自分の好ましいクライアントIMEを引き続き採用することができ、このようなIMEは、仮想アプリケーションとともに使用される場合に、ローカル・アプリケーションとともに使用される場合と同様に動作する。
特定の実施形態について説明してきたが、多くの代替的な実施形態または変形形態が作成されることが可能である。たとえば、中国語文字などの非表音言語シンボルの入力に関連してIMEについて説明してきたが、本明細書の改良された技術は、これらの機能を実行するIMEに限定されるものではない。たとえば、本明細書の改良された技術は、たとえば、オートコンプリート、手書き文字認識、または話声認識をサポートするためなどに、表音文字を入力するIMEとともに使用されることも可能である。
さらに、本明細書の特定の実施形態を参照しながら特徴が示され説明されているが、このような特徴は、開示されている実施形態およびそれらの異形のうちのいずれかに含まれることが可能であり、本明細書においては含まれている。したがって、いずれかの実施形態に関連して開示されている特徴は、その他のいずれかの実施形態の異形として含まれているということがわかる。
さらにまた、この改良またはこの改良の部分は、磁気ディスク、磁気テープ、コンパクト・ディスク、DVD、光ディスク、フラッシュ・ドライブ、SD(Secure Digital)チップまたはデバイス、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等などの1または複数の非一時的なコンピュータ可読ストレージ・メディア(例として図6においてはメディア650として示されている)を含むコンピュータ・プログラム製品として具体化されることが可能である。任意の数のコンピュータ可読メディアが使用されることが可能である。このメディアは、命令とともにエンコードされることが可能であり、これらの命令は、1または複数のコンピュータまたはその他のプロセッサ上で実行されたときに、本明細書において説明されている1または複数のプロセスを実行する。このようなメディアは、製品またはマシンとみなされることが可能であり、1つのマシンから別のマシンへトランスポートすることが可能である。
この文書を通じて使用される際には、「comprising(含む)」、「including(含む)」、「containing(含む)」、および「having(有する)」という言葉は、何かの特定のアイテム、ステップ、要素、または態様をオープンエンドな様式で示すことを意図されている。また、本明細書において使用される際には、そうではないという具体的な言明がなされていない限り、「セット」という言葉は、何かの1または複数を意味する。このことは、「〜のセット」というフレーズの後に単数形または複数形の目的語が続いているかどうかにかかわらず、および「〜のセット」というフレーズが単数形または複数形の動詞と接合されているかどうかにかかわらず、当てはまる。さらに、本明細書においては、順序を示す表現、たとえば、「第1の」、「第2の」、「第3の」などが、形容詞として使用されているかもしれないが、このような順序を示す表現は、識別の目的で使用されており、具体的に示されていない限り、何らかの順序付けまたはシーケンスを意味することを意図されているものではない。したがって、たとえば、第1のイベントの前もしくは後に、またはたとえ第1のイベントが生じることがなくても、第2のイベントが起こり得る。加えて、ある特定の要素、特徴、または行為を、「第1の」このような要素、特徴、または行為であると本明細書において識別することは、「第2の」またはその他のこのような要素、特徴、または行為も存在しなければならないということを必要とするものと解釈されるべきではない。むしろ、「第1の」アイテムは、唯一のアイテムである場合がある。本明細書においては特定の実施形態が開示されているが、これらは単なる例として提供されているということ、および本発明はこれらの特定の実施形態に限定されるものではないということがわかる。
したがって、本発明の範囲から逸脱することなく、本明細書において開示されている実施形態に対して形式および細部においてさまざまな変更が行われることが可能であるということを当業者なら理解するであろう。

Claims (20)

  1. クライアント・マシン上で稼働するクライアントIME(Input Method Editor)と、サーバ上で稼働するサーバIMEとの間において通信チャネルを確立するステップであって、該通信チャネルが、前記クライアントIMEが前記サーバIMEを介して仮想アプリケーションと対話することを可能にし、該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、該スクリーン出力が、前記クライアント・マシン上にレンダリングされるステップと、
    前記クライアントIMEから前記通信チャネルを介して受信されたIMEデータを前記サーバIMEによって前記仮想アプリケーションへ中継し、前記仮想アプリケーションに前記IMEデータを提供するステップであって、前記IMEデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントIMEによって生成されるステップと、
    前記サーバIMEによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ中継し、前記クライアントIMEに前記アプリケーション情報を提供するステップと、を含む、人間言語の文字を仮想アプリケーションへと入力する方法。
  2. 前記通信チャネルを介して受信された前記IMEデータが、
    (i)ユーザ入力アクションに応答して前記クライアントIMEによって生成された合成始動メッセージと、
    (ii)合成要素と、を含み、
    該合成要素が、合成文字のセットおよび表示属性を含み、
    前記方法が、
    前記合成始動メッセージおよび前記合成要素を受信したことに応答して、前記仮想アプリケーションによって、前記仮想アプリケーションの前記スクリーン出力内に合成ウィンドウを表示するステップをさらに含み、
    該合成ウィンドウが、前記表示属性を使用して合成文字の前記セットをレンダリングする、請求項1に記載の方法。
  3. 前記合成ウィンドウ内の合成文字の前記セットに基づいて文字の予測を識別するための候補ウィンドウを始動するための始動要求を前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して受信するステップと、
    前記サーバIMEによって前記始動要求を前記仮想アプリケーションへ転送するステップと、
    前記サーバIMEによって前記仮想アプリケーションから始動応答を受信するステップであって、該始動応答が、前記候補ウィンドウを前記仮想アプリケーションが表示するか、または前記クライアントIMEが表示するかを示すステップと、
    前記始動応答を、前記通信チャネルを介して前記クライアントIMEに返すステップと、をさらに含む、請求項2に記載の方法。
  4. 前記始動応答を返したことに応答して、および前記始動応答が、前記仮想アプリケーションが前記候補ウィンドウを表示することを示しているのに伴って、
    前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して候補リスト要素を受信するステップと、
    前記サーバIMEによって前記候補リスト要素を前記仮想アプリケーションへ転送するステップと、
    前記仮想アプリケーションによって前記候補リスト要素を使用して前記仮想アプリケーションの前記スクリーン出力内に前記候補ウィンドウをレンダリングするステップと、をさらに含む、請求項3に記載の方法。
  5. 前記始動応答を返したことに応答して、および前記始動応答が、前記クライアントIMEが前記候補ウィンドウを表示することを示しているのに伴って、
    前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して座標要求を受信するステップと、
    前記サーバIMEによって前記座標要求を前記仮想アプリケーションへ転送するステップと、
    前記サーバIMEによって前記仮想アプリケーションから座標応答を受信するステップであって、該座標応答が、
    (i)前記仮想アプリケーションのカーソルのカーソル位置、または
    (ii)前記仮想アプリケーションによって表示される前記合成ウィンドウのエクステント・エリアを示す座標のセットのうちの1つを提供するステップと、
    前記座標応答を、前記通信チャネルを介して前記クライアントIMEに返して、クライアントIMEが、前記座標応答に基づいて前記スクリーン出力と相対的なロケーションに前記候補ウィンドウを表示することを可能にし、それによって前記候補ウィンドウが、
    (i)前記カーソル位置、または
    (ii)前記合成ウィンドウのうちの1つの隣に表示されるステップと、をさらに含む、請求項3に記載の方法。
  6. 前記合成要素における変化に応答して、更新された座標応答を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ送信するステップをさらに含み、
    前記更新された座標応答が、
    (i)更新されたカーソル位置、または
    (ii)前記合成ウィンドウの前記エクステント・エリアを示す座標の更新されたセットのうちの1つを示す、請求項5に記載の方法。
  7. 前記ユーザが前記クライアント・マシン上で前記表示ウィンドウを動かした場合には、さらなる更新された座標応答を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ送信し、
    クライアントIMEが、
    (i)前記カーソル位置、または
    (ii)前記合成ウィンドウのうちの1つの隣に前記候補ウィンドウを引き続き表示することを可能にするステップをさらに含む、請求項6に記載の方法。
  8. 前記クライアントIMEおよび前記サーバIMEがそれぞれ、IME設定を識別するそれぞれのコンパートメントを有し、
    前記方法が、前記クライアントIMEのコンパートメント設定を前記サーバIMEのコンパートメント設定と同期化し、それにより、いずれのIMEの前記コンパートメント設定に対して行われたいかなる変更も、両方のIMEの前記コンパートメント設定において実施されるステップをさらに含む、請求項1に記載の方法。
  9. 前記通信チャネルを確立した後に、結合動作を実行するステップをさらに含み、
    前記結合動作が、
    (i)前記サーバによって、結合要求を前記クライアント・マシンへ送信するステップであって、該結合要求が、前記サーバによってサポートされる人間言語のリストを指定するステップと、
    (ii)前記サーバによって前記クライアント・マシンから結合応答を受信するステップであって、該結合応答が、前記クライアント・マシンによってもサポートされる前記サーバによってサポートされる人間言語のリストを識別するステップと、
    (iii)前記クライアント・マシンから受信された人間言語の前記リスト上のそれぞれの人間言語をサポートするように前記サーバを構成するステップと、を含む、請求項1に記載の方法。
  10. 制御回路によって実行されたときに、人間言語の文字を仮想アプリケーションへと入力する方法を前記制御回路に実行させる命令を有する非一時的なコンピュータ可読メディアのセットを含むコンピュータ・プログラム製品であって、
    前記方法により、
    クライアント・マシン上で稼働するクライアントIME(Input Method Editor)と、サーバ上で稼働するサーバIMEとの間において通信チャネルを確立し、
    該通信チャネルが、前記クライアントIMEが前記サーバIMEを介して仮想アプリケーションと対話することを可能にし、
    該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、該スクリーン出力が、前記クライアント・マシン上にレンダリングされ、
    前記クライアントIMEから前記通信チャネルを介して受信されたIMEデータを前記サーバIMEによって前記仮想アプリケーションへ中継して、前記仮想アプリケーションに前記IMEデータを提供し、
    前記IMEデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントIMEによって生成され、
    前記サーバIMEによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ中継して、前記クライアントIMEに前記アプリケーション情報を提供するよう構成されている、コンピュータ・プログラム製品。
  11. 前記通信チャネルを介して受信された前記IMEデータが、
    (i)ユーザ入力アクションに応答して前記クライアントIMEによって生成された合成始動メッセージと、
    (ii)合成要素と、を含み、
    該合成要素が、合成文字のセットおよび表示属性を含み、
    前記方法により、前記合成始動メッセージおよび前記合成要素を受信したことに応答して、前記仮想アプリケーションによって、前記仮想アプリケーションの前記スクリーン出力内に合成ウィンドウを表示し、
    該合成ウィンドウが、前記表示属性を使用して合成文字の前記セットをレンダリングするよう構成されている、請求項10に記載のコンピュータ・プログラム製品。
  12. 前記方法により、
    前記合成ウィンドウ内の合成文字の前記セットに基づいて文字の予測を識別するための候補ウィンドウを始動する始動要求を前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して受信し、
    前記サーバIMEによって前記始動要求を前記仮想アプリケーションへ転送し、
    前記サーバIMEによって前記仮想アプリケーションから始動応答を受信するよう構成され、
    該始動応答が、前記候補ウィンドウを前記仮想アプリケーションが表示するか、または前記クライアントIMEが表示するかを示し、
    前記始動応答を、前記通信チャネルを介して前記クライアントIMEに返すよう構成されている、請求項11に記載のコンピュータ・プログラム製品。
  13. 前記方法により、
    前記始動応答を返したことに応答し、および前記始動応答が、前記クライアントIMEが前記候補ウィンドウを表示することを示しているのに伴って、
    前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して座標要求を受信し、
    前記サーバIMEによって前記座標要求を前記仮想アプリケーションへ転送し、
    前記サーバIMEによって前記仮想アプリケーションから座標応答を受信するよう構成され、
    該座標応答が、
    (i)前記仮想アプリケーションのカーソルのカーソル位置、または
    (ii)前記仮想アプリケーションによって表示される前記合成ウィンドウのエクステント・エリアを示す座標のセットのうちの1つを提供し、
    前記座標応答を、前記通信チャネルを介して前記クライアントIMEに返して、クライアントIMEが、前記座標応答に基づいて前記スクリーン出力と相対的なロケーションに前記候補ウィンドウを表示することを可能にし、それによって前記候補ウィンドウが、
    (i)前記カーソル位置または
    (ii)前記合成ウィンドウのうちの1つの隣に表示されるよう構成されている、請求項12に記載のコンピュータ・プログラム製品。
  14. 前記方法により、
    前記合成要素における変化に応答して、更新された座標応答を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ送信するよう構成され、
    前記更新された座標応答が、
    (i)更新されたカーソル位置、または
    (ii)前記合成ウィンドウの前記エクステント・エリアを示す座標の更新されたセットのうちの1つを示すよう構成されている、請求項13に記載のコンピュータ・プログラム製品。
  15. 前記方法により、
    前記ユーザが前記クライアント・マシン上で前記表示ウィンドウを動かした場合には、さらなる更新された座標応答を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ送信し、
    クライアントIMEが、
    (i)前記カーソル位置、または
    (ii)前記合成ウィンドウのうちの1つの隣に前記候補ウィンドウを引き続き表示することを可能にするよう構成されている、請求項14に記載のコンピュータ・プログラム製品。
  16. メモリ内に格納されている命令を実行するために前記メモリに結合されているプロセッサのセットを含む制御回路を含むサーバ装置であって、
    前記制御回路が、
    クライアント・マシン上で稼働するクライアントIME(Input Method Editor)と、
    サーバ上で稼働するサーバIMEとの間において通信チャネルを確立するよう構成され、
    該通信チャネルが、前記クライアントIMEが前記サーバIMEを介して仮想アプリケーションと対話することを可能にし、
    該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、
    該スクリーン出力が、前記クライアント・マシン上にレンダリングされ、
    前記クライアントIMEから前記通信チャネルを介して受信されたIMEデータを前記サーバIMEによって前記仮想アプリケーションへ中継して、前記仮想アプリケーションに前記IMEデータを提供するよう構成され、
    前記IMEデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントIMEによって生成され、
    前記サーバIMEによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバIMEによって前記通信チャネルを介して前記クライアントIMEへ中継して、前記クライアントIMEに前記アプリケーション情報を提供するように構築および構成されている、サーバ装置。
  17. 前記通信チャネルを介して受信された前記IMEデータが、
    (i)ユーザ入力アクションに応答して前記クライアントIMEによって生成された合成始動メッセージと、
    (ii)合成要素と、を含み、
    該合成要素が、合成文字のセットおよび表示属性を含み、
    前記制御回路が、前記合成始動メッセージおよび前記合成要素を受信したことに応答して、前記仮想アプリケーションによって、前記仮想アプリケーションの前記スクリーン出力内に合成ウィンドウを表示して、前記表示属性を使用して合成文字の前記セットをレンダリングするようにさらに構築および構成されている、請求項16に記載のサーバ装置。
  18. 前記制御回路が、
    前記合成ウィンドウ内の合成文字の前記セットに基づいて文字の予測を識別する候補ウィンドウを始動するための始動要求を前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して受信し、
    前記サーバIMEによって前記始動要求を前記仮想アプリケーションへ転送し、
    前記サーバIMEによって前記仮想アプリケーションから始動応答を受信するよう構成され、
    該始動応答が、前記候補ウィンドウを前記仮想アプリケーションが表示するか、または前記クライアントIMEが表示するかを示し、
    前記始動応答を、前記通信チャネルを介して前記クライアントIMEに返すようにさらに構築および構成されている、請求項17に記載のサーバ装置。
  19. 前記始動応答を返したことに応答して、および前記始動応答が、前記仮想アプリケーションが前記候補ウィンドウを表示することを示しているのに伴って、
    前記制御回路が、
    前記サーバIMEによって前記クライアントIMEから前記通信チャネルを介して候補リスト要素を受信し、
    前記サーバIMEによって前記候補リスト要素を前記仮想アプリケーションへ転送し、
    前記仮想アプリケーションによって前記候補リスト要素を使用して前記仮想アプリケーションの前記スクリーン出力内に前記候補ウィンドウをレンダリングするようにさらに構築および構成されている、請求項18に記載のサーバ装置。
  20. 前記クライアントIMEおよび前記サーバIMEがそれぞれ、IME設定を識別するそれぞれのコンパートメントを有し、
    前記制御回路が、前記サーバIMEのコンパートメント設定を前記クライアントIMEのコンパートメント設定と同期化し、それによって、いずれのIMEの前記コンパートメント設定に対して行われたいかなる変更も、両方のIMEの前記コンパートメント設定において実施されるようにさらに構築および構成されている、請求項19に記載のサーバ装置。
JP2017041435A 2016-03-11 2017-03-06 仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(ime)アクティビティーの調整方法 Active JP6607876B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610140425.1A CN107179952B (zh) 2016-03-11 2016-03-11 虚拟应用客户端和服务器之间的协同输入法编辑器(ime)活动
CN201610140425.1 2016-03-11

Publications (2)

Publication Number Publication Date
JP2017201505A true JP2017201505A (ja) 2017-11-09
JP6607876B2 JP6607876B2 (ja) 2019-11-20

Family

ID=59830234

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017041435A Active JP6607876B2 (ja) 2016-03-11 2017-03-06 仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(ime)アクティビティーの調整方法

Country Status (3)

Country Link
JP (1) JP6607876B2 (ja)
KR (1) KR102010127B1 (ja)
CN (1) CN107179952B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117256A (zh) * 2018-07-12 2019-01-01 维沃移动通信有限公司 一种后台应用程序的管理方法及终端
CN111930367B (zh) * 2019-05-13 2024-04-16 阿里巴巴集团控股有限公司 数据的处理方法、装置及设备
CN113741708A (zh) * 2020-05-31 2021-12-03 华为技术有限公司 一种输入方法及电子设备
CN112565425B (zh) * 2020-12-03 2021-08-06 南京机敏软件科技有限公司 在多个跨云服务器主机会话的云应用程序间进行拷贝粘贴的方法
CN115052195A (zh) * 2022-06-24 2022-09-13 深圳创维-Rgb电子有限公司 远程输入方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015148852A (ja) * 2014-02-04 2015-08-20 コニカミノルタ株式会社 画像形成システム、画像形成装置およびプログラム
JP2015158719A (ja) * 2014-02-21 2015-09-03 コニカミノルタ株式会社 画像形成システム、画像形成装置、遠隔操作装置およびプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555529B2 (en) * 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
WO2011066434A2 (en) * 2009-11-27 2011-06-03 Google Inc. Client-server input method editor architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015148852A (ja) * 2014-02-04 2015-08-20 コニカミノルタ株式会社 画像形成システム、画像形成装置およびプログラム
JP2015158719A (ja) * 2014-02-21 2015-09-03 コニカミノルタ株式会社 画像形成システム、画像形成装置、遠隔操作装置およびプログラム

Also Published As

Publication number Publication date
CN107179952A (zh) 2017-09-19
KR20170106222A (ko) 2017-09-20
CN107179952B (zh) 2021-03-23
JP6607876B2 (ja) 2019-11-20
KR102010127B1 (ko) 2019-10-21

Similar Documents

Publication Publication Date Title
JP6607876B2 (ja) 仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(ime)アクティビティーの調整方法
WO2020034747A1 (zh) 图片生成方法、装置、设备及存储介质
CN107992301B (zh) 用户界面实现方法、客户端及存储介质
CN108027708B (zh) 促成针对图形元素的属性值的选择
EP2854428B1 (en) Terminal for providing instant messaging service
US10671357B2 (en) Preview changes to mobile applications at different display resolutions
KR20170140091A (ko) 하나 이상의 확장 애플리케이션과 상호작용하는 메시징 애플리케이션
CN107077348B (zh) 跨设备的经分割的应用呈现
CN111557006A (zh) 用于抽取关于内联注释的知识的混合智能方法
KR102136474B1 (ko) 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화
JP2018504657A (ja) タブベースのブラウザコンテンツ共有
US20160092152A1 (en) Extended screen experience
KR20160060110A (ko) 온스크린 키보드에 대한 빠른 작업
KR102390187B1 (ko) 회의보조용 번역 도구를 위한 방법 및 시스템
US20150319215A1 (en) Methods for facilitating a remote interface and devices thereof
US10303331B2 (en) Live mobile application visual editor demo
US20180004546A1 (en) Utilizing a local device keyboard in a remote desktop environment
US11487559B2 (en) Dynamically switching between pointer modes
WO2018113751A1 (zh) 一种设置通信快捷方式的方法及电子设备
CN114416270A (zh) 页面显示方法、装置、设备和介质
US20160147741A1 (en) Techniques for providing a user interface incorporating sign language
KR102127909B1 (ko) 채팅 서비스 제공 시스템, 이를 위한 장치 및 방법
CN112204512A (zh) 用于在网络化协作工作区中通过web套接字连接进行桌面共享的方法,装置和计算机可读介质
EP3635527B1 (en) Magnified input panels
WO2024011095A1 (en) Methods and systems for recording a graphical element by dragging a drag-to-record element

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191021

R150 Certificate of patent or registration of utility model

Ref document number: 6607876

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250