Loading a schema as JSON isn't quite sufficient to parse the extra details of the context (for reasons I'm not sure of, we have an internal method that does the whole process from a JSON file, but don't expose it.
As a third party author, you need to make your own event descriptor(s) for as many custom events as you want to add. You can either create the JsonSchema manually in code, or use the same parsing methodology. Just take every object inside your events
array and (for simplicity) move them into their own files. Then load these resources as well as your main component schema, and register your event descriptors. I added more detail to the previous thread you referenced with the solution to that OP's issue.