Assuming that we only care about English/Dvorak, I’d go with doing it in the firmware, at least for the default layouts. Why?
This is why. Because doing the emulation in the firmware gives us more flexibility about where to put certain symbols. It also means that you can hit a key on the keyboard and switch from QWERTY to Dvorak or vice versa, without the OS knowing a thing. That is a powerful thing, loved it when I was learning Dvorak on my old TypeMatrix.
This is also the choice most other keyboards that come with a Dvorak option do. This is the least surprising, and from the firmware point of view, the easier and more flexible.
This is what QMK does, and works pretty well: allows you to program your layout, and also has an extensive library of layouts, most of them user contributed.
Yep, but they all require setting up the OS to use that layout. It’s not as easy as plugging in the keyboard and just having it work. (Assuming that the OS layout is set to QWERTY, a reasonable expectation, considering most other keyboards assume the same.)
A non-English layout will require tweaks. Can’t support everything with one layout. I believe we should concentrate on English only. The labels will be for English, that’s what the default firmware should handle, too. Anything more is far too complicated, in my opinion.
In case of the curly braces, the firmware sends Shift+[
on press. The release is done in a creative way: the report is cleared every cycle, and any key that is still held the next cycle, remains held. In case of {
, since it was synthetic, it will not re-register. Unless you hold it, or hold Shift
or [
, because that part will re-register. So holding Shift
and pressing and releasing {
will result in Shift
being held, and never released, and [
being pressed during that time.
Whatever is on the keycap, we can input them. Whether we end up assuming that the OS is in QWERTY or Dvorak, we can input any symbol we put on the labels, if we stick to English. We may have to do a trick or two, but that can be done later, after the labels are decided upon.
Since you can replace the firmware, and there will be alternative layouts, if the keyboard ends up shipping with the firmware assuming QWERTY on the OS side, it will be very, very easy to reflash it with another firmware that assumes Dvorak on the OS side, if that’s your thing. The same keys will still input the same keycodes, in both cases.