I have finally set up for myself a local way of compiling the firmware through the command line so that I can update the factory default solenoid dwell times, add in darkcruix's patch for excluding certain keys for the solenoid, allow NKRO but disable it by default, etc.
Keyboards going out starting this week will use the latest QMK firmware (attached). Files are also available on the project web site - About - Code page.
The instructions from pandrew were very helpful but for a beginner such as myself, I needed step by step instructions which I have updated below. This will allow those with little to know programming knowledge to adjust the settings in QMK that cannot be adjusted from the QMK configurator GUI web site.
At the bottom of this post you can download my latest JSON files and the latest firmware, which uses the current QMK branch as of today, with the above-mentioned changes, and with pandrew's Model F-specific additions to QMK that have made all of this possible.
Once again much thanks to pandrew and darkcruix for their outstanding work on QMK and Via. As a note the attached firmware is not Via compatible but it can be made compatible.
To customize Via firmware beyond layout customizations (for example, to make all the above changes), please contact darkcruix, who put together a document listing changes in the code to get the firmware working with Via. You currently lose the ability to diagnose the controller in pandrew's QMK utility if you use Via firmware. To just have Via with the default settings that cannot be changed in the Via program, please refer to darkcruix's post where you can download the Via hex file and start customizing from there without having to set up linux:
https://deskthority.net/viewtopic.php?p=482036#p482036new procedure from scratch Ubuntu install:download and install Ubuntu in a Virtual Machine
open Terminal program and enter one line at a time:
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip
sudo python3 -m pip install qmk
echo "PATH=$PATH:$HOME/.local/bin" >> ../.bashrc
sudo apt install git
qmk setup
git clone [insert URL here - contact pandrew on Deskthority for access to pandrew's git project]
do this action-not a command in terminal
copy keyboards/xwhatsit folder to qmk_firmware/keyboards folder
delete everything in the ubuntu home folder except the QMK_firmware and desktop directories - the xwhatsit folder has all the changes in QMK
code changes to make
config.h in the folder of the keyboard you want to update - in my case, keyboards/xwhatsit/brand_new_model_f/f77/wcass
lines 286-287
#define SOLENOID_DEFAULT_DWELL 20
#define SOLENOID_MIN_DWELL 20
replace haptic.c file in qmk_firmware/drivers/haptic folder with darkcruix's updated file to allow customization of which keys trigger the solenoid (modifier keys by default will not trigger the solenoid unless you change the below line to #define HAPTIC_EXCLUSION_KEYS 0):
https://github.com/darkcruix/qmk_firmware/blob/master/drivers/haptic/haptic.cadd to end of file - new line:
#define HAPTIC_EXCLUSION_KEYS 1
in rules.mk:
line 40:
NKRO_ENABLE = yes # USB Nkey Rollover
add this line at bottom:
LTO_ENABLE = yes # Link Time Optimization - reduces file size
put the json file with your custom layout (the file you created in QMK configurator) in the root of the Home folder
command to set the keyboard - can change F77 to F62 in this example if you have an F62:
qmk config user.keyboard=xwhatsit/brand_new_model_f/f77/wcass
qmk compile "../1.json"
it will give a random name and place the file in the root qmk_firmware folder - not the name of the json file, so if compiling multiple layouts, rename the newly created hex file before proceeding to compile the next layout
../ means go up one folder from qmk_firmware folder
examples:
qmk config user.keyboard=xwhatsit/brand_new_model_f/f77/wcass
qmk compile "../F77_-_ANSI-ISO_-_0-9.json"
qmk compile "../F77_-_ANSI-ISO_-_PrintScr.json"
qmk compile "../F77_-_HHKB_2U_backspace_-_0-9.json"
qmk compile "../F77_-_HHKB_2U_backspace_-_PrintScr.json"
qmk compile "../F77_-_HHKB_split_backspace_-_0-9.json"
qmk compile "../F77_-_HHKB_split_backspace_-_PrintScr.json"
qmk compile "../F77_JIS_-_PrintScr_-_need_to_do_0-9_layout_and_add_function_layer.json"
qmk compile "../zF77_-_HHKB_split_backspace,_everything_else_ANSI_-_0-9.json"
qmk compile "../zF77_-_HHKB_split_backspace,_everything_else_ANSI_-_PrintScr.json"
qmk compile "../zF77_-_HHKB_Split_Shift,_everything_else_ANSI_-_0-9.json"
qmk compile "../zF77_-_HHKB_Split_Shift,_everything_else_ANSI_-_PrintScr.json"
to then switch to compiling f62's:
qmk config user.keyboard=xwhatsit/brand_new_model_f/f62/wcass
qmk compile "../F62_-_ANSI-ISO_-_Regular_2U_or_Split_Backspace.json"
qmk compile "../F62_-_HHKB_-_Regular_2U_Backspace.json"
qmk compile "../F62_-_HHKB_-_Split_Backspace.json"
qmk compile "../zF62_HHKB_split_right_shift_only,_everything_else_ANSI.json"