Including the `xB` suffix prevents qmk_compiler (and thus QMK Configurator) from compiling firmware for the Wete.
Rolling this change back until we work out a long-term solution for the suffixes.
* Add VIA support for Prime_L
* Update keyboards/primekb/prime_l/v1/config.h
* Add prime_exl_plus keyboard
* Temporary removal of prime_exl_plus
* Add Prime_EXL Plus, including VIA support
* Update keyboards/handwired/prime_exl_plus/readme.md
* Update keyboards/handwired/prime_exl_plus/readme.md
* Update keyboards/handwired/prime_exl_plus/readme.md
* Update keyboards/handwired/prime_exl_plus/rules.mk
* Update keyboards/handwired/prime_exl_plus/info.json
* Update keyboards/handwired/prime_exl_plus/info.json
* Update keyboards/handwired/prime_exl_plus/info.json
* Update keymap.c
* correct spacing of keymaps and layout macro. move indicator logic from user space to keyboard space
* further corrections to keymaps and layout macro.
* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c
* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c
* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c
* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c
* Update prime_exl_plus.c
* small edit to prime_exl_plus.c
* [Keyboard] Add Wete
* Fix width and height in Wete info.json
* Use default board files, core backlight, and disable RTC
* Disable I2C, SPI. Minor corrections
* Keymap typo update
* Add LAYOUT_all to info.json
* Remove extra spaces in README, delete matrix_*_kb functions
* Fix layout errors in wete.h, and some minor corrections
* Actually fix LAYOUT_all in info.json
* move lighting code from VIA into the keyboard's .c file so that every keymap can access it
* after some serious conversations with default and wkl, they agreed to let me modify their keymaps. They weren't too happy
* Add link to "Useful functions" in macro docs
Help people find additional features they can activate within a macro
* Update docs/feature_macros.md
Co-Authored-By: Drashna Jaelre <drashna@live.com>
Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add a VIA keymap for kbd75
* rev2 is a completely different pcb allowing a NEW layout, setting this to have a different product id so users don't get confused when they're able to enable numpad layout on rev1 VIA
* Update keyboards/kbdfans/kbd75/rev1/config.h
Co-Authored-By: Joel Challis <git@zvecr.com>
* Update keyboards/kbdfans/kbd75/rev2/config.h
Co-Authored-By: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* Added custom keymap
* Update keyboards/preonic/keymaps/elisiano/keymap.c
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Address PR comments and added CTL_T(KC_ESC) on other layouts as well
Co-authored-by: Ryan <fauxpark@gmail.com>
* correct indicator light states.
function of indicator lights was inverted. these changes correct that.
* flesh out keymaps pre production
* Enable extrakey in rules
* Prime_BLE initial commit
* Initial commit for Prime_L V2
* Update info.json
correct key spacing.
* update copyright
* Update readme.md
* Inital commit
* updates before PR into QMK master
* Drop Prime_EXL Plus from PR. Make requested changes to Prime_L V2
* Rename keyboards/primekb/Prime_l_v2/config.h to keyboards/primekb/prime_l_v2/config.h
* Rename keyboards/primekb/prime_l_v2/config.h to keyboards/primekb/Prime_l_v2/config.h
* remove directory Prime_l_v2
* re-submit with proper folder name.
* Restructure /primekb directory to merge /prime_l and /prime_l_v2
* made changes requested by QMK reviewers
* Update keyboards/primekb/prime_l/v1/readme.md
* Update keyboards/primekb/prime_l/v1/readme.md
* Update keyboards/primekb/prime_l/v1/readme.md
* added via keymap for kbd8x mkii
* adding via to kbd8x mk2
* modified via kbd8x mk2 keymap
* enable LTO kbd8x mk2 via keymap
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* removed backticks kbd8x mk2 via keymap
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* coding style cleanup, enable/disable misconfigured/broken features
* add SCLN missing, compile with backlight PWM warning
* edit json
* new info.json from KLE
* new info.json from KLE using QMK converter
* changes notes
* notes in pull request
* missing line in comments
* line wrap
* Update keyboards/kc60se/config.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/keymaps/default/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/kc60se.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/rules.mk
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* comment back in rules.mk
* add 2 iso layouts and keymaps, 1 ansi kemap, compiled and tested
* keymaps and info
* Delete keymap.c
not ready, I need to get a few iso characters corrected
* Delete keymap.c
not ready, need to get a few iso character define correctly
* Update info.json
Bspc to Backspace
* no unicode
* gui_on and gui_off in readme
* Update keyboards/kc60se/rules.mk
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* remove is_command
* Update keyboards/kc60se/config.h
remove comment
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/kc60se/config.h
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update keyboards/kc60se/readme.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* remove \\ in keymaps
* Update keyboards/kc60se/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/kc60se.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/kc60se.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/kc60se.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/kc60se.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kc60se/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* set led pin b2 to output mode in matrix_init_kb(), toggle it in led_update_kb()
* Update config.h
I had commented FORCE_NKRO out.. WHy did it com back?
Co-authored-by: Check your git settings! <chris@chris-laptop>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Use pathlib everywhere we can
* Update lib/python/qmk/path.py
Co-Authored-By: Erovia <Erovia@users.noreply.github.com>
* Update lib/python/qmk/path.py
Co-Authored-By: Erovia <Erovia@users.noreply.github.com>
* Improvements based on @erovia's feedback
* rework qmk compile and qmk flash to use pathlib
* style
* Remove the subcommand_name argument from find_keyboard_keymap()
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* [keymap] ninjonas keymap updates
* [refactor(kyria)] updating keymap for numpad layer to be transparent rather than ignores
* [keymap(lily58)] added numpad layer
* [keymap(crkbd)] added numpad layer activated through tapdance
* [fix(8170)] fixing code review changes requested by noroadsleft
* [fix(8170)] updating comments and .md files to use 'Cmd' instead of and ⌘
* add detail-guide part
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* update file based on comment
* update file based on comment
* update file based on comment
* update git command in header
* update files based on comments, and update git command in header
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
Co-Authored-By: shela <shelaf@users.noreply.github.com>
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Clean up checks and logics that are unnecessary due to MILC updates.
Use pathlib instead of os.path for readability.
Use the 'pytest' keyboard for the tests.
Add community layout for 'handwired/onekey/pytest' so we can test
community layouts.
Instead of using regexes and globbing to find the rules.mk and keymap.c
files, walk the directory tree to find them.
Also, do away with the concept of revision.
The command now return all keymaps that's buildable for a
keyboard/revision. If the base directory of a keyboard does not contain
a 'rules.mk' file, nothing is returned. If the base directory contains a
'keymaps' directory, those keycaps will be returned for every revision.
* Adding VIA support for 40percentclub/luddite
* Update config.h
* Update rules.mk
* Delete config.h
config.h was created to override the "default" of RGBLED_NUM 8
deleting the file to keep with defaults
* Removing block and comment as suggested
* Update PRODUCT_ID
Changing from:
#define PRODUCT_ID 0x0A0C
To:
#define PRODUCT_ID 0x4C55 // "LU"
* Changing Vendor ID
Changing Vendor ID from:
#define VENDOR_ID 0xFEED
To:
#define VENDOR_ID 0x3430 // "40"
* Use TAPPING_TERM constant (and redefine value to 200ms)
* change TAPPING_TOGGLE to 2 to require two taps to lock in layer 4
* add support for Shift-Command 3/4/5 key combinations that are used in
macOS Catalina
* avoid false positive tap detecion for RMOD3 when the whole sequence of
pressing RMOD3, tapping another key and releasing RMOD3 took less than
TAPPING_TERM milliseconds.
* replace SEND_STRING with tap_code()/tap_code16(), saving ~860 bytes in
compiled firmware size.
* VIA support for Think6.5
* VIA support for Think6.5 Hotswap
* VIA works better with separate layout options
* Remove the colours used to help develop it in KLE
* Pay better attention to the JSON linter
* Update Think6.5 PRODUCT and remove VIA JSON defs
* Fix out of bound OLED font access
The default font is 1344 bytes, or a total of 224 glyphs (each 6-bytes wide).
OLED_FONT_END defaults to 224, which if used will then index off the end of
the font array. So either the documentation or code is wrong.
Instead of figuring out the rewording of the documentation, just change
the OLED_FONT_END default value to 223, to match the documentation and code.
* Add static assert to check array size
Build bomb if the font array size doesn't match to the defines.
* VIA Support for the Idobo (ID75)
* Implemented the requested PR changes
* Readme was pointing to the wrong board
* Fixed Product ID
* Fixed Manufacturer name
* Better Vendor ID
Using the two 8-bit ASCII values from the keyboard name.
* Removed Bootmagic Lite as enabled anyway by VIA
* update zh-cn translate
Timestamp was added at the end of the document, it can help me manage version easier.
* fix _summary.md to utf-8
* fix _summary.md with vscode
* initial commit of VIA Support
* update PRODUCT (and MANUFACTURER) per VIA docs
Reference: https://caniusevia.com/docs/configuring_qmk#change-product
Updated MANUFACTURER so it matches what the PRODUCT says.
* enable Link Time Optimization per mechmerlin
* revert change to USB Product Name
* add two empty layers to via keymap
VIA keymaps need four layers in flash.
* correct the layer indexes
Start from 0, not 1.
* Drop in old files
* Make a blank template keyboard to refresh ancient files to latest config
* Update keymaps files to new format
* Remove chunks of config asked for removal in previous pullreqs
* Remove split pin option from config
* Update rules.mk to latest version
* Remove unused functions from polaris.c
* Add via keymap
* Build basic tsangan keymap; add QMK configurator info
* Remove temporary template
* Update keyboards/ai03/polaris/config.h
* Update keyboards/ai03/polaris/readme.md
* Update keyboards/ai03/polaris/readme.md
* Update keyboards/ai03/polaris/readme.md
* Update rules.mk
* Fixes as per pullreq
* Update keyboards/ai03/polaris/keymaps/default_ansi_tsangan/keymap.c
* Update keyboards/ai03/polaris/polaris.h
* Update keyboards/ai03/polaris/keymaps/default_ansi_tsangan/keymap.c
* Update keyboards/ai03/polaris/info.json
* Update keyboards/ai03/polaris/keymaps/testing/readme.md
* Compile error if ONESHOT_TIMEOUT defined but oneshot disabled
When ONESHOT_TIMEOUT and NO_ACTION_ONESHOT are both defined, this code
fails to compile.
Wrap the one usage of ONESHOT_TIMEOUT that is inconsistent with the
rest so all usages are properly wrapped by a check of NO_ACTION_ONESHOT.
* Run file through clang-format
Co-authored-by: Ted M Lin <tedmlin@gmail.com>
* refactor keymaps
Create one keymap for each layout macro.
* remove config.h for default keymap
There's nothing in it.
* update readme
- use the new list format
- use a smaller version of the keyboard photo (does the readme really need a 14MP image on it?)
* correct indicator light states.
function of indicator lights was inverted. these changes correct that.
* flesh out keymaps pre production
* Enable extrakey in rules
* Prime_BLE initial commit
* Initial commit for Prime_L V2
* Update info.json
correct key spacing.
* update copyright
* Update readme.md
* Inital commit
* updates before PR into QMK master
* Drop Prime_EXL Plus from PR. Make requested changes to Prime_L V2
* Rename keyboards/primekb/Prime_l_v2/config.h to keyboards/primekb/prime_l_v2/config.h
* Rename keyboards/primekb/prime_l_v2/config.h to keyboards/primekb/Prime_l_v2/config.h
* remove directory Prime_l_v2
* re-submit with proper folder name.
* houndstooth
* Amended with collaborator suggestions
* LAYOUT fixup, left crud in keymap
* Fix missing comma in keymap.c
* Correct RGBLIGHT_ENABLE to no
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
* YMDK NP21: matrix and keymap refactor
- refactored layout macros
- LAYOUT_ortho_6x4 orients the keyboard with the USB port to the back instead of to the right
- LAYOUT uses the previous sideways orientation (included for backwards compatibility)
- removed redundant includes from ymdk_np21.h
- added a readme for the default keymap
* add Configurator layout support
* Option to use function for KEYCODE2 routines.
Convert the KEYCODE2SYSTEM and KEYCODE2CONSUMER macros to functions,
defaulting to using the macros. The function form allows the compiler
to optimize the switch statement itself, over the macro nested
ternaries.
To enable this feature, #define USE_KEYCODE2_FUNCTION.
Testing against a random selection of avr-based keyboards, this
increased available flash by ~500 bytes. For arm-based keyboards,
the available flash increased by ~400 bytes.
* Replace macro with function entirely.
As zvecr states, go bold and just commit to using the function instead
of the macro.
* Reformat whitespace now that functional review is done
Verified against clang-format output.
* fix layout macro and update keymaps
K2D switch position is actually physically on the top row, as the right half of a split Backspace.
* add QMK Configurator layout support
* Adding my keymap
Adding a personalized keymap to the Raine keyboard. This diffirentiates itself by being useble with nordic characters even when the bottom row has blockers. Also added ASCII art to help visualize what you are doing when programming the board.
* Update Readme.md
Ned image of the board
* Update Readme.md
Forgot a space in Readme
* Update Readme.md
And another missed space
* Update keymap.c
Renoved Definetion that is not used
* Update Readme.md
* Remove files for renaming
* Adding files after renaming
Was unable to get Girthub to push renamed files/folders. Therefore removeing and adding them again.
* add the via keymap
* get an appropriate unused VID
* fix formatting up a bit
* Update keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
* Update keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
* new alternative controller.
* following suggestions at qmk's 8059.
* forgot to replace some underscores and keycodes.
* following drashna's suggestions at qmk's 8059.
* following zvecr's suggestion in qmk's 8059.
* following noroadsleft's suggestion at qmk's 8059.
* [keymap(kyria)] moved OLED & encoder implementation to separate classes
* [feat] created logic to cycle through hue wheel when starting keyboard
* [feat] created logic to cycle through hue wheel and return to user's default color
* [refactor] updating OLED layout for crkbd & lily58
* [refactor] updating OLED layout for crkbd & lily58
* [fix(8070)] updating encoder.c logic based off drashna's code review
* [refactor(8070)] added key to send + Shift + M
* 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
* Removed reference to firmware size in 0-9,a-f board-level and default keymap 'rules.mk' files
* Correct some 'rules.mk' in boards buried under vendor folders
* PR8027 patch
Co-authored-by: GeorgeKoenig <35542036+GeorgeKoenig@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* 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>
* Swap two cols to fix skog lite
* Fix readme
* Suggested formatting
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.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
* Add DZ60 to VIA
* Changed vendor id from 'KF' to 'DZ'
* Capitalize hex
* Fix Via_layout_options size setting
* Update keyboards/dz60/keymaps/via/rules.mk
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* 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
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
## Update ChibiOS/ChibiOS-Contrib/uGFX submodules
* General Notes
* A `make git-submodule` may be required after pulling the latest QMK firmware code to update affected submodules to the upgraded revisions
* Enabling link-time-optimization (`LINK_TIME_OPTIMIZATION_ENABLE = yes`) should work on a lot more boards
* Upgrade to ChibiOS ver19.1.3
* This will allow QMK to update to upstream ChibiOS a lot easier -- the old version was ~2 years out of date. Automated update scripts have been made available to simplify future upgrades.
* Includes improved MCU support and bugfixes
* ChibiOS revision is now included in Command output
* Timers should now be more accurate
* Upgrade to newer ChibiOS-Contrib
* Also includes improved MCU support and bugfixes
* ChibiOS-Contrib revision is now included in Command output
* Upgrade to newer uGFX
* Required in order to support updated ChibiOS
## Fix ChibiOS timer overflow for 16-bit SysTick devices
* On 16-bit SysTick devices, the timer subsystem in QMK was incorrectly dealing with overflow.
* When running at a 100000 SysTick frequency (possible on 16-bit devices, but uncommon), this overflow would occur after 0.65 seconds.
* Timers are now correctly handling this overflow case and timing should now be correct on ChibiOS/ARM.
## Update LUFA submodule
* Updates the LUFA submodule to include updates from upstream (abcminiuser/lufa)
* Includes some cleanup for QMK DFU generation
## Encoder flip
* Flips the encoder direction so that `clockwise == true` is for actually turning the knob clockwise
* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected dirction is simple for users.
* Cleans up documentation page for encoders
## Adding support for `BACKLIGHT_ON_STATE` for hardware PWM backlight
* Previously, the define only affected software PWM, and hardware PWM always assumed an N-channel MOSFET.
* The hardware PWM backlight setup has been updated to respect this option.
* The default "on" state has been changed to `1` - **this impacts all keyboards using software PWM backlight that do not define it explicitly**. If your keyboard's backlight is acting strange, it may have a P-channel MOSFET, and will need to have `#define BACKLIGHT_ON_STATE 0` added to the keyboard-level `config.h`. Please see the PR for more detailed information.
## Migrating `ACTION_LAYER_TAP_KEY()` entries in `fn_actions` to `LT()` keycodes
*`fn_actions` is deprecated, and its functionality has been superseded by direct keycodes and `process_record_user()`
* The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
* All keymaps affected are recommended to switch away from `fn_actions` in favour of the [custom keycode](https://docs.qmk.fm/#/custom_quantum_functions) and [macro](https://docs.qmk.fm/#/feature_macros) features
## Moving backlight keycode handling to `process_keycode/`
* This refactors the backlight keycode logic to be clearer and more modular.
* All backlight-related keycodes are now actioned in a single file.
* The `ACTION_BACKLIGHT_*` macros have also been deleted. If you are still using these in a `fn_actions[]` block, please switch to using the backlight keycodes or functions directly.
## Refactor Planck keymaps to use Layout Macros
* Refactor Planck keymaps to use layout macros instead of raw matrix assignments
* Makes keymaps revision-agnostic
* Should reduce noise and errors in Travis CI logs
## GON NerD codebase refactor
* Splits the codebase for GON NerD 60 and NerdD TKL PCBs into two separate directories.
* If your keymap is for a NerD 60 PCB, your `make` command is now `make gon/nerd60:<keymap>`.
* If your keymap is for a NerD TKL PCB, your `make` command is now `make gon/nerdtkl:<keymap>`.
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).
@ -71,17 +71,39 @@ There are some limitations to the local CLI compared to the global CLI:
## `qmk cformat`
This command formats C code using clang-format. Run it with no arguments to format all core code, or pass filenames on the command line to run it on specific files.
This command formats C code using clang-format.
**Usage**:
Run it with no arguments to format all core code that has been changed. Default checks `origin/master` with `git diff`, branch can be changed using `-b <branch_name>`
Run it with `-a` to format all core code, or pass filenames on the command line to run it on specific files.
**Usage for specified files**:
```
qmk cformat [file1] [file2] [...] [fileN]
```
**Usage for all core files**:
```
qmk cformat -a
```
**Usage for only changed files against origin/master**:
```
qmk cformat
```
**Usage for only changed files against branch_name**:
```
qmk cformat -b branch_name
```
## `qmk compile`
This command allows you to compile firmware from any directory. You can compile JSON exports from <https://config.qmk.fm> or compile keymaps in the repo.
This command allows you to compile firmware from any directory. You can compile JSON exports from <https://config.qmk.fm>, compile keymaps in the repo, or compile the keyboard in the current working directory.
* the delay in microseconds when between changing matrix pin state and reading values
*`#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }`
* pins unused by the keyboard for reference
*`#define MATRIX_HAS_GHOST`
@ -78,7 +80,7 @@ This is a C header file that is one of the first things included, and will persi
*`#define BACKLIGHT_PIN B7`
* pin of the backlight
*`#define BACKLIGHT_LEVELS 3`
* number of levels your backlight will have (maximum 15 excluding off)
* number of levels your backlight will have (maximum 31 excluding off)
*`#define BACKLIGHT_BREATHING`
* enables backlight breathing
*`#define BREATHING_PERIOD 6`
@ -140,6 +142,8 @@ If you define these options you will enable the associated feature, which may in
*`#define PERMISSIVE_HOLD`
* makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
* See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details
*`#define PERMISSIVE_HOLD_PER_KEY`
* enabled handling for per key `PERMISSIVE_HOLD` settings
*`#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
@ -276,9 +280,12 @@ There are a few different ways to set handedness for split keyboards (listed in
* Default behavior for ARM
* Required for AVR Teensy
*`#define SPLIT_USB_TIMEOUT 2500`
*`#define SPLIT_USB_TIMEOUT 2000`
* Maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`
*`#define SPLIT_USB_TIMEOUT_POLL 10`
* Poll frequency when detecting master/slave when using `SPLIT_USB_DETECT`
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
`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:
@ -265,6 +265,25 @@ Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this wil
?> If you have `Ignore Mod Tap Interrupt` 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 PERMISSIVE_HOLD_PER_KEY
```
You can then add the following function to your keymap:
|`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this|
|`BACKLIGHT_PINS` |*Not defined*|experimental: see below for more information |
|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) |
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported |
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
### Backlight On State
Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *high*.
Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven *low* instead.
This functionality is configured at the keyboard level with the `BACKLIGHT_ON_STATE` define.
### Multiple backlight pins
@ -167,7 +179,7 @@ BACKLIGHT_DRIVER = pwm
Currently only hardware PWM is supported, not timer assisted, and does not provide automatic configuration.
?> STMF072 support is being investigated.
?> Backlight support for STMF072 has had limited testing, YMMV. If unsure, set `BACKLIGHT_ENABLE = no` in your rules.mk.
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
?> You can also use the functions described in [Useful function](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro.
### `record->event.pressed`
This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is
@ -198,11 +210,11 @@ This will clear all mods currently pressed.
This will clear all keys besides the mods currently pressed.
## Advanced Example:
## Advanced Example:
### Super ALT↯TAB
This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows.
This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows.
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` |`223` |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
@ -198,10 +198,15 @@ This option changes the startup behavior to detect an active USB connection when
?> This setting will stop the ability to demo using battery packs.
```c
#define SPLIT_USB_TIMEOUT 2500
#define SPLIT_USB_TIMEOUT 2000
```
This sets the maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`.
```c
#define SPLIT_USB_TIMEOUT_POLL 10
```
This sets the poll frequency when detecting master/slave when using `SPLIT_USB_DETECT`
## Additional Resources
Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.
@ -193,12 +193,23 @@ By default, when the keyboard boots, it will initialize the input mode to the la
!> Using `UNICODE_SELECTED_MODES` means you don't have to initially set the input mode in `matrix_init_user()` (or a similar function); the Unicode system will do that for you on startup. This has the added benefit of avoiding unnecessary writes to EEPROM.
## `send_unicode_hex_string`
## `send_unicode_string()`
To type multiple characters for things like (ノಠ痊ಠ)ノ彡┻━┻, you can use `send_unicode_hex_string()` much like `SEND_STRING()` except you would use hex values separate by spaces.
For example, the table flip seen above would be `send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B")`
This function is much like `send_string()` but allows you to input UTF-8 characters directly, and supports all code points (provided the selected input method also supports it). Make sure your `keymap.c` is formatted in UTF-8 encoding.
There are many ways to get a hex code, but an easy one is [this site](https://r12a.github.io/app-conversion/). Just make sure to convert to hexadecimal, and that is your string.
```c
send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
```
## `send_unicode_hex_string()`
Similar to `send_unicode_string()`, but the characters are represented by their code point values in ASCII, separated by spaces. For example, the table flip above would be achieved with:
An easy way to convert your Unicode string to this format is by using [this site](https://r12a.github.io/app-conversion/), and taking the result in the "Hex/UTF-32" section.
## Additional Language Support
@ -228,6 +239,6 @@ AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
If you enable the US International layout on the system, it will use punctuation to accent the characters.
For instance, typing "`a" will result in à.
For instance, typing "\`a" will result in à.
You can find details on how to enable this [here](https://support.microsoft.com/en-us/help/17424/windows-change-keyboard-layout).
@ -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.
make コマンド自体にもいくつかの追加オプションがあります。詳細は `make --help` を入力してください。最も有用なのはおそらく `-jx` です。これは複数の CPU を使ってコンパイルしたいことを指定し、`x` は使用したい CPU の数を表します。設定すると、特に多くのキーボード/キーマップをコンパイルしている場合は、コンパイル時間を大幅に短縮することができます。通常は、コンパイル中に他の作業を行うための余裕をもたせるために、持っている CPU の数より1つ少ない値に設定します。全てのオペレーティングシステムと make バージョンがオプションをサポートしているわけではないことに注意してください。
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.