本節では、マウスボタンイベントやモーションイベント内のデータを 参照するための便利な関数について述べます。
つぎの2つの関数は、以下の形式のリストであるマウスボタンイベントの 開始位置や終了位置を返します。
(window buffer-position (x . y) timestamp)
イベントeventの開始位置を返す。
eventがクリックイベントやボタン押し下げイベントであると、 イベントの位置を返す。 eventがドラッグイベントであると、ドラッグの開始位置を返す。
イベントeventの終了位置を返す。
eventがドラッグイベントであると、 ユーザーがマウスボタンを離したときの位置を返す。 eventがクリックイベントかボタン押し下げイベントであると、 実際の値は開始位置であり、 その種のイベントにある唯一の位置情報である。
つぎの5つの関数は、上に述べた位置情報のリストを引数として、 そのさまざまな部分を返す。
positionの(文字単位の)行(row)とコラム(col)の座標を コンスセル
(
col.
row)
として返す。 これらは実際にはposition内のxとyの値から計算される。
つぎの関数はスクロールバーでのイベントを解読するのに便利です。
スクロールバー内でのイベントから、スクロールバーに対する縦方向の位置を返す。 その値は2つの整数を含むコンスセル
(
portion.
whole)
であり、 その比は位置の割合を表す。
この関数は(実質的には)ratioにtotalを掛け、 結果を整数に丸める。 引数ratioは数ではなく
(
num.
denom)
であり、 典型的にはscroll-bar-event-ratio
が返す値である。この関数はスクロールバー内での位置を バッファ内での位置へ換算するのに便利である。 つぎのように行う。
(+ (point-min) (scroll-bar-scale (posn-x-y (event-start event)) (- (point-max) (point-min))))スクロールバー内でのイベントには、 xy座標のかわりに比を表す2つの整数があることに注意。