* 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'
* add readme to each of the mkii versions
* update the most parent of kbd67 readmes to have history of the new versions
* fix up the parent readme for the two types of boards
* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* fixup readmes
Co-authored-by: fauxpark <fauxpark@gmail.com>
* fixed hhkb keymap issue and added allleds configuration
* fixed layout mismatch
* add more matrix control
* remove redundent define in rules.mk
* turn NKRO on
* remove allled macro, adding readme in allleds mode, add via support
* add two more layers for via
* update readme file
* Update keyboards/exclusive/e6_rgb/keymaps/allleds/readme
* Update keyboards/exclusive/e6_rgb/keymaps/allleds/readme.md
* add VIA support to Kyuu
* update keymap file to follow indenting guidelines
* add missing newline to rules.mk
* remove unnecessary backslashes and reindent default 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
* Update keyboards/crkbd/keymaps/kidbrazil/README.md
* fix ANSI layout macro reference
* update ISO layout macro and enable 65_iso community layout support
- rename to LAYOUT_65_iso (with LAYOUT_iso alias for backwards compatibility)
- rename position k2c to k1d (electrical position)
* rules.mk templating
* tada68.h: use #pragma once include guard
* config.h: use #pragma once include guard
* make product id unique
* update info.json
* update readme
* cleanup default keymap
- keycode alignment
- layout macro reference
- four-space indent
* remove matrix_*_user functions from tada68.h
* Left-right gradient.
* Update the comment to match the new functionality.
* CPP does integer division so this round is not necessary.
* The x-range is actually 224, update comment and use bit-shifting again.
* Update docs with gradient left-right effect and associated "DISABLE" option.
* hope this works
* TF working with userspace
* rules for tf
* Fixed changed default files
* delete old keymap
* revert tf68 default to default
Co-authored-by: Akaash Suresh <casa.akaash@gmail.com>
* Add an 65_ansi community layout
- fix quoting because of comma in config.h
* Enable LAYOUT_65_ansi for tada68
* cleanups
* Update keyboards/tada68/tada68.h
Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
* ifdef rgb stuff like a madman for RGB Coexistance
* Re-enable RGB Light on Planck
* fix RGB Coexistance issue
* Tweak feature settings for Ergodox EZ Glow
* Their powers combine, and I am Captain RGB
This one is for noroadsleft and yan.
* Limit brightness when both RGB features are enabled
* Change shutdown method
* Add RGB Coexistience stuff to keymap
* disable RGBLIGHT_SLEEP until a solution can be found
* Disable Unicode on the kyria
* Fix up Iris rev defines
* Fix up community layouts to compile properly
* Cleanup rgb stuff
* Merge ergodox keymaps
* Update CCCV macro to use tap_code16
* Enable Solenoid on C39
Because josh couldn't
* Enable RGB Light, not Matrix on rev6 keymap
* Only enable LTO on non-ARM boards
* Clean up Bootmagic OLED display
* Enable RGBLIGHT_SPLIT on kyria
Not that it does anything
* Add hotkey for discord
* Add support for Red Scarf I numberpads
* update info.json for configurator
* Update keyboards/redscarf_i/redscarf_i.c
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/redscarf_i/redscarf_i.h
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/redscarf_i/redscarf_i.h
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/redscarf_i/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/redscarf_i/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/keymaps/4x5_ortho/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/keymaps/4x5_ortho/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/keymaps/4x6_ortho/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/keymaps/4x6_ortho/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/redscarf_i/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/redscarf_i/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* rename keymaps, add default
* final touches! i think we're there
* remove .gitignore from keymaps directory
* remove unused custom keycodes from ortho_custom_4x5 keymap
* remove ortho_custom_5x4 keymap (identical to ortho_5x4 keymap)
* remove firmware size impacts from rules.mk
* change "MCU selection" to "MCU name" in rules.mk
* complete matrix array for LAYOUT_ortho_5x4 macro
Probably not needed, but I like when it's complete.
* add numpad layout macros
* correct info.json data
* update readme
Co-Authored-By: Ben Weakley <2173281+Defying@users.noreply.github.com>
* rename ortho keymaps to rows by columns per QMK convention
* rules.mk templating
* change uint32_t to layer_state_t per drashna
* use led_update_kb() per drashna
Co-authored-by: Ben Weakley <2173281+Defying@users.noreply.github.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
* correct the matrix pin for db63
* first correct layout
* adding RGB support for db63
* adding backlighting keycode
* enable back extension
* update readme for the bootloader
* correct the capslock pin
* update correct info.json and layout following suggestion
* editing contact
* Update keyboards/db/db63/README.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/db/db63/README.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Move some common matrix code to a common location
* Refactor some 'custom_matrix_helper' logic to use custom matrix lite
* Fix build for kinesis/stapelberg - abuse of vpath was picking up matrix.c from core when custom matrix was enabled
* Add validation for CUSTOM_MATRIX
* Added csc027 user folder and keymaps for both keebio/iris and planck
* Moved the git_macros variable out of the process_record_user function.
* Updated the usb_led code to use the new led_update_user instead of the led_set_user function.
* Update users/csc027/defines.h
Removed the "_______" macro definition in defines.h, since it has already been defined in QMK.
* Update users/csc027/defines.h
Removed the "XXXXXXX" macro definition in defines.h, since it has already been defined in QMK.
* Update users/csc027/csc027.c
Simplified several keyboard macro definitions in the csc027.c file by switching from SS_LCTRL to SS_LCTL in their definitions.
* Condensed both the planck and iris rules files to the minimal set of declarations.
* 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
* Added my UT47.2 Swedish layout with tap dance function.
* Move tap dance over to user space
* Removed config_common from config file
* Changes to workspace with new support for code16. Tested ok
* Swedish support
* Added code16 version of tapdance to userprofile.
* Created 4th layer and updated readme file. Removed ascii rep of layout.
* Tabdance updates
* Removed duplicated RGB keys.
* Added hvp minivan config
* Fixed tapdance key maps
* Added Planck 1 space base hvp layout
* Start of hvp xd75 layout. Way to many keys
* Added working config ink test for atreus62
* fixed smaller layout changes
* Updated tap dance with option 5
* Added better thump keys
* Created lets split layout
* Removed not used modes
* Updated to correct url
* Readme file
* Atreus62 readme
* Cleanup of keymap file
* Added tap dance
* Fixed missed adjustment
* Added hvp planck setup
* Update ascii
* will this work better?
* removed ascii
* Planck 1 space setup
* Fixed ascii local
* Added Corne setup
* Changes for lets split
* Atreus62 config
* Added Lily58
* Setup corne
* Setup planck
* Updated lets split
* UT47 setup
* Setup a The Vanboard.
* Alt Ctrl
* #define D_NAVI MT(MOD_LCTL | MOD_LSFT, KC_D)
* Fix D_NAVI & plank midi
* Fixed PR comments
* Added pragma
* Moved def to user space
* Removed not used endif
* Added def to users space
* Added rules to van
* Removed not used part of config
* Removed not used layout
* Removed not needed comments
* Remove not needed keymap_config_t
* Removed broken ascii from readme files and removed not needed rules
* Added spaces to readme file
* Removed xd75 from branch
* add faq part
* add faq part
* add faq part
* add faq part
* add faq part
* update for link
* update for a punctuation
* update files based on comments
* restore removed git diff header
* correct pathname on git diff header
* update files based on comments
* update files based on comments
* update files based on comments
* update files based on comments
* update file based on comment
* update file based on comment
* update file based on comment
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-Authored-By: shela <shelaf@users.noreply.github.com>
Co-Authored-By: satt99 <39004890+satt99@users.noreply.github.com>
* Aranck now supports community MIT layouts, also minor optimisations done
* Update keyboards/handwired/aranck/keymaps/turkishish/readme.md
* Update keyboards/handwired/aranck/readme.md
* Add creation of new chlid keyboard
* Add creation of new keyboard's parent directories
* Remove redundant message and if statement
* Divide creating new keyboard directory from copying template files
* Fix variables of year placeholder
* Fix filename of keyboard.[ch]
* Use White channel on RGBW LEDs
Co-authored-by: kwerdenker <sebastian.spindler@gmail.com>
* Manually apply white channel to array
* Move where convert_rgb_to_rgbw is called
* Fix type for rgbw led struct
* Add changes to Ergodox EZ
can revert if deemed necessary
* Revert "Add changes to Ergodox EZ"
This reverts commit aa44db198d.
* Revert "Fix type for rgbw led struct"
This reverts commit c5c744cba0.
* Revert "Move where convert_rgb_to_rgbw is called"
This reverts commit cd7f17caf6.
* Revert changes and fix up functions
* Enable white channel for Ergodox EZ as well
* Only run conversion of rgblight is enabled
Co-authored-by: kwerdenker <sebastian.spindler@gmail.com>
* add new keyboard
* update config to use
* confirm config that works
* fix the keymaps and what not
* default keymap update
* update readme
* update and remove unncessary files
* update IDs and remove unused definitions
* update readme
* add new keyboard
* update config to use
* confirm config that works
* fix the keymaps and what not
* default keymap update
* update readme
* update and remove unncessary files
* update IDs and remove unused definitions
* update readme
* remove unused stuff
* update default keymap and add my own with layer indicator LEDs
* update README
* add crd's layout as part of the default as well
* some specific space fixes
* update readme for flashing
* remove code and use mcu selection instead. yay!
* remove vlk from default and enable velocikeys in madhatter
* remove BL_ from default
* and remove BL_ from madhatter as well
* Update keyboards/cheshire/curiosity/keymaps/crd/keymap.c
Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-authored-by: Khader Syed <35927972+chapter63@users.noreply.github.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
* add indicator lighting support thanks to Keebology tracing
* set the correct number of underglow LEDs
* add comments and skeletal structure for layer indicator LEDs
* add backlight areas pins
* update readme
* we can't turn leds on based on zones, so we use multiple backlight pin support instead to turn them ALL on and control them.
* add comments to backlight setting
* make a more useful default keymap that can also be used for testing
* add duck orion to list
* add indicator led support
* update readme
* Update keyboards/duck/orion/v3/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Update keyboards/duck/orion/v3/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Update keyboards/duck/orion/v3/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Update keyboards/duck/orion/v3/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Update keyboards/duck/orion/v3/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* Update keyboards/duck/orion/v3/matrix.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* add the appropriate header files
* fix indent so Drashna will not die
* Update keyboards/duck/orion/v3/v3.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/duck/orion/v3/keymaps/default/keymap.c
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/duck/orion/v3/keymaps/default/keymap.c
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/duck/orion/v3/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/duck/orion/v3/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/duck/orion/v3/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
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.
@@ -287,8 +291,27 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* Defines which format (bin, hex) is copied to the root `qmk_firmware` folder after building.
*`SRC`
* Used to add files to the compilation/linking list.
*`LIB_SRC`
* Used to add files as a library to the compilation/linking list.
The files specified by `LIB_SRC` is linked after the files specified by `SRC`.
For example, if you specify:
```
SRC += a.c
LIB_SRC += lib_b.c
SRC += c.c
LIB_SRC += lib_d.c
```
The link order is as follows.
```
... a.o c.o ... lib_b.a lib_d.a ...
```
* `LAYOUTS`
* A list of [layouts](feature_layouts.md) this keyboard supports.
* `LINK_TIME_OPTIMIZATION_ENABLE`
* Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled.
It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
* `LTO_ENABLE`
* It has the same meaning as LINK_TIME_OPTIMIZATION_ENABLE. You can use `LTO_ENABLE` instead of `LINK_TIME_OPTIMIZATION_ENABLE`.
## AVR MCU Options
* `MCU = atmega32u4`
@@ -347,9 +370,6 @@ Use these to enable or disable building certain features. The more you have enab
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
*`LINK_TIME_OPTIMIZATION_ENABLE`
* Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
* Alternatively, you can use `LTO_ENABLE` instead of `LINK_TIME_OPTIMIZATION_ENABLE`.
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
RGB_MATRIX_SOLID_COLOR=1,// Static single hue, no speed support
RGB_MATRIX_ALPHAS_MODS,// Static dual hue, speed is hue for secondary hue
RGB_MATRIX_GRADIENT_UP_DOWN,// Static gradient top to bottom, speed controls how much gradient changes
RGB_MATRIX_GRADIENT_LEFT_RIGHT,// Static gradient left to right, speed controls how much gradient changes
RGB_MATRIX_BREATHING,// Single hue brightness cycling animation
RGB_MATRIX_BAND_SAT,// Single hue band fading saturation scrolling left to right
RGB_MATRIX_BAND_VAL,// Single hue band fading brightness scrolling left to right
@@ -379,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
@@ -57,16 +57,17 @@ By default, this will download compilers for both AVR and ARM. If you don't need
nix-shell --arg arm false
## macOS
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
If you're using [Homebrew](http://brew.sh/), you can use the following commands:
brew tap osx-cross/avr
brew tap PX4/homebrew-px4
brew tap osx-cross/arm
brew update
brew install avr-gcc@8
brew link --force avr-gcc@8
brew install dfu-programmer
brew install dfu-util
brew install gcc-arm-none-eabi
brew install arm-gcc-bin@8
brew link --force arm-gcc-bin@8
brew install avrdude
This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line. Note that the `make` and `make install` portion during the homebrew installation of `avr-gcc@8` can take over 20 minutes and exhibit high CPU usage.
@@ -119,12 +120,12 @@ If this is a bit complex for you, Docker might be the turnkey solution you need.
util/docker_build.sh keyboard:keymap
# For example: util/docker_build.sh ergodox_ez:steno
```
This will compile the desired keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, the `default` keymap is used. Note that the parameter format is the same as when building with `make`.
This will compile the desired keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, all keymaps are used. Note that the parameter format is the same as when building with `make`.
You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
```bash
util/docker_build.sh
# Reads parameters as input (leave blank for defaults)
# Reads parameters as input (leave blank for all keyboards/keymaps)
```
There is also support for building _and_ flashing the keyboard straight from Docker by specifying the `target` as well:
@@ -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.
original document: eae21eed7:docs/arm_debugging.md
git diff eae21eed7 HEAD docs/arm_debugging.md | cat
git diff eae21eed7 HEAD -- docs/arm_debugging.md | cat
-->
このページでは、SWD アダプタとオープンソース/フリーツールを使って ARM MCU をデバッグするためのセットアップ方法について説明します。このガイドでは、GNU MCU Eclipse IDE for C/C++ Developers および OpenOCD を必要な依存関係と一緒にインストールします。
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.