Hi just a few notes about the firmware after debugging it today.
The main issue being that the latest code does not play nice with my 2.0 motherboard.
I rolled back to the revision from December, and that works fine.
I assume somewhere in the changes for the Next, that things went wrong.
Also, the manual refers to a download-fw.sh script, but that does not exist.
And something minor, the manual says the source is in the “keyboard4-fw” folder, but it’s the “reform2-keyboard4-fw”
I think the issue was found by user @O.o today, which was that the default baud rate of the keyboard4 fw (for LPC communication) was too high recently. I pushed a fix earlier today so you could rebuild the FW and try again if you like.
Hi that does fix up the not starting at all issues, thanks.
I think there might still be some weirdness around hid_task_counter, leading to the logo staying up for much longer, and i assume very slow battery updates.
Something like this could fix it: if (hid_task_counter%(1000/interval_ms) == 0) {
I’ll see if i can work out how to have two git accounts and submit a nicer patch…
I’ve spent today refactoring and fixing up the keyboard 4 firmware, but can only do more intensive test on a non-Next laptop etc tomorrow. If anyone feels brave, please test (use the command in the README to build so you get laptop mode! or use a prebuilt binary from the CI): https://source.mnt.re/reform/reform/-/merge_requests/88
BTW cc @O.o I put in a new confirmation submenu for risky actions, inspired by your feedback.
I haven’t tried it yet because I’m visiting customers and I need a working laptop at the moment
But reading the diff, I see that pressing risky keys results in the confirmation menu popping up. That’s a bit suboptimal. It’s great for seldom used actions that need a bit of warning decorum, like entering the firmware flashing mode. But do you really want to navigate a menu each time you turn the laptop off?
Also, I don’t really want to have to dismiss a menu if I type the wrong sequence of keys.
So still think the risky actions should be Circle+key (with Circle pressed down) combo. It’s more convenient.
I would welcome that, yes. After the bug of the machine not turning off completely anymore is fixed, in what scenario would you have to regularly press circle+0?
Well no, but that’s another bug, right?
Do you mean there is supposed to be a confirmation menu if I press illegal keys? I do not see this happening on the most recent firmware. On the other hand, I would find it convenient if there was a message with an automatic timeout if the key i press was not understood.
So I think this is good. How often would I be flashing a new keyboard firmware per year and have this confirmation menu annoy me? Maybe once?
I would welcome that, yes. After the bug of the machine not turning off completely anymore is fixed, in what scenario would you have to regularly press circle+0?
Yes, the convenience issue will solve itself when the shutdown issue is fixed. And I still have my own F1+F12 hotkey patch, which I use all the time because I just never turn off the laptop manually anymore. The foam pads work just fine.
Side question about this actually - because I don’t know the Pi Pico in details: does doing sleep_us() or sleep_ms() drop the power draw (i.e. is it a true sleep or a wait loop)? Because when my foam pads keep F1 and F12 depressed with the lid closed, I could very well check the matrix every second or so to check if the keys are released instead of scanning the matrix all the time, to drop the power usage some more.
Side question #2: is there interest for my F1+F12 power-off patch? I would like to submit it as a PR (after @minute is done reworking the keyboard firmware to his liking I suppose). It’s really a nice safety addition in conjunction with the foam pads trick, and it has zero side effects if you don’t stick foam pads on the bezel. If it was mainlined, I wouldn’t have to maintain it as a separate patch
As I said, I didn’t try it. I was just reading the code, and it looked like doing Circle-<any risk-key> always brought up the confirmation menu.
I’ll try it soon when I get back home.
Like I explained previously, my problem is that I keep hitting Circle when I try to hit Backspace (decades of muscle memory is a bitch) and when I hit Circle-anything, I don’t want the keyboard to react in any way whatsoever - be it a menu, the screen turning on or anything - with perhaps the exception of Circle-1. Although I usually turn on the laptop with a long press on Circle when it’s off instead.
That’s why I much, MUCH prefer a shifty Circle key. I find the keyboard way too much in the way for its own good: it’s a keyboard and I don’t care about its inner life. So I want activating its various functions to be quick, yet as awkward as possible on purpose. A shifty Circle key achieves that easily.
This reminds me that since I have a Pocket Reform I keep trying to press Hyper+Circle to switch on my Reform or to get into the OLED menu. I’d welcome a change where my muscle memory from the Pocket Reform would easily carry over to Keyboard V4 classic Reform. For example, I think I’d really like to turn on my classic Reform the same way I turn on my Pocket Reform: by pressing and holding Hyper+Circle.
I can also see how maybe not everybody would be on board with such a change. Maybe the keyboard firmware would benefit from some sort of plugin system which makes it easier to run a firmware version with a few light modification. I mean, I can recompile my firmware with the changes I want but I can see how that’s not as easy for many others. Maybe it would make sense to brainstorm about how lightweight changes the F1+F12 patch (if minute does not like it as a default) or hyper+circle combo would be more accessible for everybody?
Please excuse that I can’t answer to all the details in this thread because my plate of things to do is overflowing at the moment. I believe I fixed the original crashing and stability issues in the keyboard v4 firmware by now, and left the confirmation submenu in only for the “X” (firmware update mode) for now.
The non-shifty behavior of the menu is designed like this on purpose, for accessbility and safety reasons, for example so that you can turn on the computer with one hand, and something mashing all keys together would not turn the computer on by accident.
One could argue that the keyboard shortcuts for menu items (like 0, 1, …) per se take away from this design that’s supposed to be lock-mechanism-like. But, it’s in all the handbooks and Reform users’ muscle memories for years now. That said, I’m considering to add a preferences submenu soon (now that we can have submenus), maybe then your needs could be accomodated.
I’ve also fixed the shutdown issues in the LPC driver now, and need to cut releases for everything.
For those of you who use the keyboard in standalone mode with another computer, I created some small instructions on how to build and flash the firmware: