When you hit a key on a keyboard, something happens on your screen nearly instantaneously, but the process to go from keypress to character is actually pretty involved. Here is a simplified version for our purposes:

  1. Pushing a key on your keyboard sends a signal to the firmware, indicating which physical key was pressed.
  2. The firmware uses that signal to determine which keycode to send to the computer.
  3. The computer (specifically, the operating system) gets this keycode, translates it, and gives you the output it thinks that keycode should correspond to.

Crucially, this means that the keyboard does not actually have any idea what characters will end up on your screen. A keycode is simply a numbered code. It requires translation to be useful to us humans.

Diagram of the process of pushing a key and getting a character

When you change an Oryx layout, you're actually moving keycodes around, not the final characters. Of course, displaying only keycodes wouldn't be useful, so Oryx instead displays what the keycode will translate to as long as everything is set up correctly.

If things aren't set up correctly, the board will still send a keycode and the computer will still translate it — you'll just end up with a different character than what you wanted. For example, consider the American English QWERTY layout vs. the French AZERTY layout. If you type in AZERTY normally and you get a Moonlander, it will arrive with a QWERTY layout. However, if you plug it in and start typing without making any changes, you'll find that it is actually typing AZERTY even though the keys say it should be QWERTY. Weird!

QWERTY becoming AZERTY

This happens because Q and W in American English use the same keycodes as A and Z in French — they just get translated differently. This also means that, from the perspective of us humans, there ends up being an English-specific Q and W and a French-specific Q and W, even though the final output looks exactly the same.

Different keycodes giving same result

This is also why it isn't possible to remap what Shift does in an Oryx layout. When you press something like "Shift + 1", the keyboard sends this to the computer literally: The Shift key and the 1 key were pressed (except the keyboard uses these keys' keycodes). The computer is the one that decides what that combination of keys will output.

So, this is why language and layout-specific setup is required. Is it a good system? It has pros and cons, but more importantly, it is the system, so we have to work with it.

If you plug your keyboard in and some keys don't output what you expect, this is probably why. You may need to do some additional layout setup for your language. If you have any questions about this, you can always email us at [email protected].