このセクションではマウスボタンやモーションイベント内のデータアクセスに役立つ関数を説明します。同じ関数を使用してキーボードイベントデータにもアクセスできますが、キーボードイベントに不適切なデータ要素は0かnil
になります。
以下の2つの関数は、マウスイベントの位置を指定するマウス位置リスト(クリックイベントを参照)をリターンします。
これはeventの開始位置をリターンする。
eventがクリックイベントかボタンダウンイベントなら、この関数はそのイベントの位置をリターンする。eventがドラッグイベントなら、そのドラッグの開始位置をリターンする。
これはeventの終了位置をリターンする。
eventがドラッグイベントなら、この関数はユーザーがマウスボタンをリリースした位置をリターンする。eventがクリックイベントかボタンダウンイベントなら、値はそのイベント固有の開始位置となる。
以下の関数は引数にマウス位置リストを受け取り、そのリストのさまざまな部分をリターンします:
positionがあったウィンドウをリターンする。positionが最初にイベントがあったフレームの外部の位置を表す場合には、かわりにそのフレームをリターンする。
position内に記録されたウィンドウエリアをリターンする。そのウィンドウのテキストエリアでイベントが発生したときはnil
、それ以外ではイベントがどこで発生したかを識別するシンボルをリターンする。
position内のバッファー位置をリターンする。ウィンドウのテキストエリア、マージンエリア、フリンジでイベントが発生したときはバッファー位置を識別する整数値、それ以外では値は未定義。
position内のピクセル単位のxy座標を、コンスセル(x . y)
でリターンする。これらはposn-window
により与えられるウィンドウにたいする相対座標である。
以下はあるウィンドウのテキストエリア内のウィンドウ相対座標をフレーム相対座標に変換する方法を示す例:
(defun frame-relative-coordinates (position) "POSITIONのフレーム相対座標をリターンする。 POSITIONはウィンドウのテキストエリアにあるものとする。" (let* ((x-y (posn-x-y position)) (window (posn-window position)) (edges (window-inside-pixel-edges window))) (cons (+ (car x-y) (car edges)) (+ (cdr x-y) (cadr edges)))))
この関数はpositionで記述されるのバッファー位置で推定される列と行を含むコンスセル(col . row)
をリターンする。リターン値はpositionにたいするxとyの値より計算され、そのフレームのデフォルト文字幅とデフォルト行高(行間スペースを含む)の単位で与えられる(そのため実際の文字サイズが非デフォルト値の場合には、実際の行と列は計算された値とは異なるかもしれない)オプションの。window引数が非nil
の場合には、フレームではなくpositionで示されるウィンドウのデフォルト文字幅を使用する(これはたとえば非デフォルトのズームレベルでバッファーを表示しているウィンドウで違いが生じる)。
rowはそのテキストエリアの上端から数えられることに注意。positionにより与えられるウィンドウがヘッダーライン(ウィンドウのヘッダーラインを参照)やタブラインをもつなら、それらはrowの数に含まれない。
position内の実際の行と列をコンスセル(col . row)
でリターンする。値はposition与えられるウィンドウの実際の行と列。クリックイベントを参照のこと。positionが実際のポジション値を含まなければ、この関数はnil
をリターンする。この場合にはおおよその値を取得するためにposn-col-row
を使用できる。
この関数はタブ文字やイメージによるビジュアル列数のように、ディスプレイ上の文字のビジュアル幅を意味しない。標準的な文字単位の座標が必要なら、かわりにposn-col-row
を使用すること。
positionに記述された文字列オブジェクトをリターンする。nil
(positionがバッファーテキストを記述することを意味する)、またはコンスセル(string . string-pos)
のいずれか。
positionにあるイメージオブジェクトをリターンする。nil
(positionにイメージがない)、またはイメージspec (image …)
のいずれか。
positionにより記述されるイメージオブジェクトか文字列オブジェクトをリターンする。nil
(positionがバッファーテキストを記述することを意味する)、イメージ(image …)
、またはコンスセル(string . string-pos)
のいずれか。
positionで記述されるオブジェクトの左上隅からのピクセル単位のxy座標を、コンスセル(dx . dy)
でリターンする。positionがバッファーテキストを記述する場合には、その位置にもっとも近いバッファーテキストの相対位置をリターンする。
positionで記述されるオブジェクトのピクセル幅とピクセル高さを、コンスセル(width
. height)
でリターンする。positionがバッファー位置を記述する場合には、その位置の文字のサイズをリターンする。
positionのタイムスタンプをリターンする。これはミリ秒で表したイベント発生時刻である。このようなタイムスタンプは使用しているウィンドウシステムに応じてさまざまに異なる任意の開始時刻からの相対時刻として報告される。たとえばXウィンドウシステムでは、そのXサーバー開始から経過したミリ秒数となる。
以下の関数は与えられた特定のバッファー、またはスクリーン位置によって位置リストを計算します。上述の関数でこの位置リスト内のデータにアクセスできます。
この関数はwindow内の位置posにたいする位置リストをリターンする。posのデフォルトはwindow内のポイント、windowのデフォルトは選択されたウィンドウ。
window内でposが不可視なら、posn-at-point
はnil
をリターンする。
この関数は指定されたフレームかウィンドウframe-or-window(デフォルトは選択されたウィンドウ)内のピクセル座標xとyに対応する位置情報をリターンする。xとyは、選択されたウィンドウのテキストエリアにたいする相対座標である。wholeが非nil
なら、x座標はスクロールバー、マージン、フリンジを含むウィンドウエリア全体にたいする相対座標。
この変数が非nil
なら、マウス位置リストのposn-point
は、マウスポイント自体の下にあるグリフ位置とは対照的に、マウスクリックにもっとも近いようなグリフの最左エッジの位置にセットされる。たとえばxに9
(列0にある幅10の文字を含む)をセットしてposn-at-x-y
を呼び出すと、マウス位置リストに保存されるのはその文字の前ではなく後になる。