JPH09204312A - 多数のウィンドウのイベント分散を合併する方法およびシステム - Google Patents

多数のウィンドウのイベント分散を合併する方法およびシステム

Info

Publication number
JPH09204312A
JPH09204312A JP8345919A JP34591996A JPH09204312A JP H09204312 A JPH09204312 A JP H09204312A JP 8345919 A JP8345919 A JP 8345919A JP 34591996 A JP34591996 A JP 34591996A JP H09204312 A JPH09204312 A JP H09204312A
Authority
JP
Japan
Prior art keywords
event
software
computer
user input
software system
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
Application number
JP8345919A
Other languages
English (en)
Inventor
W Hiisaa Gregory
グレゴリー・ダブリュ・ヒィサー
John Nelson Christopher
クリストファー・ジョン・ネルソン
Jeffrey Purple Lance
ランス・ジェフリー・パープル
Allen Williamson Ray
レイ・アレン・ウィリアムソン
Yun Yan Chin
チン・ユン・ヤン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH09204312A publication Critical patent/JPH09204312A/ja
Pending legal-status Critical Current

Links

Landscapes

  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)

Abstract

(57)【要約】 (修正有) 【課題】コンピュータ・システム内で多数のソフトウェ
ア・システムに対してイベント分散を提供する。 【解決手段】ユーザ入力イベントがもしメニュー・アク
セス・イベントであるならば、システムは、メニュー・
バー・イベント・ハンドラによってそのイベントを処理
し、ユーザ入力イベントがもしそうではないならば、そ
のイベントが正規のイベントであるかどうかを判定し、
もしそうであるならば、そのイベントが意味イベントで
あるかどうかを判定し、意味イベントであるならば、そ
れを意味インタフェース・イベント・ハンドラに送り、
もしそうではないならば、そのイベントのタイプを決定
し、そのイベントのソフトウェア・システム宛先を決定
しそこにディスパッチする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はデータ処理システム
に関する。より詳細には、本発明は、多重ソフトウェア
・システム環境において共用イベント分散を提供するこ
とに関する。
【0002】
【従来の技術】コンピュータ・システムは当業者には周
知であり、米国ビジネスのあらゆる側面に浸透してい
る。ビジネス界におけるコンピュータの拡散の一つの理
由は、コンピュータ・システムが多様な仕事を効率的に
実行する能力にある。そのような仕事を実行するために
コンピュータ・システムによって使用される機構が「コ
ンピュータ・プログラム」と呼ばれている。
【0003】コンピュータ・システムそのものと同様、
コンピュータ・プログラムも長年にわたって進化した。
今日、コンピュータ・プログラムは、異なるプラットフ
ォームどうしでの価格適合性が重大な問題になるところ
にまで拡散した。共通の基準を提供するための一つの試
みは、オブジェクト指向プログラミング(OOP)に頼
ることである。通常、OOPは、一つのオブジェクト
が、そのオブジェクトによって制御される情報に対して
コンピュータ・システムが実行する個々の操作または一
群の操作を表すため、コンピュータ・プログラマの能率
を大幅に増すと考えられている。これらのオブジェクト
は、特定の仕事を実行するために他のエージェントと協
同するアナトモナス(anatomonous)エージェントのよ
うなものである。コンピュータ・プログラム全体がオブ
ジェクトの群によってできていることもあるし、一つの
特定のタスクまたはサブタスクを実行するために、オブ
ジェクトがより従来的なコンピュータ・プログラムによ
って単にアクセスされるだけのこともある。
【0004】いくつかのグラフィカル・ユーザ・インタ
ーフェース・システムがオブジェクト指向プログラミン
グのインプリメンテーションに頼っている。そのような
システムの一つがOpenDocシステムである。OpenDocは、
複合ドキュメントに用いるためのAPIおよびソフトウ
ェアの集合である。これは、範囲および機能においてオ
ブジェクト連結貼り込みに類似しているが、Microsoft
社ではなくCI Labsから出されたものである。Compone
nt Integration Lab(CI Labs)は、1993年9月
に、Apple、IBM、Novell、Oracle、SunSoft、WordPe
rfectおよびXeroxによって設立された。OpenDocを記載
する詳細は以下の二つの文献に開示されている。一つ
は、OpenDoc: The New Shape of Softwareと題するもの
(CI Labs、1994年、1〜8頁)である。もう一つ
は、Robert Orfali、Dan HarkeyおよびJeri Edwardsに
よる、Client/Server Components: CORBA Meets OpenDo
cと題するもの(Object Magazine、1995年5月)で
ある。
【0005】OpenDocは、複合ドキュメントのためのベ
ンダ固有のオープン基準になることを意図している。
「複合ドキュメント」とは、多数の異なる種類の内容か
らなり、それらすべてが一つのファイルを共用している
ドキュメントである。これらのドキュメントは、ほぼい
かなるタイプのデータ、例えば表、チャートおよびテキ
ストならびに画像、音声、ノート・カードもしくは3D
グラフィックスを含むことができる。
【0006】OpenDocは、Macintoshによってそのオペレ
ーティング・システム(OS7)中にインプリメントさ
れ、また、MicrosoftによってWindows中にインプリメン
トされている。
【0007】OpenDocは、これまでのところ、Xウィン
ドウ・プラットフォームが設けられているUnixソフトウ
ェア・システム中にはインプリメントされていない。Op
enDocがインプリメントされている他のソフトウェアに
おいては、これらのシステムは、一つの扱われるイベン
ト・メソッド(もしくはオブジェクト)を介してすべて
のイベントを受けるためのパート・ハンドラを必要と
し、したがって、これらのプラットフォームにおける既
存のアプリケーションは、OpenDocパート・ハンドラに
変換されたとき、広範囲に書き直されなければならな
い。
【0008】OpenDocをUnixソフトウェア・システム、
好ましくはIBM社によって提供されるAIXシステム
に移植する目標の一つは、既存のMotifおよびXlibアプ
リケーションを、コードを最大限に再利用しながら、Op
enDocオブジェクトまたはパート・ハンドラに変換でき
るようにすることである。問題は、既存のグラフィカル
・ユーザ・インターフェース・アプリケーション・コー
ドが、Xイベント・コールバック関数を幅広く用いて構
成されており、OpenDocパート・ハンドラ・コードが、
すべてのイベントを、パート・ハンドラのハンドル・イ
ベント・メソッドである一つのエントリ・ポイントに運
ぶために、OpenDocディスパッチまたはオブジェクトに
依存して構成されていることにある。OpenDocオブジェ
クトはまた、標準のXlibイベント列の一部ではない特定
のイベント・タイプをも予期する。
【0009】Unix環境においてOpenDocイベントとXウ
ィンドウ・イベントとの分散の合併を可能にする機構が
なければ、市販のコンピュータ・ユーザは、Unixベース
のXウィンドウ・プラットフォームにおいてOpenDocの
利益を十分に享受することは絶対にできない。
【0010】
【発明が解決しようとする課題】したがって、本発明の
一つの目的は、データ処理システムを提供することにあ
る。
【0011】本発明のもう一つの目的は、多重ソフトウ
ェア・システム環境において共用イベント分散を提供す
ることにある。
【0012】
【課題を解決するための手段】前記の目的は、以下に記
載するようにして達成される。本発明にしたがって、多
数のアクティブなグラフィカル・ユーザ・インターフェ
ース・ソフトウェア・システムを支援するコンピュータ
・システムが開示される。典型的なコンピュータ・シス
テムは、バスと、中央処理装置と、バスを介して中央処
理装置に結合されたコンピュータ・システム・メモリと
を含む。通常は動作中にコンピュータ・システム・メモ
リにロードされる共用ソフトウェア・システム・イベン
ト・ディスパッチャが、ユーザ入力イベントを、入力イ
ベントのタイプおよびその予定の宛先に基づいて、適切
なソフトウェア・システムに宛てて送る。コンピュータ
・システムはさらに、共用ソフトウェア・システム・イ
ベント・ディスパッチャによって処理するためのユーザ
入力イベントを受ける、共用ソフトウェア・システム・
イベント・ディスパッチャに関連するイベント待ち行列
を含む。さらには、イベント・ディスパッチャによって
処理するためのユーザ入力イベントをメニュー・イベン
トまたは意味イベントのいずれかとして識別する共用ソ
フトウェア・システム・シェルが設けられている。また
さらに、ディスパッチャに接続されたディスパッチ・モ
ジュールが、各イベントに関連する適切なパート・ハン
ドラによる操作のために、ディスパッチャによって受け
られ、分散された、選択されたイベント・タイプを扱
う。
【0013】好ましい実施態様においては、ソフトウェ
ア・システムの二つは、OpenDocソフトウェア・システ
ムおよびXウィンドウ・ソフトウェア・システムであ
る。両ソフトウェア・システムとも、所与のイベントの
タイプおよび宛先によって識別される。所与のパート・
ハンドラは、定義されたアービトレーションおよびフォ
ーカス・セットに基づいて選択される。
【0014】また、コンピュータ・システム内で多数の
ソフトウェア・システムに対してイベント分散を提供す
る方法が開示される。この方法はまず、ユーザ入力イベ
ントを受け、次に、そのユーザ入力イベントがメニュー
・アクセス・イベントであるかどうかを判定する。ユー
ザ入力イベントがメニュー・アクセス・イベントである
ならば、システムは、コンピュータ・システム内でメニ
ュー・バー・イベント・ハンドラによってそのメニュー
・アクセスを処理する。ユーザ入力イベントがメニュー
・アクセスではないならば、システムは、そのユーザ入
力イベントが正規のイベントであるかどうかを判定す
る。ユーザ入力イベントが正規のイベントであるなら
ば、システムは、そのイベントが意味イベントであるか
どうかを判定し、意味イベントであるならば、そのイベ
ントを意味インタフェース・イベント・ハンドラに送
る。イベントが意味イベントではないならば、システム
は、そのイベントのタイプを決定する。イベントのその
宛先またはソフトウェア・システム宛先を決定すると、
システムは、イベントをその決定したソフトウェア・シ
ステム宛先にディスパッチする。
【0015】本発明の上記ならびにさらなる目的、特徴
および利点は、以下の詳細な記載において明白に理解さ
れるであろう。
【0016】
【発明の実施の形態】図面、特に図1を参照すると、本
発明の方法を具現化するために用いることができるデー
タ処理システムの好ましい実施態様が示されている。図
示するように、データ処理システム10は、システム装
置12と、ディスプレイ装置14と、キーボード16
と、マウス18と、プリンタ20とを含む。当該技術に
おいて周知であるように、システム装置12は、入力装
置、例えばキーボード16、マウス18またはローカル
・エリア・ネットワーク・インタフェース(図示せず)
から、処理すべきデータを受ける。マウス18は、好ま
しくは、データ処理システム部品およびアプリケーショ
ン・プログラムを含むハードウェアおよびソフトウェア
・システム・オブジェクトが、ディスプレイ装置14内
に表示された関連の図形オブジェクトの選択および操作
によって制御されるグラフィカル・ユーザ・インターフ
ェース(GUI)とともに用いられる。データ処理シス
テム10はマウス18を備えた状態で示されているが、
当業者であれば、グラフィックス・タブレット、スタイ
ラス、ライト・ペン、ジョイスティック、パック、トラ
ックボール、トラックパッドおよびIBM社のTrackPoi
nt(商標)をはじめとする他の図形ポインティング装置
を用いてもよいことを認識するであろう。データ処理シ
ステム10は、ディスプレイ装置14およびプリンタ2
0を介して出力データをユーザに提示する。データの記
憶および検索を支援するため、システム装置12はさら
に、周知の方法でシステム装置12に接続されたディス
ケット・ドライブ22、ハードディスク・ドライブ23
およびCD−ROMドライブ24を含む。当然、当業者
であれば、他の従来の構成部品をもシステム装置12に
接続できることを認識するであろう。
【0017】次に図2を参照すると、データ処理システ
ム10のシステム装置12の主要構成部品のブロック図
が示されている。図示するように、システム装置12
は、ソフトウェア指示を実行する中央処理装置(CP
U)26を含む。CPU26にはいかなる適切なマイク
ロプロセッサを用いてもよいが、CPU26は、好まし
くは、IBM Microelectronics社から市販されているP
owerPC(商標)ラインのマイクロプロセッサの1種であ
る。あるいはまた、CPU26は、多数のベンダから市
販されている8OX86マイクロプロセッサの1種とし
て具現化することもできる。CPU26に加えて、任意
の算術コプロセッサ27、キャッシュ制御装置28およ
びキャッシュ・メモリ30が高速CPUローカル・バス
25に結合されている。算術コプロセッサ27は、CP
U26よりも効率的に数学的計算を実行する、CPU2
6とは別個の任意のプロセッサである。算術コプロセッ
サによって提供される性能の利点はCPU26の機能強
化、例えば多数の浮動小数点実行装置の具現化によって
も達成することができるため、算術コプロセッサ27は
任意に用いられる。キャッシュ・メモリ30は、頻繁に
アクセスされるデータおよび指示を記憶する小型の高速
メモリである。キャッシュ30の動作は、キャッシュ3
0の内容のディレクトリを維持し、選択されたキャッシ
ュ一貫性プロトコルを執行するキャッシュ制御装置28
によって制御される。
【0018】CPUローカル・バス25がバッファ32
に結合されて、CPUローカル・バス25とシステム・
バス34との間に通信を提供している。このシステム・
バスは、バッファ32とさらなるバッファ36との間に
延びている。システム・バス34は、バス制御およびタ
イミング装置38と、中央アービタ48およびDMA制
御装置41を含む直接メモリ・アクセス(DMA)装置
40とに接続されている。DMA制御装置41は、CP
U26を関連させないメモリ・アクセスを支援する。直
接メモリ・アクセスは通常、データをRAM58とイン
テリジェント周辺装置、例えばディスク・アダプタ82
との間で直接伝送するために用いられる。多数の周辺装
置からのDMA要求は中央アービタ48によって裁定さ
れる。以下に説明するように、中央アービタ48はま
た、拡張バス44に結合された装置へのアクセスを、ア
ービトレーション制御バス42を介して伝送される制御
信号によって規制する。
【0019】CPU26は、メモリ制御ユニット52、
アドレス・マルチプレクサ54およびデータ・バッファ
56を含むメモリ制御装置50を介して、揮発性ランダ
ム・アクセス・メモリ(RAM)58からのデータおよ
び指示にアクセスし、また、データをそこに記憶する。
メモリ制御ユニット52は、読み出しイネーブルおよび
書き込みイネーブル信号を生成してデータの記憶および
検索を容易にし、CPU26によって用いられる仮想ア
ドレスをRAM58内の物理アドレスにマッピングする
アドレス翻訳機能を含む。当業者であれば察知しうるよ
うに、RAM58は、データ処理システム10に電力が
供給されている間、オペレーティング・システムおよび
アプリケーション・ソフトウェアのセグメントを記憶す
る個々の揮発性メモリ・モジュールを数多く含む。ソフ
トウェア・セグメントは、それぞれが均等な数の仮想メ
モリ・アドレスを含む1個以上の仮想メモリ・ページに
分割される。ソフトウェアの実行が、RAM58内に記
憶することができるよりも多くのページの仮想メモリを
要する場合、現在必要とされないページが必要なページ
と交換され、それら必要なページが不揮発性記憶装置2
2〜24の中に記憶される。
【0020】メモリ制御装置50はさらに、RAM58
内の特定のアドレスを選択するアドレス・マルチプレク
サ54と、RAM58から読み出され、そこに記憶され
るデータを緩衝記憶するデータ・バッファ56とを含
む。メモリ制御装置50はまた、システム・プロセスお
よびユーザ・プロセスを各プロセスに割り当てられた仮
想アドレス空間内に隔離するメモリ保護を提供する。し
たがって、ユーザ・モードで動作するプログラムは、そ
の仮想アドレス空間に割り当てられたメモリにしかアク
セスすることができない。すなわち、ユーザ・モードの
プログラムは、プロセス間のメモリ共用が支援され、そ
のプログラムが適切なアクセス特権を有しない限り、別
のプロセスの仮想アドレス空間内のメモリにはアクセス
することができない。
【0021】さらに図2を参照すると、バッファ36
が、システムバス34と拡張バス44との間にインタフ
ェースを提供している。拡張バス44には、アダプタ・
カードを受け入れるための多数の入出力スロット46が
接続されており、これらがさらに入出力装置またはメモ
リに接続されていてもよい。アービトレーション制御バ
ス42がDMA制御装置41および中央アービタ48を
入出力スロット46およびディスク・アダプタ82に結
合している。バス・アービトレーション・プロトコルを
インプリメントすることにより、中央アービタ48は、
拡張カード、制御装置およびCPU26による拡張バス
44へのアクセスを規制する。加えて、中央アービタ4
8は、拡張バス44に結合されたバス・マスタの間で拡
張バス44の所有権に関してアービトレーションを下
す。バス・マスタ支援は、プロセッサおよびその支援チ
ップを含むバス・マスタ・アダプタの追加によって拡張
バス44のマルチプロセッサ構成を作り出すことを可能
にする。
【0022】システムバス34は、バッファ66を介し
て平面入出力バス68に結合されている。平面入出力バ
ス68には、ディスプレイ・アダプタ70、ディスク・
アダプタ82、不揮発性RAM74、クロック72、シ
リアル・アダプタ78、タイマ80、読み出し専用メモ
リ(ROM)86、CD−ROMアダプタ88、キーボ
ード/マウス制御装置84、ネットワーク・アダプタ8
5、モデム87およびパラレル・アダプタ76をはじめ
とする多様な入出力アダプタおよび他の周辺部品が取り
付けられている。ディスプレイ・アダプタ70は、CP
U26からのグラフィックス・データを、ディスプレイ
装置14を駆動するのに用いられるR、GおよびB画像
信号に変換する。オペレーティング・システムおよび動
作中のアプリケーション・ソフトウェアに依存して、視
覚的出力は、テキスト、グラフィックス、アニメーショ
ンおよびマルチメディア画像を含むことができる。ディ
スク・アダプタ82は、ハードディスク・ドライブ24
およびディスケット・ドライブ22へのデータの記憶お
よびそこからのデータの検索を制御する。ディスク・ア
ダプタ82は、ドライブ22および23内でのドライブ
読み/書きヘッドの位置決めや、ドライブ22および2
3とCPU26との間の媒介のようなタスクを扱う。不
揮発性RAM74は、データ処理システム10の現在の
構成を表すシステム構成データを記憶する。例えば、不
揮発性RAM74は、ハードディスク・ドライブ24ま
たはディスケット・ドライブ22に挿入されたディスケ
ットの容量、ディスプレイ装置14のタイプ、RAM5
8の空き容量および現在のシステム構成を表す情報を含
む。データ処理システム10の電源を絶ったとしても、
これらのデータは不揮発性RAM74に記憶されたまま
残る。
【0023】クロック72は、時刻の計算のためにCP
U26によって実行されるアプリケーション・プログラ
ムによって用いられる。シリアル・アダプタ78は、デ
ータ処理システム10を使用可能にして、遠隔データ処
理システムまたは周辺装置と通信させる同期または非同
期のシリアル・インタフェースを提供する。シリアル通
信は、シリアル通信プロトコル、例えばRS−232、
RS−422などによって支配される。タイマ80は、
データ処理システム10内の一つ以上の選択されたイベ
ントを計時するためにアプリケーションまたはオペレー
ティング・システム・ソフトウェアによって用いること
ができる多数のインタバル・タイマを含む。
【0024】ROM86は通常、CPU26がDOSオ
ペレーティング・システムの下で動作しているときにユ
ーザ透過的な入出力を提供する基本入出力システム(B
IOS)を記憶する。BIOSはまた、起動時にシステ
ム・セットアップを実行するパワー・オン自己試験(P
OST)診断ルーチンを含む。例えば、POSTは、ハ
ードウェアに問い合わせを行い、BIOSデータ・エリ
ア(BDA)を割り当て、割り込みベクトル・テーブル
を構成してROM86内の割り込み扱いルーチンを指し
示し、タイマ80、クロック72およびシステム装置1
2中の他の装置を初期化する。CD−ROMアダプタ8
8は、CD−ROMドライブ24を平面入出力バス34
とインタフェースさせて、CD−ROMドライブ24に
装填された光ディスクからのデータの検索を支援する。
キーボート/マウス制御装置84は、システム装置12
をキーボード16および図形ポインティング装置、例え
ばマウス18とインタフェースさせる。以下さらに詳細
に説明するように、キーボート/マウス制御装置84
は、マウス18の各増分移動を示す直列信号をマウスか
ら受ける。
【0025】最後に、システム装置12は、データ処理
システム10と周辺装置または他のデータ処理システム
との間の通信を容易にするネットワーク・アダプタ8
5、モデム87およびパラレル・アダプタ76を含む。
ネットワーク・アダプタ85は、データ処理システム1
0を、図示しないローカル・エリア・ネットワーク(L
AN)に接続するのに用いられる。LANは、データ処
理システム10のユーザに対し、遠隔コンピュータまた
はネットワーク論理記憶装置を用いて、ソフトウェアを
含む情報を電子的に通信する手段を提供する。さらに
は、LANは、データ処理システム10がLANにリン
クされた他のデータ処理システムとでタスクを分担する
ことを可能にする分散処理を支援する。モデム87は、
データ処理システム10と別のデータ処理システムとの
間の、標準の電話回線を介する通信を支援する。例え
ば、モデム87を用いて、データ処理システム10をオ
ンライン情報サービス、例えばProdigy Services社によ
ってサービスマーク「PRODIGY」の下で提供される情報
サービスに接続してもよい。このようなオンライン・サ
ービス提供業者はしばしば、モデム87を介してデータ
処理システム10にダウンロードすることができるソフ
トウェアを提供する。さらには、モデム87を通じて、
データ処理システム10は、他のソフトウェアのソー
ス、例えばサーバ、電子掲示板およびインターネットも
しくはワールド・ワイド・ウェブにアクセスすることが
できる。パラレル・アダプタ76は、パラレル・ポート
を介してプリンタ制御信号および出力データをプリンタ
20に伝送する。
【0026】多くのデータ処理システムに典型的である
ように、起動直後、データ処理システム10の種々のハ
ードウェア構成部品はそれぞれ自らの内部リセット手続
きを実行して、安定な既知の状態を再び得る。これらの
リセット手続きが完了すると、CPU26がROM86
内でPOSTコードを実行して、システムのハードウェ
アを初期化し、BIOSデータ・エリアをセットアップ
し、ベクトル・テーブルおよびその他のタスクを構成
し、割り込ませる。POSTに続き、「ブートストラッ
プ」または一次オペレーティング・システム・ローダが
動作して、オペレーティング・システム(OS)100
(図3を参照)のセグメントをRAM58にロードし、
本発明の好ましい実施態様においてはIBM社から市販
されているAIXを含むOS100の実行を開始する。
【0027】次に図3を参照すると、起動直後のデータ
処理システム10のソフトウェア構成が図示されてい
る。図示するように、データ処理システム10のソフト
ウェア構成は、カーネル102を含むOS100と、ア
プリケーション・プログラム・インタフェース(AP
I)110を介してOS100と通信する一つ以上のア
プリケーション108とを含む。カーネル102は、装
置ドライバ、例えば図形ポインタ装置ドライバ104お
よびディスプレイ装置ドライバ106によってデータ処
理システム10のハードウェア構成部品の動作を制御す
る最低レベルのOS100を含む。
【0028】図示するように、図形ポインタ装置ドライ
バ104およびディスプレイ装置ドライバ106は、キ
ーボード/マウス制御装置84およびディスプレイ・ア
ダプタ70とそれぞれ通信して、マウス18(底面図で
示す)およびディスプレイ装置14とデータ処理システ
ム10との相互接続を支援する。マウス18のトラック
ボール19の動きに応答して、マウス18は、トラック
ボール19の方向および回転を表すアナログ図形ポイン
タ信号をキーボード/マウス制御装置84に伝送する。
キーボート/マウス制御装置84は、アナログ図形ポイ
ンタ信号をデジタル化し、デジタル化した図形ポインタ
信号を図形ポインタ装置ドライバ104に伝送し、その
後、このドライバがデジタル化した図形ポインタ信号を
解釈し、解釈した図形ポインタ信号をカーネル102内
の図形ポインタ速度モジュール112に送る。図形ポイ
ンタ速度モジュール112は、解釈された図形ポインタ
信号を修飾して、マウス18を用いて操作される図形ポ
インタの移動を減速または加速させる。そして、図形ポ
インタ速度モジュールは、修飾され、解釈された図形ポ
インタ信号を画面モニタ・モジュール114に渡し、こ
のモジュールが、ディスプレイ装置14内の図形ポイン
タの位置に基づいてGUI動作を実行する。例えば、画
面モニタ・モジュール114は、ユーザがウィンドウ内
の位置を選択したことに応答して、GUI内でウィンド
ウを浮き出させる。加えて、本発明によると、画面モニ
タ・モジュール114は、図形ポインタがディスプレイ
装置14内に表示された装置(widget)内に配置された
ときの図形ポインタの走査速度を選択的に制御する。最
後に、図形ポインタ信号はディスプレイ装置ドライバ1
06に渡され、このドライバが、図形ポインタ信号中の
データおよび他の表示データをディスプレイ・アダプタ
70に送り、このアダプタが、その表示データを、ディ
スプレイ装置14を駆動するのに用いられるR、Gおよ
びB信号に変換する。このように、マウス18のトラッ
クボール19の動きが、ディスプレイ装置14内に表示
される図形ポインタの相当する動きを生じさせる。
【0029】好ましいOS100は、図形表示にXウィ
ンドウシステムを使用するUnixベースのオペレーティン
グ・システム、例えばIBM社によって提供されるAI
Xである。OpenDocシステムは、既存のMotifおよびXlib
アプリケーションを、コードを最大限に再利用しなが
ら、ソフトウェア部品であるOpenDocオブジェクトに変
換することを可能にする。残念ながら、既存のアプリケ
ーションのグラフィカル・ユーザ・インターフェース・
アプリケーション・コードは、XEventコールバック関数
を広く使用して構成されており、OpenDocパート・ハン
ドラ・コードは、すべてのイベントを一つのエントリポ
イントに運ぶために、OpenDocのODDispatcherオブジェ
クトに依存して構成されている。さらに、OpenDocオブ
ジェクトはまた、標準のXlibイベント列の一部ではない
特定のイベント・タイプを予期する。
【0030】本発明は、OpenDocイベント・ディスパッ
チャをXt組み込み関数イベント・ディスパッチャと合併
することによってこれらの欠点を解消する。すべてのイ
ベントは、標準的なXlibイベントであろうとOpenDoc合
成イベントであろうと、XEvent待ち行列に通して送られ
る。OpenDocディスパッチャ・オブジェクトは、OpenDoc
ユーザ・モデルに基づいて分散しなければならない最小
限のイベントだけを拾い出し、他のイベントがXt組み込
み関数ディスパッチャを通って落ちることを許す。これ
が、既存のXlibアプリケーションがOpenDocオブジェク
トに変換されたとき、それらのアプリケーションがすべ
てのイベント扱いコードを保持することを許す。
【0031】この解決方法を実行する際の難点は、Open
Docディスパッチャによて扱わなければならないイベン
トおよびXt組み込み関数に渡さなければならないイベン
トの最少セットを定義することにある。OpenDocディス
パッチャによって扱うイベントと、組み込み関数ディス
パッチャによって扱うイベントとの分割が正しく行われ
ると、Motif装置をOpenDocパート・ハンドラ・オブジェ
クトに変換することはしごく易しい。イベントの分散が
正しく成されないならば、Motif装置が期待どおりに挙
動しない、すなわち、イベント分散に関してMotifが行
う仮定によって装置が停止するか、あるいは、変換Open
Docオブジェクトどうしが複合ドキュメント環境におい
て互いに協同しない。ここで、本発明の利点をよりよく
理解するために、Apple Computer社によって提供される
MacintoshのOpenDocインプリメンテーションの概要を述
べる。
【0032】図4のブロック図に示すMacintoshのOpenD
ocシステムの中には、OpenDocプロセスに用いるため
の、通常はOS7オペレーティング・システムを使用す
るMacintosh互換性コンピュータ・システム上に、通常
はAIXで使用される一つのXウィンドウ・イベント待
ち行列に類似した一つのイベント待ち行列210があ
る。すべてのイベントがOpenDocシェル・オブジェクト
212を介してOpenDocディスパッチャ218に送ら
れ、このディスパッチャが逆にそれらのイベントを適切
なOpenDocパート・ハンドラ220に送る。これらは、
ユーザ入力(UI)イベントとしても知られるマウスの
クリックおよびキーの押下214の結果であるか、ある
いは、AppleEventsまたはSemanticEventsもしくはHighL
evelEventsとして様々に知られる部品間メッセージ21
6の結果である。すべてのイベントは、OpenDocディス
パッチャ・オブジェクトによって処理され、MacOSの
システム・ディスパッチャは使用されない。
【0033】このインプリメンテーションにおいては、
イベント・データは、MacOSに固有であるEventRecord
として知られる構造にフォーマットされる。EventRecor
dは、Appleイベント・レコードがXEventデータ構造ほど
多くの情報を含まないことにおいてだけ、Xウィンドウ
・システム中でXEvent構造と同じ機能を果たす。AppleE
ventRecordは以下の構造を有している。
【0034】 struct EventRecord { short what; //イベントのタイプ(mouseDown、KeyDownなど) long message; //タイプ・フィールドのさらなる分類(どのキーか?) long when; //イベントが発生したときクロックが刻時 Point where; //イベントが発生したときのカーソル位置 short modifiers;//修飾キー(Ctrl、Altなど)の状態 };
【0035】OpenDocシェル212は、Macintoshバージ
ョンにしたがって、OpenDocデータ構造を初期化したの
ち、Xウィンドウ・アプリケーションに用いるXtMainLo
op()に類似したイベント処理ループ中に載る。このイベ
ント処理ループは、ODDispatcherオブジェクトのメンバ
変数であるfExitフラグが立てられるまで続く。fExitの
値は、ODDispatcher->should exit ()メソッドを呼び出
すことによってアクセスされる。
【0036】その処理ループの最上レベルが、WaitNext
Event()として知られる関数を使用して次のイベントを
イベント待ち行列210から読み出し、そのイベント・
レコード構造を、OpenDocシェル・オブジェクトのDispa
tchEvent()メソッドに渡す。
【0037】ディスパッチャ218のDispatchEvent()
メソッドは、イベントをそのタイプにしたがって範疇分
けし、種々のイベント・タイプ範疇を扱うのに特定のメ
ソッドを呼び出す。MouseDown、KeyDown、Macintosh OS
EventおよびHighLevelEventの各イベントを扱うための
ある特定のメソッドがある。先の4タイプのイベントで
はないイベントを扱うためのデフォルト・メソッドがOD
Dispatcher->dispatch()メソッドである。MouseDown、K
eyDown、OSEventおよびHighLevelEventのイベント・タ
イプを扱うためのすべての特別なイベント扱いメソッド
は、最終的には、基本のODDispatcher->dispatch()メソ
ッドをも呼び出す。
【0038】MouseDownイベントを扱うためのODDispatc
her218のマウスおよびキー・イベント・モジュール
(DispatchMouseDownEvent())が、どのMacintoshウィ
ンドウの中でそのイベントが発生したかを判定する(Ev
enRecord構造中の「where」フィールドの使用によ
る)。このイベントがメニュー内で起こったならば、Di
spatchMenuEvent()メソッドが呼び出される。そうでな
ければ、HandleMouseDownInWindow()がメソッド呼び出
される。
【0039】DispatchMenuEvent()メソッドは、UpdateM
enus()メソッドを呼び出して、OpenDocメニューが正し
くセットされたことを確認したのち、ODDispatcher->Di
spatch()メソッドを呼び出して「モニタ」パートにその
イベントのことを知らせ、選択されたメニュー項目がパ
ートのメニューに載っているならば、そのパートにイベ
ントを扱わせる。ODDispatcher->Dispatch()メソッドが
kODFalseの結果を返すならば、これは、メニュー・イベ
ントがどのパート固有メニューにも載っておらず、した
がって、OpenDocシェル212がそれを扱わなければな
らないことを示す。シェルのHandleMenuCommand()メソ
ッドが呼び出され、このメソッドが、どのシェル「メニ
ュー・コマンド」が選択されたかを判定し(EventRecor
d中の「メッセージ」フィールドに基づく)、そのコマ
ンドをインプリメントする適切なシェル関数が呼び出さ
れる。
【0040】類似のコードがKeyDownイベントを扱い、
それが「メニュー」イベントに相当するのか、あるい
は、パート・ハンドラに渡す(ODDispatcher機構を介し
て)べき通常のKeyDownイベントであるのかを判定す
る。
【0041】HighLevelEventを扱うための特殊なメソッ
ドは、OpenDocのODSessionオブジェクトのGetMessageIn
terface()メソッドを呼び出して、ODMessageInterface
オブジェクトにアクセスする。ODMessageInterfaceオブ
ジェクトのProcessSemanticEvent()メソッドが呼び出さ
れ、同時にHighLevelEventがパラメータとして渡され
る。HighLevelEventのさらなる処理は、MessageInterfa
ceオブジェクトによって実施され、そのOpenDocサブシ
ステムの設計ドキュメントでカバーされている。HighLe
velEvent処理の結果、HighLevelEventタイプに特定的に
登録された目標パート・ハンドラのコールバック・ルー
チンが呼び出される。
【0042】MacintoshのODDispatcherオブジェクトのD
ispatch()メソッドまたはディスパッチ218はまず
「空」イベントがないかチェックし、それらを扱うため
の特殊なメソッドを呼び出す。Xウィンドウ・システム
については「空」イベントはなく、したがって、これは
AIXポートについては不要である。このイベント・タ
イプの「モニタ」パートのリストが検索され、登録され
たモニタごとにDispatch()メソッドが呼び出される。こ
れらのモニタは、イベントを扱いはせず、ただそれを審
査するだけである。最後に、そのイベント・タイプにつ
いてODDispatchモジュール222が検索され、そのDisp
atch()メソッドが呼び出される。このメソッドはブール
値を返し、この値が、全ODDispatcher::Dispatch()返し
値として使用される。そのイベント・タイプについてOD
DispatchModuleが登録されていないならば、「handed=
kODFalse」の返し値が使用される。
【0043】Macintoshインプリメンテーションにおけ
るODDispatchModuleクラスは、実際には、ODStandardDi
spatchModuleクラスを誘導するのに使用されるベース・
クラスである。このODStandardDispatchModuleクラスは
逆に、ポインタをMacDispatchModuleクラスに対して単
に保持して、このクラスのメソッドが最後に呼び出され
るものになるようにする。
【0044】MacDispatchModuleクラスは、OpenDocのU
Iを実際に定義するすべての論理をカプセル化する。Ma
cDispatchModuleは、例えばMouseDownイベントを扱うた
めの基礎をなすUIツールキットの規則に依存するので
はなく、その中に、OpenDoc域のどこにカーソルがある
のか、また、それがいかにして現在のアクティブなパー
トおよびマウス「FocusOwner」に関連するのかを判定す
るコードを有している。AIXポートがXlib、Xt組み込
み関数およびMotifツールキットならびにそれらの既存
のUI挙動規格を利用するならば、このコードの大部分
は不必要である。
【0045】すべてのMacDispatchModule論理がDispatc
hTheEvent()メソッドに宛てて送られ、このメソッド
が、そのイベントの目標に相当するODFrameおよびODFac
etポインタに渡される。DispatchTheEvent()メソッド
は、ODFrame->GetPart()への呼び出しによってパート・
ハンドラ220を検索し、パート・ハンドラのHandleEv
ent()メソッドを呼び出そうと試みて、イベントならび
に与えられたFrameおよびFacetポインタに通過する。パ
ート・ハンドラが、それがイベントを扱わなかったとい
うことを示す値を返すならば、DispatchTheEvent()メソ
ッドは、FrameプロパティDoesPropagateEvent()をチェ
ックし、目標フレームのContainingFrameを使用してそ
のイベントを扱おうと試みる。
【0046】目標パート・ハンドラのHandleEvent()メ
ソッドが呼び出されると、受け取られたUIイベントに
相当するパートについて適切な関数を実行するかどうか
はパート・ハンドラ・コードしだいである。
【0047】FocusSets(種々のイベント・タイプのも
の)およびFocusOwner(イベントが生成されたときカー
ソルがどこに位置しているかにかかわらず、どのパート
・ハンドラがこのタイプのイベントを受けるか)のOpen
Doc概念は、プラットフォーム非依存的な方法でインプ
リメントされる。これはちょうど、イベント・タイプお
よび、所有権が変更される(通常、別のFrameがアクテ
ィブなFrameになる)までこれらのイベント・タイプを
所有する関連のODFrameオブジェクトのテーブルであ
る。
【0048】Macintosh上には一つのイベント待ち行列
があり、また、Xウィンドウ・システム中にも一つのイ
ベント待ち行列があるため、本発明は、同じ基本的なイ
ベント送達設計を使用する。合併したイベント・ディス
パッチの例を図5のブロック図に示す。すべてのイベン
ト(それらのタイプが何であっても、すなわちUIイベ
ントでも意味イベントでも)は、XEventとしてXウィン
ドウのイベント待ち行列302に送られる。OpenDocシ
ェル304が、OpenDocデータ構造を初期化したのち、f
Exitフラグが立てられるまで、待ち行列からXEventを受
け取る(XtAppNextEvent()を用いる)。
【0049】イベント処理ループの最上レベルは次のよ
うなものである。
【0050】
【0051】AIXのOpenDocインプリメンテーション
は、XEvent構造を、MacintoshのEventRecord構造ではな
く、OpenDocディスパッチャ306のDispatchEvent()メ
ソッドに渡す。AIXのDispatchEvent()メソッドは、X
Event構造の「タイプ」フィールドを審査することによ
り、イベント・タイプを決定しなければならない。AI
XのOpenDocライブラリの中で回付されるすべてのODEve
ntはXEventになる。これは、ODEventタイプをXEventに
変更し、ODEventDataをXEventデータ構造として定義す
ることによって達成される。
【0052】MacintoshのOSEventおよびHighLevelEvent
タイプに相当する自然な同等なXEventは存在しない。し
たがって、AIXのOpenDocインプリメンテーションに
おいては、それらは、XClientMessageタイプ・イベン
トとしてAIXのHighLevelEventハンドラ308に送ら
なければならない。実際、MacintoshのOSEventは、アプ
リケーションに対し、いつその「処理状態」が変化した
か(すなわち、ユーザによってアクティブなアプリケー
ションに移されたか)を知らせるためだけに使用され
る。このようなイベント・タイプ支援はAIXインプリ
メンテーションにとって不必要である。
【0053】HighLevelEventタイプは、意味イベント
(HighLevelEvent)を他のアプリケーションからOSA
イベント・マネージャ310を介して送るためだけに使
用される(OpeDocとは別のデーモン・プロセス)。した
がって、HighLevelEventとしてさらに決定することがで
きるClientMessageタイプ・イベントがAIXインプリ
メンテーションで受けるられるごとに、HandleHighLeve
lEvent()を呼び出すことができる。
【0054】mouseDownおよびkeyDownイベントをMacint
oshインプリメンテーションで捕らえる目的は、それが
「メニュー」イベントであるのか、あるいはパートにと
っての通常のUI活動でしかないのかを判定することで
ある。AIXインプリメンテーションにおいては、ODMe
nuBarオブジェクト312が、そのイベントがODMenuBar
312によって扱われるべきかどうかを判定し、すなわ
ち、それが「メニュー」イベントではないならば、その
イベントは正常にディスパッチされる。これは、ODMenu
Bar312についてAIXプラットフォーム固有のメソ
ッドを使用してイベントを審査し、扱う。
【0055】したがって、AIXにおけるDispatchEven
t()メソッドの基本構造は次のとおりである。
【0056】 switch (XEvent.type) { case ButtonPress: case KeyPress: if (! fMenuBar->HandleEvent(XEvent)) this->Dispatch (XEvent); break; case ClientMessage: if (! this->HandleHighLevelEvent(XEvent)) this->Dispatch (XEvent); break; default: this->Dispatch(XEvent); break; }
【0057】ODMenuBar312のHandleEvent()メソッド
は、OpenDocサブシステムの設計ドキュメントに記載さ
れている。
【0058】AIXのOpenDocシェル304のHandleHig
hLevelEvent()メソッドは、Macintoshインプリメンテー
ションに類似している。これは、MessageInterfaceオブ
ジェクトのメソッドを呼び出して、HighLevelEventの処
理を扱う。AIXバージョンはまず、このClientMessag
eが、他のClientMessageのXEventではなく、本当にHigh
LevelEvnetであるかどうかを判定したのち、それをOpen
DocのODMessageInterfaceオブジェクトに渡さなければ
ならない。これは、そのイベントに関連するXアトムを
審査する(ClientMessageイベントを「サブタイプ」す
る手段として)ことによって実施される。イベントがO
SA意味イベントではないならば、個々のパート・ハン
ドラ(特にTaligentパート・ハンドラ)が自らのXClie
ntMessageイベントのセットを用いるかもしれないた
め、このイベントは扱われないままODDispatcherに返さ
れる。AIXのMessageInterfaceの設計はMacintoshイ
ンプリメンテーションとは異なるが、それらの差違は、
SemanticInterface、MessageInterfaceおよびNameResol
verサブシステムの設計ドキュメントでカバーされてい
る。
【0059】AIXのODDispatcherオブジェクト314
は、イベントを二つの方法、すなわち(1)Macintosh
および他のプラットフォームが使用するものと同じOpen
DocのODDispachModule機構を使用する方法、および
(2)デフォルト・イベント送達機構としてのXウィン
ドウ・イベント・システム・ディスパッチャ306(Xt
DispatchEvent())を介する方法でパート・ハンドラに
送ることができるという意味で、より融通性である。パ
ート・ハンドラ開発者は、最初の方法を用い、受け取る
ことを期待する特定のイベント・タイプについてDispat
chModuleを作成することを奨励されるべきである。多数
のパート・ハンドラが同じイベント・タイプを予期して
いるかもしれないとき、これが、ODDispatcher314
が、アービトレーションおよびフォーカス・セットのOp
enDoc概念に基づいて、イベントを特定のパート・ハン
ドラの中央HandleEvent()メソッドに宛てて送ることを
可能にする。
【0060】しかし、競合、例えばタイマ・イベント
と、正確なパート・ハンドラ宛先(XウィンドウID)
がイベント中にすでに貼り込まれているX WorkProcイ
ベントとの競合がないならば、Xイベント・ディスパッ
チャ306を「最後の手段」として使用することが、イ
ベント・タイプの送達にはより効率的であるかもしれな
い。標準のXイベント・ディスパッチャはすでに数多く
のイベント・タイプについて正確なコールバック呼び出
しを扱い、パート・ハンドラは、単にそのコールバック
を登録し(典型的なXウィンドウ・アプリケーションが
現在そうするように)、この特定のパート・ハンドラに
とって特定のイベントが起こるたびにこのルーチンが呼
び出されるということを知ることができる。
【0061】以下、ODDispatcher314のDispatch()メ
ソッドの基本疑似コードを記す。
【0062】 /* モニタ・リストを取得し、このイベント・タイプに登録されたモニタごと にDispatch()メソッドを呼び出す。*/ monitors = GetMonitors (eventType); for (module=First(); iter.IsNotComplete(); module=Next()) module->Dispatch(event); /* このイベント・タイプのDispatchModuleを取得し(登録されているならば )、そのDispatch()メソッドを呼び出す。 このイベント・タイプにDispatchModuleがないならば、XtDispatchEvent() を呼び出し、インストールされたXtコールバックがそれを扱う。 */ handled = kODFalse; if (module = GetDispatchModule(eventType)) { handled = module->Dispatch(event); } if (! handled) { XtDispatchEvent(XEvent); handled = kODTrue; } return handled;
【0063】ODStandardDispatchModuleクラス316の
AIXバージョンは、Macintoshインプリメンテーショ
ンよりも少ない特殊なメソッドを含んで異なるイベント
・タイプを扱う。具体的には、NULLイベント、OSEvent
およびHighLevelEventタイプを扱うための特殊メソッド
は、AIXインプリメンテーションでは不必要である
(MacintoshのNULLおよびOSEventsに相当するXイベン
トはなく、HighLevelEventは、イベント分散サイクル中
のより早い段階で扱われる)。そのうえ、UIイベン
ト、例えばmouseDown、mouseUp、keyDouwn、keyUpを扱
う特殊メソッドは、MacintoshのToolboxのUI(すなわ
ち、GoAwayボックス、Growボックス、ZoomInおよびZoom
Outボックス)を扱うコードを含まない。Xウィンドウ
・システムにおける同等なウィンドウ・マネージャ・タ
イプの操作は、OpenDocシェル304により、そのシェ
ルがXウィンドウ・マネージャに登録する方法を用いて
(XmAddWMProtocolCallback()APIを用いる)捕らえ
られるXウインドウ・システム・メッセージをもたら
す。メニュー・イベントはすでにキャッチされ、AIX
設計のODMenuBarオブジェクトによって扱われている。
【0064】したがって、AIXインプリメンテーショ
ンにおいては、OSStandardDispatchModule316は、Bu
ttonPressおよびKeyPressイベントのみをパート・ハン
ドラ318のHandleEvent()メソッドに送る。ButtonPre
ssイベントは、XウィンドウIDをODEventDataの一部
として含み、これが、そのイベントが属するパート・ハ
ンドラを識別する。KeyPressイベントは、どのハンドラ
がKeyFocusTokenの現在のイベント・アービトレータ・
フォーカスを有しているかに基づいて、適切なパート・
ハンドラに送られる。
【0065】基本的なODStandardDispatchModuleのDisp
atch()メソッドの疑似コードは次のとおりである。
【0066】 switch (XEvent.type) { case ButtonPress: return this->DispatchButtonPressEvent (XEvent); break; case ButtoRelease: return this->DispatchButtonReleaseEvent (XEvent); break; case KeyPress: return this->DispatchKeyPressEvent (XEvent); break; case KeyRelease: return this->DispatchKeyReleaseEvent (XEvent); break; default: return kODFalse; break; }
【0067】図6は、AIXのOpenDocディスパッチャ
314を通過する典型的なイベントの流れを示すブロッ
ク図である。ブロック610で、図5のOpenDocディス
パッチ論理へのイベントが受けられる。まずブロック6
12で、シェル304が、ボタンの押下またはキーの押
下が起こったかどうかを判定する。起こったならば、シ
ステムはブロック614に進み、それがメニュー・イベ
ントであるかどうかを判定したのち、ブロック616に
進み、そこでメニュー・バー312がそのイベントを扱
う。ボタンの押下またはキーの押下が起こっていない
か、メニュー・イベントが決定されていないならば、シ
ステムはブロック618に進む。ブロック618で、シ
ステムは、Xclientメッセージを受けたかどうかを判定
し、受けたならば、ブロック620に進む。ブロック6
20で、システムは、Xclientメッセージ・イベントが
意味イベントであるかどうかを判定し、意味イベントで
あるならば、ブロック622に進む。ブロック622
で、システムは、そのイベントを扱うためにそれを意味
インタフェースに送る。あるいは、イベントがXclient
メッセージ・イベントでも意味イベントでもないなら
ば、システムはブロック628に進む。ブロック628
で、システムは、イベント・タイプのモニタが必要かど
うかを判定し、必要ならば、ブロック630に進み、そ
こで、システムはモニタにイベントを監視させる。その
後、あるいはモニタが不要の場合、システムはブロック
632に進み、そこでシステムは、イベント・タイプの
ディスパッチ・モジュールが必要であるかどうかを判定
する。必要ならば、システムは、ブロック634に進
み、そこで、システム・ディスパッチがディスパッチ・
モジュールを使用して、どのパートかを見いだし、イン
プリメントされるならばPart::HandleEvent()メソッド
を呼び出す。その後、あるいはディスパッチ・モジュー
ルが不要の場合、システムは、ブロック636で、イベ
ントをさらなる処理に備えてディスパッチするためにXt
ディスパッチ・イベント・メソッドに進む。
【0068】上述したように、本発明の態様は、コンピ
ュータ・システム上で具現化しうる特定の「メソッド・
ステップ」に関する。代替態様においては、本発明は、
コンピュータ・システムとで使用するためのコンピュー
タ・プログラム製品として具現化することもできる。当
業者であれば、本発明の関数を定義するプログラムを、
以下を含む多様な形態、すなわち(a)非書き込み可能
な記憶媒体(例えばコンピュータ内の読み出し専用メモ
リ装置、例えばROM86もしくはCD−ROMドライ
ブ24によって読み出し可能な光ディスク)に永久的に
記憶された情報の形態、(b)書き込み可能な記憶媒体
(例えばディスケット・ドライブ22内のフロッピー・
ディスクもしくはハードディスク・ドライブ24)に更
新可能に記憶された情報の形態、または(c)通信媒
体、例えばコンピュータもしくは電話ネットワークを介
してコンピュータに運ばれる情報の形態(これらに限定
はされない)でコンピュータに送達できるということを
容易に察知するはずである。したがって、そのような媒
体が、本発明のメソッド関数に指図するコンピュータ読
み出し可能な指示を運ぶとき、それが本発明の代替態様
を表すということを理解すべきである。
【0069】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)多数のアクティブなグラフィカル・ユーザ・イン
ターフェース・ソフトウェア・システムを支援するコン
ピュータ・システムにおいて、バスと、中央処理装置
と、前記バスを介して前記中央処理装置に結合されたコ
ンピュータ・システム・メモリと、ユーザ入力イベント
を、入力イベントのタイプおよびその予定の宛先に基づ
いて、適切なソフトウェア・システムに宛てて送る、前
記コンピュータ・システム・メモリ中に位置する共用ソ
フトウェア・システム・イベント・ディスパッチャと、
を含むことを特徴とするコンピュータ・システム。 (2)前記共用ソフトウェア・システム・イベント・デ
ィスパッチャによって処理するためのユーザ入力イベン
トを受ける、前記共用ソフトウェア・システム・イベン
ト・ディスパッチャに結合されたイベント待ち行列をさ
らに含む上記(1)記載のコンピュータ・システム。 (3)前記ユーザ入力イベントをメニュー・イベントま
たは意味イベントのいずれかとして識別する、前記イベ
ント待ち行列および前記イベント・ディスパッチャに結
合された共用ソフトウェア・システム・シェルをさらに
含む上記(1)記載のコンピュータ・システム。 (4)前記イベントに関連する適切なパート・ハンドラ
によって操作するための、前記イベント・ディスパッチ
ャによって受けられ、分散された、選択されたイベント
・タイプを扱う、前記イベント・ディスパッチャに接続
されたディスパッチ・モジュールをさらに含む上記
(1)記載のコンピュータ・システム。 (5)前記ソフトウェア・システムの一つがOpenDocソ
フトウェア・システムである上記(1)記載のコンピュ
ータ・システム。 (6)前記OpenDocソフトウェア・システムが前記イベ
ントのタイプおよび宛先によって識別される上記(5)
記載のコンピュータ・システム。 (7)前記所与のパート・ハンドラが、定義されたアー
ビトレーションおよびフォーカス・セットに基づいて選
択される上記(6)記載のコンピュータ・システム。 (8)前記ソフトウェア・システムの一つがXウィンド
ウ・ソフトウェア・システムである上記(1)記載のコ
ンピュータ・システム。 (9)前記Xウィンドウ・ソフトウェア・システムが前
記イベントの前記宛先およびタイプによって識別される
上記(8)記載のコンピュータ・システム。 (10)同じコンピュータ・システム上で動作すること
ができる多数のアクティブなグラフィカル・ユーザ・イ
ンターフェース・ソフトウェア・システムを支援するた
めのコンピュータ・プログラム製品において、ユーザ入
力イベントを、入力イベントのタイプおよびその予定の
宛先に基づいて、適切なソフトウェア・システムに宛て
て送る、前記ソフトウェア・システムの間でソフトウェ
ア・システム・イベントをディスパッチするためのコン
ピュータ使用可能コード手段と、前記ソフトウェア・シ
ステムによって共用される前記ソフトウェア・システム
・イベント・ディスパッチ手段によって処理するための
ユーザ入力イベントを行列させるためのコンピュータ使
用可能コード手段と、を含むことを特徴とするコンピュ
ータ・プログラム製品。 (11)前記ユーザ入力イベントをメニュー・イベント
または意味イベントのいずれかとして識別するためのコ
ンピュータ使用可能コード手段をさらに含む上記(1
0)記載のコンピュータ・プログラム製品。 (12)前記イベントに関連する適切なパート・ハンド
ラによって操作するための、前記ディスパッチ手段によ
って受けられ、分散された、選択されたイベント・タイ
プを扱うためのコンピュータ使用可能コード手段をさら
に含む上記(10)記載のコンピュータ・プログラム製
品。 (13)前記ソフトウェア・システムの一つがOpenDoc
ソフトウェア・システムである上記(10)記載のコン
ピュータ・プログラム製品。 (14)前記OpenDocソフトウェア・システムが前記イ
ベントのタイプおよび宛先によって識別される上記(1
3)記載のコンピュータ・プログラム製品。 (15)前記所与のパート・ハンドラが、定義されたア
ービトレーションおよびフォーカス・セットに基づいて
選択される上記(14)記載のコンピュータ・プログラ
ム製品。 (16)前記ソフトウェア・システムの一つがXウィン
ドウ・ソフトウェア・システムである上記(10)記載
のコンピュータ・プログラム製品。 (17)前記Xウィンドウ・ソフトウェア・システムが
前記イベントの前記宛先およびタイプによって識別され
る上記(16)記載のコンピュータ・プログラム製品。 (18)多数のアクティブなグラフィカル・ユーザ・イ
ンターフェース・ソフトウェア・システムを動作させる
コンピュータ・システムにおける、前記多数のソフトウ
ェア・システムに対してイベント分散を提供する方法に
おいて、ユーザ入力イベントを受けるステップと、前記
ユーザ入力イベントがメニュー・アクセス・イベントで
あるかどうかを判定するステップと、前記ユーザ入力イ
ベントがメニュー・アクセス・イベントであるならば、
前記コンピュータ・システム内のメニュー・バー・イベ
ント・ハンドラによって前記メニュー・アクセス・イベ
ントを処理するステップと、前記ユーザ入力イベントが
メニュー・アクセス・イベントではないならば、前記ユ
ーザ入力イベントが正規のイベントであるかどうかを判
定するステップと、前記ユーザ入力イベントが正規のイ
ベントであるならば、前記イベントが意味イベントであ
るかどうかを判定し、意味イベントであるならば、前記
イベントを意味インタフェース・イベント・ハンドラに
送るステップと、前記イベントが意味イベントではない
ならば、前記イベントのタイプを決定するステップと、
前記イベントのソフトウェア・システム宛先を決定する
ステップと、前記イベントを前記ソフトウェア・システ
ム宛先にディスパッチするステップと、を含むことを特
徴とする方法。
【図面の簡単な説明】
【図1】本発明の方法を具現化するために用いることが
できるデータ処理システムの好ましい実施態様を示す図
である。
【図2】データ処理システムのシステム装置の主要構成
部分を示すブロック図である。
【図3】起動直後のデータ処理システムのソフトウェア
構成を示す図である。
【図4】Macintosh互換性コンピュータ・システムにお
ける一つのイベント待ち行列を示すブロック図である。
【図5】本発明にしたがって合併されるイベント・ディ
スパッチャを示すブロック図である。
【図6】本発明によるAIXのOpenDocディスパッチャ
を通過する典型的なイベントの流れを示すブロック図で
ある。
【符号の説明】
302 Xイベント待ち行列 304 AIX OpenDocシェル 306 Xイベント・ディスパッチャ 308 AIX HighLevelEventハンドラ 310 0SAイベント・マネージャ 312 AIX ODMenuBar 314 AIX ODdispatcher 316 AIX OSStandardDispatchModule 318 AIX OpenDocパート・ハンドラ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリストファー・ジョン・ネルソン アメリカ合衆国78752、 テキサス州 オ ースティン ミィランダ・ドライブ 6803 (72)発明者 ランス・ジェフリー・パープル アメリカ合衆国78751、 テキサス州オー スティン デュバル・ストリート 4800 (72)発明者 レイ・アレン・ウィリアムソン アメリカ合衆国78727、 テキサス州オー スティン エヴァーレスト レーン 4615 (72)発明者 チン・ユン・ヤン アメリカ合衆国 カリフォルニア州サラト ガ プエンテ コート 20000

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】多数のアクティブなグラフィカル・ユーザ
    ・インターフェース・ソフトウェア・システムを支援す
    るコンピュータ・システムにおいて、 バスと、 中央処理装置と、 前記バスを介して前記中央処理装置に結合されたコンピ
    ュータ・システム・メモリと、 ユーザ入力イベントを、入力イベントのタイプおよびそ
    の予定の宛先に基づいて、適切なソフトウェア・システ
    ムに宛てて送る、前記コンピュータ・システム・メモリ
    中に位置する共用ソフトウェア・システム・イベント・
    ディスパッチャと、を含むことを特徴とするコンピュー
    タ・システム。
  2. 【請求項2】前記共用ソフトウェア・システム・イベン
    ト・ディスパッチャによって処理するためのユーザ入力
    イベントを受ける、前記共用ソフトウェア・システム・
    イベント・ディスパッチャに結合されたイベント待ち行
    列をさらに含む請求項1記載のコンピュータ・システ
    ム。
  3. 【請求項3】前記ユーザ入力イベントをメニュー・イベ
    ントまたは意味イベントのいずれかとして識別する、前
    記イベント待ち行列および前記イベント・ディスパッチ
    ャに結合された共用ソフトウェア・システム・シェルを
    さらに含む請求項1記載のコンピュータ・システム。
  4. 【請求項4】前記イベントに関連する適切なパート・ハ
    ンドラによって操作するための、前記イベント・ディス
    パッチャによって受けられ、分散された、選択されたイ
    ベント・タイプを扱う、前記イベント・ディスパッチャ
    に接続されたディスパッチ・モジュールをさらに含む請
    求項1記載のコンピュータ・システム。
  5. 【請求項5】前記ソフトウェア・システムの一つがOpen
    Docソフトウェア・システムである請求項1記載のコン
    ピュータ・システム。
  6. 【請求項6】前記OpenDocソフトウェア・システムが前
    記イベントのタイプおよび宛先によって識別される請求
    項5記載のコンピュータ・システム。
  7. 【請求項7】前記所与のパート・ハンドラが、定義され
    たアービトレーションおよびフォーカス・セットに基づ
    いて選択される請求項6記載のコンピュータ・システ
    ム。
  8. 【請求項8】前記ソフトウェア・システムの一つがXウ
    ィンドウ・ソフトウェア・システムである請求項1記載
    のコンピュータ・システム。
  9. 【請求項9】前記Xウィンドウ・ソフトウェア・システ
    ムが前記イベントの前記宛先およびタイプによって識別
    される請求項8記載のコンピュータ・システム。
  10. 【請求項10】同じコンピュータ・システム上で動作す
    ることができる多数のアクティブなグラフィカル・ユー
    ザ・インターフェース・ソフトウェア・システムを支援
    するためのコンピュータ・プログラム製品において、 ユーザ入力イベントを、入力イベントのタイプおよびそ
    の予定の宛先に基づいて、適切なソフトウェア・システ
    ムに宛てて送る、前記ソフトウェア・システムの間でソ
    フトウェア・システム・イベントをディスパッチするた
    めのコンピュータ使用可能コード手段と、 前記ソフトウェア・システムによって共用される前記ソ
    フトウェア・システム・イベント・ディスパッチ手段に
    よって処理するためのユーザ入力イベントを行列させる
    ためのコンピュータ使用可能コード手段と、を含むこと
    を特徴とするコンピュータ・プログラム製品。
  11. 【請求項11】前記ユーザ入力イベントをメニュー・イ
    ベントまたは意味イベントのいずれかとして識別するた
    めのコンピュータ使用可能コード手段をさらに含む請求
    項10記載のコンピュータ・プログラム製品。
  12. 【請求項12】前記イベントに関連する適切なパート・
    ハンドラによって操作するための、前記ディスパッチ手
    段によって受けられ、分散された、選択されたイベント
    ・タイプを扱うためのコンピュータ使用可能コード手段
    をさらに含む請求項10記載のコンピュータ・プログラ
    ム製品。
  13. 【請求項13】前記ソフトウェア・システムの一つがOp
    enDocソフトウェア・システムである請求項10記載の
    コンピュータ・プログラム製品。
  14. 【請求項14】前記OpenDocソフトウェア・システムが
    前記イベントのタイプおよび宛先によって識別される請
    求項13記載のコンピュータ・プログラム製品。
  15. 【請求項15】前記所与のパート・ハンドラが、定義さ
    れたアービトレーションおよびフォーカス・セットに基
    づいて選択される請求項14記載のコンピュータ・プロ
    グラム製品。
  16. 【請求項16】前記ソフトウェア・システムの一つがX
    ウィンドウ・ソフトウェア・システムである請求項10
    記載のコンピュータ・プログラム製品。
  17. 【請求項17】前記Xウィンドウ・ソフトウェア・シス
    テムが前記イベントの前記宛先およびタイプによって識
    別される請求項16記載のコンピュータ・プログラム製
    品。
  18. 【請求項18】多数のアクティブなグラフィカル・ユー
    ザ・インターフェース・ソフトウェア・システムを動作
    させるコンピュータ・システムにおける、前記多数のソ
    フトウェア・システムに対してイベント分散を提供する
    方法において、 ユーザ入力イベントを受けるステップと、 前記ユーザ入力イベントがメニュー・アクセス・イベン
    トであるかどうかを判定するステップと、 前記ユーザ入力イベントがメニュー・アクセス・イベン
    トであるならば、前記コンピュータ・システム内のメニ
    ュー・バー・イベント・ハンドラによって前記メニュー
    ・アクセス・イベントを処理するステップと、 前記ユーザ入力イベントがメニュー・アクセス・イベン
    トではないならば、前記ユーザ入力イベントが正規のイ
    ベントであるかどうかを判定するステップと、 前記ユーザ入力イベントが正規のイベントであるなら
    ば、前記イベントが意味イベントであるかどうかを判定
    し、意味イベントであるならば、前記イベントを意味イ
    ンタフェース・イベント・ハンドラに送るステップと、 前記イベントが意味イベントではないならば、前記イベ
    ントのタイプを決定するステップと、 前記イベントのソフトウェア・システム宛先を決定する
    ステップと、 前記イベントを前記ソフトウェア・システム宛先にディ
    スパッチするステップと、を含むことを特徴とする方
    法。
JP8345919A 1996-01-16 1996-12-25 多数のウィンドウのイベント分散を合併する方法およびシステム Pending JPH09204312A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US58718296A 1996-01-16 1996-01-16
US08/587182 1996-01-16

Publications (1)

Publication Number Publication Date
JPH09204312A true JPH09204312A (ja) 1997-08-05

Family

ID=24348721

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8345919A Pending JPH09204312A (ja) 1996-01-16 1996-12-25 多数のウィンドウのイベント分散を合併する方法およびシステム

Country Status (1)

Country Link
JP (1) JPH09204312A (ja)

Similar Documents

Publication Publication Date Title
US5745115A (en) Graphical user interface having a shared menu bar for opened applications
EP0945797B1 (en) Method and apparatus for object-oriented interrupt system
US9201703B2 (en) Sharing kernel services among kernels
EP2132640B1 (en) Abstracting operating environment from operating system
US5566346A (en) System for constructing hardware device interface software systems independent of operating systems including capability of installing and removing interrupt handlers
US5889988A (en) Debugger for debugging tasks in an operating system virtual device driver
US6678712B1 (en) Method and system for executing a program under one of a plurality of mutually exclusive operating environments
EP1763774B1 (en) Multiple computer architecture with replicated memory fields
US6513057B1 (en) Heterogeneous symmetric multi-processing system
US5305455A (en) Per thread exception management for multitasking multithreaded operating system
US7487511B2 (en) Method and apparatus for providing and integrating high-performance message queues in a interface environment
US6226693B1 (en) Method and system for logical event management
US7543301B2 (en) Shared queues in shared object space
JPH08212086A (ja) オフィスマシンのオペレーティングシステム及び方法
US5630074A (en) Inter-program communication and scheduling method for personal computers
US8037480B1 (en) System and method for creating thread-level message hooks
US6337702B1 (en) Method and system for graphically indicating a valid input within a graphical user interface
EP0543610A2 (en) Data processing system
US5463764A (en) Method and system for system debugging through a keyboard device driver
JPH08508125A (ja) マルチレベル割込みシステム
JPH05189192A (ja) ディスプレイ・アダプタ・インターフェース装置及び方法
US7426582B1 (en) Method, system, and apparatus for servicing PS/2 devices within an extensible firmware interface environment
US7415547B1 (en) Tracking states of communication between PS/2 hardware and hardware drivers within an extensible firmware interface environment
JPH09204312A (ja) 多数のウィンドウのイベント分散を合併する方法およびシステム
EP0948769A1 (en) Real time services in backwardly compatible operating systems

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040413