+ rb_define_attr (c, "timestamp", 1, 0);
+
+ rb_iv_set (self, "@keyname",
+ e->keyname ? rb_str_new2 (e->keyname) : Qnil);
+ rb_iv_set (self, "@key",
+ e->key ? rb_str_new2 (e->key) : Qnil);
+ rb_iv_set (self, "@string",
+ e->string ? rb_str_new2 (e->string) : Qnil);
+ rb_iv_set (self, "@compose",
+ e->compose ? rb_str_new2 (e->compose) : Qnil);
+ rb_iv_set (self, "@modifiers", INT2FIX (e->modifiers));
+ rb_iv_set (self, "@window", TO_ECORE_X_WINDOW (Qnil, e->window));
+ rb_iv_set (self, "@root_window",
+ TO_ECORE_X_WINDOW (Qnil, e->root_window));
+ rb_iv_set (self, "@event_window",
+ TO_ECORE_X_WINDOW (Qnil, e->event_window));
+ rb_iv_set (self, "@timestamp", UINT2NUM (e->timestamp));
+
+ return self;
+}
+
+static VALUE c_ev_mouse_button_down_init (VALUE self, VALUE event)
+{
+ VALUE c = CLASS_OF (self);
+ Ecore_Event_Mouse_Button *e = (void *) event;
+
+ rb_define_attr (c, "buttons", 1, 0);
+ rb_define_attr (c, "modifiers", 1, 0);
+ rb_define_attr (c, "x", 1, 0);
+ rb_define_attr (c, "y", 1, 0);
+ rb_define_attr (c, "root", 1, 0);
+ rb_define_attr (c, "window", 1, 0);
+ rb_define_attr (c, "root_window", 1, 0);
+ rb_define_attr (c, "event_window", 1, 0);
+ rb_define_attr (c, "timestamp", 1, 0);
+ rb_define_attr (c, "double_click", 1, 0);
+ rb_define_attr (c, "triple_click", 1, 0);