マウス ルーチン

注: CBL マウス ルーチンは x"AF" マウス ルーチンとは連動しません。

ルーチンの使用

マウスは、オプションのリストから選択したり、画面上でオブジェクトを移動したりするアプリケーションで役に立ちます。

これらのルーチンを使用するためには、接続されているマウスがシステムで認識されていることを確認してください。

マウス ポインターがある画面の領域で ANSI ACCEPT や DISPLAY 文操作の実行中は、マウスを隠す必要があります。

ルーチンの説明で参照される属性は、画面の属性であり、ユーザー属性ではありません。画面の左上隅が行 0、列 0 になります。

マウスのイベント

マウスが移動されたり、ボタンが押されたり放されたりすると、マウスのハードウェアが割り込みを発生させます。マウスのデバイス ドライバーは、制御を行い、設定するマスクによって、イベントをキューに保存したり、無視したりします。これにより、アプリケーションがイベントを読み込む前に、後続するイベントが発生した場合でも、イベントが失われることはありません。マウス ルーチンで、イベントのキューを読み込み、キュー内のイベント数を決定できます。

イベントが生成されると、その内容が event-data と呼ばれるデータ構造体に保存されます。マスクが許可されている場合 (次を参照) には、キューに追加されます。event-data の構成は、次のとおりです。

   event-type           pic x(2) comp-x.
         event-time           pic x(4) comp-x.
         event-row            pic x(2) comp-x.
         event-col            pic x(2) comp-x.

パラメーターは次のとおりです。

event-type
動作 (つまり、状態の変更) は、次のとおりです。
ビット 7 から 4 予約済み
ビット 3 ボタン 3 を押した。
ビット 2 ボタン 2 を押した。
ビット 1 ボタン 1 を押した。
ビット 0 マウスが移動した。
ボタンを放すと、対応するボタンのビットが 1 から 0 に変更されます。たとえば、マウスを移動し、同時にボタン 1 が押されると、event-type は 3 (ビット 0 およびビット 1) になります。
event-time
イベントが発生したときと、任意の開始時間との間の経過時間。
event-row
イベントが発生したときのマウスの位置の行。
event-col
イベントが発生したときのマウスの位置の列。

イベント マスク

イベント マスクは、どのイベントがキューに置かれたか、または、どのイベントを無視するかをシステムに通知します。event-type と同じ構造です。イベントは、その対応するマスクのビットがオンであるか、または、マスク ビットがオンになっている他の状態がオンである場合にのみ、キューに置かれます。event-data がキューに置かれると、各状態のビットは正しく設定され、マスクは無効になります。

たとえば、「マウスが移動した」に対するマスク ビットがオフであったり、マウス ボタンを押し続けてそのボタンのマスク ビットがオフであったりしても、オペレーターがマウスを移動すると、イベントが発生します。