Having recently gone back to development work early in 2018, and getting some ulnar nerve symptoms as a result, I’m experimenting with a few “proper” keyboards - ditched the Apple board, using a Matias Ergo Pro at the moment, whilst I await the arrival of both an Ergodox EZ Shine and a Keyboardio Model 01.
I’m a UK MacOS (Mojave) user.
As I understand it, keyboards send scan codes to the operating system. If you want your input to match what’s printed on the keys (of a non-programmable keyboard, for the sake of argument), you have to choose the keyboard layout (called “input source”, rather illogically, on MacOS) that matches what’s printed on your keyboard. For a standard British Mac keyboard, it’s “British”, my Matias Ergo Pro needs “British - PC”. If I don’t choose British-PC, I get @ above the 2 (which is printed ").
Now, on the Ergodox, the only keys that are actually printed are the letter keys and a few symbols, but the Keyboardio seems to have all keys printed (including # above the 3, sadly), which I assume maps to the default firmware layout, but presumably therefore expects a “US” input source.
My assumption about programmable keyboards is that you still have to use the “correct” layout (input source) on the OS, at least to the extent that you want the symbols to come out as printed on the key caps, and that if you want to change the layout (which I would only do where it doesn’t contradict what’s printed on the key caps themselves, because I’m anally retentive), you use the firmware of the keyboard.
If this is the case, what’s the “correct” layout (input source on Mac) for the Keyboardio? US or “US - international”?
Or, is it more complicated? Can I actually programme a keyboard so that shift-3 = anything I want? Or is that purely in the domain of the input source on the OS?
I’ve Googled a fair bit and have failed to educate myself properly about how this stuff works; whether a non-programmable keyboard and a programmable one send the same codes for the same things or whether there’s a fundamental difference in the way each works.
Using the Ergodox as an example (since it has a browser-based configurator): when I choose # in the drop-down list to assign to a key in a layer, is the code that the keyboard sends identical to the one that I get if I hold shift and hit 3 (if my input source is US), or is it a different code that explicitly means # and will always be interpreted by the OS as a #, regardless of the input source? Or, I have a British layout selected in the OS, and I choose the # in the configurator drop-down to assign to a key in a layer, will that keypress come out as a £?
From my own research, the conclusion I’ve drawn is that, even on a programmable keyboard, if you hold shift and press 3, the result will be determined by the OS input source, since the keyboard is actually sending a scancode that corresponds to “shift-3”, not to #, or £, or whatever. But if you explicitly map a key in a different layer to #, the code that’s sent is different and corresponds explicitly to a #, regardless of the input source.
I’d be very grateful for any clarification from those who understand this stuff better than me!