+static VALUE c_ev_key_down_init (VALUE self, VALUE event)
+{
+ VALUE c = CLASS_OF (self);
+ Ecore_X_Event_Key_Down *e = (void *) event;
+
+ rb_define_attr (c, "keyname", 1, 0);
+ rb_define_attr (c, "keysymbol", 1, 0);
+ rb_define_attr (c, "key_compose", 1, 0);
+ rb_define_attr (c, "modifiers", 1, 0);
+ rb_define_attr (c, "window", 1, 0);
+ rb_define_attr (c, "event_window", 1, 0);
+ rb_define_attr (c, "time", 1, 0);
+
+ rb_iv_set (self, "@keyname",
+ e->keyname ? rb_str_new2 (e->keyname) : Qnil);
+ rb_iv_set (self, "@keysymbol",
+ e->keysymbol ? rb_str_new2 (e->keysymbol) : Qnil);
+ rb_iv_set (self, "@key_compose",
+ e->key_compose ? rb_str_new2 (e->key_compose) : Qnil);
+ rb_iv_set (self, "@modifiers", INT2FIX (e->modifiers));
+ rb_iv_set (self, "@window", TO_ECORE_X_WINDOW (Qnil, e->win));
+ rb_iv_set (self, "@event_window",
+ TO_ECORE_X_WINDOW (Qnil, e->event_win));
+ rb_iv_set (self, "@time", UINT2NUM (e->time));
+
+ return self;
+}
+