* First pass
* Add config options to docs
* Update some wording
* Slight tidy up of backlight caps logic
* Init pin to correct state
* Move init location
* Reverse default state
* sequencer: create togglable feature
* sequencer: add support for steps
* sequencer: add support for tempo and resolutions
* sequencer: schedule a message print at the right frequency
* sequencer: send a hardcoded note
* sequencer: add support for 8 tracks
* sequencer: play several notes simultaneously
* sequencer: only play the active tracks for a given step
* sequencer: change the default behavior of the track toggler
* sequencer: make number of tracks and track notes customizable
* sequencer: move the keycodes down
Not adding them at the end of the list apparently risks breaking
compatibility with VIA.
Source: https://github.com/qmk/qmk_firmware/pull/9703#discussion_r459202733
* sequencer: add unit tests
* sequencer: add unit test for matrix_scan_sequencer
* sequencer: expose internal state for better unit-testability
* sequencer: add unit tests for matrix_scan_sequencer
* add support for hid gamepad interface
add documentation for HID joystick
Add joystick_task to read analog axes values even when no key is pressed or release. update doc
Update docs/feature_joystick.md
Manage pin setup and read to maintain matrix scan after analog read
* Incorporates patches and changes to HID reporting
There are some patches provided by @a-chol incorporated on this commit,
and also some changes I made to the HID Report structure.
The most interesting is the one dealing with number of buttons: Linux
doesn't seem to care, but Windows requires the HID structure to be byte
aligned (that's in the spec). So if one declares 8/16/32... buttons they
should not have any issues, but this is what happens when you have 9
buttons:
```
bits |0|1|2|3|4|5|6|7|
|*|*|*|*|*|*|*|*| axis 0 (report size 8)
|*|*|*|*|*|*|*|*| ...
|*|*|*|*|*|*|*|*|
|*|*|*|*|*|*|*|*|
|*|*|*|*|*|*|*|*|
|*|*|*|*|*|*|*|*|
|*|*|*|*|*|*|*|*| axis 6
|*|*|*|*|*|*|*|*| first 8 buttons (report size 1)
|*| | | | | | | | last of 9 buttons, not aligned
```
So for that I added a conditonal that will add a number of reports with
size 1 to make sure it aligns to the next multiple of 8. Those reports
send dummy inputs that don't do anything aside from aligning the data.
Tested on Linux, Windows 10 and Street Fighter (where the joystick is
recognized as direct-input)
* Add save and restore of each pin used in reading joystick (AVR).
Allow output pin to be JS_VIRTUAL_AXIS if the axis is connected to Vcc
instead of an output pin from the MCU.
Fix joystick report id
Fix broken v-usb hid joystick interface. Make it more resilient to unusual settings (none multiple of eight button count, 0 buttons or 0 axes)
Correct adc reading for multiple axes. Piecewise range conversion for uncentered raw value range. Input, output and ground pin configuration per axis.
Documentation fixes
* Fix port addressing for joystick analog read
* The other required set of changes
As per the PR, the changes still holding it up.
Add onekey for testing.
Fix ARM builds.
Fix device descriptor when either axes or buttons is zero.
Add compile-time check for at least one axis or button.
Move definition to try to fix conflict.
PR review comments.
qmk cformat
* avoid float functions to compute range mapping for axis adc reading
* Remove V-USB support for now. Updated docs accordingly.
* Update tmk_core/protocol/lufa/lufa.c
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Update tmk_core/protocol/usb_descriptor.c
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Update tmk_core/protocol/usb_descriptor.c
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Update tmk_core/protocol/usb_descriptor.c
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Add support for joystick adc reading for stm32 MCUs. Fix joystick hid report sending for chibios
* Fix HID joystick report sending for ChibiOS.
Add one analog axis to the onekey:joystick keymap.
Fix pin state save and restore during joystick analog read for STM32
MCUs.
* Update tmk_core/protocol/chibios/usb_main.c
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Update tmk_core/protocol/lufa/lufa.c
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Add missing mcuconf.h and halconf.h to onekey:joystick keymap.
Add suggested fixes from PR.
* Switch saveState and restoreState signature to use pin_t type.
onekey:joystick : add a second axis, virtual and programmatically animated.
* Update docs/feature_joystick.md
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Update docs/feature_joystick.md
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Add PR corrections
* Remove halconf.h and mcuconf.h from onekey keymaps
* Change ADC_PIN to A0
Co-authored-by: achol <allecooll@hotmail.com>
Co-authored-by: José Júnior <jose.junior@gmail.com>
Co-authored-by: a-chol <achol@notamail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Improve process_record system
Code based on @colinta's
* Rename and better handle functions
* Fix incorrect function call to process_record_user
* Add documentation for post_process_record
* Add both get_event_keycode and get_record_keycode functions
And add some comments about these functions
* Update code format
* Cleanup merge artifacts
* Add Word Per Minute calculation feature
* Fix copyright info
* Remove header from quantum.c, setup overloadable keycode inclusion for WPM, update docs
* Simplify logic for keycode filtering
* Adding link from summary to wpm_feature info
* Update docs/feature_wpm.md
Typo in function prototype example in docs
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add WPM transport via i2c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add support for Bootmagic lite when using SPLIT_HAND_PIN
* Deduplicate bootmagic_lite logic from within via
* Revert location of defaults so that user overrides still work for now
* Tidy up code slightly
* Reduce PROGMEM usage for keycode map
Bit-pack the keycode bool array to gain back a small amount of flash space.
The trade-off is an increase in runtime instructions when running macros.
It does make the code a bit harder to read, as well as maintain.
For configs that use send_string() et al, it saves ~100 bytes.
* Switch to macro and common definition
Rewrite the array declarations so both the unpacked (original) and
packed LUT arrays can use the same value definitions. This is done by
defining a macro that "knows what to do".
This makes the code much easier to read and maintain.
* Fix macro typos and improve perf
Pack the bits in a more efficient order for extraction.
And also fix the copy/paste error in the macro...
* Switch fully to packed LUT
Some minor reformatting.
Compile tested all sendstring_xyz.h to make sure they were converted
properly. Also checked that an unconverted version would generate a
compile error.
* Apply whitespace suggestions from code review
Co-Authored-By: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Run clang-format manually to fix recently changed files
* Run clang-format manually to fix recently changed files - revert template files
* Run clang-format manually to fix recently changed files - format off for ascii_to_keycode_lut
* VIA Refactor
* Remove old code
* review changes
* review changes
* Fix cannonkeys/satisfaction75/prototype:via build
* Add via.h to quantum.h
* Move backlight init to after backlight config load
* Merge branch 'master' into via_refactor_pr
* Update user's rules.mk to new way of enabling VIA
* Added id_switch_matrix_state
* Review changes
* Move rgb keycode logic to process_keycode
* Fixes for rgb matrix
* Fixes for mxss
* Fix inc/dec logic, add comments
* Fix return RAINBOW_SWIRL logic
* stop external use of rgb helper functions
* merge fix
* Fix 'defined but not used' when all animations are disabled
* Add shift-to-invert to remaining directional RGB_* keycode pairs
RGB_MODE_FORWARD / RGB_MODE_REVERSE invert their functions when shift is held.
This change adds the same capabilities to the remaining directional RGB_*
keycode pairs. This improves consistency and provides full RGB control in a
keymap containing only one keycode from each pair.
* remove redundant variable
* fix typo
* Fix more typos
Flyspell is on now I swear!
* idea
* progress
* more stuff
* wip
* wip
* last couple of keycodes you can move safely
* Update quantum/quantum.c
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Put back RGB_MODE_BREATHE
* Convert Dynamic Macro to a Core Feature
This imports the code from Dynamic Macro into the core code, and handles it, as such.
This deprecates the old method but does not remove it, for legacy support. This way, no existing user files need to be touched.
Additionally, this reorganizes the documentation to better reflect the changes.
Also, it adds user hooks to the feature so users can customize the existing functionality.
Based heavily on and closes#2976
* Apply suggestions from code review
Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Cleanup based on feedback
* Add short-form keycodes and document them
- add short-form keycodes to quantum/quantum_keycodes.h
- document the new aliases in docs/feature_dynamic_macros.md
* Add Dynamic Macros section and keycodes to docs/keycodes.md
* Make anti-nesting optional
* Add documentation for DYNAMIC_MACRO_NO_NESTING option
* Fix Merge artifacts
* Fix formatting typo in docs
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Remove DYNAMIC_MACRO_RANGE as it's not needed
* Fix includes and layer var type
* Initial migration of software PWM backlight
* First pass at backlight driver docs
* Correct driver name in docs
* Run backlight_task when using BACKLIGHT_PINS
* Resolve backlight docs TODOs
* Fix held key getting stuck when NKRO is toggled
* Updated file to latest qmk version and added fix to cases MAGIC_UNHOST_NKRO & MAGIC_HOST_NKRO as well.
* Revert merged quantum.c
* Move tmk_core/common/backlight to quantum/backlight
* Add guards to backlight inclusion
* Add guards to backlight inclusion
* Update backlight guards on clueboard/60
* Use full paths to avoid vpath issues
* Add Dip Switches as a core feature
* Add documentation for Dip Switch feature
* Update Preonic Rev3 to use new feature and remove custom matrix
* Apply suggestions from code review
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Remove custom matrix line completely
Rather than just disabling it
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* DIP changes
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Use better check for DIP Switch configuration
* Add to show features
* Add bitmask callback for dip switch
* Fix OLKB Boards dip switch config
* Update docs to include bitmask example
* Fix comments/documentation
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Fix issues with docs and use example from @tuzonghua
* Fix wording
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Fix example to use proper formatting
Bad, BAAAAAAD drashna!!!
* Handle dip switch initialization better
* Additional changes for Layer State typedef compatibility
* Replace biton32 with get_highest_layer in docs
* Change additional layer structure code
* Fix uGFX reference issue
* Remove dynamic_keymap check
* Where did all these extra spaces come from
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Add MAGIC_SWAP_CONTROL_LGUI and MAGIC_UNSWAP_CONTROL_LGUI keycodes
Key codes to swap and unswap the control and windows/cmd keys
* Fix issues with pull request #6110
Renamed swap/unswap lctl and lgui key codes, added key codes to swap/unswap rctl and rgui, and moved new bool inside keycode_config.h struct to the end
* Move new keycodes to the end of the enum (#6110)
* add cases for swapped control and OS keys to mod_config (#6110)
* Add new keycodes to feature_bootmagic.md (#6110)
* Add R+L swap codes to keep in parity with AG_* codes
* Extend Magic range check to include new magic codes
* Update audio docs
* Combine 2 byte ranges into 1 word for EECONFG
Fix names for Keymap config EEPROM
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Improve backlight PWM pin support
* I accidentally an equals sign
* Another typo
* Order by pin number
* Throw an error if backlight pin is C4 or C5 on 16/32U4
* Use else for clarity
* Minor alignment adjustments