I found copied events (like xcb::x::KeyReleaseEvent) are implemented by aliasing to their original event type.
For example:
pub type KeyReleaseEvent = KeyPressEvent;
But, this makes these types share the same event number.
Because of that we cannot create an correct instance of KeyReleaseEvent since it is actually KeyPressEvent.