(57)【要約】【課題】  １台のＰＣに対して複数の座標入力装置からの座標値を同時に入力し、複数の座標入力装置を使用した同時操作を実現できなかった。【解決手段】  複数のユーザで共有される共有画面を表示する共有画面表示装置１０１と、複数の座標指示具を用いて指示される座標値を検出して複数座標データを発生する複数座標入力装置１０２とを接続し、表示装置１０１に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係及び、座標入力装置１０２から入力される座標データとに基づいて、入力振り分け部１０６により、その座標データをアプリケーションに供給するか、或は制御権を取得してオペレーティングシステム１０８にイベントを発行するかを決定する。【選択図】  図１
2006202138.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザで共有される共有画面を表示する表示手段と、
複数の座標指示具を用いて指示される座標値を検出して複数座標データを発生する座標入力手段と、
前記表示手段に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係を記憶するウィンドウオーダ記憶手段と、
前記ウィンドウオーダ記憶手段に記憶された前記ウィンドウの位置及び前後関係と、前記座標入力手段から入力される座標データとに基づいて当該座標データを供給するアプリケーションを決定する決定手段と、
前記決定手段により該当するアプリケーションが決定できない場合、前記座標データに付随する識別情報に基づいて制御権を取得してオペレーティングシステムにイベントを発行するイベント発行手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記制御権を取得している識別情報に対応する座標データが所定時間入力されない場合、前記制御権を解放する手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御権を取得している識別情報に対応する座標データが所定回数同じである場合、前記制御権を解放する手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記決定手段により決定された前記アプリケーションに対応するウィンドウ、或は前記オペレーティングシステムに発行されたイベントに対応して前記座標データが指示する位置を指示するためのカーソルを表示する手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記カーソルに対応する座標データが所定時間入力されない場合、前記カーソルの表示を消去する手段を更に有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記カーソルに対応する座標データが所定回数同じである場合、前記カーソルの表示を消去する手段を更に有することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
複数のユーザで共有される共有画面を表示する表示装置と、複数の座標指示具を用いて指示される座標値を検出して複数の座標データを発生する座標入力装置との間に介在する情報処理装置であって、
前記座標入力装置からの座標データを入力する入力手段と、
前記表示装置に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係を記憶するウィンドウオーダ記憶手段と、
前記ウィンドウオーダ記憶手段に記憶された前記ウィンドウの位置及び前後関係と、前記入力手段により入力される座標データとに基づいて当該座標データを供給するアプリケーションを決定する決定手段と、
前記決定手段により該当するアプリケーションが決定できない場合、前記座標データに付随する識別情報に基づいて制御権を取得してオペレーティングシステムにイベントを発行するイベント発行手段と、
を有することを特徴とする情報処理装置。
【請求項８】
前記入力手段により入力された前記座標データに当該座標データの発生元を特定する識別情報を付与する手段を更に有することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
複数のユーザで共有される共有画面を表示する表示装置と、複数の座標指示具を用いて指示される座標値を検出して複数座標データを発生する座標入力装置とを接続する情報処理装置の制御方法であって、
前記表示装置に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係を記憶するウィンドウオーダ記憶工程と、
前記ウィンドウオーダ記憶工程で記憶された前記ウィンドウの位置及び前後関係と、前記座標入力装置から入力される座標データとに基づいて当該座標データを供給するアプリケーションを決定する決定工程と、
前記決定工程で該当するアプリケーションが決定できない場合、前記座標データに付随する識別情報に基づいて制御権を取得してオペレーティングシステムにイベントを発行するイベント発行工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項１０】
前記制御権を取得している識別情報に対応する座標データが所定時間入力されない場合、前記制御権を解放する工程を更に有することを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１１】
前記制御権を取得している識別情報に対応する座標データが所定回数同じである場合、前記制御権を解放する工程を更に有することを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１２】
前記決定工程で決定された前記アプリケーションに対応するウィンドウ、或は前記オペレーティングシステムに発行されたイベントに対応して前記座標データが指示する位置を指示するためのカーソルを表示する工程を更に有することを特徴とする請求項９乃至１１のいずれか１項に記載の情報処理装置の制御方法。
【請求項１３】
前記カーソルに対応する座標データが所定時間入力されない場合、前記カーソルの表示を消去する工程を更に有することを特徴とする請求項１２に記載の情報処理装置の制御方法。
【請求項１４】
前記カーソルに対応する座標データが所定回数同じである場合、前記カーソルの表示を消去する工程を更に有することを特徴とする請求項１２に記載の情報処理装置の制御方法。
【請求項１５】
複数のユーザで共有される共有画面を表示する表示装置と、複数の座標指示具を用いて指示される座標値を検出して複数の座標データを発生する座標入力装置との間に介在する情報処理装置の制御方法であって、
前記座標入力装置からの座標データを入力する入力工程と、
前記表示装置に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係を記憶するウィンドウオーダ記憶工程と、
前記ウィンドウオーダ記憶工程で記憶された前記ウィンドウの位置及び前後関係と、前記入力手段により入力される座標データとに基づいて当該座標データを供給するアプリケーションを決定する決定工程と、
前記決定工程で該当するアプリケーションが決定できない場合、前記座標データに付随する識別情報に基づいて制御権を取得してオペレーティングシステムにイベントを発行するイベント発行工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項１６】
前記入力工程で入力された前記座標データに当該座標データの発生元を特定する識別情報を付与する工程を更に有することを特徴とする請求項１５に記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のユーザが表示画面を共有して、複数のユーザからの座標情報に基づいた画像表示やプログラムの実行などを制御する情報処理装置及びその制御方法に関するものである。
【背景技術】
【０００２】
近年、パーソナルコンピュータの普及に伴い、オフィスにおいても様々な業務の電子化が進められている。このような業務の電子化の流れは、紙への印刷を伴う作業に留まらず会議室にも訪れている。その代表的な製品がホワイトボードを電子化した、所謂、電子会議システムである。しかしながら、一般の業務では、ノート型パーソナルコンピュータの画面をプロジェクタで投影し、ホワイトボードと併せて利用する従来からの会議形態が主である。この会議形態では、ホワイトボードに複数のペンが用意され、そのボードに自由に描画が行えるものである。更に、このような電子会議システムを複数のユーザが同時に利用できる遠隔操作システムの提案がなされてきた。
【０００３】
ネットワークに接続された複数のコンピュータ機器間で描画データの同期を取るシステムが特許文献１で提案されている。これによれば、一台のコンピュータ機器の画面を共有表示装置に表示し、複数のユーザがそれぞれのコンピュータ機器を有する構成とすれば、複数のユーザが並行して同時に利用可能なホワイトボード・アプリケーションが実現できる。
【０００４】
また特許文献２は、ネットワークに接続された複数のコンピュータ機器間で描画データの同期に加えて、あるアプリケーションの表示データを共有するシステムを提案している。これにより、あるユーザがアプリケーションを操作している最中に、他のユーザが描画操作を行うことができる。
【０００５】
更に特許文献３は、共有画像表示装置へ複数の座標を入力するシステムを提案している。これによればコンピュータ機器の画面を投影する共有画像表示装置が、複数の座標を検出する検出手段を備え、各コンピュータ機器の表示装置の画面を合成して投影することができる。
【特許文献１】特開平５−１５３３１０号公報
【特許文献２】特開平８−３６５４６号公報
【特許文献３】特開２００３−９９１９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように、ネットワークに接続された複数のコンピュータ機器による同時描画は既に実現されている。また複数のコンピュータ機器（ＰＣ）間で、ホストＰＣの画面データと専用のアプリケーション上での描画データとを共有し、このホストＰＣをリモート操作することのできるＰＣを１台に制限することで、ホストＰＣのリモート操作の競合を回避しつつ、専用アプリケーションに対する複数のＰＣからの同時描画を可能とした技術が提案されている。
【０００７】
しかし、これは複数のＰＣのそれぞれに接続された座標入力装置を操作することで可能となっている。この構成で、各ＰＣで同時操作を実現しているのは、各ＰＣが、それに接続されている座標入力装置から入力した座標値を処理して描画データを生成し、その描画データをやり取りしているためである。各ＰＣが、それに接続されている座標入力装置とネットワークとのインタフェースだけの役目しか持っていないのであれば、１台のＰＣに複数の座標入力装置を単純につないだのと等価であり、ユーザ間に操作の干渉が発生する。即ち、共有画面を表示する表示装置にＰＣから描画データを出力して表示する場合、そのＰＣに単純に複数の座標入力装置を接続し、複数のユーザが同時に複数の座標入力装置を操作して座標データを入力できる構成とした場合には、各ユーザ間での座標入力操作の干渉が発生する。これは、従来からのウィンドウシステムでは、複数のウィンドウの内、フォーカスがあるウィンドウを操作対象としているからである。つまりＰＣに複数の座標入力装置が接続されていても１つの対象に対する操作しかできず、複数の座標入力装置から同時に座標値が入力されると操作対象の奪い合いが発生し、座標入力装置が切り替わる度に操作が途切れてしまうことになる。
【０００８】
例えば、１台のＰＣに、ポインティングデバイスであるマウスとタブレットが接続され、それぞれを別々のユーザＡ，Ｂが操作するものとする。いまユーザＡがマウスを操作して描画アプリケーションへ線の描画を行っている最中に、ユーザＢがブラウザでネットサーフィンをしようとすると、そのＰＣで実行されている描画アプリケーションで描画中の線が他のユーザが操作を行った地点まで描かれてしまい、ユーザＢの操作がユーザＡの操作を邪魔してしまう。
【０００９】
このような問題を解決する方法として、操作可能な座標入力装置を、先に座標データを入力した方の装置に制限する方法が提案されている。しかし、この方法では、座標データを入力可能な座標入力装置を１つに限定してしまうため、１台のＰＣに対して複数の座標入力装置からの座標値を同時に入力する、複数の座標入力装置を使用した同時操作を実現することは不可能である。
【００１０】
また、複数の座標入力装置と処理手段とを備えた専用の共有画面表示装置により同時描画が実現されている。しかしこの方法では、共有画面表示装置に画像を表示しているＰＣを、共有画面表示装置に備えられた座標入力装置から操作することができない。従って、ユーザは同時描画とＰＣの操作とを切り替えるために、操作する座標入力装置を切り替える必要があった。
【００１１】
本発明は、上記従来技術の欠点を解決することにある。
【００１２】
また本発明の特徴は、情報処理装置に接続された複数座標を出力する座標入力装置のそれぞれのユーザが並行して共有画面を操作できる情報処理装置及びその制御方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記特徴は、独立クレームに記載の特徴の組み合わせにより達成され、従属項は発明の単なる有利な具体例を規定するものである。
【００１４】
本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
複数のユーザで共有される共有画面を表示する表示手段と、
複数の座標指示具を用いて指示される座標値を検出して複数座標データを発生する座標入力手段と、
前記表示手段に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係を記憶するウィンドウオーダ記憶手段と、
前記ウィンドウオーダ記憶手段に記憶された前記ウィンドウの位置及び前後関係と、前記座標入力手段から入力される座標データとに基づいて当該座標データを供給するアプリケーションを決定する決定手段と、
前記決定手段により該当するアプリケーションが決定できない場合、前記座標データに付随する識別情報に基づいて制御権を取得してオペレーティングシステムにイベントを発行するイベント発行手段とを有することを特徴とする。
【００１５】
また本発明の一態様に係る情報処理装置の制御方法は以下のような工程を備える。即ち、
複数のユーザで共有される共有画面を表示する表示装置と、複数の座標指示具を用いて指示される座標値を検出して複数座標データを発生する座標入力装置とを接続する情報処理装置の制御方法であって、
前記表示装置に表示される複数のアプリケーションのそれぞれのウィンドウの位置及び前後関係を記憶するウィンドウオーダ記憶工程と、
前記ウィンドウオーダ記憶工程で記憶された前記ウィンドウの位置及び前後関係と、前記座標入力装置から入力される座標データとに基づいて当該座標データを供給するアプリケーションを決定する決定工程と、
前記決定工程で該当するアプリケーションが決定できない場合、前記座標データに付随する識別情報に基づいて制御権を取得してオペレーティングシステムにイベントを発行するイベント発行工程とを有することを特徴とする。
【００１６】
尚、この発明の概要は、必要な特徴を全て列挙しているものでなく、よって、これら特徴群のサブコンビネーションも発明になり得る。
【発明の効果】
【００１７】
本発明によれば、複数座標を出力する座標入力装置のそれぞれのユーザが並行して共有画面を操作できるという効果がある。
【発明を実施するための最良の形態】
【００１８】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は、本願の特許請求の範囲に係る発明を限定するものでなく、また、本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１９】
［実施の形態１］
図１は、本発明の実施の形態１に係る共同作業支援システムの機能構成を示す機能ブロック図である。
【００２０】
図１において、１００はパーソナルコンピュータ（ＰＣ）又はワークステーションなどの情報処理装置であり、同時に複数の座標値を入力できる複数座標入力装置１０２や、複数座標入力装置１０２から入力される複数の座標値に基づいて画像を表示する共有画面表示装置１０１等の周辺機器（他の周辺装置はここでは省略している）を接続している。共有画面表示装置１０１は、情報処理装置１００から出力される表示データに基づいて画像を表示するための表示装置で、リアプロジェクション・ディスプレイやＰＤＰ、プロジェクタのスクリーン等により構成されている。複数座標入力装置１０２は、共有画面表示装置１０１を使用して座標値を入力する座標入力装置で、例えばデジタイザやタッチパネル等を有し、複数のペンなどの座標指示具を用いて入力される複数の座標を同時に並行して検出し、それら複数の座標値を情報処理装置１００に出力することができる。この複数座標入力装置１０２から入力されるデータには、各座標指示具で指示された座標値、各座標指示具のボタン情報及び識別子等が含まれている。この識別子は、同時に検出された複数の座標値が、どの座標指示具により指示されたものであるかを識別するための情報である。例えば、複数のペンを使用できるデジタイザなどでは各ペンが識別子を有しており、あるペンで指示された座標値と共に、そのペンの識別子が出力される。尚、この複数座標入力装置１０２が、識別子付加機能を持たない場合には、インタフェース（Ｉ／Ｆ）１０３で、その座標値に識別子を付加してもかまわない。
【００２１】
尚、図１では、複数座標入力装置１０２が一つの場合を示しているが、複数台の複数座標入力装置１０２を情報処理装置１００へ接続し、各複数座標入力装置１０２間で互いに競合しない識別子を付与することにより、複数の複数座標入力装置１０２を使用した操作が可能となる。例えば、複数座標入力装置１０２が固有の製品番号を識別子に含めたり、インタフェース１０３がプロセスＩＤを識別子に含めたり、入力制御部１０４が入力データの送信元のプロセスＩＤを特定して識別子に付加することにより、識別子間での競合を避けることができる。
【００２２】
情報処理装置１００では、インタフェース１０３で処理した入力データが入力制御部１０４に送られる。この入力制御部１０４は、制御権管理部１０５によってオペレーティングシステム１０８へのシステム・マウスイベントの送信権を管理し、入力振り分け部１０６で、入力データを操作制御部１０７及びオペレーティングシステム１０８のいずれに出力するかを判定して出力する。操作制御部１０７は、後述する操作方法によって、入力データの識別子ごとに、そのデータに応じた操作を行う操作手段である。オペレーティングシステム１０８は、制御権管理部１０５の管理の下で入力振り分け部１０６で振り分けられたシステム・マウスイベントを処理する。即ち、入力した座標データに基づくイベントの発生座標において、共有画面表示装置１０１に表示された最前面にある（焦点が当たっている）アプリケーション１０９に対してシステム・マウスイベントを通知する。
【００２３】
制御権管理部１０５は、オペレーティングシステム１０８へのシステム・マウスイベントの送信権を管理し、操作制御部１０７以外の操作が可能な識別子を一つに限定している。これにより操作制御部１０７以外では、操作可能な識別子の干渉を防止できる。制御権管理部１０５は、入力制御部１０４から制御権が要求された際、制御権が空いていればその要求された識別子に対して制御権を与える。こうして与えられた制御権は、所定時間が経過した後に自動的に解放されるが、同じ識別子のデータが入力された場合や、その識別子を有する座標指示具（ペンやマウスなど）がドラッグ操作中は、その制御権が解放されないように保護する。これにより、その識別子を有する操作中の座標指示具は、その座標指示具による操作終了までの間、操作制御部１０７以外の操作を占有して行うことができる。
【００２４】
但し、次のような例外が起こりうるため、そのための対策を施す必要がある。例えば、制御権を取得しているデバイス（座標入力装置または座標指示具）に故障が発生して、そのデバイスからの応答がなくなるといった例外事象の対策として、制御権を持った識別子を有するデバイスからの入力が長時間途絶えた場合には、その制御権を解放するのが良い。例えば、所定時間を非入力制限回数に設定し、その所定時間以上、制御権を持った識別子を有するデバイスからのデータ入力が途絶えた場合には、その制御権を解放する。また、ユーザが意図しない状況で、データが入力し続けられる場合への対策として、制御権を持った識別子を有するデバイスからの入力座標値が変化しない場合には、その制御権を解放するようにしても良い。例えば、所定時間を同じ座標値が連続して入力される制限回数Ｎに設定し、その所定時間を超えるまで、その制御権を持った識別子を有するデバイスからの座標値が変化しなかった場合には、その識別子を有するデバイスの制御権を解放するようにしても良い。
【００２５】
図２は、本発明の実施の形態に係る情報処理装置１００のハードウェア構成を説明するブロック図で、図１と共通する部分は同じ記号で示し、それらの説明を省略する。
【００２６】
図において、ＣＰＵ２０１は、ＲＡＭ２０２或はＲＯＭ２０３に記憶されているプログラムに従って後述する各種制御動作を実行し、この装置１００全体の動作を制御している。ＲＡＭ２０２は、ＣＰＵ２０１により実行されるプログラムやデータを記憶すると共に、ＣＰＵ２０１による制御処理時に各種データを一時的に保存するためのワークエリアを提供している。ＲＯＭ２０３は、ＢＩＯＳなどのプログラムや各種データを記憶している。インタフェース２０４は、前述した共有画面表示装置１０１とのインタフェースを制御している。外部記憶装置（ＨＤ）２０５は、ＯＳ１０８や各種アプリケーション１０９を予めインストールしており、実行時に、これらＯＳ１０８やアプリケーション１０９がＲＡＭ２０２にロードされ、ＣＰＵ２０１の制御の下に実行される。またこの外部記憶装置２０５は、画像データ等の各種データを保存するのにも使用される。表示部２０６は、この情報処理装置１００に設けられた表示部で、ＣＲＴや液晶などの表示ユニットを備えている。入力部２０７は、キーボード及びマウス等のポインティングデバイスを有し、ユーザの操作に応じて各種データやコマンドなどを入力するのに使用される。尚、ここでは共有画面表示装置１０１及び複数座標入力装置１０２はそれぞれ表示部２０６、入力部２０７と別体として説明しているが、これら表示装置及び入力装置はそれぞれ同じハードウェアに一体化されていても良い。
【００２７】
また図１に示す入力制御部１０４、操作制御部１０７等の機能は、ＣＰＵ２０１と、実行時にＨＤ２０５からＲＡＭ２０２にロードされ、ＣＰＵ２０１の制御の下で実行されるプログラムにより達成されている。
【００２８】
図３は、本発明の実施の形態１に係る制御権管理部１０５が入力制御部１０４からの制御権の取得要求の処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００２９】
まずステップＳ１で、座標入力装置からのデータを受信する。次にステップＳ２で、ステップＳ１で受信したデータの識別子Ｙを取得する。次にステップＳ３で、制御権管理部１０５が管理している制御権識別子（現在制御権を有している識別子）があるかどうかを判定する。ここで制御権識別子が、制御権が空いていることを示す「−１」である場合はステップＳ４に進み、制御権識別子をＹに設定してステップＳ５へ進む。一方ステップＳ３で、制御権識別子が「−１」以外の場合は、既に制御権が設定されているのでステップＳ６に進み、制御権識別子が、ステップＳ１で入力したデータの制御権と同じ識別子Ｙであるかを判別する。ここで制御権識別子が識別子Ｙに設定されている場合にはステップＳ５へ進むが、制御権識別子が識別子Ｙ以外に設定されている場合にはステップＳ７に進み、制御権の取得が失敗したと判断してステップＳ１８で制御権の取得結果を出力する。
【００３０】
ステップＳ５では、ステップＳ１で受信したデータよりボタンデータを取得する。次にステップＳ８で、そのボタンデータがボタンダウンであるか判別し、ボタンダウンであればステップＳ９に進み、制御権管理部１０５が保持する制御権固定フラグをオンに設定（ドラッグ中かどうかを判別するため）してステップＳ１５へ進む。
【００３１】
一方、ステップＳ８でボタンダウンでなければステップＳ１０に進み、ボタンデータがボタンアップであるか否かを判別し、ボタンアップであればステップＳ１１に進み、制御権固定フラグをオフにしてステップＳ１５に進む。ステップＳ１０でボタンアップでなければステップＳ１２に進み、入力データの座標値が制御権管理部１０５の保持する前回入力した座標値と同じであるかを判別し、同じでなければステップＳ１３で、前回の入力座標値を新たな座標値で更新する。次にステップＳ１４で、同じ座標値が連続して入力される回数を計数している値Ｎを同座標制限値Ｎａに初期化してステップＳ１５へ進む。またステップＳ１２で、前回の入力座標値と同じであればステップＳ１５へ進み、制御権取得成功としてステップＳ１６に進み、座標が入力されない回数を計数している値Ｍを非入力制限値Ｍａに初期化する。次にステップＳ１７で、制御権タイマを初期化して再起動してステップＳ１８に進み、制御権取得結果を出力する。尚、同座標制限値Ｎａは、所定時間を同じ座標値が連続して入力される制限回数に該当し、所定時間、その制限回数Ｎａ分、その制御権を持った識別子を有するデバイスからの座標値が変化しなかった場合には、その識別子を有するデバイスの制御権を解放するためのものである。また非入力制限値Ｍａは、制御権を持った識別子を有するデバイスからの入力が、非入力制限回数Ｍａに相当する所定時間以上途絶えた場合には、そのデバイスによる制御権を解放するためのものである。
【００３２】
また制御権タイマとは、所定時間が経過するたびにタイムアウトイベントを発行するタイマであり、再起動時には、制御権タイマによるタイムアウトイベントまでの時間が所定時間にリセットされる。
【００３３】
図４は、本実施の形態１に係る制御権管理部１０５が制御権タイマのタイムアウト時に行う処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００３４】
ステップＳ２１で、制御権タイマのタイムアウトが発生するとステップＳ２２に進み、制御権固定フラグの状態を判定する。ここで制御権が固定されていない場合はステップＳ２７に進み、制御権識別子を制御権空きであることを示す「−１」にする。そしてステップＳ２８で制御権タイマの計時動作を停止し、次にステップＳ２９で制御権タイマによるタイムアウト処理を終了する。
【００３５】
一方、ステップＳ２２で、制御権固定フラグが設定されていた場合はステップＳ２３に進み、座標が入力されない回数を計数している値Ｍを減算する（Ｍ＝Ｍ−１）。そしてステップＳ２４で、Ｍの値が「０」より大きいか否かを判定する。ここでＭの値が「０」より大きくない場合は、制御権を取得したままデバイスの故障などで応答がなくなっている例外事態であると判断してステップＳ２７の制御権の解放処理へ進む。一方、ステップＳ２４で、座標が入力されない回数を計数している値Ｍが「０」より大きい場合はステップＳ２５に進み、同じ座標値が連続して入力される回数を計数している値Ｎを減算する（Ｎ＝Ｎ−１）。そしてステップＳ３０８で、Ｎの値が「０」より大きいか否かを判定する。ここで「０」より大きくない場合は、ユーザが意図しない状況において、座標入力装置１０２からデータが入力し続けられる例外事態であると判断してステップＳ３０２の制御権の解放処理へ進む。またステップＳ３０８で、Ｎの値が「０」より大きい場合には制御権を変更せず、ステップＳ３０４で制御権タイマタイムアウト処理を終了する。
【００３６】
図５（Ａ）〜（Ｃ）は、本実施の形態に係る入力振り分け部１０６が管理するドラッグ管理リストとＺオーダリスト及び透明操作面リストの一例を示す図で、これらリストはＲＡＭ２０２に作成される。
【００３７】
図５（Ａ）は、ドラッグ管理リスト４００を示し、この管理リスト４００には、インデックス（Index）に対応して、識別子と、入力ペンなどの座標指示具によるドラッグ操作中かどうかを示すドラッグ（Drag）フラグとがペアで配列されている。尚、ドラッグ（Drag）フラグの「TRUE」はドラッグ中を示し、「FALSE」はドラッグ中でない状態を示している。
【００３８】
図５（Ｂ）は、Ｚオーダリスト４０１を示し、このＺオーダリスト４０１は、インデックス（Index）に対応して、共有画面に表示されている全ウィンドウのハンドルをＺオーダ順（画面の手前[31]から後方に向かう順）に保存する。
【００３９】
図５（Ｃ）は、透明操作面リスト４０２を示し、インデックス（Index）に対応して、透明ではあるが、そのウィンドウ領域に含まれる座標データによるマウスイベントを取得する操作制御部１０７のウィンドウハンドルと、Ｚオーダリストのインデックス（ＺオーダIndex）を、Ｚオーダ順に保存している。
【００４０】
図６は、本実施の形態に係る入力振り分け部１０６がオペレーティングシステム１０８で起きたＺオーダの変化に対応してＺオーダリスト４０１を更新する処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。この入力振り分け部１０６は、常にオペレーティングシステム１０８を監視しており、Ｚオーダが変化するとＺオーダリスト４０１及び透明操作面リスト４０２を更新する。
【００４１】
ステップＳ３０で、Ｚオーダの変更イベントを受信するとステップＳ３１に進み、図５（Ｂ）に示すＺオーダリスト４０１を初期化する。次にステップＳ３２で、オペレーティングシステム１０８にＺオーダ順にウィンドウハンドルを列挙するように要求する。次にステップＳ３３に進み、ウィンドウハンドルの列挙が終了したかどうかを判断し、終了するまでステップＳ３４からステップＳ３７を繰り返す。そしてウィンドウハンドルの列挙が終了するとステップＳ３８に進み、図５（Ｃ）に示す透明操作面リスト４０２を更新しＺオーダ変更イベントの処理を終了する。この処理の詳細は、図７のフローチャートを用いて後述する。
【００４２】
ステップＳ３４では、オペレーティングシステム１０８からウィンドウハンドル「hWnd」を受け取ってステップＳ３５に進み、そのウィンドウハンドルを持つウィンドウの表示状態を取得する。次にステップＳ３６で、ウィンドウの表示状態を確認し、表示中でなければステップＳ３３へ戻って前述の処理を実行するが、表示中であればステップＳ３７に進み、そのウィンドウハンドル「hWnd」をＺオーダリスト４０１の最後に追加してステップＳ３３へ戻る。
【００４３】
図７は、本実施の形態に係る入力振り分け部１０６が透明操作面リスト４０２（図５（Ｃ））を更新する処理（図６のステップＳ３８の処理に相当）を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００４４】
この透明操作面リスト４０２の更新はＺオーダに変更があった場合と、操作制御部１０７から透明操作面リスト４０２へウィンドウハンドルの登録・削除要求があった場合に実行される。尚、操作制御部１０７から透明操作面リスト４０２へウィンドウハンドルの登録要求があった場合には、透明操作面リスト４０２の更新を処理する前に、透明操作面リスト４０２へ、そのウィンドウハンドルとウィンドウが非表示状態であることを示すＺオーダインデックスの値「−１」を追加する。また削除要求であった場合には、透明操作面リスト４０２から該ウィンドウハンドルを予め削除する。以下、詳しく説明する。
【００４５】
まずステップＳ４０で、透明操作面リスト４０２の更新が開始されるとステップＳ４１に進み、仮の透明操作面リストをＲＡＭ２０２に生成する。次にステップＳ４２からステップＳ５３において、Ｚオーダリスト４０１に含まれるウィンドウハンドルが透明操作面リスト４０２に含まれるかを判定し、含まれる場合は仮の透明操作面リスト（ＲＡＭ２０２に生成する）に、そのウィンドウハンドルとＺオーダインデックスを追加する。
【００４６】
ここではまずステップＳ４２で、Ｚオーダリスト４０１の長さＬ1（総インデックス数）を取得し、次にステップＳ４３でインデックスｎ1を「０」に初期化する。次にステップＳ４４で、インデックスｎ1が長さＬ1より小さいかどうか、即ち、Ｚオーダリスト４０１の全てのインデックスの検査を終了したかどうかを判定する。インデックスｎ1が長さＬ1より小さくない場合は、Ｚオーダリスト４０１の全てのインデックスの検査を終了したのでステップＳ５４へ進むが、小さい場合はステップＳ４５へ進み、Ｚオーダリスト４０１のインデックス（Index）ｎ1のウィンドウハンドル「hWndN」を取得する。次にステップＳ４６で、透明操作面リスト４０２の長さＬ2（総インデックス数）を取得し、次にステップＳ４７で、インデックスｎ2を「０」に初期化する。そしてステップＳ４８で、インデックスｎ2が長さＬ2より小さいか否かを判定する。インデックスｎ2が長さＬ2より小さくない場合はステップＳ４４へ戻るが、インデックスｎ2が長さＬ2より小さい場合はステップＳ４９へ進み、透明操作面リスト４０２のインデックスｎ2のウィンドウハンドル「hWnd」を取得する。次にステップＳ５０に進み、ステップＳ４５で取得したＺオーダリスト４０１のウィンドウハンドル「hWndN」と、ステップＳ４９で取得した透明操作面リスト４０２のウィンドウハンドル「hWnd」とを比較し、これらが等しくない場合はステップＳ５３に進み、インデックスｎ2をカウントアップ（＋１）してステップＳ４８へ戻り、前述の処理を実行する。一方、ステップＳ５０で、ウィンドウハンドル「hWndN」と「hWnd」とが等しい場合はステップＳ５１に進み、ウィンドウハンドル「hWnd」とインデックスｎ1を仮の透明操作面リストの最後に追加してステップＳ５２に進み、インデックスｎ1をカウントアップしてステップＳ４４へ戻る。
【００４７】
一方、ステップＳ４４で、インデックスｎ1が長さＬ1より小さくない場合はステップＳ５４からステップＳ６５において、透明操作面リスト４０２に含まれるウィンドウハンドルが仮の透明操作面リストに含まれるか否かを判定し、含まれ[32]ない場合には、その仮の透明操作面リストに、そのウィンドウハンドルとウィンドウが非表示状態であることを示すＺオーダインデックスの値「−１」を追加する。以下詳しく説明する。
【００４８】
ステップＳ５４では、透明操作面リスト４０２の長さＬ2を取得してステップＳ５５に進み、インデックスｎ2を「０」に初期化する。次にステップＳ５６で、インデックスｎ2が長さＬ2より小さいか否か、即ち、透明操作面リスト４０２の全項目を全てチェックしたかどうかを判定する。インデックスｎ2が長さＬ2より小さくない場合はステップＳ６６へ進むが、インデックスｎ2が長さＬ2より小さい場合はステップＳ５７へ進み、透明操作面リスト４０２のインデックスｎ2のウィンドウハンドル「hWnd」を取得する。次にステップＳ５８で、仮の透明操作面リストの長さＬ3を取得し、次にステップＳ５９で、インデックスｎ3を「０」に初期化する。次にステップＳ６０で、インデックスｎ3が長さＬ3より小さいか否かを判定し、小さくない場合はステップＳ５６へ戻って前述の処理を実行する。一方、インデックスｎ3が長さＬ3より小さい場合はステップＳ６１に進み、仮の透明操作面リストのインデックスｎ3のウィンドウハンドル「hWndM」を取得する。次にステップＳ６２で、ウィンドウハンドル「hWndM」と「hWnd」とが等しいかを判定する。ここで「hWndM」と「hWnd」とが等し[33]い場合はステップＳ６５に進み、インデックスｎ3をカウントアップしてステップＳ６０へ戻り、前述の処理を実行する。一方、「hWndM」と「hWnd」とが等しくない場合はステップＳ６３に進み、ウィンドウハンドル「hWnd」とＺオーダインデックスが未知であることを示す値「−１」を仮の透明操作面リストの最後に追加し、ステップＳ６４でインデックスｎ2をカウントアップしてステップＳ５６へ戻る。
【００４９】
またステップＳ５６で、インデックスｎ2が長さＬ2より大きい場合はステップＳ６６に進み、透明操作面リスト４０２を仮の透明操作面リストで上書きし、ステップＳ６７で処理を終了する。
【００５０】
図８は、本実施の形態に係る入力制御部１０４からの振り分け先判定要求に応じて、入力振り分け部１０６が実行する処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００５１】
ステップＳ７０で、振り分け先要求が入力されることによりデータの振り分け処理が開始されると、ステップＳ７１で、入力した座標データで示される座標を含む最も画面の手前にあるウィンドウのウィンドウハンドル「hWnd」をオペレーティングシステム１０８から取得する。次にステップＳ７２で、そのウィンドウハンドル「hWnd」の親ウィンドウに当たるルートウィンドウのハンドル「hRWnd」をオペレーティングシステム１０８から取得する。尚、これらステップＳ７１とステップＳ７２の処理はオペレーティングシステム１０８を用いているが、Ｚオーダリスト４０１の内容にウィンドウの位置と大きさやルートウィンドウのハンドルを加えておけば、このオペレーティングシステム１０８を用いずに独自の処理によって入力座標を含むウィンドウハンドルを探したり、ルートウィンドウを探したりすることが可能になる。
【００５２】
そしてステップＳ７３からステップＳ７８では、ルートウィンドウのハンドル「hRWnd」と、Ｚオーダリスト４０１のウィンドウハンドル「hWnd」とを比較し、Ｚオーダインデックスを取得する。Ｚオーダインデックスの取得に失敗した場合には、ステップＳ８８へ進む。以下、具体的に説明する。
【００５３】
ステップＳ７３では、Ｚオーダリスト４０１の長さＬを取得する。次にステップＳ７４で、インデックスｎを「０」に初期化し、次にステップＳ７５で、インデックスｎが長さＬより小さいか否かを判定する。インデックスｎが長さＬより小さくない場合はステップＳ８８に進むが、インデックスｎが長さＬより小さい場合はステップＳ７６へ進み、Ｚオーダリスト４０１のインデックスｎのウィンドウハンドル「hWndN」を取得する。次にステップＳ７７で、このウィンドウハンドル「hWndN」と、ルートウィンドウのハンドル「hRWnd」とを比較し、これらが等しい場合はステップＳ７９へ進む。等しくない場合はステップＳ７８に進んで、インデックスｎをカウントアップしてステップＳ７５へ戻る。
【００５４】
ステップＳ７９では、透明操作面リスト４０２の長さＬ2を取得し、次にステップＳ８０で、インデックスｎ2を「０」に初期化する。次にステップＳ８１で、インデックスｎ2が長さＬ2より小さいか否かを判定し、インデックスｎ2が長さＬ2より小さくない場合にはステップＳ８８へ進むが、インデックスｎ2が長さＬ2より小さい場合にはステップＳ８２へ進み、透明操作面リスト４０２のインデックスｎ2のＺオーダインデックスＺnを取得する。次にステップＳ８３で、インデックスｎがＺnよりも大きいか否かを判定し、インデックスｎがＺnよりも大きい場合はステップＳ８８へ進むが、インデックスｎがＺnよりも小さい場合はステップＳ８４へ進み、透明操作面リスト４０２のインデックスｎ2のウィンドウハンドル「hWndN」を取得する。次にステップＳ８５で、ウィンドウハンドル「hWndN」へ、入力データの識別子とその座標値を指定したHITTESTメッセージを送信する。
【００５５】
操作制御部１０７は、入力データの識別子とその座標値を指定したHITTESTメッセージを受信すると、該当する識別子からの入力を受け付ける状態かつ座標値が自ウィンドウ内であればHITを返し、そうでなければNOTHITを返す。
これにより、その座標値がウィンドウハンドル「hWndN」のウィンドウ内の座標を指示していれば、そのウィンドウハンドル「hWndN」に対応するアプリケーションから、HITしていることが通知される。逆に、その座標値がウィンドウハンドル「hWndN」のウィンドウ内の座標を指示していなければ、そのウィンドウハンドル「hWndN」に対応するアプリケーションからNOTHITであることが通知される。
【００５６】
ステップＳ８６で、メッセージの戻り値を確認し、HITでなければステップＳ８１へ戻り、HITであればステップＳ７１７に進み、振り分け先を「hWndN」として処理を終了する。
【００５７】
またステップＳ８８では、識別子を指定したHITTESTメッセージをウィンドウハンドル「hWndN」に送信する。次にステップＳ８９で、ウィンドウハンドル「hWndN」からの戻り値がHITであるかどうかを判定し、HITであればステップＳ９０に進み、振り分け先を、そのHITした操作面「hWndN」として、振り分け要求の処理を終了する。一方、ステップＳ８９で、HITではなかった場合はステップＳ９１に進み、その振り分け先を、その他のアプリケーション１０９を示す値「−１」として、この処理を終了する。
【００５８】
ここで、入力振り分け部１０６が、透明ではあるがそのウィンドウ領域に含まれる座標データによるマウスイベントを取得する操作制御部１０７のウィンドウハンドルをＺオーダリスト４０１に含めて管理していた場合、ステップＳ８８では、Ｚオーダリスト４０１のウィンドウハンドル「hWnd」が存在するか否かを判定するだけでもよい。
【００５９】
図９は、本実施の形態に係る入力制御部１０４が、座標入力装置１０２からデータを受信した際に行う処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００６０】
ステップＳ１００で、データを受信するとステップＳ１０１に進み、入力振り分け部１０６を利用して、振り分け先のウィンドウハンドル「hWnd」を特定する（図８）。そしてステップＳ１０２で、その振り分け先「hWnd」が操作制御部１０７であるか（図８のＳ９０）、その他のアプリケーション１０９である（図８のＳ９１で「−１」がセットされている）かを判定する。ここでウィンドウハンドル「hWnd」が操作制御部１０７である（「０」以上）と判定するとステップＳ１０３に進み、ステップＳ１００で入力したデータをウィンドウハンドル「hWnd」へ出力し、ステップＳ１０４で入力データの処理を終了する。
【００６１】
一方、ステップＳ１０２で、ウィンドウハンドル「hWnd」が操作制御部１０７でない（「０」以下）と判定した場合はステップＳ１０５に進み、制御権管理部１０５を利用して、入力したデータの制御権を要求する（図３）。このステップＳ１０５の処理は図２のフローチャートを参照されたい。次にステップＳ１０６に進み、制御権の取得結果を確認する。ここで制御権を取得できなかった場合はステップＳ１０４に進んで処理を終了する。ステップＳ１０６で、制御権を取得できた場合はステップＳ１０７に進み、オペレーティングシステム１０８へマウスイベントを出力して処理を終了する。
【００６２】
図１０は、本実施の形態に係る操作制御部１０７が管理する操作管理リストの一例を示す図である。
【００６３】
この例では説明を簡単にするために、操作制御部１０７の機能を描画色のみが変更可能な自由線の描画に限定している。この操作管理リスト９００は、インデックス（Index）に対応して、識別子とドラッグ中を示すフラグ（Dragフラグ）、前回の座標値、及び描画色を配列として保存している。この操作管理リスト９００に更に、太さ、図形の種類などを追加することで、複数のユーザが同時に利用可能なベクタグラフィックスエディタなどの操作制御部１０７を実現できる。
【００６４】
この例では、識別子が「０」である座標指示具はドラッグ中で、前回の指示座標値は（１０，５０）、その座標値に基づく描画色は「黒」に設定されている。同様に、識別子が「１」である座標指示具はボタンダウンされておらず、前回の指示座標値は（０，０）、その座標値に基づく描画色は「緑」に設定されており、また識別子が「２」である座標指示具もボタンダウンされておらず、前回の指示座標値は（０，０）、その座標値に基づく描画色は「赤」に設定されていることがわかる。
【００６５】
図１１は、図１０に例示した管理機能を有する操作制御部１０７が管理している操作面の一例を示す図である。
【００６６】
１０００は、共有画面表示装置１０１に表示される操作面を示す。また１００１は、操作面１０００に配置された操作ボタンを示している。この例では、操作ボタン１００１を操作面１０００内に配置したが、本発明はこれに限定されるものでなく、これらボタン１００１を操作面１０００の外部に配置し、これらボタン１００１を操作して操作制御部１０７へ描画色の変更を指示できるようにしても良い。尚、この操作ボタン１００１は、図２の入力部２０７、或は複数座標入力装置１０２に設けられていても良い。
【００６７】
図１２は、描画色のみを変更できる自由線の描画機能に限定した操作制御部１０７における入力データの処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００６８】
ステップＳ１１０において、操作制御部１０７がデータを受信するとステップＳ１１１で、そのデータの識別子に対応する操作管理リスト９００（図１０）のインデックスｎを取得する。次にステップＳ１１２で、図１１に示す操作ボタン１００１が指示されたかどうかを判定するHITTESTを行う。次にステップＳ１１３で、戻り値が「HIT」であるか否か（操作ボタン１００１が指示されたか否か）を判定する。ステップＳ１１３で、戻り値が「HIT」、即ち、操作ボタン１００１が指示された場合はステップＳ１１４に進み、ステップＳ１１０で入力したデータのボタンデータを取得する。次にステップＳ１１５で、ボタンダウンであるか否かを判定する。ここでボタンダウンではない場合は、ステップＳ１１７に進んで処理を終了する。一方、ステップＳ１１５でボタンダウンである場合はステップＳ１１６に進み、操作管理リスト９００のインデックスｎの描画色を、そのダウンされた操作ボタン１００１に対応付けて変更し、ステップＳ１１７で処理を終了する。
【００６９】
またステップＳ１１３で戻り値が「HIT」ではない場合はステップＳ１１８に進み、入力データのボタンデータを取得する。次にステップＳ１１９で、そのボタンデータに基づいてボタンダウンであるか否かを判定する。ボタンダウンである場合はステップＳ１２０に進み、操作管理リスト９００のインデックスｎのドラッグフラグをドラッグ中であることを示す「TRUE」に変更し、前回の座標値を今回の入力データの座標値に更新して処理を終了する。
【００７０】
一方、ステップＳ１１９でボタンダウンでない場合はステップＳ１２１に進み、ボタンアップであるか否かを判定する。ここでボタンアップである場合はステップＳ１２０に進み、操作管理リスト９００のインデックスｎのドラッグフラグを、ドラッグ中ではないことを示す「FALSE」に変更して処理を終了する。
【００７１】
またステップＳ１２１でボタンアップではなかった場合はステップＳ１２２で、操作管理リスト９００のインデックスｎの前回の座標値を取得する。次にステップＳ１２３で、ステップＳ１２２で取得した前回の座標値と入力データの座標値とを比較し、前回と同じ座標値であればステップＳ１１７に進んで処理を終了する。
【００７２】
一方、ステップＳ１２３で、前回と同じ座標値でなければステップＳ１２４へ進み、操作面管理リスト９００のインデックスのドラッグフラグを取得する。そしてステップＳ１２５でドラッグ中であるかどうかを判定する。ドラッグ中でなければステップＳ１２７へ進み、操作管理リスト９００のインデックスｎの前回の座標値を、今回の入力データの座標値に更新して処理を終了する。一方、ドラッグ中であればステップＳ１２６に進み、前回の座標値から入力座標値まで直線を描画してステップＳ１２７へ進み、前述したように、操作管理リスト９００のインデックスｎの前回の座標値を、今回の入力データの座標値に更新して処理を終了する。
【００７３】
図１３は、本実施の形態１に係るＲＡＭ２０２に記憶された変数及びフラグのメモリマップを示す図である。
【００７４】
［実施の形態２］
図１４は、本発明の実施の形態２に係る共同作業支援システムの機能構成を示す機能構成図で、前述の実施の形態１に係る図１と共通する部分は同じ記号で示し、それらの説明を省略する。尚、この実施の形態２に係る情報処理装置１００のハードウェア構成は前述の実施の形態１と同様であるため、その説明を省略する。
【００７５】
この実施の形態２では、実施の形態１の構成に対してカーソル表示部１１０が加わっている。このカーソル表示部１１０は、識別子ごとの擬似カーソルを持ち、複数座標入力装置１０２からの入力座標に該擬似カーソルを表示することで、入力座標の位置をユーザに伝えることができる。これにより、共有画面表示装置１０１で入力を行わないタブレットやマウスなどが複数座標入力装置１０２として利用可能となる。
【００７６】
図１５は、実施の形態２に係るカーソル表示部１１０の機能構成図である。
【００７７】
このカーソル表示部１１０は、識別子に対応する複数の擬似カーソル部１３００を有しており、カーソル表示部１１０は、入力制御部１０４からのデータを受信すると、そのデータの識別子に対応する擬似カーソル部に出力する。
【００７８】
擬似カーソル部１３００における擬似カーソルの表示／非表示の制御は、制御権管理部１０５における制御権の自動解放モード及び固定モードと同様の考えに基づき、所定時間で自動的に非表示となる自動非表示モードと、表示したままの表示固定モードによって行うと良い。このような制御を行わない場合には、識別子分の擬似カーソルが画面に表示されたままとなり、複数座標入力装置１０２から入力する際にどの擬似カーソルが操作対象であるか判別し辛くなる。
【００７９】
図１６は、本実施の形態２に係る擬似カーソル部１３００が、カーソル表示部１１０からの要求を処理する処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００８０】
ステップＳ１３０でカーソル表示部１１０からデータを受信するとステップＳ１３１に進み、そのデータよりボタンデータを取得する。次にステップＳ１３２で、そのボタンデータがボタンダウンを示しているか否かを判定し、ボタンダウンであればステップＳ１３３で、擬似カーソル部１３００が保持する表示固定フラグをオンに設定してステップＳ１３４へ進むが、ボタンダウンでなければステップＳ１３５へ進み、ボタンデータがボタンアップであるか否かを判定する。ボタンアップであればステップＳ１３６で表示固定フラグをオフにしてステップＳ１３４へ進むが、ボタンアップでなければステップＳ１３７へ進み、入力データの座標が擬似カーソル部１３００の保持する前回の入力座標値と同じであるか確認し、同じでなければステップＳ１３８に進んで前回の入力座標値を更新する。次にステップＳ１３９で、擬似カーソル部１３００が保持する同じ座標値が連続して入力される回数を計数している値Ｎを同座標制限値Ｎｂに初期化してステップＳ１３４へ進む。またステップＳ１３７で、前回の座標値と同じであればステップＳ１３４へ進む。
【００８１】
ステップＳ１３４では、擬似カーソル部１３００は擬似カーソルを入力したデータの座標値に移動する。次にステップＳ１４０で、その擬似カーソルの表示状態を判定する。ここで擬似カーソルを表示中であればステップＳ１４２へ進むが、非表示中であればステップＳ１４１で擬似カーソルを表示した後、ステップＳ１４２へ進む。ステップＳ１４２では、擬似カーソル部１３００が保持する座標が入力されない回数を計数している値Ｍを非入力制限値Ｍｂに初期化する。そしてステップＳ１４３で、非表示タイマを初期化して再起動し、次にステップＳ１４４で擬似カーソルの移動処理を終了する。ここで非表示タイマとは、所定時間経過する度にタイムアウトイベントを発行するものであり、再起動時には、このタイムアウトイベントまでの時間が所定時間にリセットされる。
【００８２】
図１７は、本実施の形態２に係る擬似カーソル部１３００が非表示タイマのタイムアウト時に行う処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００８３】
まずステップＳ１５０で、非表示タイマのタイムアウトが発生するとステップＳ１５１で、表示固定フラグの内容を判定する。表示固定フラグがオフ、即ち、表示が固定されていない場合はステップＳ１５６で、擬似カーソルを非表示とする。次にステップＳ１５７で非表示タイマを停止して、この非表示タイマタイムアウト処理を終了する。
【００８４】
一方、ステップＳ１５１で、表示固定フラグがオンに設定されている場合はステップＳ１５２で、座標が入力されない回数を計数している値Ｍを減算し（Ｍ＝Ｍ−１）、次にステップＳ１５３で、Ｍの値が「０」より大きいか否かを判定する。「０」より小さい場合は擬似カーソルを表示したままデバイスの故障などで応答がなくなっている例外事態であると判断してステップＳ１５６に進み、制御権の解放処理を実行する。一方、ステップＳ１５３で、Ｍの値が「０」より大きい場合はステップＳ１５４に進み、同じ座標値が連続して入力される回数を計数している値Ｎを減算する（Ｎ＝Ｎ−１）。そしてステップＳ１５５で、Ｎの値が「０」より大きいか否かを判定する。ここで「０」より小さい場合は、ユーザが意図しない状況においてデータが入力し続けられる例外事態であると判断してステップＳ１５６に進み、擬似カーソルの非表示処理を行う。またステップＳ１５５で、Ｎの値が「０」より大きい場合は表示状態を変更せずに、そのまま非表示タイマのタイムアウト処理を終了する。
【００８５】
図１８は、本実施の形態２に係る入力制御部１０４がデータを受信した際に行う処理を説明するフローチャートで、この処理は前述の図９に示すフローチャートとほぼ同じフローチャートであり、ここでは擬似カーソルを移動するステップＳ１６８が追加されている点のみが異なっている。
【００８６】
ステップＳ１６０で、入力制御部１０４がデータを受信するとステップＳ１６１に進み、入力振り分け部１０６を利用して振り分け先のウィンドウハンドル「hWnd」を特定する。次にステップＳ１６２で、その振り分け先のウィンドウハンドル「hWnd」が操作制御部１０７であるか、その他のアプリケーション１０９であるかを判定する。ウィンドウハンドル「hWnd」が操作制御部１０７である場合はステップＳ１６３に進み、ウィンドウハンドル「hWnd」へ入力データを出力し、ステップＳ１６８で、擬似カーソルを入力データの座標値へ移動する。
【００８７】
一方、ステップＳ１６２で、ウィンドウハンドル「hWnd」が操作制御部１０７ではない場合はステップＳ１６５に進み、制御権管理部１０５を利用して制御権を要求する。次にステップＳ１６６で、制御権の取得結果を判定する。ここで制御権を取得できなかった場合はステップＳ１６８に進み、擬似カーソルを入力データの座標値に対応する座標に移動して処理を終了する。一方ステップＳ１６６で制御権を取得できた場合はステップＳ１６７に進み、オペレーティングシステム１０８へマウスイベントを出力して処理を終了する。
【００８８】
［実施の形態３］
図１９は、本発明の実施の形態３に係る共同作業支援システムの機能構成を示す機能構成図で、前述の実施の形態の各機能部と共通する部分は同じ記号で示している。
【００８９】
この実施の形態３では、前述の実施の形態２の構成に加えて識別子を付加する識別子付加部１１１によって、識別子を付加する機能を持たない座標入力装置からの利用が可能となる。尚、複数座標入力装置１０２と座標入力装置１１２、座標入力装置１１４をそれぞれ一つずつ図示したが、実際にはそれぞれ一つとは限らずにこれらの組み合わせによって実現される。この図１９の構成は、前述の図１４の構成に、識別子付加部１１１と座標入力装置１１２、座標入力装置１１２のインタフェース１１３、座標入力装置１１４、座標入力装置１１４のインタフェース１１５およびフック部１１６が追加されている。尚、この実施の形態３に係る情報処理装置１００のハードウェア構成は前述の実施の形態１と同様であるため、その説明を省略する。
【００９０】
識別子付加部１１１は、インタフェース１０３、インタフェース１１３及びフック部１１６からのデータを受信し、入力元ごとに一意となるような識別子を付加して、入力制御部１０４へ出力する。座標入力装置１１２はインタフェース１１３に接続されるマウスなどの入力装置であり、インタフェース１１３は、座標入力装置１１２からの座標データを識別子付加部１１１へ直接出力できる。座標入力装置１１４はインタフェース１１５に接続されるマウスなどの入力装置であり、インタフェース１１５は、座標入力装置１１４からの入力に従って、オペレーティングシステム１０８へシステム・マウスイベントを出力する。複数座標入力装置１０２及び座標入力装置１１２からのデータは、そのデータに含まれる識別子により、又はデータ識別子付加部１１１がそのデータの送信元を識別して識別子を付加できるため、それぞれ複数台、この情報処理装置１００に接続されても良い。
【００９１】
フック部１１６は、オペレーティングシステム１０８で発生するシステム・マウスイベントを監視し、そのイベントが入力制御部１０４からの出力に基づくものでなければフックし、オペレーティングシステム１０８には処理させない。尚、情報処理装置１００に複数台の座標入力装置１１４が接続されている場合には、フック部１１６がフックしたシステム・マウスイベントに含まれる座標入力装置１１４に特有の入力情報を分析して、そのデータを発生した座標入力装置１１４を判別し、そのデータに識別子を付与して識別子付加部１１１へ出力することもできる。
【００９２】
例えば、タブレットやタッチパネル、デジタイザなどの絶対座標を出力する座標入力装置か、マウスやスクラッチパッドなどの相対座標を出力する座標入力装置であるかは、そのデータが絶対座標か相対座標かを示すフラグを設けることにより、いずれの座標入力装置から供給されたデータであるかを識別できる。もちろん、複数のマウスが座標入力装置１１４として存在する場合には、前述の識別ができないため、同じ座標入力装置１１４として扱うこととなる。但し、複数のタブレットなどのように絶対座標を出力する座標入力装置が座標入力装置１１４として存在する場合には、入力座標値を追跡することにより、複数の座標入力装置１１４から同時に座標が入力されたとしても、各軌跡を異なる座標入力装置１１４からのものとして弁別できる。こうして弁別した座標値に応じた各軌跡に対して識別子を付与することが可能である。
【００９３】
図２０は、実施の形態３に係る識別子付加部１１１が保持する識別子管理リストの一例を示す図である。
【００９４】
この識別子管理リスト１８００は、座標データの入力元を示すデバイス識別子と、入力制御部１０４以降で用いる識別子のペアを配列として保存している。尚、この実施の形態３では、デバイス識別子は入力元のプロセスＩＤとした。但し、複数座標入力装置１０２のインタフェース１０３からの入力データや、フック部１１６からの入力データのように、入力データに識別子が含まれている場合には、入力元のプロセスＩＤに入力データの識別子を連結して、デバイス識別子とする。
【００９５】
図２１は、本実施の形態３に係る識別子付加部１１１が、デバイス識別子に対応する識別子を求める処理を説明するフローチャートで、この処理を実行するプログラムはＲＡＭ２０２にロードされてＣＰＵ２０１の制御の下に実行される。
【００９６】
まずステップＳ１７０で、デバイス識別子Ｘの変換要求を受信するとステップＳ１７１で、識別子管理リストに含まれる要素数Ｌを取得する。次にステップＳ１７２で、インデクスｎを「０」に初期化する。次にステップＳ１７３で、そのインデクスｎの値がリストの要素数Ｌよりも小さいか否かを判定する。インデクスｎの値がリストの要素数Ｌよりも小さくない場合はステップＳ１７４に進み、そのデバイス識別子Ｘに対応する識別子Ｙを新たに生成する。次にステップＳ１７５で、デバイス識別子Ｘと識別子Ｙとを識別子管理リスト１８００に保存する。そしてステップＳ１７６で、識別子Ｙを出力する。
【００９７】
一方、ステップＳ１７３で、インデクスｎの値よりもリストの要素数Ｌの方が大きい場合はステップＳ１７７で、インデクスｎのデバイス識別子ｘを取得する。次にステップＳ１７８で、デバイス識別子Ｘとｘとを比較する。ここでＸとｘとが互いに異なる場合はステップＳ１７９に進み、インデクスｎの値を＋１してステップＳ１７３へ戻る。またステップＳ１７８で、Ｘとｘが同じである場合はステップＳ１８０に進み、インデクスｎの識別子Ｙを取得する。そしてステップＳ１７６で、識別子Ｙを出力する。
【００９８】
入力制御部１０４以降の処理は、前述の実施の形態２で説明した通りである。
【００９９】
以上説明したように上記実施の形態によれば、共有画面表示装置に画面を表示する情報処理装置に接続された、ユーザを特定可能な複数座標入力装置を用いて、該情報処理装置を一人で利用しているような操作感で複数のユーザが同時に利用可能となる。具体的には、ホワイトボードやアノテーションなどのアプリケーション上では、該アプリケーションの複数のユーザが干渉せずに操作可能であり、かつその他のアプリケーション上では制御権を持つ一人のユーザがその他のアプリケーションを操作が終わるまで占有的に利用できる。
【０１００】
また、ユーザごとに擬似カーソルを表示することで、マウスやタブレットといった共有画面表示装置上にはない座標入力装置からも利用できる。
【０１０１】
更に、複数の座標入力装置が情報処理装置内のシステムを意識することなく接続し、複数座標入力装置からの座標入力の場合と同様に利用することができる。
【０１０２】
なお本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが、その供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１０３】
プログラムを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。その他のプログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【０１０４】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満足するユーザに対してインターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１０５】
またコンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０１０６】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１０７】
【図１】本発明の実施の形態１に係る共同作業支援システムの機能構成を示す機能ブロック図である。
【図２】本実施の形態に係る情報処理装置のハードウェア構成を説明するブロック図である。
【図３】本発明の実施の形態１に係る制御権管理部が入力制御部からの制御権の取得要求の処理を説明するフローチャートである。
【図４】本実施の形態１に係る制御権管理部が制御権タイマのタイムアウト時に行う処理を説明するフローチャートである。
【図５】本実施の形態１に係る入力振り分け部が管理するドラッグ管理リスト（Ａ）とＺオーダリスト（Ｂ）及び透明操作面リスト（Ｃ）の一例を示す図である。
【図６】本実施の形態１に係る入力振り分け部がオペレーティングシステムで起きたＺオーダの変化に対応してリストを更新する処理を説明するフローチャートである。
【図７】本実施の形態１に係る入力振り分け部が透明操作面リストを更新する処理を説明するフローチャートである。
【図８】本実施の形態１に係る入力制御部からの振り分け先判定要求に応じて、入力振り分け部が実行する処理を説明するフローチャートである。
【図９】本実施の形態１に係る入力制御部がデータを受信した際に行う処理を説明するフローチャートである。
【図１０】本実施の形態１に係る操作部が管理する操作管理リストの一例を示す図である。
【図１１】図１０に例示した管理機能を有する操作部の操作面の一例を示す図である。
【図１２】描画色のみを変更できる自由線の描画機能に限定した操作部における入力データの処理を説明するフローチャートである。
【図１３】本実施の形態１に係るＲＡＭに記憶された変数及びフラグのメモリマップを示す図である。
【図１４】本発明の実施の形態２に係る共同作業支援システムの機能構成を示す機能構成図である。
【図１５】実施の形態２に係るカーソル表示部の機能構成図である。
【図１６】本実施の形態２に係る擬似カーソル部が、カーソル表示部からの要求を処理する処理を説明するフローチャートである。
【図１７】本実施の形態２に係る擬似カーソル部が非表示タイマのタイムアウト時に行う処理を説明するフローチャートである。
【図１８】本実施の形態２に係る入力制御部がデータを受信した際に行う処理を説明するフローチャートである。
【図１９】本発明の実施の形態３に係る共同作業支援システムの機能構成を示す機能構成図である。
【図２０】実施の形態３に係る識別子付加部が保持する識別子管理リストの一例を示す図である。
【図２１】本実施の形態３に係る識別子付加部が、デバイス識別子に対応する識別子を求める処理を説明するフローチャートである。
【図１】
2006202138.tif 000003
【図２】
2006202138.tif 000004
【図３】
2006202138.tif 000005
【図４】
2006202138.tif 000006
【図５】
2006202138.tif 000007
【図６】
2006202138.tif 000008
【図７】
2006202138.tif 000009
【図８】
2006202138.tif 000010
【図９】
2006202138.tif 000011
【図１０】
2006202138.tif 000012
【図１１】
2006202138.tif 000013
【図１２】
2006202138.tif 000014
【図１３】
2006202138.tif 000015
【図１４】
2006202138.tif 000016
【図１５】
2006202138.tif 000017
【図１６】
2006202138.tif 000018
【図１７】
2006202138.tif 000019
【図１８】
2006202138.tif 000020
【図１９】
2006202138.tif 000021
【図２０】
2006202138.tif 000022
【図２１】
2006202138.tif 000023