You need to be able to detect and recognise key presses. You should find examples and tutorials showing how to do that.
You want to be able to map key presses onto generated characters. I would do that using a little state machine which keeps track of the state of the multiple key press sequences including timeouts etc. If you're familiar with state machines this will be fairly straightforward - otherwise, you have some learning to do. I don't know whether you are going to provide any user feedback about what character they are generating - I can imagine this being quite fiddly to use without that feedback.
You need to generate the synthetic keyboard input event corresponding to each entered character. It's possible to do this with a UNO and you will find tutorials showing how to do it, but you will find it easier on aq Leonardo since this supports it as a standard feature.