+MotionData *new_motion_data(Window window, Time time, unsigned int state,
+ unsigned int button, MouseContext context,
+ MouseAction action, int xroot, int yroot,
+ const otk::Point &initpos, const otk::Rect &initarea)
+{
+ MotionData *data = PyObject_New(MotionData, &MotionData_Type);
+ data->window = window;
+ data->time = time;
+ data->state = state;
+ data->button = button;
+ data->context= context;
+ data->action = action;
+ data->xroot = xroot;
+ data->yroot = yroot;
+ data->pressx = initpos.x();
+ data->pressy = initpos.y();
+ data->press_clientx = initarea.x();
+ data->press_clienty = initarea.y();
+ data->press_clientwidth = initarea.width();
+ data->press_clientheight = initarea.height();
+ return data;
+}
+
+ButtonData *new_button_data(Window window, Time time, unsigned int state,
+ unsigned int button, MouseContext context,
+ MouseAction action)
+{
+ ButtonData *data = PyObject_New(ButtonData, &ButtonData_Type);
+ data->window = window;
+ data->time = time;
+ data->state = state;
+ data->button = button;
+ data->context= context;
+ data->action = action;
+ return data;
+}
+
+KeyData *new_key_data(Window window, Time time, unsigned int state,
+ unsigned int key)
+{
+ KeyData *data = PyObject_New(KeyData, &KeyData_Type);
+ data->window = window;
+ data->time = time;
+ data->state = state;
+ data->key = key;
+ return data;
+}
+