You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

355 lines
9.5 KiB

2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
2020 November 28 Breaking Changes Update (#11053) * Branch point for 2020 November 28 Breaking Change * Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183) * Add support for soft serial to ATmega32U2 (#10204) * Change MIDI velocity implementation to allow direct control of velocity value (#9940) * Add ability to build a subset of all keyboards based on platform. * Actually use eeprom_driver_init(). * Make bootloader_jump weak for ChibiOS. (#10417) * Joystick 16-bit support (#10439) * Per-encoder resolutions (#10259) * Share button state from mousekey to pointing_device (#10179) * Add hotfix for chibios keyboards not wake (#10088) * Add advanced/efficient RGB Matrix Indicators (#8564) * Naming change. * Support for STM32 GPIOF,G,H,I,J,K (#10206) * Add milc as a dependency and remove the installed milc (#10563) * ChibiOS upgrade: early init conversions (#10214) * ChibiOS upgrade: configuration file migrator (#9952) * Haptic and solenoid cleanup (#9700) * XD75 cleanup (#10524) * OLED display update interval support (#10388) * Add definition based on currently-selected serial driver. (#10716) * New feature: Retro Tapping per key (#10622) * Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) * Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530) * Rescale both ChibiOS and AVR backlighting. * Reduce Helix keyboard build variation (#8669) * Minor change to behavior allowing display updates to continue between task ticks (#10750) * Some GPIO manipulations in matrix.c change to atomic. (#10491) * qmk cformat (#10767) * [Keyboard] Update the Speedo firmware for v3.0 (#10657) * Maartenwut/Maarten namechange to evyd13/Evy (#10274) * [quantum] combine repeated lines of code (#10837) * Add step sequencer feature (#9703) * aeboards/ext65 refactor (#10820) * Refactor xelus/dawn60 for Rev2 later (#10584) * add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824) * [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549) * update chibios os usb for the otg driver (#8893) * Remove HD44780 References, Part 4 (#10735) * [Keyboard] Add Valor FRL TKL (+refactor) (#10512) * Fix cursor position bug in oled_write_raw functions (#10800) * Fixup version.h writing when using SKIP_VERSION=yes (#10972) * Allow for certain code in the codebase assuming length of string. (#10974) * Add AT90USB support for serial.c (#10706) * Auto shift: support repeats and early registration (#9826) * Rename ledmatrix.h to match .c file (#7949) * Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231) * Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840) * Merge point for 2020 Nov 28 Breaking Change
3 years ago
  1. /* Copyright 2019 ishtob
  2. * Driver for haptic feedback written for QMK
  3. *
  4. * This program is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 2 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. #include "haptic.h"
  18. #include "eeconfig.h"
  19. #include "progmem.h"
  20. #include "debug.h"
  21. #ifdef DRV2605L
  22. # include "DRV2605L.h"
  23. #endif
  24. #ifdef SOLENOID_ENABLE
  25. # include "solenoid.h"
  26. #endif
  27. haptic_config_t haptic_config;
  28. void haptic_init(void) {
  29. debug_enable = 1; // Debug is ON!
  30. if (!eeconfig_is_enabled()) {
  31. eeconfig_init();
  32. }
  33. haptic_config.raw = eeconfig_read_haptic();
  34. #ifdef SOLENOID_ENABLE
  35. solenoid_set_dwell(haptic_config.dwell);
  36. #endif
  37. if ((haptic_config.raw == 0)
  38. #ifdef SOLENOID_ENABLE
  39. || (haptic_config.dwell == 0)
  40. #endif
  41. ) {
  42. // this will be called, if the eeprom is not corrupt,
  43. // but the previous firmware didn't have haptic enabled,
  44. // or the previous firmware didn't have solenoid enabled,
  45. // and the current one has solenoid enabled.
  46. haptic_reset();
  47. }
  48. #ifdef SOLENOID_ENABLE
  49. solenoid_setup();
  50. dprintf("Solenoid driver initialized\n");
  51. #endif
  52. #ifdef DRV2605L
  53. DRV_init();
  54. dprintf("DRV2605 driver initialized\n");
  55. #endif
  56. eeconfig_debug_haptic();
  57. }
  58. void haptic_task(void) {
  59. #ifdef SOLENOID_ENABLE
  60. solenoid_check();
  61. #endif
  62. }
  63. void eeconfig_debug_haptic(void) {
  64. dprintf("haptic_config eprom\n");
  65. dprintf("haptic_config.enable = %d\n", haptic_config.enable);
  66. dprintf("haptic_config.mode = %d\n", haptic_config.mode);
  67. }
  68. void haptic_enable(void) {
  69. haptic_config.enable = 1;
  70. xprintf("haptic_config.enable = %u\n", haptic_config.enable);
  71. eeconfig_update_haptic(haptic_config.raw);
  72. }
  73. void haptic_disable(void) {
  74. haptic_config.enable = 0;
  75. xprintf("haptic_config.enable = %u\n", haptic_config.enable);
  76. eeconfig_update_haptic(haptic_config.raw);
  77. }
  78. void haptic_toggle(void) {
  79. if (haptic_config.enable) {
  80. haptic_disable();
  81. } else {
  82. haptic_enable();
  83. }
  84. eeconfig_update_haptic(haptic_config.raw);
  85. }
  86. void haptic_feedback_toggle(void) {
  87. haptic_config.feedback++;
  88. if (haptic_config.feedback >= HAPTIC_FEEDBACK_MAX) haptic_config.feedback = KEY_PRESS;
  89. xprintf("haptic_config.feedback = %u\n", !haptic_config.feedback);
  90. eeconfig_update_haptic(haptic_config.raw);
  91. }
  92. void haptic_buzz_toggle(void) {
  93. bool buzz_stat = !haptic_config.buzz;
  94. haptic_config.buzz = buzz_stat;
  95. haptic_set_buzz(buzz_stat);
  96. }
  97. void haptic_mode_increase(void) {
  98. uint8_t mode = haptic_config.mode + 1;
  99. #ifdef DRV2605L
  100. if (haptic_config.mode >= drv_effect_max) {
  101. mode = 1;
  102. }
  103. #endif
  104. haptic_set_mode(mode);
  105. }
  106. void haptic_mode_decrease(void) {
  107. uint8_t mode = haptic_config.mode - 1;
  108. #ifdef DRV2605L
  109. if (haptic_config.mode < 1) {
  110. mode = (drv_effect_max - 1);
  111. }
  112. #endif
  113. haptic_set_mode(mode);
  114. }
  115. void haptic_dwell_increase(void) {
  116. #ifdef SOLENOID_ENABLE
  117. int16_t next_dwell = ((int16_t)haptic_config.dwell) + SOLENOID_DWELL_STEP_SIZE;
  118. if (haptic_config.dwell >= SOLENOID_MAX_DWELL) {
  119. // if it's already at max, we wrap back to min
  120. next_dwell = SOLENOID_MIN_DWELL;
  121. } else if (next_dwell > SOLENOID_MAX_DWELL) {
  122. // if we overshoot the max, then cap at max
  123. next_dwell = SOLENOID_MAX_DWELL;
  124. }
  125. solenoid_set_dwell(next_dwell);
  126. #else
  127. int16_t next_dwell = ((int16_t)haptic_config.dwell) + 1;
  128. #endif
  129. haptic_set_dwell(next_dwell);
  130. }
  131. void haptic_dwell_decrease(void) {
  132. #ifdef SOLENOID_ENABLE
  133. int16_t next_dwell = ((int16_t)haptic_config.dwell) - SOLENOID_DWELL_STEP_SIZE;
  134. if (haptic_config.dwell <= SOLENOID_MIN_DWELL) {
  135. // if it's already at min, we wrap to max
  136. next_dwell = SOLENOID_MAX_DWELL;
  137. } else if (next_dwell < SOLENOID_MIN_DWELL) {
  138. // if we go below min, then we cap to min
  139. next_dwell = SOLENOID_MIN_DWELL;
  140. }
  141. solenoid_set_dwell(next_dwell);
  142. #else
  143. int16_t next_dwell = ((int16_t)haptic_config.dwell) - 1;
  144. #endif
  145. haptic_set_dwell(next_dwell);
  146. }
  147. void haptic_reset(void) {
  148. haptic_config.enable = true;
  149. uint8_t feedback = HAPTIC_FEEDBACK_DEFAULT;
  150. haptic_config.feedback = feedback;
  151. #ifdef DRV2605L
  152. uint8_t mode = HAPTIC_MODE_DEFAULT;
  153. haptic_config.mode = mode;
  154. #endif
  155. #ifdef SOLENOID_ENABLE
  156. uint8_t dwell = SOLENOID_DEFAULT_DWELL;
  157. haptic_config.dwell = dwell;
  158. haptic_config.buzz = SOLENOID_DEFAULT_BUZZ;
  159. solenoid_set_dwell(dwell);
  160. #else
  161. // This is to trigger haptic_reset again, if solenoid is enabled in the future.
  162. haptic_config.dwell = 0;
  163. haptic_config.buzz = 0;
  164. #endif
  165. eeconfig_update_haptic(haptic_config.raw);
  166. xprintf("haptic_config.feedback = %u\n", haptic_config.feedback);
  167. xprintf("haptic_config.mode = %u\n", haptic_config.mode);
  168. }
  169. void haptic_set_feedback(uint8_t feedback) {
  170. haptic_config.feedback = feedback;
  171. eeconfig_update_haptic(haptic_config.raw);
  172. xprintf("haptic_config.feedback = %u\n", haptic_config.feedback);
  173. }
  174. void haptic_set_mode(uint8_t mode) {
  175. haptic_config.mode = mode;
  176. eeconfig_update_haptic(haptic_config.raw);
  177. xprintf("haptic_config.mode = %u\n", haptic_config.mode);
  178. }
  179. void haptic_set_amplitude(uint8_t amp) {
  180. haptic_config.amplitude = amp;
  181. eeconfig_update_haptic(haptic_config.raw);
  182. xprintf("haptic_config.amplitude = %u\n", haptic_config.amplitude);
  183. #ifdef DRV2605L
  184. DRV_amplitude(amp);
  185. #endif
  186. }
  187. void haptic_set_buzz(uint8_t buzz) {
  188. haptic_config.buzz = buzz;
  189. eeconfig_update_haptic(haptic_config.raw);
  190. xprintf("haptic_config.buzz = %u\n", haptic_config.buzz);
  191. }
  192. void haptic_set_dwell(uint8_t dwell) {
  193. haptic_config.dwell = dwell;
  194. eeconfig_update_haptic(haptic_config.raw);
  195. xprintf("haptic_config.dwell = %u\n", haptic_config.dwell);
  196. }
  197. uint8_t haptic_get_mode(void) {
  198. if (!haptic_config.enable) {
  199. return false;
  200. }
  201. return haptic_config.mode;
  202. }
  203. uint8_t haptic_get_feedback(void) {
  204. if (!haptic_config.enable) {
  205. return false;
  206. }
  207. return haptic_config.feedback;
  208. }
  209. uint8_t haptic_get_dwell(void) {
  210. if (!haptic_config.enable) {
  211. return false;
  212. }
  213. return haptic_config.dwell;
  214. }
  215. void haptic_enable_continuous(void) {
  216. haptic_config.cont = 1;
  217. xprintf("haptic_config.cont = %u\n", haptic_config.cont);
  218. eeconfig_update_haptic(haptic_config.raw);
  219. #ifdef DRV2605L
  220. DRV_rtp_init();
  221. #endif
  222. }
  223. void haptic_disable_continuous(void) {
  224. haptic_config.cont = 0;
  225. xprintf("haptic_config.cont = %u\n", haptic_config.cont);
  226. eeconfig_update_haptic(haptic_config.raw);
  227. #ifdef DRV2605L
  228. DRV_write(DRV_MODE, 0x00);
  229. #endif
  230. }
  231. void haptic_toggle_continuous(void) {
  232. #ifdef DRV2605L
  233. if (haptic_config.cont) {
  234. haptic_disable_continuous();
  235. } else {
  236. haptic_enable_continuous();
  237. }
  238. eeconfig_update_haptic(haptic_config.raw);
  239. #endif
  240. }
  241. void haptic_cont_increase(void) {
  242. uint8_t amp = haptic_config.amplitude + 10;
  243. if (haptic_config.amplitude >= 120) {
  244. amp = 120;
  245. }
  246. haptic_set_amplitude(amp);
  247. }
  248. void haptic_cont_decrease(void) {
  249. uint8_t amp = haptic_config.amplitude - 10;
  250. if (haptic_config.amplitude < 20) {
  251. amp = 20;
  252. }
  253. haptic_set_amplitude(amp);
  254. }
  255. void haptic_play(void) {
  256. #ifdef DRV2605L
  257. uint8_t play_eff = 0;
  258. play_eff = haptic_config.mode;
  259. DRV_pulse(play_eff);
  260. #endif
  261. #ifdef SOLENOID_ENABLE
  262. solenoid_fire();
  263. #endif
  264. }
  265. bool process_haptic(uint16_t keycode, keyrecord_t *record) {
  266. if (keycode == HPT_ON && record->event.pressed) {
  267. haptic_enable();
  268. }
  269. if (keycode == HPT_OFF && record->event.pressed) {
  270. haptic_disable();
  271. }
  272. if (keycode == HPT_TOG && record->event.pressed) {
  273. haptic_toggle();
  274. }
  275. if (keycode == HPT_RST && record->event.pressed) {
  276. haptic_reset();
  277. }
  278. if (keycode == HPT_FBK && record->event.pressed) {
  279. haptic_feedback_toggle();
  280. }
  281. if (keycode == HPT_BUZ && record->event.pressed) {
  282. haptic_buzz_toggle();
  283. }
  284. if (keycode == HPT_MODI && record->event.pressed) {
  285. haptic_mode_increase();
  286. }
  287. if (keycode == HPT_MODD && record->event.pressed) {
  288. haptic_mode_decrease();
  289. }
  290. if (keycode == HPT_DWLI && record->event.pressed) {
  291. haptic_dwell_increase();
  292. }
  293. if (keycode == HPT_DWLD && record->event.pressed) {
  294. haptic_dwell_decrease();
  295. }
  296. if (keycode == HPT_CONT && record->event.pressed) {
  297. haptic_toggle_continuous();
  298. }
  299. if (keycode == HPT_CONI && record->event.pressed) {
  300. haptic_cont_increase();
  301. }
  302. if (keycode == HPT_COND && record->event.pressed) {
  303. haptic_cont_decrease();
  304. }
  305. if (haptic_config.enable) {
  306. if (record->event.pressed) {
  307. // keypress
  308. if (haptic_config.feedback < 2) {
  309. haptic_play();
  310. }
  311. } else {
  312. // keyrelease
  313. if (haptic_config.feedback > 0) {
  314. haptic_play();
  315. }
  316. }
  317. }
  318. return true;
  319. }
  320. void haptic_shutdown(void) {
  321. #ifdef SOLENOID_ENABLE
  322. solenoid_shutdown();
  323. #endif
  324. }