The main issue is the HID standard defines usage numbers for the various fixed key positions, not their characters.
Apparently this was decided in the formative days of USB where keyboard manufacturers refused to adopt any protocol which requires customizing the electronics in keyboard. They needed to make every keyboard identical and merely put different printing on the key caps. Keyboard support was considered essential to the success of USB, so even though the rest of the protocol goes to great lengths to express semantic meaning and internationalize everything (at least in the early-90s vision of 16 bit unicode being universal), keyboards have HID usage numbers defined in terms of physical key position.
So as a USB keyboard, you can only send about 100 different usage numbers corresponding to the physical keys. It's up to the USB host to know which keyboard layout you have and to translate those numbers into the actual characters.