* Dedupe extrakey report struct, and send functions in V-USB & LUFA
* Doc comment for consistency
* Wrap it in ifdef to prevent unused function error
* Do the same for ATSAM
* disable Console to save firmware space
* rules.mk templating
Add comments regarding the rules, to more closely match the ps2avrgb template.
* update info.json
This board has a quite interesting take on the standard TKL; why not show it off?
* update the vendor id for 1upkeyboards 1up60hte
* add the via keymap and rules file
* fix typo
* move the LTO to the keyboard's rules.mk
* Update keyboards/1upkeyboards/1up60hte/config.h
* Created the yoryer layout for the Quefrency 65%
* added rgb control layer
* Required changes to resolve PR #7947 issues
* - Updated the layer list as an enum
- Removed .gitignore file from keymap folder
* Removed the .gitignore from keymap folder
* Begin work on spfs, migrating ancient config
* QMK breaks if there's a dash in the board name
* Update info.json
* Make indicator LEDs work
* Build a readme
* Change title to match official GB thread name
* Add an ANSI WKL layout for simplicity
* Adjustments as per pullreq recommendations
* Remove unused functions from other keymap
* Add backlight custom driver to all boards not declaring it but overriding backlight
* Apply suggestions from code review
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Apply suggestions from code review
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Remove old tmk references from show_options.mk
Co-authored-by: fauxpark <fauxpark@gmail.com>
* Add initial configuration and keymaps for Yatara Drink Me.
* Apply suggestions from code review
* Apply suggestions from code review
* Add transparent layers in VIA layout so there are four layers in total. Amend closing bracket indentation in keymap.c files.
* Add the Whitefox vanilla layout
Initial commit for whitefox vanilla keymap
Fix the mapped layout to match vanilla
Cleanup vanilla default
Rework the info file
Remove vanilla keymap as we don't really need this
* adds to theDora readme for more explicit directions on flashing,
with links and how to enter bootloader mode.
* fmt
* Corrects language of steps for loading firmware
* Update keyboards/ckeys/thedora/readme.md
* Add German programming layout for Lets Split
* Update copyright in config.h
* Add Hash-Symbol to keymap
* Change to fit suggestions in PR
* Changes as requested, but broken.
* Fix layer switching issue
* Add Quefrency Rev. 2
* Add encoder support
* Add RGB LED mapping info
* Add diode direction
* Revert removal of default folder for CI purposes
* Remove unneeded lines
* Rename ISO layout macros
* add VIA support for 1up60hse
* choose a vendor and product id that is not taken
* add mousekey_enable set to no as per Wilba's recommendation
* Update keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md
* Update keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md
* add a fourth layer
* might as well remove the config file as we are not including the one thing that was in it
* Fix Pulse4k info.json LAYOUT name
* Add missing functions to fix configurator
Add empty encoder functions to the keyboard code, as the configurator doesn't see the keymap defined functions at first.
To be able to override these functions, they are marked as 'weak'.
* Rework encoder functions another time
Default implementation is now provided as part of the keyboard, but they can still be overriden within the keymap (template is commented out by default)
* Reworked for VIA support
Reworked for VIA support and tidying up of older code.
* Fixed naming issues, and prepared for VIA compat
Via compat added
* Improve layouts, tidy code, via keymap
Added support for VIA and cleaned up some code and layouts.
* Implimented suggestions by MechMerlin
* Fix capitalisation
Mistake raised by Drashna now fixed.
* Tidy comments as requested by noroadsleft
* Tidy comments as requested by fauxpark
* feat(build): added script for compiling with docker easily
* chore: bring my own build with docker to master
* feat: merge ergodox ez into latest maste
* chore: remove my build with docker file
* chore: remove my changes to process_leader
* feat: more modular user danielo515
* Apply suggestions from @ridingqwerty
Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>
* chore: more suggestions implemented
* chore: add my basic details
* Apply suggestions from @drashna
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* fix: more @drashna fixes
* feat: @fauxpark optimization
* fix: some more @drashna improvements
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* chore: small improvement on layout
* fix: some more @drashna improvements
* chore: remove some F dance
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Ensure setPinInput actually sets input high-z
* Fixed _PIN_ADDRESS Macro arguments
as recommended by vomindoraan
* Fixed instances of setInput to use new behavour
* Changed kmac matrix to use input with pullups
* Update keyboards/gh60/revc/revc.h
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Fixed input state for unselect_rows
* fixed merge conflict
* Updated all instances of older uses of setPinInput()
* Fixed naming mistake
Co-authored-by: fauxpark <fauxpark@gmail.com>
* Add VIA support to mxss and general cleanup
* Add support for RGB test for FLEDs
* Add LAYOUT_all to allow for more configuration
* Remove blank layers
* Updated readme
* Improve use of EEPROM
* Credit where its due
* Use the latest iteration of rgblight code
* Keep the RGB timer running if the front LED is in RGB mode
* Fix RGB breathing animation
* Better supported RGB animation
Only thing not working is alternating, but that's not too important
* Abstract front LED handlers from main kb code
* Add support for indicator LED color changing
* Remove debug statement
* Persist indicator LED colors
* Mark custom sections in rgblight.c
* Light commenting
* Fix up keymaps
* Add/update comments
* Remove bloat from default hex
* Tidy a stray tab
* Out with the old, in with the new
* Out with the old, in with the new
* Add LAYER_STATE_8BIT for VIA keymap
* Added KidBrazil custom keymap for CRKBD
-Custom Font
-Custom OLED output
* Added missing readme
* Oled Timeout Update for KidBrazil Keymap (#1)
* Setup Oled timeout based on simple timer
* Cleaned up comments and added timeout for LEDs
* Fixed some small errors
* Updated oled timout with matrix scan
* Updated oled timout with matrix scan
* Update withou eeprom
* Update timer code
* Use process user instead of keymap
* Added ifdef to protect oledtimer
* Updated with half timeout state for logo
* Removed middle tier timer
* Final cleanup of unused files
* Updated code as per suggestions & requests
* Second round of revisions
* Updated keymap to better handle LED timeout
- Added boolean to hold LED state
- Added init function to set rgb to known state
- Modified RGB_TOG to work with noeeprom commands
* Finished adding the timeout for OLED and testing on CRKBD
* Updated documentation
* fixed the timeout logic so it works as intended
* Added initial limits to color settings
* Added layer reset as part of the iddle timeout process
* Split Keymap into more manageable files
* Finalizing RGB Layer status on CRKBD
- Refactored OLED timeout to deal only with oled
- If user remains iddle on game layer for too long it will switch to
default
- LED / OLED iddle working
- Minor changes to _SYM layer
- Removed some rgb controls from keyboard due to layer dependent RGB
colors
* Update keyboards/crkbd/keymaps/kidbrazil/keymap.c
Used suggestion from Drashna to replace EEPROM_RESET with shorter version.
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Update keyboards/crkbd/keymaps/kidbrazil/keymap.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Implemented drashna's comment
Co-authored-by: Drashna Jaelre <drashna@live.com>
- uprintf -> dprintf
- Fix atsam "vendor" eeprom.
- Bump Kinetis K20x to 64 bytes, too.
- Rollback Kinetis to 32 bytes as partitioning can only be done once. Add warning about changing the value.
- Change RAM-backed "fake" EEPROM implementations to match eeconfig's current usage.
- Add 24LC128 by request.
* fix audio enable repetition
* remove RGB LED support as this board has no RGB LB LEDs
* use pragma once
* this board has no backlight support
* enable COMMAND_ENABLE
* comment cleanups
* setting bootmagic to lite as the first board thathat has this PCB has a solid bottom. If someone forgets to put in a RESET key on their keymap, they are not going to have fun resetting the board
* Update keyboards/clueboard/66/rev4/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/clueboard/66/rev4/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/clueboard/66/rev4/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/clueboard/66/rev4/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* convert the palset and palclear routines to setpinoutput and writepinlow
* remove scankb
* restore original guards instead of pragma once
Co-authored-by: fauxpark <fauxpark@gmail.com>
* both backspace and left shift matrix positions off by one
* update the led_update routine
* update readme
* Update keyboards/gray_studio/think65/solder/solder.c
* WIP do not merge
* first pass at custom preonic layout
* add auto shift and reset via leader key
* Update readme
* update copyright notice
* formatting changes
* fix: use MO instead of process_record_user
* added backslash and moved grave position
* remove extraneous 'j' characer in NUMPAD template
* update template formatting
* remove process_record_user
* swap "!" with "@"
* fix readme formatting
* update readme layout image
Commandline args should be merged with the submodule's config.
Compare config values to None instead of False, so empty lines and False
can be used as values.
* Add mx5160 keyboard
* Make necessary changes for merging
rules.mk cleanup, QMK's built in alias for KC_TRNS and change readme blurb
* Add info.json as well
* Update readme, info.json
* Change layout name, update led function
* Fix info.json
* Update rules.mk
* 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
* Remove custom backlight code for PS2AVRGB boards
* Remove custom driver setting
* BACKLIGHT_BREATHING goes in config.h, not here
* Don't need to include backlight.c again here either
* Turn on backlight for Canoe
* Disable console on a few boards due to oversize
* Enforce definition of `DIODE_DIRECTION` for non-custom matrix boards
* Define diode direction for failing boards
* Matching parentheses
* Put onekey diode directions in top level config
* Initial commit
* Modified keymap and updated readme.
* fixed numbering in readme
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Update README.md
* Made requested changes in PR.
* Rename README.md to readme.md
* swapped media control keys
* updated right alt key to apply shift key for emacs
* updated R_Alt to remove shift
* Updated readme
* add layout 2 and rename existing folder to layout 4
- renamed existing folder with directional layout to layout 4
- udpated existing readme
- Added layout_60_2
* update flash script per pull request review
* Added keymap profile to space65
- This keymap profile is for MacOS with VIM key bindings
- See readme for more information
* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/gray_studio/space65/keymaps/billiams/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* remove unnecessary code from keymap
* updated keys and cleaned up readme
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Define default HSV and speed for RGB matrix.
* Documentation for configuration values RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT and RGB_MATRIX_STARTUP_VAL.
* Document RGB_MATRIX_STARTUP_SPD.
* Preserve the ordering.
On the v1.2 PCB the slave half leds go in reverse order compared to the master half.
With this change, the leds are all in order from left to right, so animations like
Knight Rider look like you'd expect.
* ISO UK layout for Graystudio Space65
* Quick line on how to build it in the readme
* Update ASCII art layout guide to match reality
* Whoops, space is actually K47, not K46
* Rename to 65_iso_blocker and remove uk designation
* RGB config overhaul
Changing RGB config from setrgb to sethsv, trying out different color values.
* Merged changes
* Various changes and a couple additions
Added Git Layer with git macros for most operations and LED config to show the macro keys on layer. Activated with FN+3.
Added VIM Layer, this is a normal keycode layer with no macros for now but it has LED config that highlights the navigation and edit keys in VIM.
Added a sticky CTRL and sticky SHIFT layers. I have no idea why I did this actually, it's mildly useful but oneshot and tapdance would be better, will be removed in later commit.
Changed the LED config from setrgb to sethsv and the key by key LED config to array.
Some code improvements in process_record_user.
Better way to manage string macros using char array. Inspired by drashna's secret macros.
* Various keymap changes and added documentation
Updated massdrop/ctrl endgame keymap:
Added layers for git and vim.
Better LED config method, using ledmap, similar to what's used in many other keymaps.
Improved process_record_user() mainly with reduced conditionals.
Cleaned things up in the header and config.
Added pretty much all qmk feature headers to rules and config, commented out to be enabled if desired. Firmware size should be considered.
Not many features added in this commit. Shifting for a while to work on implementing raw hid for the keyboard and expanding qmk terminal.
Added documentation.md for massdrop/ctrl at keyboard level to house all related information for future use.
Added documentation for raw hid in docs, added the doc to feature index. Need some review for this documentation and suggested additions/changes.
* Some fixes
Fixed keymap documentation to include changes.
Removed useless double tap keys and simplified layer maps.
* Fixed error in keymap
* Removed documentation changes. Will present in another PR
* Update keyboards/massdrop/ctrl/DOCUMENTATION.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update DOCUMENTATION.md
* Update keymap.c
fixed mouse layout incomplete arrow cluster
* Update keyboards/massdrop/ctrl/keymaps/endgame/keymap.c
Fixed Git layer led config
Co-Authored-By: totolouis <totolouis@users.noreply.github.com>
* Update DOCUMENTATION.md
Remove raw hid details
* Update rules.mk
Remove useless stuff
* fixed malformed led map causing compile fail, indentation fixes
* Update keyboards/massdrop/ctrl/keymaps/endgame/config.h
switch from TG_NKRO to NK_TOGG
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keymap.c
Switching from TG_NKRO to NK_TOGG
* Added yakuake layout
* Update keyboards/massdrop/ctrl/keymaps/endgame/keymap.c
Change biton32(layer_state) to get_highest_layer()
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keymap.c
Change from biton32 to get_highest_layer
* Fixed custom LED not toggling off
Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: totolouis <totolouis@users.noreply.github.com>
* Initial commit of HHKB layout.
* Moved keymap to the correct location.
This keymap is for a hasu alt controller-equipped HHKB, so the keymap was in the wrong place.
Added comments to the keymap.
* Add files via upload
* Rename keyboards/kbdfans/kbd67/rev2/keymaps/keymap.c to keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c
* Rename keyboards/kbdfans/kbd67/rev2/keymaps/readme.md to keyboards/kbdfans/kbd67/rev2/keymaps/adi/readme.md
* Update readme.md
* Update readme.md
* Update keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kbdfans/kbd67/rev2/keymaps/adi/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Tidy up dztech keyboard.c/h and readmes
* Use new lock LED function
* Undo changes to led flags
* Fix make examples
* Update readmes some more
* Clarify filetypes
* Format as list
* Add minitomic keyboard
* Small change to readme
* Make changes necessary for merging
Remove extra comma in info.json, move caps lock led status from keymap to keyboard, removes unused keys on full space bar layout, cleans up rules.mk and update readme blurb.
* Update readme.md
* Update led function, fix spacing and remove custom keycodes
Removes the custom keycodes in default keymap, fixes spacing in keymap and minitomic.c and puts the new led function in as well
* Keyboard: add treeadstone48
* rename layout defines
* Use of pragma once
* move common include code
* fixed info.json
* change keymap layout from kc to normal
* fix alpha revision keymap
* fixed info.json
* remove USE_Link_Time_Optimization
* I re-created treastone48 keyboard firmware from ./util/new_keyboard.sh
After that I use common OLED_DRIVER, RGB_LIGHT and SPLIT_KEYBOARD options.
And then check all keymap.
* Modified by PR review
* Basic functionality to synchronize the strings and enums using C preprocessor macros.
* Updated all the custom convenience macros to work.
* Removed some duplicate update_tri_layer calls.
* Simplified the convenience accelerator macros for synchronizing enums and strings by removing the short enum names.
* Updated the CUSTOM_MACROS macro to use SS_LCTL instead of SS_LCTRL.
* Fixed a bug where the right side of the convenience layer in the Iris keymap was incorrectly listed twice.
* Removed the tenkey from the convenience layer. Added Windows 10 virtual desktop shortcuts to the convenience layer.
* Fixed a bug where the macro range was not set correctly.
* Added sigil values for the keycode enum so that additions to the sync macros will not require changes to the process_record_user ranges.
* Hacked send_string_P to work with ChibiOS boards.
* Switched to using I2C for the Iris keyboard.
* Finished a comment.
* Updated comments to explain that for non-AVR MCUs, the PROGMEM macro doesn't do anything.
* Updated the synchronization macros to use the more descriptive "NAME" instead of "CALL". Moved the Control-Alt-Delete chord macro to the synchronization macro.
* Simplified the custom macros by consolidating the macros into a context change macro instead of using alt-tab and minimize macros.
* Fixed a formatting issue where several tabs were used instead of 4 spaces.
* Added more comments to explain the synchronization macros.
* Simplified the PARAMS macro, since any parameters could be passed with a space by the declarer instead.
* Consolidated the synchronization macros into a single list. Simplified the synchronization mechanism.
* Removed the overloading macro, since it is no longer needed.
* Updated the convenience layer comments to reflect the changes made.
* Renamed the git_macros pointer table to custom_macros, since it no longer solely consists of git macros.
* Clarified that the send_string_P function's use of pgm_read_byte is different for AVR and non-AVR compilation targets.
* hope this works
* Some new things crept in
* remove nonsense config file
* spacing fix
* more spacing
* quick revert of mysterious file
* file revert take two
* take three
* take four
* deleted unneeded lines
* brought back not-unneeded line
* whitespace delete
Updates the example make commands in the Levinson readme to
keebio/levinson/... instead of levinson/...
Also updated the example to rev3 (the current version of the board)
* Add: RGB underglow support using SPI to SteamVan and CO60
* Update: Switch to QMK's baclight implementation for CO60 and SteamVan
* Fix: Remove now unnecessary backlighting code from keyboard files
* initial commit from script
* edit all generated files with my name and some basic notes
* implement RGB Matrix support
* cleanups, file removals, and readme edits
* Update keyboards/bm60hsrgb/config.h
* rename to bm60rgb
* update included library and info.json keyboard name
* Update keyboards/bm60rgb/keymaps/default/readme.md
This code is timing sensitive and seems to break with LTO enabled (at
least on avr-gcc 8.3.0... it worked on older gcc versions).
This is the same workaround as #7558 applied for the Helix.
* Adi's DZ65RGB layout
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Rename layers.JSON to layers.json
* Update readme.md
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Delete layers.json
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Rename keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md to keyboards/dztech/dz65rgb/keymaps/adi/readme.md
* Rename keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/keymap.c to keyboards/dztech/dz65rgb/keymaps/adi/keymap.c
Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Nk65 Refractor
- Changed Via keymap to via instead of default_via
- Moved Caps/Layer indicator code outside of wilba_tech rgb. This is so they can more easily be modified
* Update keyboards/nk65/nk65.c
* added ymdk ymd09 keyboard
* lowercase github username
* change rgb keymap to make more sense
* fixed number of LEDs
* remove configuration for non-existant backlight
* use official template and change file permissions
* disable unnecessary nkro
* Apply suggestions from code review
Co-Authored-By: Joel Challis <git@zvecr.com>
* with easy reset via bootmagic lite, remove RESET from layout
Co-authored-by: Joel Challis <git@zvecr.com>
* make vendor folder for idb keyboards
* set default debounce to eager_pk, clean up vendor/product ID
* refactoring for VIA
* made changes to support latest release of VIA, added default keymap that's in line with the most popular configuration
* Made suggested formatting changes
* rebase to get rid of lufa files
* removed idb_60.json that's only meant for via itself
* Update keyboards/idb/idb_60/keymaps/via/rules.mk
* Update keyboards/idb/idb_60/readme.md
* Update keyboards/idb/idb_60/readme.md
* Update keyboards/idb/idb_60/readme.md
* Update keyboards/idb/idb_60/rules.mk
* Update keyboards/idb/idb_60/config.h
* Update keyboards/idb/idb_60/readme.md
* made suggested formatting changes
* fixing lufa
* Update keyboards/idb/idb_60/rules.mk
* Update keyboards/idb/idb_60/config.h
* made suggested changes
* Implement IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- Add configurable option IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- Add function get_ignore_mod_tap_interrupt iff the option is enabled
Unless IGNORE_MOD_TAP_INTERRUPT_PER_KEY is defined, this patch does not affect the resulting binary.
* Add documentation for IGNORE_MOD_TAP_INTERRUPT_PER_KEY
* refactor keyboards using ST_STM32F072B_DISCOVERY to use 'MCU = STM32F072'
* refactor keyboards using GENERIC_STM32_F042X6 to use 'MCU = STM32F042'
* refactor keyboards using GENERIC_STM32_F103 to use 'MCU = STM32F103'
A QMK member may have replied to your pull request stating that your submission is a breaking change. In their judgment, the changes you have proposed have greater implications for either QMK, or its users.
Some things that may cause a pull request to be flagged are:
- **Edits to User Keymaps**
A user may submit their keymap to QMK, then some time later open a pull request with further updates, only to find it can't be merged because it was edited in the `qmk/qmk_firmware` repository. As not all users are proficient at using Git or GitHub, the user may find themself unable to fix the issue on their own.
- **Changes to Expected Behavior**
Changes to QMK behavior may cause users to believe their hardware or QMK is broken if they flash new firmware that incorporates changes to existing QMK features, and find themselves without a means to restore the desired behavior.
- **Changes Requiring User Action**
Changes may also require action to be taken by users, such as updating a toolchain or taking some action in Git.
- **Changes Necessitating Increased Scrutiny**
On occasion, a submission may have implications for QMK as a project. This could be copyright/licensing issues, coding conventions, large feature overhauls, "high-risk" changes that need wider testing by our community, or something else entirely.
- **Changes Requiring Communication to End Users**
This includes warnings about future deprecations, outdated practices, and anything else that needs to be communicated but doesn't fit into one of the above categories.
## What Do I Do?
If it is determined that your submission is a breaking change, there are a few things you can do to smooth the process:
### Consider Splitting Up Your PR
If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code.
### Contribute a ChangeLog Entry
We require submissions that go through the Breaking Change process to include a changelog entry. The entry should be a short summary of the changes your pull request makes – [each section here started as a changelog](ChangeLog/20190830.md "n.b. This should link to the 2019 Aug 30 Breaking Changes doc - @noroadsleft").
Your changelog should be located at `docs/ChangeLog/YYYYMMDD/PR####.md`, where `YYYYMMDD` is the date on which QMK's breaking change branch – usually named `future`– will be merged into the `master` branch, and `####` is the number of your pull request.
If your submission requires action on the part of users, your changelog should instruct users what action(s) must be taken, or link to a location that does so.
### Document Your Changes
Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog.
Commenting on your pull request and being responsive to questions, comments, and change requests is much appreciated.
### Ask for Help
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/Uq7gcHh).
Atthetimeofthiswritingwedonotdoanymockingforourtests.Ifyouwouldliketohelpuschangethisplease [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) andstartaconversationthere.
@ -143,10 +143,14 @@ If you define these options you will enable the associated feature, which may in
*`#define IGNORE_MOD_TAP_INTERRUPT`
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
* See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details
*`#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
* enables handling for per key `IGNORE_MOD_TAP_INTERRUPT` settings
*`#define TAPPING_FORCE_HOLD`
* makes it possible to use a dual role key as modifier shortly after having been tapped
* See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold)
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
*`#define TAPPING_FORCE_HOLD_PER_KEY`
* enables handling for per key `TAPPING_FORCE_HOLD` settings
*`#define LEADER_TIMEOUT 300`
* how long before the leader key times out
* If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped.
QMK provides a mechanism to supplement or replace the default matrix scanning routine with your own code.
The reasons to use this feature include:
* Extra hardware between the keyboard's switches and MCU pins
* I/O multiplexer
* Line decoder
* Irregular switch matrix
* Simultaneous use of `COL2ROW` and `ROW2COL`
## Prerequisites
Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called `matrix.c`.
Add a new file to your keyboard directory:
```text
keyboards/<keyboard>/matrix.c
```
And to configure compilation for the new file, add this to your `rules.mk`:
```make
SRC+= matrix.c
```
## 'lite'
Provides a default implementation for various scanning functions, reducing the boilerplate code when implementing custom matrix.
To configure it, add this to your `rules.mk`:
```make
CUSTOM_MATRIX= lite
```
And implement the following functions in a `matrix.c` file in your keyboard folder:
@ -489,14 +489,24 @@ The `val` is the value of the data that you want to write to EEPROM. And the `e
# Custom Tapping Term
By default, the tapping term is defined globally, and is not configurable by key. For most users, this is perfectly fine. But in come cases, dual function keys would be greatly improved by different timeouts than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable `TAPPING_TERM`.
By default, the tapping term and related options (such as `IGNORE_MOD_TAP_INTERRUPT`) are defined globally, and are not configurable by key. For most users, this is perfectly fine. But in some cases, dual function keys would be greatly improved by different timeout behaviors than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable timeout behaviors.
To enable this functionality, you need to add `#define TAPPING_TERM_PER_KEY` to your `config.h`, first.
There are two configurable options to control per-key timeout behaviors:
-`TAPPING_TERM_PER_KEY`
-`IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
You need to add `#define` lines to your `config.h` for each feature you want.
```
#define TAPPING_TERM_PER_KEY
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
```
## Example `get_tapping_term` Implementation
To change the `TAPPINGTERM` based on the keycode, you'd want to add something like the following to your `keymap.c` file:
To change the `TAPPING_TERM` based on the keycode, you'd want to add something like the following to your `keymap.c` file:
## Example `get_ignore_mod_tap_interrupt` Implementation
Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard level function. Only a user level function is useful here, so no need to mark it as such.
To change the `IGNORE_MOD_TAP_INTERRUPT` value based on the keycode, you'd want to add something like the following to your `keymap.c` file:
## `get_tapping_term` / `get_ignore_mod_tap_interrupt` Function Documentation
Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard level function. Only user level functions are useful here, so no need to mark them as such.
`EEPROM_DRIVER = vendor` | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
## Vendor Driver Configuration
No configurable options are available.
## I2C Driver Configuration
Currently QMK supports 24xx-series chips over I2C. As such, requires a working i2c_master driver configuration. You can override the driver configuration via your config.h:
MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895>
?> If you find that the EEPROM is not cooperating, ensure you've correctly shifted up your EEPROM address by 1. For example, the datasheet might state the address as `0b01010000` -- the correct value of `EXTERNAL_EEPROM_I2C_BASE_ADDRESS` needs to be `0b10100000`.
## Transient Driver configuration
The only configurable item for the transient EEPROM driver is its size:
@ -291,6 +291,25 @@ Normally, this would send `X` (`SHIFT`+`x`). With `Ignore Mod Tap Interrupt` ena
?> If you have `Permissive Hold` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
For more granular control of this feature, you can add the following to your `config.h`:
```c
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
```
You can then add the following function to your keymap:
Hardware configurations using ARM-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.
Hardware configurations using Arm-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.
!> Warning: This OLED Driver currently uses the new i2c_master driver from split common code. If your split keyboard uses I2C to communicate between sides, this driver could cause an address conflict (serial is fine). Please contact your keyboard vendor and ask them to migrate to the latest split common code to fix this. In addition, the display timeout system to reduce OLED burn-in also uses split common to detect keypresses, so you will need to implement custom timeout logic for non-split common keyboards.
!> Warning: This OLED driver currently uses the new i2c_master driver from Split Common code. If your split keyboard uses I2C to communicate between sides, this driver could cause an address conflict (serial is fine). Please contact your keyboard vendor and ask them to migrate to the latest Split Common code to fix this. In addition, the display timeout system to reduce OLED burn-in also uses Split Common to detect keypresses, so you will need to implement custom timeout logic for non-Split Common keyboards.
## Usage
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to set `OLED_DRIVER_ENABLE=yes` in`rules.mk`, e.g.:
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your`rules.mk`:
```
```make
OLED_DRIVER_ENABLE= yes
```
This enables the feature and the `OLED_DRIVER_ENABLE` define. Then in your `keymap.c` file, you will need to implement the user task call, e.g:
Then in your `keymap.c` file, implement the OLED task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`:
```C++
```c
#ifdef OLED_DRIVER_ENABLE
voidoled_task_user(void){
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
oled_write_P(PSTR("Default\n"), false);
break;
case _FN:
oled_write_P(PSTR("FN\n"), false);
break;
case _ADJ:
oled_write_P(PSTR("ADJ\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
In split keyboards, it is very common to have two OLED displays that each render different content and oriented flipped differently. You can do this by switching which content to render by using the return from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:
In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:
| `OLED_DISPLAY_ADDRESS` | `0x3C`| The i2c address of the OLED Display |
| `OLED_FONT_H` | `"glcdfont.c"` |The font code file to use for custom fonts |
| `OLED_FONT_START` | `0` |The starting characer index for custom fonts |
| `OLED_FONT_END` | `224` |The ending characer index for custom fonts |
| `OLED_FONT_WIDTH` | `6` | The font width |
| `OLED_FONT_HEIGHT` | `8` | The font height (untested) |
| `OLED_TIMEOUT` | `60000` | Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
| `OLED_SCROLL_TIMEOUT` | `0` | Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
| `OLED_SCROLL_TIMEOUT_RIGHT`| *Not defined* | Scroll timeout direction is right when defined, left when undefined. |
| `OLED_IC` | `OLED_IC_SSD1306` | Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
| `OLED_COLUMN_OFFSET` | `0` | (SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC. |
|`OLED_DISPLAY_ADDRESS` |`0x3C` |The i2c address of the OLED Display |
|`OLED_FONT_H` |`"glcdfont.c"` |The font code file to use for custom fonts |
|`OLED_FONT_START` |`0` |The starting characer index for custom fonts |
|`OLED_FONT_END` |`224` |The ending characer index for custom fonts |
|`OLED_FONT_WIDTH` |`6` |The font width |
|`OLED_FONT_HEIGHT` |`8` |The font height (untested) |
|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_SCROLL_TIMEOUT` |`0` |Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_SCROLL_TIMEOUT_RIGHT`|*Not defined* |Scroll timeout direction is right when defined, left when undefined. |
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
|`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br/>Useful for 128x64 displays centered on a 132x64 SH1106 IC.|
## 128x64 & Custom sized OLED Displays
The default display size for this feature is 128x32 and all necessary defines are precalculated with that in mind. We have added a define, `OLED_DISPLAY_128X64`, to switch all the values to be used in a 128x64 display, as well as added a custom define, `OLED_DISPLAY_CUSTOM`, that allows you to provide the necessary values to the driver.
|`OLED_DISPLAY_128X64`|*Not defined* |Changes the display defines for use with 128x64 displays. |
|`OLED_DISPLAY_CUSTOM`|*Not defined* |Changes the display defines for use with custom displays.<br>Requires user to implement the below defines. |
|`OLED_DISPLAY_WIDTH` |`128` |The width of the OLED display. |
|`OLED_DISPLAY_HEIGHT`|`32` |The height of the OLED display. |
|`OLED_MATRIX_SIZE` |`512` |The local buffer size to allocate.<br>`(OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH)`. |
|`OLED_BLOCK_TYPE` |`uint16_t` |The unsigned integer type to use for dirty rendering. |
|`OLED_BLOCK_COUNT` |`16` |The number of blocks the display is divided into for dirty rendering.<br>`(sizeof(OLED_BLOCK_TYPE) * 8)`. |
|`OLED_BLOCK_SIZE` |`32` |The size of each block for dirty rendering<br>`(OLED_MATRIX_SIZE / OLED_BLOCK_COUNT)`. |
|`OLED_COM_PINS` |`COM_PINS_SEQ` |How the SSD1306 chip maps it's memory to display.<br>Options are `COM_PINS_SEQ`, `COM_PINS_ALT`, `COM_PINS_SEQ_LR`, &`COM_PINS_ALT_LR`.|
|`OLED_SOURCE_MAP` |`{ 0, ... N }` |Precalculated source array to use for mapping source buffer to target OLED memory in 90 degree rendering. |
|`OLED_TARGET_MAP` |`{ 24, ... N }`|Precalculated target array to use for mapping source buffer to target OLED memory in 90 degree rendering. |
### 90 Degree Rotation - Technical Mumbo Jumbo
### 90 Degree Rotation - Technical Mumbo Jumbo
!> Rotation is unsupported on the SH1106.
```C
```c
// OLED Rotation enum values are flags
typedefenum{
OLED_ROTATION_0=0,
@ -143,9 +146,9 @@ typedef enum {
}oled_rotation_t;
```
OLED displays driven by SSD1306 drivers only natively support in hardware 0 degree and 180 degree rendering. This feature is done in software and not free. Using this feature will increase the time to calculate what data to send over i2c to the OLED. If you are strapped for cycles, this can cause keycodes to not register. In testing however, the rendering time on an `atmega32u4` board only went from 2ms to 5ms and keycodes not registering was only noticed once we hit 15ms.
90 Degree Rotated Rendering is achieved by using bitwise operations to rotate each 8 block of memory and uses two precalculated arrays to remap buffer memory to OLED memory. The memory map defines are precalculated for remap performance and are calculated based on the OLED Height, Width, and Block Size. For example, in the 128x32 implementation with a `uint8_t` block type, we have a 64 byte block size. This gives us eight 8 byte blocks that need to be rotated and rendered. The OLED renders horizontally two 8 byte blocks before moving down a page, e.g:
OLED displays driven by SSD1306 drivers only natively support in hardware 0 degree and 180 degree rendering. This feature is done in software and not free. Using this feature will increase the time to calculate what data to send over i2c to the OLED. If you are strapped for cycles, this can cause keycodes to not register. In testing however, the rendering time on an ATmega32U4 board only went from 2ms to 5ms and keycodes not registering was only noticed once we hit 15ms.
90 degree rotation is achieved by using bitwise operations to rotate each 8 block of memory and uses two precalculated arrays to remap buffer memory to OLED memory. The memory map defines are precalculated for remap performance and are calculated based on the display height, width, and block size. For example, in the 128x32 implementation with a `uint8_t` block type, we have a 64 byte block size. This gives us eight 8 byte blocks that need to be rotated and rendered. The OLED renders horizontally two 8 byte blocks before moving down a page, e.g:
| | | | | | |
|---|---|---|---|---|---|
@ -167,8 +170,8 @@ So those precalculated arrays just index the memory offsets in the order in whic
@ -380,6 +380,10 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
#define RGB_MATRIX_STARTUP_HUE 0 // Sets the default hue value, if none has been set
#define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
@ -135,7 +135,7 @@ As there is no standard split communication driver for ARM-based split keyboards
`CUSTOM_MATRIX`
Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan().
Lets you replace the default matrix scanning routine with your own code. For further details, see the [Custom Matrix page](custom_matrix.md).
@ -33,3 +33,7 @@ Support for up to 2 drivers. Each driver impliments 2 charlieplex matrices to in
## IS31FL3733
Support for up to a single driver with room for expansion. Each driver can control 192 individual LEDs or 64 RGB LEDs. For more information on how to setup the driver see the [RGB Matrix](feature_rgb_matrix.md) page.
## 24xx series external I2C EEPROM
Support for an external I2C-based EEPROM instead of using the on-chip EEPROM. For more information on how to setup the driver see the [EEPROM Driver](eeprom_driver.md) page.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.