So here I am, writing up a blog post, about this topic among others. As part of that, I reviewed the diff, and despaired. I finally understood why the new descriptors work, and why the old ones did not, even though the report ended up being the same.
All this work, all this diving deep into the spec, was all for naught, for the real fix is changing two lines.
At the end of the day, with only three pull requests, most of them reasonably simple and straightforward, we are at a stage where we can build a sketch that will work on FreeBSD without any manual settings post-compile. The factory firmware still doesn't work, because we still have keyboard + mouse on the same node.
I'll experiment with moving it to another node next. Though, it would be nicer if we could prod #FreeBSD so it would accept our keyboard half. Accept the first descriptor, perhaps?
Once I'm done with this boot keyboard support work, I'll write a blog post about this, suspend/resume, and USB HID descriptors. Because these were either interesting, or challenging, or both.
@algernon Indeed. I would love it if more software were tested on the BSDs. It would come out better for it. Like this example where #FreeBSD switching the base system to the lld linker found a bug in LuaJIT https://github.com/LuaJIT/LuaJIT/pull/366
The good news is that most of this can be fixed, and workarounds put in place. Worst case, one will need to manually force boot mode on FreeBSD, but the keyboard will still work with factory firmware, once put into boot mode (likely with a key combo).
- FreeBSD does not support keyboard + mouse on the same node, and prefers the mouse. The Model01 factory firmware comes with keyboard + mouse on the same node, thus, doesn't work. - This unearthed a bug in #Kaleidoscope, wherein disabling mouse keys would still create the device nodes, preventing the building of a FreeBSD-compatible firmware.
I tried the #Keyboardio Model01 under #FreeBSD, turns out, this is a terrific OS for finding corner cases, and strange implementation choices.
- FreeBSD only supports the boot keyboard report protocol, not NKRO. - Despite this, it does not send `SET_PROTOCOL` to tell the keyboard to go into boot report mode. USB spec says keyboards should start in report mode, and only switch to boot when requested. FreeBSD assumes that if the device has the boot subclass, it will report as such, too.
.@algernon one day I will release a program that changes numeral systems for every major release.
δΈ.ε «.δΈ will be followed by ΰΉ.ΰΉ.ΰΉ.
The install instructions will include a lengthy section describing how to install the fonts required to render the version strings on all supported platforms.
'A woman is not dead as long as her name is spoken.' Natalie Nguyen, @tipsytentacle, ?β2017.
X-Clacks-Overhead: GNU Natalie Nguyen Broadcasters: witches.town, ellekk.xyz, sdfn-01.ninjawedding.org, social.mecanis.me. If you are an instance admin, consider broadcasting a clacks overhead.
take a day or more of silence, distract yourself with mundane things, look at pictures of cute animals, tell jokes, watch science videos, shitpost (but be respectful about it), play video games
but don't think you're undeserving of comfort right now.
If you wanna just, bookmark that and look at it when you're feeling like you can't go on anymore. Please. If it doesn't help you have nothing to lose and if it helps it would make me so happy not to have lost you