- Layers were not disabling because function was only called on press/hold
- Disabled layer shift function on key hold
- Fixed the press/hold/release states for other layer capabilities and USB code send
- Split layer capability into different parts
- Convenience Shift, Latch, Lock
- Keeping the original capability because it also allows specifically turning layers off and is useful for debugging
Tested
------
Single : Single
Single : Combo
Single : Sequence
Combo : Single
Combo : Combo
Combo : Sequence
Sequence : Single
Sequence : Combo
Sequence : Sequence
- Heavily modified, not compatible with McHCK images
- Uses 4k of Flash (rather than 3k)
- LED turns on when in firmware flash mode
- Changed the USB IDs
- Added CMake build system
- Updated linker script to be closer to what is used for the rest of the projects
- Removed a lot of unnecessary code
- Added a license header to each file (using the same license as the McHCK had)
- Updated the USB Vendor, Product and Serial strings
- Using the Kiibohd initialization sequence rather than the McHCK one
- Using Kiibohd interrupt vector table and other misc mk20dx setup
- Changed static variables to const that should have been const
- Updated CMake files to prepare for MCHCK custom bootloader
- Changed the USB ID numbers and ID number for bootloader
- Only generate DFU or Teensy binary image, not both
- Fixed RAM and FLASH calculator
- Added missing license in delay.c/h (much of it was taken from Teensy source though I've changed a bunch of it)
- Prepared mk20dx.c for upcoming bootloader addition
- mk20dx.h cleanup
- Reduced the MCHCK based flash size for the application image (bootloader changes requires more flash space)
- Fixed bugs in macro.c
- Added keyHold cli command
- Added show pending events debug message for PartialMap macro module
- Basic features only (there are still some extra options that can be added)
- Not tested
- ResultMacro processor is complete
- Layer enabling capability not yet complete
- USB Key output capability not yet complete
- Made changes to the capabities/macro data structure to specify the capability arg count in the capability list
- Remove the arg count from the result macro struct (as it is redundant)
- Changed macro/capabilities data structure to index capabilities rather than specify function pointers
- Used an 8 bit array, this reduced the max number of capabities to 255
* Shouldn't be an issue, but this can be addressed if the limit is hit...unlikely though
- Moderate changes to the trigger and result macro data structures
- The debug macro viewers are nearly equivalent to what the main macro processors will do
- Lots of code cleanup for the intialization of all arm chips
- Added more gcc flags to help with debugging linker and memory map
- Fixed UART initialization for the smaller MCHCK mk20dx128 (different pin mux)
- Sending characters to the UART before it's ready would overflow the buffer causing it to hang
- Added a check to make sure the interface is ready before starting to send characters
- Removed the incorrect check for the usbMuxUart to make sure usb is ready before sending over the uart
- Windows builds and loading has been working just fine
- screen does work with Cygwin, but there are output problems (echoing isn't working for basic input, commands still work)
- TeraTerm works good, but kills the serial port if you don't quit after reloading the firmware
- There are some bugs here:
* Press/Release (this is a keymapping bug, has nothing to do with capsense press/release which is working)
* Some keys give incorrect USB codes
Caveat: The problem is still there. When the averaging kicks in, there is a window of time where keypresses won't register
This fix only delays the window a *really* long time, so the likelihood of hitting the delay is very low.
Each keypress resets the countdown.