JP2022074087A - アプリケーションの間でのポインタ位置の追跡および復元方法、コンピュータ・プログラム、およびコンピュータ・システム(アプリケーションの間でのポインタ位置の追跡および復元) - Google Patents
アプリケーションの間でのポインタ位置の追跡および復元方法、コンピュータ・プログラム、およびコンピュータ・システム(アプリケーションの間でのポインタ位置の追跡および復元) Download PDFInfo
- Publication number
- JP2022074087A JP2022074087A JP2021176177A JP2021176177A JP2022074087A JP 2022074087 A JP2022074087 A JP 2022074087A JP 2021176177 A JP2021176177 A JP 2021176177A JP 2021176177 A JP2021176177 A JP 2021176177A JP 2022074087 A JP2022074087 A JP 2022074087A
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- application
- gui
- user
- program
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000004590 computer program Methods 0.000 title claims abstract description 14
- 230000004044 response Effects 0.000 claims abstract description 29
- 238000003860 storage Methods 0.000 claims description 36
- 230000009471 action Effects 0.000 claims description 33
- 230000033001 locomotion Effects 0.000 claims description 28
- 230000000737 periodic effect Effects 0.000 claims description 9
- 230000003993 interaction Effects 0.000 description 122
- 230000015654 memory Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 12
- 230000002085 persistent effect Effects 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 238000003066 decision tree Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004984 smart glass Substances 0.000 description 3
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 210000003811 finger Anatomy 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 238000004801 process automation Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012482 interaction analysis Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002207 retinal effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000012916 structural analysis Methods 0.000 description 1
- 239000004753 textile Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04812—Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0483—Interaction with page-structured environments, e.g. book metaphor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0489—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04801—Cursor retrieval aid, i.e. visual aspect modification, blinking, colour changes, enlargement or other visual cues, for helping user do find the cursor in graphical user interfaces
Abstract
【課題】ユーザがアプリケーションの間で切り替えるのに応じて、アプリケーション内のポインタ位置を復元する方法、コンピュータ・プログラムおよびコンピュータ・システムを提供する。【解決手段】コンピュータ・システムは、ユーザが第一アプリケーションとインタフェースするのに応じて、第一アプリケーションのグラフィカル・ユーザ・インタフェース(GUI)内の一連のポインタ位置を判断する。ユーザが第二アプリケーションとインタフェースするのを休止し、第一アプリケーションにアクセスするのを再開するのを判断する。第一アプリケーションのGUIにそれぞれ関連する一連のポインタ位置の中からポインタ位置を判断し、ポインタを以前に利用されたアプリケーション内の位置に復元する。【選択図】図2
Description
本発明は、一般にグラフィカル・ユーザ・インタフェース(GUI:graphical user interface)の分野に関し、特に、ユーザがアプリケーションの間で切り替えることに応じたポインタの場所の制御に関する。
デスクトップ・コンピュータ、ラップトップ・コンピュータ、大型システム、モバイル・デバイス、携帯電話などのコンピューティング・デバイスの様々なオペレーティング・システム(OS:operating system)は、ユーザがコンピューティング・デバイスの機能およびコンピューティング・デバイス上で実行するアプリケーションとインタラクトすることを可能にするためにグラフィカル・ユーザ・インタフェース(GUI)を利用する。例えば、OS GUI内に表示され、インストールされたアプリケーションにそれぞれ関連するアイコンが、ユーザがポインティング・デバイスを介してアプリケーションに対応するアイコンを選択するのに応じてアプリケーションを起動しうる。
加えて、OSのGUIは、コンピューティング・デバイスにインストールされたアプリケーションの実行もしくはGUI要素に関連する様々な機能またはその両方にそれぞれ関連する他のGUIの生成もサポートしうる。ユーザは、OSおよびアプリケーションのGUIをナビゲートするマウスまたはタッチ・スクリーンなどの入力/出力(I/O:input/output)デバイスを利用しうる。例えば、インタフェース要素は、ユーザがプルダウン・メニューを起動する、機能のセットに関係するタブの順序を並べ替える、コピーまたは削除などの後続のアクションに関連してアプリケーション内の要素(例えばテキスト、インターネット・リンク、写真など)を選択するなど、アプリケーションの様々な要素とインタラクトすることを可能にする矢印として視覚的に描写されうる。加えて、ウェブ・ブラウザが、ウェブ・ブラウジング・セッションのアクティブなインターネット・リンクにそれぞれ対応するタブのセット、ウェブ・ブラウザ・タブに関係するメイン・リンクと異なるインターネット・リンクのコンテンツを表示するウェブページ内のフレーム、およびインターネットを介してアクセス可能なアプリケーションのWUI(ウェブユーザ・インタフェース:web‐user interface)など、ネストされたGUIおよびGUI要素を含みうる。
問題は、場合によってはアプリ「A」および「B」にアクセスすること、およびアプリ「B」のGUIをナビゲートすることがポインタ移動を介して行われ、アプリ「A」での以前の位置が失われることである。
本発明の態様によれば、ユーザがアプリケーションの間で切り替えることに応じてアプリケーション内のポインタ位置を復元するための方法、コンピュータ・プログラム製品、もしくはコンピュータ・システムまたはその組み合わせが存在する。
一実施形態では、本方法は、少なくとも一つのコンピュータ・プロセッサが、一つ以上のコンピュータ・プロセッサによってユーザのコンピューティング・デバイスで実行中のアプリケーションのセットを識別するステップを含む。本方法は、ユーザが第一アプリケーションとインタフェースするのに応じて、少なくとも一つのコンピュータ・プロセッサが、実行中のアプリケーションのセットのうちの第一アプリケーションのグラフィカル・ユーザ・インタフェース(GUI)内の一連のポインタ位置を判断するステップをさらに含む。本方法は、少なくとも一つのコンピュータ・プロセッサが、ユーザが第二アプリケーションとインタフェースするのを休止し、第一アプリケーションにアクセスするのを再開するのを判断するステップをさらに含む。本方法は、少なくとも一つのコンピュータ・プロセッサが、第一アプリケーションのGUIにそれぞれ関連する一連のポインタ位置の中からポインタ位置を判断するステップをさらに含む。本方法は、少なくとも一つのコンピュータ・プロセッサが、ポインタを第一アプリケーションのGUI内の判断されたポインタ位置に配置することによって、ユーザが第一アプリケーションにアクセスするのを再開するのを判断したことに応じるステップをさらに含む。
本発明の実施形態は、オペレーティング・システム(OS)の進歩により、ユーザが複数のアプリケーションもしくはシステム機能またはその両方を同時に実行し、他のアプリケーションもしくは機能またはその両方を使用していない間にバックグラウンドでアクティブにしておくことができることを認識する。本発明の実施形態は、ユーザがOSの機能とインタフェースし、複数のアプリケーションを実行し、もしくはアプリケーションに組み込まれた特徴を利用し、またはそれらの組み合わせを行うことを可能にするために、多数のOSがグラフィカル・ユーザ・インタフェース(GUI)を利用することを認識する。加えて、本発明の実施形態は、ユーザがGUI内の矢印、十字、指さしマークなどのポインタ要素またはポインタ・アイコン(以下ではポインタと呼ぶ)の移動を制御し、ポインタの位置に関係する一つ以上のアクションを実行するためにマウス、トラックボールなどの一つ以上のポインティング・デバイス、もしくはタッチスクリーンなどの別のインタフェースまたはそれらの組み合わせを利用することを認識する。
本発明の実施形態は、技術進歩に基づいてコンピューティング・デバイスの間でディスプレイ/インタフェース・エリアが大きく異なりうることも認識する。一例では、スマートフォンのGUIエリアは数平方インチでありうる一方で、医療システムまたは製造環境に関連するGUI環境は、数平方フィートをカバーしうるディスプレイのバンク(例えば複数のディスプレイ)に分散されうる。加えて、大きなGUIエリアでは、ユーザが複数の実行中のアプリケーションを見てインタラクトすることができるのに対して、スマートフォンの限られたGUIエリアでは、ユーザが視認できないOSのバックグラウンドで休止状態でありうるアプリケーション(アプリ)の間でスクロールすることを要する。さらに、本発明の実施形態は、一部のレガシー・アプリケーションが他のアプリケーションと統合しない可能性があること、またはレガシー・アプリケーションがフル・スクリーン・モードのみなどOSがレガシー・アプリケーションのGUIをどのように表示するかに関して制限(すなわち制約)される可能性があることを認識する。
本発明の実施形態は、利用可能なGUIエリアならびに実行中のアプリの数および種類に基づいて、ユーザに視認可能かつ理解可能なものには限界があることを認識する。本発明の実施形態は、ユーザがマルチタスクを行いうること、もしくは一つのタスクが異なるアプリを介してアクセス可能な複数のソースから情報を得ることをユーザに要求しうること、またはその両方であることも認識する。したがって、ポインタの位置は絶えず変化しており、ユーザは、アプリの間で切り替えるのに応じて、ユーザが一つ以上のアプリのどこで作業していたかを忘れる可能性がある。本明細書で使用されるところのアプリおよびアプリケーションは、互換可能に使用される。一例では、アプリ「A」(例えば地図プログラム)は他のアプリケーションと統合されず、有利にアクセスされアプリ「B」に入力されうる関連情報をポインタ位置により表示できるGUIを提示する。ユーザがアプリ「A」および「B」の両方をスクリーン上に表示する必要があり、アプリ「A」と「B」との間で繰り返しスワップして、まずアプリ「A」のGUI内に表示された指示位置(例えば地図のエリア)から情報を入手し、これを次にアプリ「B」に入力することができる。その後、ユーザはアプリ「A」に戻って、曲線、線形資産、経路などに沿って一連の点を探索するなどしながら以前の位置に近い別の位置を探索する。問題は、場合によってはアプリ「A」および「B」にアクセスすること、およびアプリ「B」のGUIをナビゲートすることがポインタ移動を介して行われ、アプリ「A」での以前の位置が失われることである。
本発明の実施形態は、アプリケーション「A」において一連の点を追跡およびキャプチャするための論理がコンテキスト、情報およびユーザの癖に依存して大きく変動しうることから、ロボティック・プロセス・オートメーション(RPA:robotic process automation)のようなソリューションは上記の問題に対処するのに十分に適さないことを認識する。さらに、三つ以上のアプリケーションがアクセスされる場合には、RPAはますます複雑化するインタラクションに関して制限が大きすぎる。
本発明の一実施形態は、予め定義されたインタラクションのテンプレートにマッチするイベントのシーケンスを追跡する有限状態機械(FSM:Finite State Machine)として実施される。例えば、本発明の実施形態は、ユーザが一対のアプリケーションの間で移動またはスワップを繰り返していることを識別する。ユーザは、第二アプリケーションを使用した後に、ポインティング・デバイスを利用して、挿入点またはハイライトされた項目の中など第一アプリケーション(アプリ)内の前の「静止」位置の近くにポインタを移動させる。一部のシナリオでは、ポインタの「静止」位置は、ポインタが定められたドウェル時間(例えば時間)値を超えて動かないかまたは移動が閾値未満であるアプリGUI内の位置を指すこともできる。
続いて、本発明の実施形態は、第一アプリと第二アプリとの間のユーザ・インタラクションの量が別の閾値を超えると判断したことに応じて、ユーザが第一アプリと第二アプリとの間でインタラクションのテンプレートを形成(例えば作成)することを判断する。これに応じて、本発明の実施形態は、アプリのグループのうちの少なくとも第一アプリ内のポインタの復元位置を設定、記憶、もしくは定義し、またはこれらの組み合わせを行う。本発明の別の態様は、ユーザが第一アプリとのインタフェースを再開する前に第二アプリ内の以前のポインタ位置の閾値内である第二アプリ内の位置にポインタを移動するのを判断したことに応じて、第二アプリ内の別のポインタ復元位置を潜在的に設定しうる。
本発明の一部の実施形態は、インターネットを介してアクセス可能なアプリなど、ユーザのデバイスの外部で実行するアプリケーションによって生成されたウェブ・ブラウザ・タブまたはウェブユーザ・インタフェース(WUI)などのサブGUIまたはネストされたGUI内のアプリにユーザがアクセスするのを検出しうる。加えて、本発明の実施形態は、ユーザがアクセスするアプリの間の一つ以上のインタラクションのテンプレート内に、サブGUI、ネストされたGUI、もしくはWUIまたはそれらの組み合わせの中で検出されるアプリも含みうる。本発明の他の実施形態は、Desktop‐as‐a‐service環境または仮想デスクトップ・インフラストラクチャ(VDI:Virtual Desktop Infrastructure)などのネットワークアクセス可能GUI環境内で、もしくはユーザ・デバイスGUIおよびネットワークアクセス可能GUI環境の間で、またはその両方で実施される。
本発明の別の実施形態は、ユーザ入力を利用して、二つ以上のアプリの間でのインタラクションのテンプレートの開始を定義し、定められたアプリケーションのテンプレート(例えば予め定義された構成)の間でポインタ移動およびユーザ・アクションを追跡する。加えて、ユーザ入力もしくは選好またはその両方が、ポインタ復元位置が定義または判断される手法および時機を定めうる。代わりにまたは加えて、ポインタ移動が一つのアプリを出て別のアプリに向かって移動するのを示すと判断するのとは対照的に、ユーザが、インタラクションのテンプレートに関連する実行中のアプリのセットのうちの特定のアプリにアクセスする(例えば切り替える、トグルする)キーボード・ショートカット、またはアプリの間を循環するキーボード・ショートカットを定義しうる。
本発明の他の実施形態は、実行中のアプリケーションのセットの中からインタラクションのテンプレートまたはインタラクションのテンプレートのグループを判断および識別するためのグラフ分析など、より複雑な基準および分析を利用する。その後、決定木または他の技術を利用して、実行中のアプリケーションのセットに関連する二つ以上のインタラクションのテンプレートの中から特定のインタラクションのテンプレートが選択される。本発明の様々な実施形態は、ユーザにより使用されるコンピューティング・デバイスの複数のセッションからの情報を組み合わせて、アプリの間の一つ以上のインタラクションのテンプレートを判断しうる。
本発明のさらなる実施形態は、アプリケーションのセットの中の各実行中のアプリケーションもしくはインタラクションのテンプレートまたはその両方に対応する状態データを判断する。OS GUI内の場所およびサイズなど、アプリケーションGUIに対応する状態データを利用して、OS GUI(例えばディスプレイ・エリア)に対する一つ以上の変更に応じてポインタの補償された(例えば代替的な)復元位置が判断される。一例では、実行中のアプリケーションに対応するGUIに影響するディスプレイの追加または除去(例えばサイズの変化、場所の変化、アプリケーションGUIの自動最小化など)に応じてOS GUIの状態データが変化する。別の例では、実行中のアプリケーションのGUIに対応する状態データは、スマートフォンまたはタブレット・コンピュータを回転させるなどの見る向きの変更、一つ以上のアプリケーションを閉じること、一つ以上の他のアプリケーションを実行することなどにより影響される。
同様に、本発明のさらなる実施形態は、アプリケーションGUIに関係する状態データに対する一つ以上の変更を判断したことに応じて、一つ以上の実行中のアプリケーション内のポインタの補償された復元位置を判断することもできる。さらなる例では、アプリケーションGUIに関係する状態データは、アプリケーションGUIに対応するサイズの変更、アスペクト比の変更、見る向きの変更、ズーム・レベルに対する変更、OS GUI内でのアプリケーションGUIの移動などを含みうる。例えば、一つ以上のアプリまたはOS GUIの変更に応じて補償されたポインタ位置を判断するために、状態データが収集される。アプリケーションに関係する他の状態データは、ユーザがGUIのトリガ・エリアの上にポインタを移動またはホバーする間に起動されるマウスオーバー、マウス・ホバー、またはホバー・ボックス(例えばグラフィカル制御要素)に関連する情報など、ポインタに関連する特定の位置およびイベントにそれぞれ関連するGUI要素に関係するメタデータを含みうる。
本発明に関する様々なシナリオ、事例、および例の記載は、例示の目的で提示されているが、網羅的であることまたは開示された実施形態に限定されることを意図するものではない。
次に本発明を、図面を参照して詳細に説明する。図1は、本発明の実施形態によるコンピューティング環境100を示す機能ブロック図である。一実施形態では、コンピューティング環境100は、ユーザ・デバイス120を含む。ユーザ・デバイス120は、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ、デスクトップ・コンピュータ、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)、スマートフォン、ウェアラブル・デバイス(スマート・グラス、スマート・ウォッチ、e‐テキスタイル、ARヘッドセットなど)、または当技術分野で既知の任意のプログラム可能コンピュータ・システムなどのユーザのコンピューティング・デバイスを表しうる。ユーザ・デバイス120は、本発明の実施形態によれば、図4に関してさらに詳細に描写および記載されるコンポーネントを含みうる。
別の実施形態では、コンピューティング環境100のユーザ・デバイス120が本発明に関係するいくつかの機能を行うのに十分なハードウェア・リソースを欠く場合には、ユーザ・デバイス120の一つ以上のプログラムもしくはファイルまたはその両方がクラウド・コンピューティング・システムなどのインターネットアクセス可能なアプリケーションまたはサービス(図示せず)によってホストされうる。さらなる実施形態では、コンピューティング環境100の一つ以上の態様は、ネットワークを介してアクセス可能なDesktop‐as‐a‐service環境または仮想デスクトップ・インフラストラクチャ(VDI)(図示せず)に関連する。
一実施形態において、ユーザ・デバイス120は、ポインティング・デバイス121、ディスプレイ122、キーボード123、アプリケーション(アプリ)125‐1、アプリ125‐2、アプリ125‐3~アプリ125‐N、ユーザ・インタフェース(UI:user interface)130、ユーザ選好132、インタラクションのテンプレート134、アプリケーション情報136、ポインタ位置情報138、ポインタ監視および復元(PMAR:pointer monitoring and restore)訓練プログラム200、ポインタ監視および復元(PMAR)プログラム300、ならびに他のプログラムおよびデータ(図示せず)を含む。他のプログラムおよびデータの例は、オペレーティング・システム(OS)、生産性スイート、カレンダ機能、無線通信プログラム、ウェブ・ブラウザ、メディア・ギャラリ・プログラム、ドキュメント、データ・ファイルなどを含みうる。様々な実施形態において、ユーザ・デバイス120のOSおよびアプリケーションは、それぞれのGUI(図示せず)を生成する。
別の実施形態では、ユーザ・デバイス120の一つ以上のハードウェア要素(以下に記載する)は、ユーザ・デバイス120の外部にあるが、ユーザ・デバイス120に動作可能に連結される。本明細書において使用されるところの、動作可能に連結されるとは、物理的接続または無線接続を指しうる。一部の実施形態では、デバイス120は、無線マウスおよびタッチパッド(すなわちポインティング・デバイス121のインスタンス)、ラップトップ・コンピュータに埋め込まれたタッチスクリーンおよび接続された外部モニタ、もしくは四つのモニタのバンクに繋がれた二つのデュアル出力グラフィックス・カード(図示せず)(すなわちディスプレイ122のインスタンス)またはこれらの組み合わせなど、ハードウェア要素の二つ以上のインスタンスを含む。
一実施形態において、ポインティング・デバイス121は、GUI(例えばOSまたはアプリケーションGUI)もしくはUI130内またはその両方の矢印、十字、指さしマークなどのポインタまたはアイコンの移動を制御する。ポインティング・デバイス121は、メニューを開く、メニューをスクロールする、表示されたコンテンツ(例えばテキスト、グラフィックスなど)をハイライトする、挿入点を設定する、選択されたコンテンツの項目に対してコピーまたは削除などの機能を実行するなど、ポインタの位置に関係する一つ以上のアクションを実行しうる。一部の実施形態では、ポインティング・デバイス121は、マウス、トラックボール、グラフィックス・タブレットなど、ユーザ・デバイス120に動作可能に連結されるが外部のハードウェア要素である。他の実施形態では、ポインティング・デバイス121は、タッチパッドまたは機能ボタンを備えたポインティング・スティックなど、ユーザ・デバイス120内に含まれる電子デバイスである。
他の実施形態では、ポインティング・デバイス121は、入力機能および出力/表示機能の両方を行うタッチ・スクリーン(すなわちディスプレイ122のインスタンス)などの別のハードウェア要素内に動作上含まれる。別の実施形態では、ポインティング・デバイス121は、スマート・グラス、ヘッドアップ・ディスプレイ、拡張現実(AR:augmented reality)デバイスまたはプログラムなどのディスプレイ122のインスタンスによる提示のためにコンピュータ環境100内に生成される仮想I/Oデバイスである。ユーザ・デバイス120のユーザが、モーション・キャプチャ、フィンガ・トラッキング、アイ・トラッキング、サイバグローブなどを介してポインティング・デバイス121の仮想インスタンスとインタフェースしうる。
一実施形態では、ディスプレイ122の一つ以上のインスタンスが、ユーザ・デバイス120のOS GUIの態様を提示(すなわち表示)し、ディスプレイ構成、ディスプレイ122のインスタンスに関連するディスプレイ・エリアのサイズ、実行中のアプリケーションの数、およびユーザに提示される実行中のアプリケーションのGUIのそれぞれのサイズなど様々なファクターに基づいて一つ以上の実行中のアプリケーションに関連するGUIも表示しうる。
一実施形態では、ディスプレイ122は、ラップトップ・コンピュータのディスプレイなど、ユーザ・デバイス120内に含まれるハードウェア要素を表す。別の実施形態では、ディスプレイ122は、モニタまたはスマートTVなど、ユーザ・デバイス120に動作可能に連結された外部ハードウェア要素を表す。様々な実施形態において、ディスプレイ122は、(ポインティング・デバイス121に関して先に上述した)他の機能性を含むタッチスクリーン・ディスプレイを表す。一部の実施形態では、ディスプレイ122のインスタンスは、ユーザ・デバイス120に動的に連結または連結解除されうる。一例では、ラップトップ・コンピュータ(すなわちユーザ・デバイス120)を、ディスプレイ122の二つのインスタンスに接続されたドッキング・ステーション(図示せず)にドッキングすることによりOS GUIエリアが拡張されて、三つの異なる視覚エリアが利用されうる。別の例では、ユーザ・デバイス120からディスプレイ122の外部インスタンスを切断することは、ディスプレイ解像度の変化に基づいて一つ以上のGUIに影響しうる。
様々な実施形態において、ユーザ・デバイス120のユーザがキーボード123を利用して、PMAR訓練プログラム200、PMARプログラム300、もしくはUI130またはこれらの組み合わせに影響する予め定義されたホットキー・コンビネーション(すなわちキーボード・ショートカット)を入力する。一実施形態では、キーボード123は、ユーザ・デバイス120の外部のハードウェア要素であるが、ユーザ・デバイス120に動作可能に連結される。一部の実施形態では、キーボード123は、ラップトップ・コンピュータのキーボードなど、ユーザ・デバイス120内に含まれるハードウェア要素である。他の実施形態では、キーボード123は、ディスプレイ122のタッチスクリーンのインスタンスを介してユーザによって利用されるユーザ・デバイス120のOS GUIのグラフィカル・インタフェースである。
別の実施形態では、キーボード123は、スマート・グラス、ヘッドアップ・ディスプレイ、拡張現実(AR)デバイスまたはプログラムなどのディスプレイ122の様々なインスタンスによる提示のためにコンピュータ環境100内に生成される仮想I/Oデバイスである。ユーザ・デバイス120のユーザが、モーション・キャプチャ、フィンガ・トラッキング、アイ・トラッキング、サイバグローブなどを介してキーボード123の仮想インスタンスとインタフェースしうる。
一実施形態では、アプリ125‐1、アプリ125‐2、アプリ125‐3~アプリ125‐Nは、ワード処理アプリ、カレンダー・アプリ、プレゼンテーション・アプリ、表計算アプリ、ウェブ・ブラウジング・プログラムなど、ユーザ・デバイス120にインストールされたコンピュータ・プログラムまたはアプリケーションを表す。別の実施形態では、アプリ125‐1、アプリ125‐2、アプリ125‐3~アプリ125‐Nの一つ以上のアプリは、インターネットを介してアクセス可能なウェブ・アプリなど、ユーザ・デバイス120の外部で実行する。
様々な実施形態において、アプリ125‐1、アプリ125‐2、アプリ125‐3~アプリ125‐Nの各アプリは、それぞれのアプリケーション(アプリ)GUIを生成する。プロセスID(PID:process ID)、メタデータ、もしくは状態データ(アプリケーション情報136に関してさらに詳述する)またはそれらの組み合わせがアプリにそれぞれ関連しうる。一 実施形態では、ユーザ・デバイス120のユーザが、ポインティング・デバイス121、ディスプレイ122 もしくはキーボード123またはそれらの組み合わせを介して、アプリ125 ‐1 、アプリ125 ‐2 、125 ‐3 ~アプリ125 ‐Nの実行中のインスタンスのそれぞれの特徴およびGUI要素のセットとインタラクトする。加えて、ユーザ・デバイス120のユーザは、ポインティング・デバイス121を利用して実行中のアプリのGUIの間をナビゲートし、もしくはキーボード123を利用して実行中のアプリのGUIの間で切り替え、またはその両方を行う。
一実施形態では、UI130は、PMAR訓練プログラム200およびPMARプログラム300に関連するユーザ・インタフェース(UI)またはGUIを表す。ユーザ・デバイス120のユーザがUI130を利用して、ユーザ選好132内の様々なフィールドにデータを投入し、情報を入力または編集する。一部の実施形態では、ユーザ・デバイス120のユーザがUI130を利用して、インタラクションのテンプレート134内のインタラクションのテンプレートを定義、構成、閲覧、編集、もしくは削除し、またはそれらの組み合わせを行う。他の実施形態では、UI130により、ユーザがポインタ監視からアプリケーションを除外するなど、PMAR訓練プログラム200もしくはPMARプログラム300またはその両方による様々な識別または判断を修正することができる。
ユーザ選好132は、PMAR訓練プログラム200を起動するホットキー・コンビネーション、PMAR訓練プログラム200、PMARプログラム300、もしくはUI130またはそれらの組み合わせを起動するイベントに関係するルールなど、PMAR訓練プログラム200もしくはPMARプログラム300またはその両方によって利用される情報およびルールを含む。ユーザ選好132内の他の情報は、インタラクションのテンプレート内に含まれるアプリケーションの最大数の値、一連のポインタ位置の中のポインタ位置の数の値、アプリGUI内のポインタの位置を周期的に判断するために使用される時間値、アプリGUI内のポインタの位置もしくは運動方向もしくはその両方またはアプリGUI間のポインタ移動に基づいてポインタ位置の変更をトリガする近接度閾値を含みうる。一例では、ユーザ選好132は、定められたドウェル時間値を超えてポインタが動かないかまたはポインタが閾値エリア内にとどまる持続期間など、アプリGUI内のポインタの「静止」位置を識別するために使用される値を含む。加えて、ユーザ選好値が、アプリのグループに適用されることができ(例えばデフォルト値)、または所与のアプリにそれぞれ関連してもよい。
一部の実施形態では、ユーザ選好132は、二つ以上の実行中のアプリケーションの間でのユーザのインタラクションのテンプレートの識別、構成、もしくは選択またはそれらの組み合わせに関係する他の選好も含む。一例では、ユーザ選好132は、インタラクションのテンプレートを示す二つ以上のアプリケーションの間でのスワップ(例えば交互にインタフェースする)数の閾値を定めうる。別の例では、ユーザ選好132は、インタラクションのテンプレートを識別するための決定木の利用、アプリ間の論理インタラクションの判断に関係するルール、アプリ間のイベント駆動型インタラクションの識別、もしくはユーザ・デバイス120の現在のセッション(例えば起動)からのユーザ・インタラクションに関係する情報のユーザ・デバイス120を利用するユーザの一つ以上の前のセッションとの組み合わせ、またはこれらの組み合わせなどの分析ルールを含む。
一実施形態では、ユーザ選好132は、ユーザが定められた期間内にインタラクションのテンプレートを再開しない場合にPMARプログラム300を終了するタイムアウト値、特定のアプリに切り替えるためおよびユーザ・デバイス120のユーザにユーザが既知のインタラクションのテンプレートの実行を開始していることをプロンプトしたことに応じてPMARプログラム300の起動を無効にするために利用されるキーボード・ショートカット(すなわちホットキー・コンビネーション)も含む。様々な実施形態において、ユーザ選好132は、ホバーオーバー・イベント、または補償されたポインタ位置を判断するための状態データを記録するなど、一つ以上のアプリGUIのメタデータの収集を定めうる。
インタラクションのテンプレート134は、UI130を介してユーザによって定められた構成で定義され、もしくはUI130を利用してユーザによって編集され、またはその両方である、PMAR訓練プログラム200によって判断される情報に基づいて特定の様式でユーザが利用する二つ以上の実行中のアプリケーションのグループ分けのリストを含む。一実施形態では、実行中のアプリケーションの間のインタラクションのテンプレートは、実行中のアプリに対応する名前、アプリケーションによりアクセスされるファイルまたはコンテンツ・ソースなどの実行中のアプリに関係するメタデータ、二つ以上のアプリの間のポインタ位置の復元に関係する方向性(例えば一方向または双方向)の指示などの一つ以上の定め、ユーザがアプリのグループのうちのアプリを利用する順序または組み合わせなどを含みうる。一例では、インタラクションのテンプレート134は、アプリ125‐1とアプリ125‐2との間の双方向のインタラクションを示す(例えば両方のアプリのポインタ復元位置が判断される)。別の例では、インタラクションのテンプレート134は、アプリ125‐2、アプリ125‐3、およびアプリ125‐Nの間の周期性のインタラクションを示す(例えば一対のアプリの一方のアプリのポインタ復元位置が判断される)。さらなる実施形態では、インタラクションのテンプレート134は、他の環境のサブGUIもしくはGUIまたはその両方の中で生じるインタラクションのテンプレートを含みうる。
一部の実施形態では、インタラクションのテンプレート134は、インタラクションのテンプレートの一つ以上のアプリに関連する定めもしくは論理アクションまたはその両方も含みうる。一例では、スポーク・アンド・ハブのアナロジーのように、共通アプリケーションにアクセスする前に、二つ以上のアプリケーションからの情報が閲覧またはコピーされる。一つ以上の選好に基づいてそれぞれの「スポーク」アプリ内の一つ以上のポインタ位置がポインタ復元位置として保存(例えば記憶または凍結)されるが、「ハブ」アプリには定義されたポインタ復元位置がない。別の例では、コピー・イベントが検出された場合には復元位置を変更するが、コンテンツのハイライト、フォントの変更など異なるイベントまたはアクションが識別された場合にはポインタ復元位置を変更しないままとするなど、第一アプリケーションに関係するイベントを識別したことに応じて第二アプリ内の復元位置が以前の復元位置から推定または予測復元位置に変化しうる。
アプリケーション情報136は、アプリのGUIに対応する初期状態データなど、一つ以上のインタラクションのテンプレートにそれぞれ関連する複数のアプリケーション(すなわちアプリ)に関係する情報を含む。様々な実施形態において、アプリの各インスタンスのためにユーザ・デバイス120のOSによって固有のプロセスID(PID)が割り当てられ、PIDは揮発性である(例えばアプリケーションの終了時、ユーザ・デバイス120のOSの再起動/シャットダウン時に失われる)、所与のインタラクションの間のアプリケーションでのポインタ・アイコンの形状など、実行アプリケーションに関係する一部の情報は変動しうる。加えて、アプリGUIは固定されず、ユーザ・デバイス120の起動(例えばセッション)ごとに異なる場所にありうるため、アプリケーション情報136はOS GUI内のアプリGUIの場所をマッピングするために利用される情報を含む。
さらなる実施形態では、アプリケーション情報136は、一つ以上のGUIまたはアプリ、ユーザ・デバイス120のディスプレイ・エリアに関係する状態データ、アプリまたはアプリGUIに関連するメタデータを含む。一例では、状態データは、GUIサイズの変更、ディスプレイ・エリア内のアプリのGUIの場所の変更(例えばGUIの移動、GUIの最小化状態からの復元など)、アプリGUI内のコンテンツに関連するズームの変更、アプリにより表示されるコンテンツに影響するパラメータ(例えば余白、行間隔、フォント名、フォント・サイズなど)の変更などを含むかまたは示しうる。別の例では、アプリまたはアプリGUIに関係するメタデータは、アプリGUI内で追加または削除されるコンテンツのエリアのサイズ、アプリ内のポインタ復元位置に対応するホバーオーバー情報、ホバーオーバー・イベント・トリガなど、アプリ内のコンテンツに関係しうる。他の実施形態では、アプリケーション情報136は、ウェブページ・フレームの場所、ウェブ・ブラウジング・タブに割り当てられるサイズ、WUIに関連する状態データなど、一つ以上のサブGUI、ネストされたGUI、もしくはユーザ・デバイス120の外部で実行するアプリまたはそれらの組み合わせに関連する状態データを含む。
一実施形態において、ポインタ位置情報138は、アプリケーションGUIに関係する複数の一連のポインタ位置(例えば順序付きセット)を含む。ポインタ位置情報138は、ユーザがユーザ・デバイス120とインタフェースする一つ以上のセッションにわたってPMAR訓練プログラム200もしくはPMARプログラム300またはその両方によってキャプチャされたポインタ位置を保存する。一部の実施形態では、ポインタ位置情報138は、複数のポインタ位置、GUI内のポインタ移動経路、OS GUIを横断する経路、およびユーザがユーザ・デバイス120とインタフェースする複数のセッションに関連し、実行中のアプリケーションのセットにさらに関連するインタラクションのシーケンスも含む。経路に関連するポインタ位置は、方向の指示、前のアプリを識別する指示、後続のアプリを識別する指示、もしくは別のアプリへのアクセス/スワップ/切り替えに関係するホットキー・コンビネーションまたはこれらの組み合わせも含みうる。
他の実施形態では、ポインタ位置情報138は、位置がポインタの「静止」位置として識別される、ポインタ位置がホバーオーバー・イベントなどのGUIイベントまたはユーザにより定義されたホットキー・コンビネーションが実行された位置、コピー・アクションなどのコンテンツ・アクションが実行された位置、コンテキスト・メニュー(例えば右クリック・メニュー)がアクセスされた位置、リンクが起動された位置などに関連付けられるなど、ポインタ位置に関係する一つ以上の追加の指示を含む。ポインタ位置に関係する追加の指示が、アプリケーション情報136内に保存される状態データもしくはメタデータまたはその両方にさらにマッピングされうる。さらなる実施形態では、状態データの変更、アプリのコンテンツに対する変更、もしくはOS GUIに対する変更またはそれらの組み合わせなど、アプリGUIに関係する変更を識別したことに応じて、識別された変更に基づいて一つ以上の補償されたポインタ位置、または一連の補償されたポインタ位置が判断される。
一実施形態では、ユーザ・デバイス120のユーザによる二つ以上の実行中のアプリケーションの間でのインタラクションのテンプレートを判断するために利用される情報をコンパイルするために、ユーザがPMAR訓練プログラム200を実行する。別の実施形態では、少なくとも二つのアプリの間で繰り返されるインタラクションの数が閾値を超えると判断することによってユーザ・デバイス120および二つ以上の実行中のアプリを利用するユーザによって生成されるインタラクションのシーケンスまたは組み合わせがインタラクションのテンプレートを示すか否かを判断するために、PMAR訓練プログラム200がユーザ・デバイス120のバックグラウンドで実行する。例えば、PMAR訓練プログラム200はFSMモードで実行する。一部の実施形態において、PMARプログラム300は、ユーザが新たなインタラクションのテンプレートを生成するかまたは既知のインタラクションのテンプレートを修正するかを判断するためにPMAR訓練プログラム200を呼び出す。
一実施形態において、PMAR訓練プログラム200は、ユーザ・デバイス120とのセッション中のインタラクションのシーケンスに集合的に関係する、一つ以上のアプリとインタフェースするユーザのアクション、アプリのGUI内のポインタに対応する複数の移動、およびアプリGUI間の横断を監視する。PMAR訓練プログラム200は、ユーザ・デバイス120にインストールされたアプリのGUIに加えて、サブGUI、ネストされたGUI、およびWUIの間でのインタラクションおよびポインタ移動も監視およびキャプチャ(例えばコンパイル)しうる。これに応じて、PMAR訓練プログラム200は、インタラクションの様々なシーケンスもしくは組み合わせまたはその両方を分析して、ユーザが二つ以上のアプリの間でインタラクションのテンプレートを生成するか否かを判断する。様々な実施形態において、PMAR訓練プログラム200は、ユーザがユーザ・デバイス120を利用する複数のセッションからの情報を組み合わせて、ユーザ・デバイス120のアプリケーションの間での一つ以上のインタラクションのテンプレートを判断しうる。
PMARプログラム300は、既知のインタラクションのテンプレートとユーザが以前にあるアプリを利用する間に判断された一連のポインタ位置とに基づいて、ユーザが一つ以上の他のアプリとインタフェースした後に当該アプリとのインタフェースを再開するのを判断したことに応じて、ポインタを当該アプリのGUI内の位置に復元する。PMARプログラム300は、GUIの間でのポインタの移動の追跡または当該アプリにアクセスするために利用されるキーボード・ショートカットの実行の識別に基づいて、ユーザが当該アプリとのインタフェースを再開するのを判断しうる。一つのシナリオでは、PMARプログラム300は、ユーザがユーザ・デバイス120を利用するのに応じて自動的に起動する。これに応じて、UI130が、PMARプログラム300を休止させることまたはPMARプログラム300が実行するのを許可することを選択するようユーザにプロンプトする。一部のシナリオでは、PMARプログラム300は、定義されたアプリのセットが実行されるのを判断した、または四半期末プレゼンテーションの準備に関連する期間(例えばカレンダー日付範囲)など、予め定義された基準が満たされるのを検出したことに応じて実行する。別のシナリオでは、ユーザがPMARプログラム300に実行するよう命じる。
様々な実施形態において、PMARプログラム300は、複数の実行中のアプリのGUI内およびGUI間のユーザの複数のアクションおよびポインタ移動を監視および追跡する。その後、PMARプログラム300は、ユーザがPMAR訓練プログラム200によって以前に判断されたインタラクションのテンプレートを介して二つ以上のアプリのグループとインタフェース(例えば利用)しているか否かを判断する。ユーザが既知のインタラクションのテンプレートを介して二つ以上のアプリのグループとインタフェースしていると判断したことに応じて、PMARプログラム300は、少なくとも一つのアプリ内のポインタの復元位置を判断する。ユーザが、判断された復元位置を含むアプリとのインタフェースを再開すると、PMARプログラム300は、ポインティング・デバイス121のポインタをそのアプリのGUI内の判断された復元位置に自動的に移動する。
一部の実施形態では、PMARプログラム300は、インタラクションのテンプレートに関連する実行中のアプリのセットのうちの少なくともアプリのグループに対応する状態データを判断する。PMARプログラム300は、状態データを利用して、OS GUI内のアプリのGUIを識別および位置特定し、ポインタ移動がインタラクションのテンプレートに関連するアプリに向かっているか離れているかを判断する。さらなる実施形態では、PMARプログラム300は、ディスプレイ122のエリアの変更、アプリのGUIに対応するサイズ変更など、ユーザ・デバイス120もしくは一つ以上のアプリまたはその両方に関連する状態データに対する変更を分析して、GUI内のポインタの復元位置として利用される新たな(例えば補償された)位置を判断する。
図2は、本発明の実施形態による、PMAR訓練プログラム200、すなわちポインティング・デバイスに関連する活動および移動に基づいて二つ以上の実行中のアプリケーションの間でのユーザ・インタラクションのテンプレートを判断(例えば生成)するためのプログラムの動作ステップを示すフローチャートである。一実施形態では、ユーザがPMAR訓練プログラム200を始動する。別の実施形態では、PMAR訓練プログラム200は、ユーザ・デバイス120のバックグラウンドで実行する。一部の実施形態において、PMAR訓練プログラム200は、実行中のアプリケーションの間でのユーザのアクションが新たなインタラクションのテンプレートを生成するかまたは既知のインタラクションのテンプレートを修正するかを判断するために、PMARプログラム300によって呼び出される。
ステップ202で、PMAR訓練プログラム200は実行中のアプリケーションのセットを識別する。一実施形態では、PMAR訓練プログラム200は、ユーザ・デバイス120のOSとインタフェースすることによってユーザ・デバイス120内にインストールされた実行中のアプリケーションのセットを識別する。別の実施形態では、PMAR訓練プログラム200は、ウェブ・ブラウザ・タブにそれぞれ関連するタスクのプロパティを判断するなどによって、ユーザ・デバイス120内にインストールされていない一つ以上の他の実行中のネットワークアクセス可能アプリケーションを識別する。さらなる実施形態では、PMAR訓練プログラム200は、VDIなど別の環境内で実行中の一つ以上のアプリケーションを識別する。様々な実施形態において、PMAR訓練プログラム200は、状態データもしくは同じ実行中のアプリのインスタンスの異なるPIDまたはその両方など、実行中のアプリケーションのセットに関係する追加情報を判断し、追加情報をアプリケーション情報136内に保存する。
ステップ204で、PMAR訓練プログラム200は、ユーザ選好のセットを受信する。一実施形態において、PMAR訓練プログラム200は、ユーザ選好132内の選好のセットを受信または修正するためにUI130をユーザに提示する。別の実施形態では、PMAR訓練プログラム200は、ユーザ選好132からユーザ選好のセットをロードする。一部の実施形態では、PMARプログラム200は、ユーザ・デバイス120に関係する情報を利用して、ロードするユーザ選好のセットを判断する。例えば、PMAR訓練プログラム200は、ディスプレイ122のOS GUIエリアおよび識別されたアプリのセットのそれぞれのGUIエリアに基づいて、一つのユーザ選好のセットを選択する。他の実施形態では、PMAR訓練プログラム200は、ユーザ選好が、一つ以上の実行中のアプリを後続のポインタ監視およびインタラクション分析から除外するように識別された実行中のアプリケーションのセットをユーザが修正しうることを定めると判断する。
ステップ206で、PMAR訓練プログラム200は、ユーザが利用する第一アプリケーションを判断する。一実施形態において、PMAR訓練プログラム200は、UI130を介して表示される実行中のアプリのリストからの選択またはアプリのGUI内で実行されたホットキー・コンビネーションなど、ユーザから受信された入力に基づいてユーザ・デバイス120のユーザが利用(例えばアクセス)する第一アプリを判断する。別の実施形態では、PMAR訓練プログラム200は、ポインタが入る第一アプリGUIおよびユーザがそのアプリ内でコンテンツの追加/修正、コンテンツのコピーなど一つ以上のアクションを行うのを検出することによってユーザが利用する第一アプリを判断する。
ステップ208で、PMAR訓練プログラム200は、実行中のアプリケーション内のポインタの位置を追跡する。PMAR訓練プログラム200は、期間、ユーザ・アクション、もしくはポインタの「静止」位置の識別またはそれらの組み合わせなどの一つ以上のファクターに基づいて、ポインタ位置情報138内にアプリに関連する一連のポインタ位置をキャプチャ(例えば保存)する。一実施形態において、PMAR訓練プログラム200は、アプリ125‐1などの第一アプリに関するポインタの移動および活動をキャプチャする。別の実施形態では、PMAR訓練プログラム200は、一つ以上の後続のアプリなど、第一アプリとは異なるアプリのGUIに関するポインタ位置をキャプチャする。他の実施形態では、PMAR訓練プログラム200は、ユーザ・アクション、イベント、関係するメタデータなど、ポインタ位置にそれぞれ関連する他の情報も得る。PMAR訓練プログラム200は、ポインタ位置にそれぞれ関連する他の得られた情報をアプリケーション情報136内に保存する。
ステップ210で、PMAR訓練プログラム200は、ポインタの位置の変化に関連するイベントを判断する。一実施形態において、PMAR訓練プログラム200は、ポインタの位置の変化が、ポインタが一つのアプリのGUIを出て(例えばGUIの端を後にするかまたは通過する)OSのGUIに入るイベントに関係すると判断する。別の実施形態では、PMAR訓練プログラム200は、ポインタの位置の変化に関連するイベントが、別のアプリにアクセスするホットキー・コンビネーションに関係すると判断する。一部の実施形態において、PMAR訓練プログラム200は、ディスプレイ122のエリアが制約されている(例えば視認可能なアプリGUIの数が制限される)と判断したことなどに応じて、ポインタの位置の変化に関連するイベントが現在のアプリの最小化に基づくと判断する。他の実施形態では、PMAR訓練プログラム200は、イベントがアプリの中からのコンテンツの操作、コピー、もしくは移動またはそれらの組み合わせにさらに関連すると判断する。
ステップ212で、PMAR訓練プログラム200は、ユーザが利用する後続のアプリケーションを判断する。一実施形態において、PMAR訓練プログラム200は、ポインタがOS GUIを横断して別の実行中のアプリのGUIに入る(例えば外周または縁を越える)のを判断することに基づいて、ユーザが利用する後続のアプリケーションを判断する。別の実施形態では、PMAR訓練プログラム200は、ユーザが実行するホットキー・コンビネーションによってアクセスされるアプリを識別することに基づいて、ユーザが利用する後続のアプリを判断する。
一部の実施形態では、PMAR訓練プログラム200が決定ステップ215の「No」の分岐を介してループする場合には、後続のアプリケーションは第一アプリまたは別のアプリでありうる。例えば、ユーザがアプリ125‐1を最初に利用し、次にユーザがアプリ125‐3を利用し、その後ユーザがアプリ125‐3内で様々なアクションを行った後にアプリ125‐1に戻る場合には、PMAR訓練プログラム200は、アプリ125‐1がアプリ125‐3の後続のアプリであると判断する。PMAR訓練プログラム200は、各アプリが利用またはアクセスされる回数、および所与のアプリの前もしくは後またはその両方に別のアプリがアクセスされるか否かも判断する。
ステップ212をなお参照すると、様々な実施形態においてPMAR訓練プログラム200は、後続のアプリにアクセスするためのOS GUIの横断に関連する一つ以上のポインタ位置も判断する。一部のシナリオでは、PMAR訓練プログラム200は、実行中のアプリのセットに関するユーザ・インタラクションおよびポインタ位置(例えば移動)のウェブまたはグラフ構造物を生成する。他のシナリオでは、PMAR訓練プログラム200の各実行(例えばユーザ・デバイス120に関連するセッション)が、ユーザ・インタラクションおよびポインタ位置の経路の別々のグループを生成する。PMAR訓練プログラム200は、ポインタ移動経路、一連のポインタ位置、アプリがアクセスされる順序、および関係する情報をインタラクションのシーケンスとしてポインタ位置情報138内に保存する。PMAR訓練プログラム200は、インタラクションのシーケンスもしくは組み合わせまたはその両方の中にステップ208およびステップ210で判断された情報も含む。
ステップ214で、PMAR訓練プログラム200は、実行中のアプリケーションの間でのユーザのインタラクションに関係する情報を分析する。PMAR訓練プログラム200は、統計分析、構造分析、テンプレート・マッチング、セグメンテーションおよび分類などの様々な分析技術を利用して、実行中のアプリのセットに関係するユーザ・インタラクションの間の一つ以上のシーケンスまたは構造を識別する。加えて、PMAR訓練プログラム200は、ユーザ・アクションの記録、アプリ間のコンテンツの移動の追跡、アプリにアクセスするためのホットキー・コンビネーションの構成など、他の情報を利用してインタラクションのテンプレートの識別および生成を強化しうる。
一実施形態において、PMAR訓練プログラム200は、ユーザ選好132内の様々なルール、基準、選好などを利用して、実行中のアプリのセットの間での現在のユーザのインタラクションのシーケンスもしくは組み合わせまたはその両方が、実行中のアプリのセットの間での一つ以上のテンプレートを示すか否かを判断する。インタラクションのテンプレートとは、アプリ間の少なくともある頻度のポインタ移動に基づいてユーザが利用する二つ以上のアプリのグループを指す。一例では、ユーザ・デバイス120で実行中の五つの異なるアプリ(図示せず)がユーザによってアクセスされるが、任意の二つのアプリ間のスワップ数が閾値未満である場合には、PMAR訓練プログラム200は、五つのアプリの間でインタラクションのテンプレートを判断(例えば生成)するために十分な情報が得られないと判断する。別の例では、ユーザ選好132が三つの不特定のアプリのグループの中でインタラクションのテンプレートを判断することを定め、二対のアプリ間のユーザのアクセスまたはスワップ数が閾値を超えるが、第三アプリが任意の二対のアプリ間で共通でない場合には、PMAR訓練プログラム200は、アプリの間でのユーザのアクセスまたはスワップ(例えばインタラクション)数に基づいて三つのアプリのグループの中でインタラクションのテンプレートを判断するために十分な情報が得られないと判断する。
ステップ214をなお参照すると、一部の実施形態において、PMAR訓練プログラム200は、ポインタ位置情報138にアクセスして、PMAR訓練プログラム200の一つ以上の以前の実行(例えばセッション)から追加のインタラクションのシーケンスもしくは組み合わせまたはその両方を得て、定められたアプリのグループまたは定められた数のアプリの間でインタラクションのテンプレートを判断するために十分な情報が利用可能であるか否かを判断する。一例では、PMAR訓練プログラム200は、決定木を利用して、実行中のアプリケーションのセットについてポインタ位置情報138内で利用可能な以前の情報のセッションの数に基づいて、潜在的に識別すべきインタラクションのテンプレートの数を判断する。別の例では、PMAR訓練プログラム200は、ユーザ選好132によって定められるある数のインタラクションのシーケンスもしくは組み合わせまたはその両方を分析して、特定のアプリの対についてインタラクションのテンプレートを判断するために十分な情報が得られるか否かを判断する。
決定ステップ215で、PMAR訓練プログラム200は、インタラクションのテンプレートを判断するために十分な情報が得られるか否かを判断する。一実施形態において、PMAR訓練プログラム200は、後続のアプリがアクセスされるが、後続のアプリのポインタ位置情報もしくはユーザ・インタラクションまたはその両方がない場合に、インタラクションのテンプレートを判断するために十分な情報が得られないと判断する。別の実施形態では、PMAR訓練プログラム200は、ステップ214で行われる分析に基づいて、インタラクションのテンプレートを判断するために十分な情報が得られないと判断する。一部の実施形態において、PMAR訓練プログラム200は、ステップ214で行われる分析に基づいて、二つ以上のアプリ間で少なくとも一つのインタラクションのテンプレートを判断するために十分な情報が得られると判断する。
インタラクションのテンプレートを判断するために十分な情報が得られないと判断したことに応じて(Noの分岐、決定ステップ215)、PMAR訓練プログラム200は、ステップ208~ステップ214にループして、一つ以上のアプリに関連する追加の情報を得、追加の情報を分析する。
決定ステップ215を参照すると、一実施形態では、インタラクションのテンプレートを判断するために十分な情報が得られると判断したことに応じて(Yesの分岐、決定ステップ215)、PMAR訓練プログラム200は、インタラクションのテンプレートを判断(例えば生成)する(ステップ216)。一部の実施形態では、ユーザ選好132が、二つ以上のインタラクションのテンプレートが判断されるべきことを定める。一つのインタラクションのテンプレートを判断するために十分な情報が得られる場合には(Yesの分岐、決定ステップ215)、PMAR訓練プログラム200の現在のインスタンスは、ステップ216でインタラクションの一つのシーケンスもしくは組み合わせまたはその両方についてのインタラクションのテンプレートを判断する。PMAR訓練プログラム200の別のインスタンスは、決定ステップ215のNoの分岐を介してステップ208~ステップ214にループして、ポインタ位置、イベント、およびユーザ・インタラクションなど、一つ以上の実行中のアプリに関係する追加の情報を判断し、その後、定められた数のアプリの間での少なくとも第二のインタラクションのテンプレートを判断する。
ステップ216で、PMAR訓練プログラム200は、インタラクションのテンプレートを判断する。PMAR訓練プログラム200は、判断されたインタラクションのテンプレートをインタラクションのテンプレート134内に保存する。加えて、PMAR訓練プログラム200は、ユーザ選好に基づいて、UI130を起動して判断された一つ以上のインタラクションのテンプレートを承認、修正、または削除するようにユーザに対して提示しうる。一実施形態において、PMAR訓練プログラム200は、判断されたインタラクションのシーケンスもしくは組み合わせまたはその両方、およびポインタ位置の変更に関連するイベント、アプリ内のユーザ・アクション、アプリ間でのコンテンツ移動の方向など、以前に判断された他の情報に基づいて、二つのアプリ間のインタラクションのテンプレートを判断(例えば生成)する。一部の実施形態では、PMAR訓練プログラム200は、アプリのグループのうちのアプリ間のインタラクションの組み合わせの形状(例えば円形、ハブ・アンド・スポーク、ウェブなど)、少なくとも二つのアプリ間のコンテンツに基づくユーザ・アクションの順序または方向(例えば一方向、双方向など)など、三つ以上のアプリのグループの中でのインタラクションのテンプレートを判断する。
様々な実施形態において、PMAR訓練プログラム200は、ポインタが一つのアプリのGUIを出て(例えば縁を越えて)OS GUIに入る方向に基づいて潜在的ポインタ位置を判断し、またはユーザにより利用される次のアプリを予測することもできる。各アプリGUIに対応する状態データを利用して、OS GUI内のアプリのセットの位置をマッピングし、これにより二つ以上のアプリに対して方向トリガが設定されることを可能にしうる。別の実施形態では、PMAR訓練プログラム200は、少なくとも二つのアプリ間のポインタ位置の移動をさらに分析して、インタラクションのテンプレートが、ユーザがアプリ内の以前のポインタ位置に関係する別の位置(例えば予測可能なポインタ復元位置)にポインタを移動させることを含むか否かを判断する。例えば、PMAR訓練プログラム200は、ユーザがアプリへのアクセスを再開するときに、コピーされるコンテンツのセクションの先頭、または貼り付けられるコンテンツのセクションの最後など、ユーザがポインタをコンテンツに基づくイベントに関係する位置に移動させることを判断しうる。
図3は、本発明の実施形態による、PMARプログラム300、すなわちユーザが一つ以上の他のアプリとインタフェースした後に以前に利用されたアプリとのインタフェースを再開するのを判断したことに応じて以前に利用されたアプリのGUI内の位置にポインタを復元するプログラムの動作ステップを示すフローチャートである。一部の実施形態において、PMARプログラム300は、ユーザが既知のインタラクションのテンプレートとは異なるアクションを行うのを判断し、それに応じてPMARプログラム300は、PMAR訓練プログラム200を実行して、ユーザが新たなインタラクションのテンプレートを生成しているかまたは既知のインタラクションのテンプレートを修正しているかを判断する。
ステップ302で、PMARプログラム300は、実行中のアプリケーションのセットに関係する情報を判断する。PMARプログラム300は、PMAR訓練プログラム200のステップ202に関して前述した様々な方法に基づいてユーザ・デバイス120で実行中のアプリケーションのセットを識別する。様々な実施形態において、PMARプログラム300は、ユーザ・デバイス120のOS(図示せず)とインタフェースして、実行中のアプリケーションのセットに関係する情報を判断する。PMARプログラム300は、判断された実行中のアプリケーションのセットに関係する情報をアプリケーション情報136内に保存する。実行中のアプリケーションのセットに関係する情報は、実行中のアプリの各インスタンスに対応するPID、実行中のアプリの各インスタンスのGUIにそれぞれ関連する状態情報、実行中のアプリに関係するメタデータなどを含みうる。実行中のアプリに関係するメタデータの例は、アプリにより利用されるファイルの名前もしくはディレクトリの場所またはその両方、ホットスポット、インターネット・リンク、ホバーオーバー要素などの埋め込まれたコンテンツに関連する情報などを含みうる。一実施形態では、ユーザがUI130を利用して、実行中のアプリのセットから一つ以上のアプリを除外するようPMARプログラム300に命令する。
ステップ304で、PMARプログラム300はユーザ選好を判断する。一実施形態では、PMARプログラム300は、実行中のアプリケーションのセットに基づいてユーザ選好132から様々なユーザ選好を選択する。別の実施形態では、PMARプログラム300は、ディスプレイ122のエリアに関連するサイズおよび識別されたアプリのセットのそれぞれのGUIエリアのサイズ、期間など、他の情報に基づいてユーザ選好の選択を修正しうる。一部の実施形態では、PMARプログラム300は、ユーザ・デバイス120とのセッション中に二つ以上のインタラクションのテンプレートが行われるのを判断したことに応じて異なるユーザ選好を利用しうる。一実施形態において、PMARプログラム300は、UI130を利用して、ユーザ選好の選択を使用または修正のために提示する。
ステップ306で、PMARプログラム300は、アプリケーションに関係するポインタの位置を周期的基準に基づいて判断する。PMARプログラム300は、縁、フレーム、メニュー・バーなど、アプリのGUIの一つ以上の態様または特徴に対するポインタの位置情報に基づいてポインタ位置を判断しうる。一実施形態では、PMARプログラム300は、ユーザ選好132内で定義された時間間隔値などの周期的基準に基づいてアプリのGUI内のポインタの位置を判断する。様々な実施形態において、PMARプログラム300は、判断されたユーザ選好内で定められたある数の判断されたポインタ位置から、アプリのGUIにそれぞれ関連する一連のポインタ位置(例えば順序付きセット)を作成する。PMARプログラム300は、ポインタ位置および一連のポインタ位置をポインタ位置情報138内に保存する。
一部の実施形態では、PMARプログラム300は、ポインタが閾値期間にわたり動かないときに検出するなどイベントを識別したことに応じて、コンテンツに関係するアクション、コンテキスト・メニューの起動、ホットキー・コンビネーションの実行などのユーザ・アクション、ホバーオーバーGUI要素のトリガなどに応じて、アプリのGUI内のポインタ位置を判断する。加えて、PMARプログラム300は、位置がポインタの「静止」位置であることを示す、ホットキー・コンビネーションが実行されたことを識別する、コピー・アクションなどコンテンツ・アクションが行われたこと、コンテキスト・メニューがアクセスされたこと、リンクが起動されたこと、コンテンツがホバーオーバー要素によって表示されたことを識別するなど、イベントに関係する情報を判断されるポインタ位置に関連付ける。PMARプログラム300は、イベントに関連する情報を、アプリケーション情報136内に保存された状態データもしくはメタデータまたはその両方にマッピングしうる。
ステップ306をなお参照すると、別の実施形態では、PMARプログラム300は、一連のポインタ位置をインタラクションのテンプレートとさらに関連付ける。例えば、アプリ125‐3が二つのインタラクションのテンプレートに共通の場合、PMARプログラム300は、各インタラクションのテンプレートに関連する一連のポインタ位置を生成する。他の実施形態では、PMARプログラム300が、インタラクションのテンプレートと関連しないアプリのGUI内にポインタが入るかまたは配置されるのを判断した場合には、PMARプログラム300はポインタの位置を判断および記録しない。PMARプログラム300は、ユーザが新たなインタラクションのテンプレートを生成しているか否かを判断するためのPMAR訓練プログラム200による後の分析のためにアプリをフラグ付けしうる。
ステップ308で、PMARプログラム300は、アプリケーションに関係する一連のポインタ位置を更新する。一実施形態において、PMARプログラム300は、一つ以上のユーザ選好を利用して、一連のポインタ位置内のサイズ(例えばポインタ位置の数)および一連のポインタ位置内で更新する点の数を判断する。一部の実施形態において、PMARプログラム300は、先入れ先出し(FIFO:first‐in first‐out)戦略を利用して、識別されたユーザ選好に基づいて一連のポインタ位置の一つ以上のポインタ位置を更新(例えば置換)する。別の実施形態では、PMARプログラム300が以前に利用されたアプリケーション内のポインタ位置を復元したこと(ステップ314)に応じて、PMARプログラム300は、以前の一連のポインタ位置を削除し、新たな一連のポインタ位置の生成を開始する。
さらなる実施形態では、状態データの変化が一つ以上のアプリに影響すると判断したことに応じて、PMARプログラム300は、ポインタ位置情報138に保存された一連のポインタ位置から、GUIのサイズの変更、ズームの変更など、影響されるアプリに関連する状態データの変化に基づいて、アプリの別の一連のポインタ位置(例えば補償された位置)を計算する。
決定ステップ309で、PMARプログラム300は、ポインタがアプリケーションのGUI内にとどまるか否かを判断する。一実施形態において、PMARプログラム300は、ポインタの位置が現在のアプリのGUIの境界の内部にあると判断したことに基づいて、ポインタが現在のアプリのGUI内にとどまると判断する。別の実施形態では、PMARプログラム300は、ポインタが現在のアプリのGUIの境界を出るかまたはユーザ・デバイス120のOSのGUI内で検出されると判断したことに基づいて、ポインタが現在のアプリのGUI内にとどまらないと判断する。
一部の実施形態において、PMARプログラム300は、ユーザが関係するアプリ(例えばインタラクションのテンプレートの間に利用されるアプリのグループのうちのアプリ)にアクセスする(例えば切り替える)ホットキー・コンビネーションを実行するのを判断したことに基づいて、ポインタが現在のアプリのGUI内にとどまらないと判断する。他の実施形態において、PMARプログラム300は、同じウェブ・ブラウザ内の異なるタブなど、状態データまたはメタデータの変化を識別したことに基づいて、ポインタが現在のアプリのサブGUIまたはWUI内にとどまらないと判断する。
ポインタがアプリケーションのGUI内にとどまると判断したこと(Yesの分岐、決定ステップ309)に応じて、PMARプログラム300は、ステップ306にループして、現在の(すなわち同じ)アプリ内のポインタの一つ以上の他の位置を判断する。
決定ステップ309を参照すると、ポインタがアプリケーションのGUI内にとどまらないと判断したこと(Noの分岐、決定ステップ309)に応じて、PMARプログラム300は、ポインタに対応する位置を判断する(ステップ310)。
ステップ310で、PMARプログラム300は、ポインタに対応する位置を判断する。一実施形態において、PMARプログラム300は、ユーザ・デバイス120のOS GUI内でポインタを追跡することに基づいて、ポインタに対応する位置および移動方向を判断する。OS GUI内のアプリGUIの場所をマッピングすることに基づいて、PMARプログラム300は、ポインタが向かおうとしているアプリを識別しうる。
別の実施形態では、PMARプログラム300は、ユーザが関係するアプリにアクセスするためのホットキー・コンビネーションを実行したと判断することに基づいて、ポインタに対応する位置がその関係するアプリ内にあると判断する。一つのシナリオでは、PMARプログラム300が、ユーザ・デバイス120との現在のセッション中に関係するアプリが以前にユーザによって利用されなかったと判断すると、PMARプログラム300はステップ312にスキップして、関係するアプリケーションに関連する活動を監視する。別のシナリオでは、PMARプログラム300が、ユーザ・デバイス120との現在のセッション中に関係するアプリが以前にユーザによって利用されたと判断すると、PMARプログラム300はステップ314にスキップして、ポインタを以前に利用された関係するアプリ内の位置に復元する。あるいは、PMARプログラム300が、ユーザにより実行されたホットキー・コンビネーションが、現在のインタラクションのテンプレートに関連しないアプリにアクセスすると判断すると、PMARプログラム300はステップ315にスキップする。
決定ステップ311で、PMARプログラム300は、ポインタが関係するアプリケーションのGUIに向かって移動するか否かを判断する。一実施形態において、PMARプログラム300は、ステップ310で判断されたポインタ位置および移動情報ならびにアプリGUIの場所および実行中のアプリのセットなどの状態データを利用して、ユーザがポインタを移動しようとする先のアプリを判断する。一つのシナリオにおいて、PMARプログラム300は、ユーザが実行中の現在のインタラクションのテンプレート(例えば関係するアプリ)に関連するアプリに向かってポインタが移動していると判断することに基づいて、ユーザが関係するアプリに向かって移動するのを判断する。別のシナリオでは、PMARプログラム300は、ポインタが現在のインタラクションのテンプレートに関連しないアプリに向かって移動するのを判断する。
ポインタが関係するアプリケーションに向かって移動するのを判断したことに応じて(Yesの分岐、決定ステップ311)、PMARプログラム300は、その関係するアプリケーションに関連する活動を監視する(ステップ312)。
ステップ312において、PMARプログラム300は、関係するアプリケーションに関連する活動を監視する。一実施形態において、PMARプログラム300は、ステップ306、ステップ308、決定ステップ309、ステップ310、もしくは決定ステップ311またはそれらの組み合わせの並行インスタンスを実行することによって、関係するアプリケーションに関連する活動を監視する。様々な実施形態において、PMARプログラム300は、ステップ312内で得られた情報を使用して、関係するアプリの一連のポインタ位置を作成し、一つ以上の潜在的ポインタ復元位置を判断する。
一部の実施形態では、PMARプログラム300は、ステップ312の間に監視される活動から導出される情報に基づいて、次に利用されるアプリを識別する。一つのシナリオにおいて、PMARプログラム300は、ユーザが関係するアプリのグループのうちの一つのアプリを利用した後に、関係するアプリのグループのうちの前のアプリの利用を再開するのを判断し、前のアプリは一連のポインタ位置(例えば一つ以上の潜在的ポインタ復元位置)に関連する。別のシナリオでは、PMARプログラム300は、ユーザが以前に利用されなかった(例えば潜在的ポインタ復元位置がない)別の関係するアプリを利用するのを判断する。一部のシナリオにおいて、PMARプログラム300は、ユーザが、ユーザ選好またはインタラクションのテンプレート内の指示に基づいて、ポインタ位置監視から除外された(例えば潜在的ポインタ復元位置がない)関係するアプリの利用を再開するのを判断する。
決定ステップ313で、PMARプログラム300は、ポインタを関係するアプリケーション内の位置に復元するか否かを判断する。一実施形態において、PMARプログラム300は、ユーザが一つ以上の潜在的ポインタ復元位置に関連するアプリの利用を再開するのを判断したことに基づいて、ポインタをアプリのグループ(例えばインタラクションのテンプレートに関連するアプリ)の関係するアプリ内の位置に復元することを判断する。他の実施形態では、PMARプログラム300は、関係するアプリに潜在的ポインタ復元位置がないと判断したことに応じて、その関係するアプリ(例えば次に利用されるアプリ)内のポインタ位置を復元しないことを判断する。
ポインタを関係するアプリケーション内の位置に復元することを判断したことに応じて(Yesの分岐、決定ステップ313)、PMARプログラム300は、ポインタを以前に利用されたアプリケーション内の位置に復元する(ステップ314)。
ステップ314で、PMARプログラム300は、ポインタを以前に利用されたアプリケーション内の位置に復元する。PMARプログラム300は、ユーザ選好132の一つ以上のルールを利用して、アプリ(例えばアプリGUI)内のポインタの復元位置に影響を与えうる。一実施形態では、PMARプログラム300は、ポインタ位置を、ユーザが利用を再開して今は現在のアプリとなるアプリに関連する一連のポインタ位置の最後の位置に復元する。別の実施形態では、PMARプログラム300は、ポインタが復元される位置をポインタ位置に関連するイベントに基づいて修正する。例えば、イベントがコンテンツの貼り付けであった場合、PMARプログラム300は、コンテンツが挿入されたポインタ位置ではなく、貼り付けられたコンテンツの後のポインタの復元位置を判断する。
一部の実施形態において、PMARプログラム300は、一連のポインタ位置からイベントに関連する位置とは異なるポインタ復元位置を選択する。例えば、PMARプログラム300は、アプリのスワップ・イベント(例えばホットキー・コンビネーションの実行)ではなく、ユーザが一つ以上のアクションを行ったGUI内のエリアにより近いポインタ復元位置を選択する。さらなる実施形態では、PMARプログラム300が、状態データの変化が現在のアプリに影響すると判断すると、PMARプログラム300は、ポインタの復元位置として使用する一つ以上の補償された位置を判断する。一実施形態では、PMARプログラム300は、復元位置に関係するイベントを再トリガすることもできる。いくつかの例では、PMARプログラム300は、ポインタをホバーオーバーの場所に復元し、ホバーオーバーの場所に関連する情報の提示をトリガしうる。別の例では、PMARプログラム300が、コンテンツがOSのクリップボードに保存され、ポインタ位置で以前に行われたアクションが貼り付けアクションであったと判断すると、PMARプログラム300は、ポインタ復元場所に転送中のコンテンツを自動的に貼り付けうる。
決定ステップ311を参照すると、ポインタが関係するアプリケーションのGUIに向かって移動しないのを判断したことに応じて(Noの分岐、決定ステップ311)、PMARプログラムは、ポインタに関連する活動を監視する(ステップ315)。
ステップ315で、PMARプログラム300は、ポインタに関連する活動を監視する。一実施形態では、PMARプログラム300が、ポインタ活動がインタラクションのテンプレート内に含まれない無関係のアプリGUIをユーザがアプリを利用することなく横断する移動を示すと判断すると、PMARプログラム300はステップ310に戻る。別の実施形態では、PMARプログラム300が、ポインタが異なるインタラクションのテンプレートに関連するアプリのGUIに入り、ユーザがそのアプリとのインタフェースを開始するのを判断すると、ステップ304でPMARプログラム300の別のインスタンスが実行を開始し、現在のアプリを含む。
一部のシナリオでは、ユーザ選好132は、PMARプログラム300がポインタが関係するアプリのグループ(例えばインタラクションのテンプレートに関連するアプリ)に関連しないアプリのGUIに入るのを判断した場合には、PMARプログラム300は関連しないアプリとのユーザのインタラクションを無視することを定める。その後、PMARプログラム300は、ポインタが別のアプリ内で検出されると判断したことに応じて実行を再開する。あるいは、ユーザ選好132は、ユーザがインタラクションのテンプレートに関連しないアプリとのインタフェースを開始するのを判断したことに応じてPMARプログラム300がPMAR訓練プログラム200のインスタンスを実行してユーザが新たなインタラクションのテンプレートを始めるか否かを判断することを定めうる。
決定ステップ313を参照すると、ポインタを関係するアプリケーション内に復元しないことを判断したことに応じて(Noの分岐、決定ステップ313)、PMARプログラムは、ポインタに関連する活動を監視する(ステップ315)。
ステップ315を参照すると、別のシナリオでは、PMARプログラム300は、ポインタが現在のアプリを出るかまたはユーザが別のアプリにアクセスするためのホットキー・コンビネーションを実行するまで、現在のアプリ内のポインタの活動を監視する。その後、PMARプログラム300は、ステップ310で実行を再開する。あるいは、PMARプログラム300は、PMAR訓練プログラム200のインスタンスを実行して、PMARプログラム300が監視しているインタラクションのテンプレートにユーザが要素を追加または修正するかを判断しうる。
図4は、デバイス・コンピューティング環境100の一つ以上の部分を表すコンピュータ・システム400を示す。コンピュータ・システム400は、ソフトウェアおよびデータ412を含むシステムの一例である。コンピュータ・システム400は、プロセッサ(単数または複数)401、キャッシュ403、メモリ402、永続ストレージ405、通信ユニット407、入力/出力(I/O)インタフェース(単数または複数)406、および通信ファブリック404を含む。通信ファブリック404は、キャッシュ403、メモリ402、永続ストレージ405、通信ユニット407、および入力/出力(I/O)インタフェース(単数または複数)406の間の通信を提供する。通信ファブリック404は、プロセッサ(マイクロプロセッサ、通信およびネットワーク・プロセッサなど)、システム・メモリ、周辺デバイス、およびシステム内の任意の他のハードウェア・コンポーネントの間でデータもしくは制御情報またはその両方を渡すために設計された任意のアーキテクチャにより実施されうる。例えば、通信ファブリック404は、一つ以上のバスまたはクロスバー・スイッチにより実施されうる。
メモリ402および永続ストレージ405は、コンピュータ可読記憶媒体である。本実施形態では、メモリ402は、ランダムアクセス・メモリ(RAM:random‐access memory)を含む。一般に、メモリ402は、任意の適切な揮発性または不揮発性コンピュータ可読記憶媒体を含みうる。キャッシュ403は、メモリ402からの最近アクセスされたデータおよびほぼ最近アクセスされたデータを保持することによりプロセッサ(単数または複数)401の性能を向上させる高速メモリである。
本発明の実施形態を実践するために使用されるプログラム命令およびデータが、それぞれのプロセッサ(単数または複数)401の一つ以上によるキャッシュ403を介した実行のために永続ストレージ405およびメモリ402に保存されうる。一実施形態において、永続ストレージ405は、磁気ハード・ディスク・ドライブを含む。代わりに、または磁気ハード・ディスク・ドライブに加えて、永続ストレージ405は、ソリッドステート・ハード・ドライブ、半導体記憶デバイス、リードオンリ・メモリ(ROM:read‐only memory)、消去可能プログラム可能リードオンリ・メモリ(EPROM:erasable programmable read‐only memory)、フラッシュ・メモリ、またはプログラム命令もしくはデジタル情報を保存しうる任意の他のコンピュータ可読記憶媒体を含みうる。
永続ストレージ405により使用される媒体は、除去可能であってもよい。例えば、永続ストレージ405のために除去可能ハード・ドライブが使用されうる。他の例は、永続ストレージ405の一部でもある別のコンピュータ可読記憶媒体への転送のためにドライブに挿入される光および磁気ディスク、サム・ドライブ、ならびにスマート・カードを含む。ソフトウェアおよびデータ412は、それぞれのプロセッサ(単数または複数)401の一つ以上によるキャッシュ403およびメモリ402の一つ以上のメモリを介したアクセスもしくは実行またはその両方のために永続ストレージ405に保存される。ユーザ・デバイス120に関して、ソフトウェアおよびデータ412は、アプリ125‐1、アプリ125‐2、アプリ125‐3~アプリ125‐N、ユーザ・インタフェース130、ユーザ選好132、インタラクションのテンプレート134、アプリケーション情報136、ポインタ位置情報138、PMAR訓練プログラム200、およびPMARプログラム300、ならびに他のプログラムおよびデータ(図示せず)を含む。
通信ユニット407は、これらの例において、インターネット上で実行するリソースおよびプログラム(図示せず)を含む、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット407は、一つ以上のネットワーク・インタフェース・カードを含む。通信ユニット407は、物理的および無線通信リンクのいずれかまたは両方の使用を通じて通信を提供しうる。本発明の実施形態を実践するために使用されるプログラム命令およびデータが、通信ユニット407を通じて永続ストレージ405にダウンロードされうる。
I/Oインタフェース(単数または複数)406は、各コンピュータ・システムに接続されうる他のデバイスによるデータの入力および出力を可能にする。例えば、I/Oインタフェース(単数または複数)406は、キーボード、キーパッド、タッチ・スクリーン、もしくは何らかの他の適切な入力デバイスまたはそれらの組み合わせなどの外部デバイス(単数または複数)408への接続を提供しうる。外部デバイス(単数または複数)408は、サム・ドライブ、ポータブル光または磁気ディスク、およびメモリ・カードなどのポータブル・コンピュータ可読記憶媒体も含みうる。本発明の実施形態を実践するために使用されるソフトウェアおよびデータは、そのようなポータブル・コンピュータ可読記憶媒体に保存されることができ、I/Oインタフェース(単数または複数)406を介して永続ストレージ405にロードされることができる。I/Oインタフェース(単数または複数)406は、ディスプレイ140を表すディスプレイ409にも接続する。
ディスプレイ409は、ユーザにデータを表示する機構を提供し、例えばコンピュータ・モニタでありうる。一実施形態では、ディスプレイ409はディスプレイ140を表す。ディスプレイ409は、タブレット・コンピュータまたはスマートフォンのディスプレイなど、タッチ・スクリーンとしても機能しうる。あるいは、ディスプレイ409は、仮想網膜ディスプレイ、仮想ディスプレイなど、投影技術に基づいてユーザに情報を表示する。様々な実施形態において、ディスプレイ409は、入力デバイスのグラフィカルまたは仮想インスタンスからの入力を生成および受信するために利用される。
本明細書に記載されるプログラムは、それらが本発明の特定の実施形態において実施される用途に基づいて識別される。しかし、本明細書におけるいずれの具体的なプログラムの命名も便宜上使用されるにすぎず、したがって本発明は、そのような命名によって識別および/または示唆される任意の特定の用途での使用だけに限定されるものではないことが理解されねばならない。
本発明は、システム、方法、もしくはコンピュータ・プログラム製品またはそれらの組み合わせでありうる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(単数または複数)を含みうる。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および保存しうる有形のデバイスでありうる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または以上の任意の適切な組み合わせでありうるがこれらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダムアクセス・メモリ(RAM)、リードオンリ・メモリ(ROM)、消去可能プログラム可能リードオンリ・メモリ(EPROMすなわちフラッシュ・メモリ)、スタティック・ランダムアクセス・メモリ(SRAM:static random‐access memory)、ポータブル・コンパクト・ディスク・リードオンリ・メモリ(CD‐ROM:compact disc read‐only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的にエンコードされたデバイス、および以上の任意の適切な組み合わせを含む。本明細書で使用されるところのコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的信号そのものと解釈されてはならない。
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組み合わせを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされうる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバまたはそれらの組み合わせを含みうる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への保存のためにコンピュータ可読プログラム命令を転送する。
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA:instruction‐set‐architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む一つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードでありうる。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、および部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で、実行しうる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されることができ、または(例えばインターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに接続がなされうる。いくつかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲート・アレイ(FPGA:field‐programmable gate array)、またはプログラム可能ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、本発明の態様を行うためにコンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによってコンピュータ可読プログラム命令を実行しうる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図またはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施されうることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令がフローチャートもしくはブロック図またはその両方の一つまたは複数のブロックに指定された機能/作用を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成しうる。これらのコンピュータ可読プログラム命令は、命令が保存されたコンピュータ可読記憶媒体がフローチャートもしくはブロック図またはその両方の一つまたは複数のブロックに指定された機能/作用の態様を実施する命令を含む製品を含むように、コンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはそれらの組み合わせに特定の様式で機能するように指示しうるコンピュータ可読記憶媒体に保存されてもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令がフローチャートもしくはブロック図またはその両方の一つまたは複数のブロックに指定された機能/作用を実施するように、コンピュータにより実施されるプロセスを生成するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてコンピュータ、他のプログラム可能装置、または他のデバイス上で動作ステップのシーケンスを行わせることもできる。
図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能(単数または複数)を実施するための一つ以上の実行可能命令を含むモジュール、セグメント、または命令の部分を表しうる。いくつかの代替的実施態様では、ブロックに記された機能は、図面に記された順序とは異なる順序で生じうる。例えば、連続して示される二つのブロックは、実際には、関連する機能に応じて一つのステップとして達成され、部分的または全体的に時間的に重複する様式で同時に、実質的に同時に実行されてもよく、またはブロックは逆の順序で実行されうる場合もある。ブロック図もしくはフローチャートまたはその両方の各ブロック、およびブロック図もしくはフローチャートまたはその両方のブロックの組み合わせは、指定された機能または作用を行うかまたは専用ハードウェアおよびコンピュータ命令の組み合わせを遂行する専用ハードウェア・ベースのシステムによって実施されうることにも留意されたい。
本発明の様々な実施形態の記載は、例示の目的で提示されているが、網羅的であることまたは開示された実施形態に限定されることを意図するものではない。多数の修正およびバリエーションが、本発明の範囲および精神から逸脱することなく、通常の技術を有する当業者に明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実際の応用例または市販の技術に対する技術的改良を最もよく説明するため、または通常の技術を有する他の当業者が本明細書に開示された実施形態を理解できるようにするために選択されたものである。
100 コンピューティング環境
120 ユーザ・デバイス
121 ポインティング・デバイス
122 ディスプレイ
123 キーボード
125-1 アプリケーション(アプリ)
125-2 アプリ
125-3 アプリ
125-N アプリ
130 ユーザ・インタフェース(UI)
132 ユーザ選好
134 インタラクションのテンプレート
136 アプリケーション情報
138 ポインタ位置情報
200 ポインタ監視および復元(PMAR)訓練プログラム
300 ポインタ監視および復元(PMAR)プログラム
120 ユーザ・デバイス
121 ポインティング・デバイス
122 ディスプレイ
123 キーボード
125-1 アプリケーション(アプリ)
125-2 アプリ
125-3 アプリ
125-N アプリ
130 ユーザ・インタフェース(UI)
132 ユーザ選好
134 インタラクションのテンプレート
136 アプリケーション情報
138 ポインタ位置情報
200 ポインタ監視および復元(PMAR)訓練プログラム
300 ポインタ監視および復元(PMAR)プログラム
Claims (20)
- 一つ以上のコンピュータ・プロセッサによって、ユーザのコンピューティング・デバイスで実行中のアプリケーションのセットを識別するステップと、
前記ユーザが第一アプリケーションとインタフェースするのに応じて、一つ以上のコンピュータ・プロセッサによって、前記実行中のアプリケーションのセットのうちの前記第一アプリケーションのグラフィカル・ユーザ・インタフェース(GUI)内の一連のポインタ位置を判断するステップと、
一つ以上のコンピュータ・プロセッサによって、前記ユーザが第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断するステップと、
一つ以上のコンピュータ・プロセッサによって、前記第一アプリケーションの前記GUIにそれぞれ関連する前記一連のポインタ位置の中からポインタ位置を判断するステップと、
前記ユーザが前記第一アプリケーションにアクセスするのを再開するのを判断したことに応じて、一つ以上のコンピュータ・プロセッサによって、ポインタを前記第一アプリケーションの前記GUI内の前記判断されたポインタ位置に配置するステップと
を含む、方法。 - 前記アプリケーションの前記GUI内の前記一連のポインタ位置を判断するステップは、
一つ以上のプロセッサによって、前記アプリケーションの前記GUI内の前記ポインタに対応する位置を周期的基準に基づいて判断するステップと、
一つ以上のプロセッサによって、前記ポインタに対応する定められた数の判断されたポインタ位置を順序付きセットとして保存するステップと
をさらに含む、請求項1に記載の方法。 - 前記周期的基準は時間間隔からなる群より選択され、前記ポインタは閾値持続時間にわたり動かず、前記ポインタ位置は前記GUI内で生じるイベントに関連する、請求項2に記載の方法。
- 前記GUI内で生じる前記イベントは、ホバーオーバー要素のトリガ、ユーザにより定義されたホットキー・コンビネーションの実行、コンテンツに関係するアクションの実行、およびコンテキスト・メニューへのアクセスからなる群より選択される、請求項3に記載の方法。
- 前記ユーザが前記第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断するステップは、
一つ以上のコンピュータ・プロセッサによって、前記ポインタが前記第二アプリケーションの前記GUIを出ることを示すイベントを識別するステップと、
一つ以上のコンピュータ・プロセッサによって、前記ポインタに対応する運動が、前記ポインタが前記第一アプリケーションの前記GUIに向かって移動することを示すと判断するステップと、
一つ以上のコンピュータ・プロセッサによって、前記ポインタが前記第一アプリケーションの前記GUIの近接度閾値内で移動するか否かを判断するステップと
をさらに含む、請求項1から4のいずれか一項に記載の方法。 - 前記ポインタが前記第一アプリケーションの前記GUIの近接度閾値内で移動するのを判断したことに応じて、一つ以上のコンピュータ・プロセッサによって、前記第一アプリケーションにアクセスするステップ
をさらに含む、請求項5に記載の方法。 - 前記ユーザが前記第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断するステップは、
一つ以上のコンピュータ・プロセッサによって、前記ユーザが前記第一アプリケーションにアクセスすることを定めるホットキー・コンビネーションを実行するのを判断するステップ
をさらに含む、請求項1から6のいずれか一項に記載の方法。 - コンピュータ・プロセッサに、
ユーザのコンピューティング・デバイスで実行中のアプリケーションのセットを識別する手順と、
前記ユーザが第一アプリケーションとインタフェースするのに応じて、前記実行中のアプリケーションのセットのうちの前記第一アプリケーションのグラフィカル・ユーザ・インタフェース(GUI)内の一連のポインタ位置を判断する手順と、
前記ユーザが第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断する手順と、
前記第一アプリケーションの前記GUIにそれぞれ関連する前記一連のポインタ位置の中からポインタ位置を判断する手順と、
前記ユーザが前記第一アプリケーションにアクセスするのを再開するのを判断したことに応じて、ポインタを前記第一アプリケーションの前記GUI内の前記判断されたポインタ位置に配置する手順と
実行させるためのコンピュータ・プログラム。 - 前記アプリケーションの前記GUI内の前記一連のポインタ位置を判断する手順は、
前記アプリケーションの前記GUI内の前記ポインタに対応する位置を周期的基準に基づいて判断する手順と、
前記ポインタに対応する定められた数の判断されたポインタ位置を順序付きセットとして保存する手順と
をさらに含む、請求項8に記載のコンピュータ・プログラム。 - 前記周期的基準は時間間隔からなる群より選択され、前記ポインタは閾値持続時間にわたり動かず、前記ポインタ位置は前記GUI内で生じるイベントに関連する、請求項9に記載のコンピュータ・プログラム。
- 前記GUI内で生じる前記イベントは、ホバーオーバー要素のトリガ、ユーザにより定義されたホットキー・コンビネーションの実行、コンテンツに関係するアクションの実行、およびコンテキスト・メニューへのアクセスからなる群より選択される、請求項10に記載のコンピュータ・プログラム。
- 前記ユーザが前記第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断する手順は、
前記ポインタが前記第二アプリケーションの前記GUIを出ることを示す別のイベントを識別する手順と、
前記ポインタに対応する運動が、前記ポインタが前記第一アプリケーションの前記GUIに向かって移動することを示すと判断するプログラム命令と、
前記ポインタが前記第一アプリケーションの前記GUIの近接度閾値内で移動するのを判断する手順と
をさらに含む、請求項8から11のいずれか一項に記載のコンピュータ・プログラム。 - 前記ポインタが前記第一アプリケーションの前記GUIの近接度閾値内で移動するのを判断したことに応じて、前記第一アプリケーションにアクセスするプログラム命令
をさらに含む、請求項12に記載のコンピュータ・プログラム。 - 前記ユーザが前記第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断する手順は、
前記ユーザが前記第一アプリケーションにアクセスすることを定めるホットキー・コンビネーションを実行するのを判断する手順
をさらに含む、請求項8から13のいずれか一項に記載のコンピュータ・プログラム。 - 一つ以上のコンピュータ・プロセッサと、
一つ以上のコンピュータ可読記憶媒体と、
前記一つ以上のコンピュータ・プロセッサのうちの少なくとも一つによる実行のために前記コンピュータ可読記憶媒体に保存されたプログラム命令であって、
ユーザのコンピューティング・デバイスで実行中のアプリケーションのセットを識別するプログラム命令と、
前記ユーザが第一アプリケーションとインタフェースするのに応じて、前記実行中のアプリケーションのセットのうちの前記第一アプリケーションのグラフィカル・ユーザ・インタフェース(GUI)内の一連のポインタ位置を判断するプログラム命令と、
前記ユーザが第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断するプログラム命令と、
前記第一アプリケーションの前記GUIにそれぞれ関連する前記一連のポインタ位置の中からポインタ位置を判断するプログラム命令と、
前記ユーザが前記第一アプリケーションにアクセスするのを再開するのを判断したことに応じて、ポインタを前記第一アプリケーションの前記GUI内の前記判断されたポインタ位置に配置するプログラム命令と
を含む、プログラム命令と
を含む、コンピュータ・システム。 - 前記アプリケーションの前記GUI内の前記一連のポインタ位置を判断するプログラム命令は、
前記アプリケーションの前記GUI内の前記ポインタに対応する位置を周期的基準に基づいて判断するプログラム命令と、
前記ポインタに対応する定められた数の判断されたポインタ位置を順序付きセットとして保存するプログラム命令と
をさらに含む、請求項15に記載のコンピュータ・システム。 - 前記周期的基準は時間間隔からなる群より選択され、前記ポインタは閾値持続時間にわたり動かず、前記ポインタ位置は前記GUI内で生じるイベントに関連する、請求項16に記載のコンピュータ・システム。
- 前記GUI内で生じる前記イベントは、ホバーオーバー要素のトリガ、ユーザにより定義されたホットキー・コンビネーションの実行、コンテンツに関係するアクションの実行、およびコンテキスト・メニューへのアクセスからなる群より選択される、請求項17に記載のコンピュータ・システム。
- 前記ユーザが前記第二アプリケーションとインタフェースするのを休止し、前記第一アプリケーションにアクセスするのを再開するのを判断するプログラム命令は、
前記ポインタが前記第二アプリケーションの前記GUIを出ることを示す別のイベントを識別するプログラム命令と、
前記ポインタに対応する運動が、前記ポインタが前記第一アプリケーションの前記GUIに向かって移動することを示すと判断するプログラム命令と、
前記ポインタが前記第一アプリケーションの前記GUIの近接度閾値内で移動するのを判断するプログラム命令と
をさらに含む、請求項15から18のいずれか一項に記載のコンピュータ・システム。 - 前記ポインタが前記第一アプリケーションの前記GUIの近接度閾値内で移動するのを判断したことに応じて、前記第一アプリケーションにアクセスするプログラム命令
をさらに含む、請求項19に記載のコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/085,469 US11221729B1 (en) | 2020-10-30 | 2020-10-30 | Tracking and restoring pointer positions among applications |
US17/085,469 | 2020-10-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022074087A true JP2022074087A (ja) | 2022-05-17 |
Family
ID=78594997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021176177A Pending JP2022074087A (ja) | 2020-10-30 | 2021-10-28 | アプリケーションの間でのポインタ位置の追跡および復元方法、コンピュータ・プログラム、およびコンピュータ・システム(アプリケーションの間でのポインタ位置の追跡および復元) |
Country Status (5)
Country | Link |
---|---|
US (1) | US11221729B1 (ja) |
JP (1) | JP2022074087A (ja) |
CN (1) | CN114527897B (ja) |
DE (1) | DE102021124375A1 (ja) |
GB (1) | GB2601054B (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11960668B1 (en) * | 2022-11-10 | 2024-04-16 | Honeywell International Inc. | Cursor management methods and systems for recovery from incomplete interactions |
CN115938244B (zh) * | 2023-02-20 | 2023-06-02 | 深圳市英唐数码科技有限公司 | 一种适配多笔形的电纸书显示方法、系统和存储介质 |
US11954325B1 (en) | 2023-04-05 | 2024-04-09 | Honeywell International Inc. | Methods and systems for assigning text entry components to cursors |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2530050B2 (ja) | 1990-07-20 | 1996-09-04 | 富士通株式会社 | カ―ソル移動制御装置 |
US5586243A (en) * | 1994-04-15 | 1996-12-17 | International Business Machines Corporation | Multiple display pointers for computer graphical user interfaces |
US6961906B2 (en) * | 2001-11-14 | 2005-11-01 | Lenovo Pte. Ltd. | Method and system for switching between windows in a multiwindow computer environment |
US7054883B2 (en) * | 2003-12-01 | 2006-05-30 | Emc Corporation | Virtual ordered writes for multiple storage devices |
US20060143571A1 (en) * | 2004-12-29 | 2006-06-29 | Wilson Chan | Multiple mouse cursors for use within a viewable area for a computer |
US8161395B2 (en) * | 2006-11-13 | 2012-04-17 | Cisco Technology, Inc. | Method for secure data entry in an application |
JP5781742B2 (ja) | 2010-06-04 | 2015-09-24 | 株式会社富士通アドバンストエンジニアリング | カーソル制御プログラム及び該装置 |
US9292367B2 (en) * | 2014-04-08 | 2016-03-22 | Microsoft Corporation | Efficient migration of client-side web state |
US10387266B2 (en) * | 2015-12-23 | 2019-08-20 | Commvault Systems, Inc. | Application-level live synchronization across computing platforms including synchronizing co-resident applications to disparate standby destinations and selectively synchronizing some applications and not others |
CN106502817A (zh) * | 2016-10-26 | 2017-03-15 | 努比亚技术有限公司 | 一种处理数据的方法和终端 |
CN106775187A (zh) | 2016-11-10 | 2017-05-31 | 杨昕 | 一种基于光标定位的快速切换视图的方法及装置 |
CN109697120B (zh) * | 2017-10-20 | 2023-06-27 | 伊姆西Ip控股有限责任公司 | 用于应用迁移的方法、电子设备 |
-
2020
- 2020-10-30 US US17/085,469 patent/US11221729B1/en active Active
-
2021
- 2021-09-21 DE DE102021124375.0A patent/DE102021124375A1/de active Pending
- 2021-10-12 GB GB2114547.9A patent/GB2601054B/en active Active
- 2021-10-28 JP JP2021176177A patent/JP2022074087A/ja active Pending
- 2021-10-29 CN CN202111267666.XA patent/CN114527897B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
GB202114547D0 (en) | 2021-11-24 |
CN114527897A (zh) | 2022-05-24 |
DE102021124375A1 (de) | 2022-05-05 |
GB2601054A (en) | 2022-05-18 |
US11221729B1 (en) | 2022-01-11 |
CN114527897B (zh) | 2023-01-17 |
GB2601054B (en) | 2023-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DK180787B1 (en) | Devices, methods, and graphical user interfaces for interacting with user interface objects corresponding to applications | |
US11150780B2 (en) | Updating display of workspaces in a user interface for managing workspaces in response to user input | |
AU2022259768A1 (en) | User interface | |
US20170329483A1 (en) | Viewport for multi application user interface | |
JP2022074087A (ja) | アプリケーションの間でのポインタ位置の追跡および復元方法、コンピュータ・プログラム、およびコンピュータ・システム(アプリケーションの間でのポインタ位置の追跡および復元) | |
US10740117B2 (en) | Grouping windows into clusters in one or more workspaces in a user interface | |
US9658732B2 (en) | Changing a virtual workspace based on user interaction with an application window in a user interface | |
US9292196B2 (en) | Modifying the presentation of clustered application windows in a user interface | |
EP3092582A1 (en) | History as a branching visualization | |
JP6093432B2 (ja) | ウェブ・ページ・アプリケーション制御 | |
CN109948101B (zh) | 页面切换方法、装置、存储介质及电子设备 | |
WO2021183690A1 (en) | Devices, methods, and graphical user interfaces for interacting with user interface objects corresponding to applications | |
WO2017008646A1 (zh) | 一种在触控终端上选择多个目标的方法和设备 | |
US10089001B2 (en) | Operating system level management of application display | |
AU2017203900B2 (en) | Managing workspaces in a user interface | |
CN115202555A (zh) | 信息处理方法、装置 | |
AU2013216607A1 (en) | Managing workspaces in a user interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20220518 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240319 |