For example, wl_pointer_listener has
enter, leave, motion, button, axis, axis_source, axis_stop, (axis_discrete prior to v8), and frame
But I'm really only interested in motion and button. Even frame seems unnecessary in my situation. But I'm not sure if it's safe to leave those callbacks NULL. I haven't found documentation that specifies if that is allowed or not.
After experimenting it seems they are required to exist even if the implementation is empty.