次: , 前: Event Examples, 上: Input Events


20.5.12 イベントの分類

各イベントにはイベント型(event type)があって、 キーバインディング処理のためにイベントを分類します。 キーボードイベントでは、イベント型はイベントの値に等しいです。 したがって、文字に対するイベント型は文字であり、 ファンクションキーに対するイベント型はシンボルそのものです。 リストであるイベントでは、イベント型はリストのcarにあるシンボルです。 したがって、イベント型はつねにシンボルか文字です。

イベント型が同じであるイベントは、キーバインディングに関する限り同じです。 つまり、それらは同じコマンドを実行します。 しかし、これは、それらが必ずしも同じことを行うという意味ではありません。 イベント全体を調べてなにを行うかを決定するコマンドもあります。 たとえば、マウスイベントの生起位置を使って、 バッファのどの部分を処理するかを決めるコマンドもあります。

イベントをおおまかに分類すると有用な場合もあります。 たとえば、他の修飾キーやマウスボタンには関係なしに、 <META>キーが使われているイベントかどうか調べたいことがあるでしょう。

関数event-modifiersevent-basic-typeは、 そのような情報を便利に与えるためのものです。

— 機能: event-modifiers event

この関数は、eventにある修飾子のリストを返す。 修飾子はシンボルであり、shiftcontrolmetaalthypersuperである。 さらに、マウスイベントシンボルの修飾子リストには、 必ず、clickdragdownの1つが含まれる。

引数eventは、イベントオブジェクト全体であるか、単なるイベント型である。

例を示す。

          (event-modifiers ?a)
               => nil
          (event-modifiers ?\C-a)
               => (control)
          (event-modifiers ?\C-%)
               => (control)
          (event-modifiers ?\C-\S-a)
               => (control shift)
          (event-modifiers 'f5)
               => nil
          (event-modifiers 's-f5)
               => (super)
          (event-modifiers 'M-S-f5)
               => (meta shift)
          (event-modifiers 'mouse-1)
               => (click)
          (event-modifiers 'down-mouse-1)
               => (down)
     

クリックイベントに対する修飾子リストにはclickが明示的に含まれるが、 イベントシンボルの名前自体には`click'は含まれない。

— 機能: event-basic-type event

この関数は、eventにあるキーやマウスボタンを返す。 たとえばつぎのとおり。

          (event-basic-type ?a)
               => 97
          (event-basic-type ?A)
               => 97
          (event-basic-type ?\C-a)
               => 97
          (event-basic-type ?\C-\S-a)
               => 97
          (event-basic-type 'f5)
               => f5
          (event-basic-type 's-f5)
               => f5
          (event-basic-type 'M-S-f5)
               => f5
          (event-basic-type 'down-mouse-1)
               => mouse-1
     
— 機能: mouse-movement-p object

この関数は、objectがマウス移動のイベントならばnil以外を返す。

— 機能: event-convert-list list

この関数は、修飾子名と基本イベント型のリストを それらが示すイベント型に変換する。 たとえばつぎのとおり。

          (event-convert-list '(control ?a))
               => 1
          (event-convert-list '(control meta ?a))
               => -134217727
          (event-convert-list '(control super f1))
               => C-s-f1