Re: F62+F77 orders now open! New Kishsaver+Industrial Model F Keyboards
Posted: 08 Sep 2022, 17:31
Thank you very much, I'll have a look !
mechanical keyboard authority
http://www.deskthority.net/
Hi, since I recently wrote a new firmware that supports these keyboards, maybe I can share some experiences (wall of text ensues):Rico wrote: 08 Sep 2022, 15:03 What would be great for me to have:
- Source code of the current QMK firmware, for informative purposes mostly
- Information on matrix/switches topology with always on and off switches(could still find that reading qmk source code)
- Have access to Pandrew utility software: I feel that I could connect the firmware with this tool and why always reinvent the wheel ?
Much of the scanning time is due to writing the DAC thresholds, so if you can speed that up, it will improve things. If you have enough pins, you could theoretically start scanning rows instead of columns, i.e., currently the 8 rows in a single column are scanned at once, but if you had more pins you could instead scan the 16 columns in a single row at once. (I have not checked the specifics closely enough to know if either of these is the case.)Rico wrote: 09 Sep 2022, 14:36 - New MCU (RP02040)
- Hardware matrix scanning using PIO.
- On board regulated 3.3V reference for everything, including columns activation.
It may improve a few things ... or not![]()
I have an F62 in zinc case, and two F77s, one zinc and one aluminium case. The range of uncertainty (the min and max) in non-pressed keys is about 20 units (out of 1024 DAC range and about 200 non-pressed to pressed full range) on all of them. The two zinc-cased keyboards calibrate to within 3 units of each other, and the aluminium-cased one calibrates to within about 5 of those two. So, rather consistent, at least when they are new.Rico wrote: 09 Sep 2022, 14:36 If it works well on my own F77, I have little clue it would work well on other boards.
Did you experienced significant differences in detected voltage levels across different boards with the official wcass controller ?
Yeah, that's how the current controllers work as well, and it is particularly nice to get the 8 rows as one 8-bit value on the 8-bit microcontrollers. But if you have the capability to pulse rows and read columns as a 16-bit value instead, it should double the speed.Rico wrote: 09 Sep 2022, 15:15 The PCB does have 16 columns and 8 rows and I am pulsing the columns, i'll see how it works as is for the moment.
Thanks for the information and images! I am the person on whose behalf Ellipse posted the o-ring mod and questions. I started a thread on reddit about a custom palm rest for the Model F. I linked it in the original e-mail, but it looks like the link didn't make its way to the forum. It can be found here.ivor_h wrote: 08 Sep 2022, 09:41
Interesting re. the rubber rings, I'd not considered that. I used to use red o-rings on my cherry blues so I've just tried one and it gives a nice soft finish to the keypress, also the key still works fine with the original springs. Right.... this may take some time. (just checked - 1.5mm thick)
For wrist wrest I have an old thick double gel thing (although I can't find it online anymore "CaseLogic GL-1") which is the perfect height for the ModelF for me (~35mm), being a really soft gel I find it moulds around my wrist and I tend to have it slid slightly back:
(having trouble getting a picture of the height! but about this:)
thefarside wrote: 10 Sep 2022, 21:51 Sorry to change topic, but regarding the NYC meet and presentation, I can’t host or participate sadly, but was curious if ellipse would be interested in a Zoom type of presentation. I think that would reach the largest audience given the geographic spread of everyone.
I’m a latecomer to this project and would be interested in learning the trials and tribulations that lead to a keyboard in my hands. I’d also be interested in seeing a live demo of the beamspring keyboard. If you’ve been secretly working on a blue alps recreation I’d also be interested in seeing that too![]()
Code: Select all
keyboards/xwhatsit/matrix.c:423:62: error: expected ',' before ')' token
_Static_assert(CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(4) < 8);
Code: Select all
// Existing code:
// _Static_assert(CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(0) < 8)
_Static_assert(CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(0) < 8, "Foobar")
These are GIGANTIC news! Thanks for the work here - this will change a lot and simplifies things.wolfman wrote: 11 Sep 2022, 02:14 I think it's been over a year since my last update. I have been working on refactoring of pandrew's QMK firmware for inclusion into the QMK official repo.
I have decided to focus only on the keyboards that I physical possess and can test. I have the Model F Labs F62 and F77.
My refactored QMK firmware for the F62 and F77 is in the keyboard/model_f_labs directory in the source.
I added documentation via ASCII graphics in the source for the layouts and most of the key-maps.
Updated key-maps from Ellipse and me.
There are VIA enabled keymaps for both the F62 and F77. Updated versions of Roland Huber's VIA design files for the VIA utility are in the via keymap directories. The VIA enabled firmware does not support the pandrew xwhatsit utility.
VIA support requires that each model of keyboard to have a different USB VID and PID pairs. My firmware uses the default QMK VID of 0xFEED. The PID for F62 is 0x0F62. The PID for the F77 is 0x0F77.
Since I changed the the USB VID and PID had to do a hack of pandrew xwhatsit utility.
The source has been updated with pandrew's changes up to Dec 4 2021.
The QMK official repo was merge into the source on June 15 2022.
The only thing that remains to be tested is the solenoid. I am waiting for the solenoid driver that forgot to include in my original order.
I think my source is close to being a candidate for inclusion into QMK.
I need to try to port in Arkku changes.
Link to my "model_f_labs_f62_f77" GitHub candidate branch for QMK:
- Sub branch of mjw_xwhatsit branch
https://github.com/matthew-wolf-n4mtt/q ... bs_f62_f77
Updated pandrew xwhatsit utility:
- Tested only on Linux
- Only sees one keyboard when multiple are present.
https://github.com/matthew-wolf-n4mtt/p ... it-utility
My dev QMK branch "mjw_xwhatsit"
- Has README with notes on refactoring.
- Includes keyboards/ibm
- Includes keyboard/sneakyrobb
https://github.com/matthew-wolf-n4mtt/q ... w_xwhatsit
It should be easy, especially as my repository has the latest QMK changes as of today already. In theory just copying matrix.c, matrix_manipulate.h and util_comm.c should work to make it compile, but as a caveat, the CAPSENSE_CAL_THRESHOLD_OFFSET is values in the config.h files are untested for all other keyboards than the F62 and F77.
I think in theory both could be supported but it would need making the utility handle multiple VID/PID pairs instead of one hardcoded value, and probably util_comm.c would need to be called from via.c.wolfman wrote: 11 Sep 2022, 02:14 There are VIA enabled keymaps for both the F62 and F77. Updated versions of Roland Huber's VIA design files for the VIA utility are in the via keymap directories. The VIA enabled firmware does not support the pandrew xwhatsit utility.
Thanks for reporting this, I have added the string literals. (Also, the code is C, not C++, so the correct standard would be C23 which makes this mistake less excusable. However, that file is strongly GCC-specific due to inline assembler and such, so I don't have the pedantic warnings enabled for it.)Gladstone wrote: 11 Sep 2022, 06:34 In Arkku's firmware, some of the `_Static_assert` calls in `matrix.c` don't have a string literal parameter (see lines 417-425), which isn't optional till C++ 17.
If it happens with both versions, running out of RAM is definitely a possibility. The atmega32u2 used in these keyboards only has 1K RAM… I really wish the controllers had used the atmega32u4 instead, but too late at this point, and an aftermarket replacement controller should probably be something entirely different like the project Rico is working on.Gladstone wrote: 11 Sep 2022, 06:34 Also, on both arkku's and pandrew's firmware, enabling QMK dynamic macros in a regular keymap causes the keyboard to soft-brick (in regular QMK, no Via / Vial enabled). I have no idea why this is.
Thanks for the tips! Must be the RAM, then. Following your steps and setting DYNAMIC_MACRO_SIZE to 64, dynamic macros worked just fine. Haven't tested with the full 128, though.Arkku wrote: 11 Sep 2022, 11:45If it happens with both versions, running out of RAM is definitely a possibility. The atmega32u2 used in these keyboards only has 1K RAM… I really wish the controllers had used the atmega32u4 instead, but too late at this point, and an aftermarket replacement controller should probably be something entirely different like the project Rico is working on.Gladstone wrote: 11 Sep 2022, 06:34 Also, on both arkku's and pandrew's firmware, enabling QMK dynamic macros in a regular keymap causes the keyboard to soft-brick (in regular QMK, no Via / Vial enabled). I have no idea why this is.
Things you can try to reduce RAM usage to verify this:
(edit: if you are using my fork, you can skip the wcass.c and possibly also util_comm.c steps, but do a "git pull" first since I just changed it)
- in config.h, change CAPSENSE_CAL_BINS to a smaller number (it is now 5, try 2)
- in rules.mk, change RAW_ENABLE to no
- replace util_comm.c with an empty file (echo >util_comm.c in the command line should do it, you can later restore original with git restore util_comm.c)
- in the wcass.c file (or whichever file is in the innermost directory for that specific keyboard and controller), delete the line with KEYBOARD_FILENAME (I think this is a borderline bug in the firmware to store this in RAM instead of progmem, and I just changed it in my fork)
- also disable any other enabled things in rules.mk that you are not using
If you do all of these and the issue disappears, then it is almost certainly RAM.
thefarside wrote: 10 Sep 2022, 21:51 […] but was curious if ellipse would be interested in a Zoom type of presentation. I think that would reach the largest audience given the geographic spread of everyone.
Zoom would be awesome for all of us who are far from NYC who also want participate in real time by pushing the “Raise Hand” button to ask a question (that is, if Ellipse even wants to have a Q&A section). Unfortunately, I doubt that I will be able to attend a Zoom meeting at a certain time, nor do I have any questions to ask.
I updated my repository with the other changes, so only rules.mk and config.h are needed for this after git pull. And if it works, I would also suggest restoring CAPSENSE_CAL_BINS to 3, that way there is room for two real bins and one trash bin in case calibration is ever done with a key accidentally held down.Gladstone wrote: 11 Sep 2022, 15:03 Thanks for the tips! Must be the RAM, then. Following your steps and setting DYNAMIC_MACRO_SIZE to 64, dynamic macros worked just fine. Haven't tested with the full 128, though.
Code: Select all
> sudo dfu-programmer atmega32u2 erase
> sudo dfu-programmer atmega32u2 flash F77_-_HHKB_2U_backspace_-_0-9.hex
> sudo dfu-programmer atmega32u2 reset
dfu-programmer also works for macOS, it is easy to install from Homebrew. When using my firmware, you can also get the keyboard to bootloader mode with another Homebrew package: dfu-util. My command for entering bootloader and flashing the firmware is:repo_code wrote: 11 Sep 2022, 23:09 quick PSA: it's possible to load firmware under Linux without Atmel Flip.
The dfu-programmer is a common Linux package; Ubuntu has it, anyway.
Code: Select all
dfu-util -e && sleep 2 && dfu-programmer atmega32u2 erase && dfu-programmer atmega32u2 flash modelf77.hex && dfu-programmer atmega32u2 launch
Possibly up to an hour long. The topics would be at your discretion but my curiosity would be on:Ellipse wrote: 12 Sep 2022, 04:27 How long should the presentation be? I imagine it as being a brief overview of the project, plus questions, while a forthcoming book to offer more detail.
In the first photo it looks like the stabilizer wire has moved on top of the hooks, whereas in the second photo it is correctly installed. It should be in both hooks, then the keys will sit above it but bottom out before they hit the wire.xji wrote: 12 Sep 2022, 18:11 I'm at the last step of assembling the keyboard (F62 model with HHKB layout), where all that's left is the bottom row of keys. However, apparently the lower end of the keys would overlap the stabilizer wire of the spacebar? Here's a photo: