* First version of keymap
* cleaned up code, made some tweaks, added readme
* extended oled timeout
* resolved final issues, all features functional
* added some leader-key combos
* added missing RGB keys to layout diagram
* removed lines for older elite-c v3
* make filename lowercase
* add old update interval
* fix spacing
* Initial support for Durgod K320 with BootMagic Lite
- Adding missing files
- Add Unicode Map Support & new user keymap
- Remove personalized features from Default keymap
- Added Unicode Map to both Default and kuenhlee keymap.c
- Updated readme.md
- Added additional Fn Shortcut keys
* Additional support for Durgod K320
- Simplifying default keymap
- Renaming durgod_k320 => durgod/k320
- Removing copy of ST_NUCLEO64_F070RB from K320. Replacing with local board.h
- Adding Mac keyboard layout for K320 as alternative via Fn+F12
- Implementing Windows Key lock on K320
- Cleaning up duplicated core functionality
- Adding default_toggle_mac_windows keymap with:
- Ability to toggle between Windows and MacOS layout
- Mac Media Lock functionality.
* Updating K320 keymap readme
Co-authored-by: kuenhlee <eos.camera.lee@gmail.com>
* Knobgoblin keyboard initial commit
New macropad initial commit. Keyboard and keymap
* corrected bracket and layout name
* attempting info file fix again
* info file line 33 hanging comma fix
* Update keyboards/knobgoblin/config.h
per fauxpark review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/knobgoblin/readme.md
per fauxpark review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/knobgoblin/readme.md
per fauxpark review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
The LED anodes of the pockettype are connected to the bus voltage when a
pro micro is used, but other controllers like the Elite-C (v4) connect this
pin to GPIO B0. This means that LEDs do not work by default for those
controllers.
This commit implements a fix for that by setting the B0 pin high.
* Add RGB Matrix support for Mark 65 keyboard
* Update drive LED count
* Removed unnecessary define line
* Corrected typo
Co-authored-by: filterpaper <filterpaper@localhost>
* initial commit Dawn keyboard
* fixing some matrix
* final tweaks to keymaps and info.json layout
* fix info.json missing delimiter
* missing elements in info.json layout, resolved through lint
* fixed missing link image in readme
* Update keyboards/mechstudio/dawn/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: David <david@tarpit.be>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Fix minor typo in "General FAQ"
"want to do brand it with QMK" -> "want to brand it with QMK"
* Reword some of "Debugging FAQ" & "Miscellaneous FAQ".
Mostly grammatical wording of some parts and missing capitalization
* Initial commit on new clean branch. Testing out functionality of oled and encoder for default features.
* Cleaned up the initial push and removed the fancy keymap until the extra features and functionality can be tested and made more user friendly.
* Cleaned up the readme some more, compiled and tested both default and via keymaps, and did another round of checks to prepare for starting the PR.
* Cleaning up the keymap to meet expected formatting in a couple places and also adding in the TAP_CODE_DELAY after newly encoutnered encoder issues and inconsistencies.
* Initial commit of branch specifically for implementing the more complicated fancy keymap as I expect the main PR to be approved first.
* testing bongo cat out
* Progress with intended OLED behavior. Needs to be cleaned up still.
* Cleaned up bongocat and added WPM display on it.
* Almost there. Need to rethink the layer checking in encoder.
* Fixing all the merge issues I didn't check before doing the last commit. Learn from my mistakes, check your commits.
* Fixed and updated fancy firmware and bongocat firmware.
* Updating license year since I will be doing a PR anyway.
* Update keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* split config.h for each variant
* split rules.mk for each variant
* split source and header files for each variant
* move keymaps to the appropriate variant
* update keyboard readme
* update keymap readmes
* differentiate Staggered and Ortho USB Device Strings
* clean up formatting in info.json
* split info.json files for each variant
* break up the info.json for readability
* correct key positioning and board dimensions
* correct key object sequences
* add weak encoder function to keyboard level
Allows Configurator-compiled firmware to have encoder functionality.
* add variant-specific readme files and bootloader instructions
* QMK Configurator layout support for Pinky
3-row and 4-row versions
* refactor default keymaps
- use an enum for layer names
- remove redundant definitions
- qmk cformat pass
- modify pinky/4 via keymap to mirror pinky/4 default functionality
* remove LAYOUT_kc macros
This usage is not endorsed by QMK as it has been found to be confusing to novice users.
* add VIA support to pinky/3
* update config.h files
Removes unnecessary definitions for Backlight, RGB Underglow, Magic config and MIDI.
* update main rules.mk file
Updates the rules.mk file to match the formatting of the current QMK-provided template. Removes sample bootloader comments, feature rules that are no longer included in the template, and updates the in-line comments.
* update and split keyboard readme
Updates the main readme file's formatting, adds instructions to access bootloader mode, and adds more specific readmes for each version.
* add line breaks between rows in the info.json files
* rename layout macros for Community Layout forward compatibility
The layouts of the Pinky3 and Pinky4 aren't currently Community Layouts, but support for them could be added with a rules.mk edit should the layouts be added to QMK.
* Update other keyboards for rgb matrix changes
* Remove customized bootmagic code
* Fix corne layout compilation error
* Fix compiler errors with all keymaps
* Add Simple Visualizer for ergodox infinity
* Fix compile issue with Corne
* Fix keymap stuff
* Add alias for mouse layer
* Add Halmak Keyboard layout
* Updates for Kyria
* Add support for oled interval
* Change RGB stuff
[CHANGE] Fix coexistence issues
* Fix rgb_stuff
* Add custom ploopyco mouse keymap
* Decrease default dwell time
* Updates based on last breaking changes update
* Disable command on dactyl
* Update ergodox to use proper commands for rgb matrix indicators
* Update all rgb matrix indicator functions
* Update rules for dactyl-manuform
* Reduce wait time for mouse layer off event
* Add more info to logger
* Add wrappers for get_tapping term
* Move version.h include into only file that actually needs it
* Update rgb sleep stuff
* Update key print function
* Change DM keymap settings
* Change pin for DM Manuform
* Add Proton C stuff for Corne keymap
* more arm corne tinkering
* Even more arm stuff for corne
* Cleanup corne stuff
* redirect default keymap to drashna
because I am a very bad man
* change corne rgb priority
* Update tractyl manuform to not conflict
* Add more secret stuff
* more dactyl tweaks
* Add more options to split transport
* Changes of oled support
* Change split settings
* Improve keylogger formatting more
* tweak oled stuff
* Oled and such tweaks
* Reduce brightness due to leds
* Decrease brightness more
* Only run layer code if master
* info.json: human-friendly formatting
* info.json: update key object labels
Some of the characters in the original file don't play nicely with `qmk info -l` on Windows.
* info.json: correct key object order
* exclude 'helix/rev3_4rows' from CI
Since helix/rev3_4rows is almost the same as helix/rev3_5rows, there is no point in checking with travis-ci.
* include 'helix/pico/back' to CI
helix pico and helix rev2 are still available. I would like to check both by travis-ci, but here I will add a check only for helix pico.
* first pass
* firmware firmware?
* Split out debug + testing docs
* tidy up duplicate css
* Add extra info to debug example
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add support for bigknob
Add support for bigknob macropad
* corrected files
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* corrected tap dance
* Update config.h
* correct image link
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* added GPL headers
* Update readme.md
* update rules to disable tap dance
* remove tap dance
* Update rules.mk
trying to get to pass travis test
* Update rules.mk
remove tap dance
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
With MAJOR_MODE (= major scale), keys in one octave is not 12 but 7.
To solve this problem, change divisor number from 12 to 7 at %(Modulo) and /(Division).
NOTE:
The last 12 represents half step keys in one octave for pitch calculation.
* Add keyboard: Mesa TKL
* Fix image link in readme
* Update keyboards/mesa/mesa_tkl/mesa_tkl.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/mesa/mesa_tkl/rules.mk
White space changes
Co-authored-by: Ryan <fauxpark@gmail.com>
* Replace tabs with spaces per C coding conventions.
* Update keyboards/mesa/mesa_tkl/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* new repo: create cmm.studio folder, add saka qmk firmware
new folder for cmm.studio line up keyboard
added saka68 keyboard qmk and via firmware support
* Update keyboards/cmm.studio/saka68/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cmm.studio/saka68/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cmm.studio/saka68/keymaps/via/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cmm.studio/saka68/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* fix on keymap, readme
fix on keymap, readme
* Update keyboards/cmm.studio/saka68/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cmm.studio/saka68/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* update vendor name with _ instead of .
update vendor name with _ instead of .
* Update readme.md
change the make format
* Update keyboards/cmm_studio/saka68/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* deleted some files from cmm.studio, changes to cmm_studio
deleted some files from cmm.studio, changes to cmm_studio
* Update readme.md
make command changed
* Update keyboards/cmm_studio/saka68/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update readme.md
added pic for pcb
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update keyboards/cmm_studio/saka68/config.h
tested and does work now. deleting these lines
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update keyboards/cmm_studio/saka68/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update readme.md
added use physical reset button instruction
* change to the cmm saka folder
making the changes to cmm saka firmware
seperated solder version firmware and hotswap version firmware
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* Update readme.md
* change to the cmm saka hotswap folder
Co-authored-by: Ryan <fauxpark@gmail.com>
* feat(kyria): new keymaps with KC_LGUI on another key
add also possibility to scroll with encoder and finally play with olded
screen to replace default kyria logo by Magic the Gathering mana color
icon.
* Update keyboards/kyria/keymaps/benji/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add magic logo
* add mouse button
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add support for --clean to compile and flash
* compile standalone JSON keymaps without polluting the tree
* Add support for passing environment vars to make
* make flake8 happy
* document changes to qmk compile and flash
* add -e support to json export compiling
* Fix python 3.6
* honor $MAKE
* add support for parallel builds
* add byte order bgr for ws2812
* update docs for driver change
* Update ws2812_driver.md
* Update docs/ws2812_driver.md
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* WIP working on new keymap
* tweaking keymap
* updated keymap
* cleaned up a little bit
* New preonic keymap
* my preonic keymap
* added mac layout
* preonic map update
* cleaning up old repo
* cleaning up to match upstream
* more cleanup
* removing old keymaps
* cleaned up commit history for bm60poker via support
* cleaned up via keymap
* fixed copywrite
Co-authored-by: Peter Peterson <ppeterson@noao.edu>
* 1st trial on 1_2
* remove keymaps/default/km_default.c
* fix cool836A.h
* fix keymap.c into 3x12
* rename to cool836a (not 'A')
* remove cool836A (not a)
* remove backslashes at keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* update keymap.c (add licence)
* Update keyboards/cool836a/keymaps/default/readme.md
removed "<br>" in line 2
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cool836a/keymaps/default/readme.md
remove "<br>" in line 4
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cool836a/keymaps/default/readme.md
remove "<br>" in line 8
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cool836a/cool836a.h
remove cool836a.h line 30:36
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Initialize domnantas layout
* Update oled status display
* Layout and oled changes
* Updates to keymap
* Add F keys and page moves
* Add media keys, rearrange home and end
* Add instructions
* Swap backspace and enter
* Remove unnecesary Enter keymap
* - Change display timeout
- Update minus sign to work on both English and Lithuanian layouts
* Add copyright header
* Replace static strings with PSTR
* Update keyboards/lily58/keymaps/domnantas/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/lily58/keymaps/domnantas/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/lily58/keymaps/domnantas/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/lily58/keymaps/domnantas/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/lily58/keymaps/domnantas/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add VIA support
made changes to add VIA support for the CA66
- added VIA keymap.c, readme.md, rules.mk
- changes made to main rules.mk to keep firmware size down (mousekey_enable = no; backlight_enable = no)
- changed VENDOR_ID in config.h from 0xFEED to 0x504B (PK)
* Minor changes to CA66 for VIA support
edited keymap info
enabled backlight
* Update vendorID
Change to vendorID to remove conflict with previously chosen vendorID already in use
* Update keyboards/playkbtw/ca66/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/playkbtw/ca66/keymaps/via/readme.md
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/playkbtw/ca66/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* add Hub20 support
* Keymap formatting cleanup
Co-authored-by: Ryan <fauxpark@gmail.com>
* Delete bootloader_defs.h as no longer required
* Correct make / flashing example
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* new keymap
* Update keyboards/primekb/prime_e/keymaps/gwillad/keymap.c
use a more concise pin setting method
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Adam Gwilliam <agwilliam@yaharasoftware.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* [Keymap] own Lily58 keymap
Signed-off-by: Christian Eiden <christian@eiden.ch>
* adjustments of personal keymap
Signed-off-by: Christian Eiden <christian@eiden.ch>
* added urbanvanilla keymap
Urbanvanilla's keymap for massdrop/alt keyboard
adds in an idle timer to turn off RGB after set amount of time.
poor unsuccessful attempt at replicating a velocikey like functionality.
Grave escape is enabled on ESC.
* Update readme.md
* updating documentation
* Create readme.md
* restoring default documentation
* update with review changes implemented
removed unnecessary lines and files.
increased wait_us() parameter to 40 as was still getting chatter at 20.
removed some code for the terrible rudimentary attempt at velocikey for rgb matrix
* Update matrix.c
* Revert "Merge pull request #3 from urbanvanilla/dev_branch"
This reverts commit deb55d797a4629965c990ab507251489c578573d, reversing
changes made to ba8817356f6c0881cf7f3214f7f1ebd31febceb5.
* Update keymap.c
* added urbanvanilla keymap
Urbanvanilla's keymap for massdrop/alt keyboard
adds in an idle timer to turn off RGB after set amount of time.
poor unsuccessful attempt at replicating a velocikey like functionality.
Grave escape is enabled on ESC.
* Update readme.md
* updating documentation
* Create readme.md
* restoring default documentation
* update with review changes implemented
removed unnecessary lines and files.
increased wait_us() parameter to 40 as was still getting chatter at 20.
removed some code for the terrible rudimentary attempt at velocikey for rgb matrix
* Update matrix.c
* Revert "Merge pull request #3 from urbanvanilla/dev_branch"
This reverts commit deb55d797a4629965c990ab507251489c578573d, reversing
changes made to ba8817356f6c0881cf7f3214f7f1ebd31febceb5.
* Delete matrix.c
* Update keyboards/massdrop/alt/keymaps/urbanvanilla/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keymap.c
* Update keymap.c
* Update keyboards/massdrop/alt/keymaps/urbanvanilla/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add bongo cat animation
* Map all keys on base layer
... to make it easier to test newly built keyboards. The encoders
are optional and can be placed in different locations.
* Fix Torn in QMK configurator
This removes additional variables defined in the keymap.c file, so
that the default firmware can be compiled by the configurator.
Co-authored-by: Richard Titmuss <richardt@spotify.com>
* init
init
* Update keyboards/hp69/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hp69/keymaps/via/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hp69/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* re-added audio support
re-added audio support
* Update keyboards/hp69/readme.md
reduced the size of the default image
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hp69/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hp69/info.json
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* initial commit- copy of default
* beginnings of ergodox layout conversion
* from scratch 2020 RJH ergodox layout!
* remove extra line in keymap
* only shift to layers, led work
* Fleshed out readme
* tweak alt placement
* updated readme
* PR feedback, updated default layer
* Update keyboards/ergodox_infinity/keymaps/rjhilgefort/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Acheron Lasgewloth: layout macro rework
Arrange the layout macro to match the assembled board.
* rename layout macro
The layout supported is equivalent to 60% ANSI with split Backspace and split Right Shift, and supports every extant switch position.
Adds community layout support.
* add LAYOUT_60_ansi support
* add Configurator data
* convert tabs to spaces in lasgweloth.h
The previous implementation generated accents in NFKD -- e.g., i
followed by fn+e would generate í, which is actually an ordinary i
followed by U+0301 COMBINING ACUTE ACCENT. Unfortunately, it turns
out that a bunch of websites and apps (especially European ones
written in languages that use these a lot) were very poorly written,
and will misparse and/or crash if presented with Unicode NFKD. They
require and expect NFKC, with characters like í (U+00ED LATIN SMALL
I WITH ACUTE) that look visually identical -- and are in fact
normalization-equivalent -- but have to be encoded differently.
The new accent implementation handles this in a very flexible way.
Many new comments added as well, as it's also clear that this is going
to need a bit more expansion before it becomes a true polyglot keymap.
Co-authored-by: Yonatan Zunger <zunger@desiderata.lan>
* rework layout macro
Rework the layout macro so it's arranged the way the hardware is.
* info.json: use debug linting
* info.json: rebuild to correct key sequence
* white-space formatting
Makes the keymap and layout macro a bit more representative of where everything is.
* Add Borsdorf
* Delete config.h
* Add basic VIA keymap
* Update default keymap
* Default now uses layout_all
* Default now has layer with reset key
* Fix missing comma in borsdorf keymap
* Update rules.mk to be less specific
* Update chibiOS files
* Update keymaps to swap GUI and Alt keys
* Delete unnecessary readme
* Update VIA keymap to match default
* Remove boilerplate from readme
* Udate Copyright message
* Remove unused key from LAYOUT_rshift
* Update borsdorf.c
Remove unnecessary boiler plate
Co-authored-by: Joel Challis <git@zvecr.com>
* Add copyright message to VIA keymap
Co-authored-by: Joel Challis <git@zvecr.com>
* Fix missing directory in readme
Co-authored-by: Joel Challis <git@zvecr.com>
* Fix incorrect rules.mk
* Update BOOTMAGIC_ENABLE to the preferred lite
Co-authored-by: Joel Challis <git@zvecr.com>
* Remove redundant description from config
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/cutie_club/borsdorf/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/cutie_club/borsdorf/keymaps/via/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Initial CK60i support
* Update README, add HAL_PWM and remove AUDIO and BLUETOOTH from rules.mk
* VIA support
* Fix VIA_ENABLE to 'yes'
* Remove CONSOLE_ENABLE from rules.mk
* attribute weak for encoder callback
* Remove KC_NO definition from default keymap
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
* Update feature_rgblight.md
The note is meant to let people know that this is specific to RGB Backlight and does not work with RGB Matrix based implementations.
* Update docs/feature_rgblight.md
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* chore: pulled the latest from master
Bring my redox layout from my latest redox branch
Bring my latest user stuff from my redox branch
* Update users/danielo515/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* chore: some more layouts
* feat: add gaming layer (has a bug)
* chore: more gaming layout
* chore: deactivate gaming layer when switching
* chore: simplify gaming toggle
* Update .vscode/settings.json
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add support for idobao id80 iso layout
* This change is required as there is a logic bug on the board that C7
(capslock) is inverted thus lowercase is with light on. Mind the ! in
the write to the pin.
* Apply suggestions from code review
All fine for me, thanks for the additional information!
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* move device information to separate config.h for id80 iso and ansi
* commit via keymap similar to default. There is a problem with mapping compiling vor via, resulting in KC_ENT residing on KC_PGDN. Switching off via support in rules.mk makes the keyboard behave fine
* change KC_BSLS to KC_NUHS as this is an iso board
Co-authored-by: Carsten <modebm@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
The pcb used for wheatfield/split75 supports ANSI and ISO layout. This
commit adds the ISO variant.
With suggestions from code review:
Co-authored-by: Drashna Jael're <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Create Alter folder
* Revert "Create Alter folder"
This reverts commit 361103b821.
* Added the n40_o folder
* Edited info.json, n40_o.h and rules.mk
* Edited readme as per comment
* Add Herringbone Pro, reorganize herringbone folder
* Finish encoder functionality
* Change image in readme
* Fix info.json
* Flip encoder direction
* Update keyboards/ramonimbao/herringbone/pro/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/ramonimbao/herringbone/pro/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/ramonimbao/herringbone/pro/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/ramonimbao/herringbone/pro/readme.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add OLED support, split space, default folder
* Fix LAYOUT_all in info.json
* Remove WPM feature
* Add readme to top level herringbone folder
* Re-add WPM because now the OLED won't turn back on lol
* Add missing timer_read32
* Add OLED wakeup on knob use
* Update keyboards/ramonimbao/herringbone/v1/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/ramonimbao/herringbone/v1/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/ramonimbao/herringbone/pro/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/ramonimbao/herringbone/pro/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add small QoL improvments for tapping
* Update keyboards/ramonimbao/herringbone/readme.md
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* Add bootloader instructions and improve LAYOUT_all a bit
* Update keyboards/ramonimbao/herringbone/pro/pro.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/ramonimbao/herringbone/pro/info.json
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/ramonimbao/herringbone/pro/info.json
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/ramonimbao/herringbone/v1/readme.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* noop; indent and comment cleanup
* config for rogthefrog layout
* removed encoder function as there is no encoder on this pcb
* removed unnecessary declaration
* replaced individual constants with an enum for extensibility
* removed unused enum
* Added GPL license language
* added copyright for my changes, per GPL
* noop; removed unneeded line continuations; fixed indentation
* Add oddballl v2
- add CPI options
- add scroll support
- add click-and-drag support
- PMW3360 implementation
- ADNS9800 improvements
* Set default make directory
* Update readme with PMW config
* Change bootloader
* Update unused pins on v2
* Remove diode switch
* Move bootloader selection to keyboard version level
* Change default keyboard folder to v1
* Move sensor selection to keymap
* Remove PK debounce
* Change to only send mouse report on change
* Change CPI function cpi type
* Remove EEPROM state check
* Update CPI to only change on key down
* Fix incorrect F8 in keymap
* Add v2.1 with more convenient controller pinout
* Add keyboard readmes
* Update keyboards/oddball/pmw/pmw3360_srom_0x04.h
Remove direct AVR reference
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove direct AVR reference
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Alexander Tulloh <alex@riberry.io>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Initial commit for my Corne keyboard layout.
* Updates to Corne, etc.
Finished working on primary layout for Corne keyboard.
Cleaned up some comments for my 4x12 Ortho layout.
* Changes for crkbd layout
* Fixed the config.h to reflect using ee_hands
* Added RGB configs to crkbd/corne layout
Co-authored-by: Ian Sterling <503326@MC02YT9K9LVCF.tld>
* add support for bigknob
Add support for bigknob macropad
* corrected files
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* corrected tap dance
* Update config.h
* correct image link
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* added GPL headers
* Update readme.md
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* added my keymap
* Tidy up
Add readme, run clang-format, remove some comments
* Fixed some formatting issues
* Update after reading PR checklist
Add GPL header to keymap.c, remove backslash in LAYOUT macro
* Use integer constants for switch labels
* Remove unneeded code, remove F-keys from raise layer
* Use program memory for some text on OLED
* Fixed left over debug code
* tidy up config.h and rules.mk
Remove all unused defines from config.h, and remove options which are the same as the keyboard level make file. Enabled command to be able to toggle NKRO.
* Sagittarius keyboard
* Update Sagittarius keyboard
* fix
* remove info.json as it's very hard to make
* Add license and address PR comments
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add info json, update keymap
* Fix info json
* Update keymap
* Update keyboards/cannonkeys/sagittarius/info.json
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Initial support for Evolv75
* Fix encoder directional and layer support
* Invert knob directions
* Remove info.json and updated README
* Update keyboards/evolv/evolv.c
Update encoder_update call
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/evolv/config.h
Remove description field from USB descriptors
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Remove KC_NO define from default keymap
* Update config.h
New USB descriptor ID numbers
* Update keyboards/evolv/rules.mk
Remove words from bluetooth and audio enable comments
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/evolv/rules.mk
Enable full bootmagic
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add info.json for QMK Configurator
* Edit copyright info, add VIA initial support
* Fix KC_NO seven underscores issue in keymap definitions
* Update info.json
* Update info.json
* ANSI and ISO layouts, info.json file with both
* Reorganized layouts to match info.json order
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add proper prototypes for Tap-Hold Per Key functions
* Fix handwired/tennie default keymap
* Remove unneeded references
* Fix tapping term per key check in space cadet
* Pre-emptive fix for tap dance
* Fix marksard/leftover30
* Replace hard coded tapping term with define
* Add GKB-M16 Macro Pad
Add GKB-M16 (gkb_m16) Macro Pad under gkeyboard
* Update keyboards/gkeyboard/gkb_m16/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/gkeyboard/gkb_m16/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/gkeyboard/gkb_m16/info.json
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/gkeyboard/gkb_m16/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Initial commit on new clean branch. Testing out functionality of oled and encoder for default features.
* Cleaned up the initial push and removed the fancy keymap until the extra features and functionality can be tested and made more user friendly.
* Cleaned up the readme some more, compiled and tested both default and via keymaps, and did another round of checks to prepare for starting the PR.
* Cleaning up the keymap to meet expected formatting in a couple places and also adding in the TAP_CODE_DELAY after newly encoutnered encoder issues and inconsistencies.
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/mechwild/mercutio/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Fixing json syntax.
* Update keyboards/mechwild/mercutio/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Quark PCB for Planck/Preonic
Quark provides alternate bottom row layouts for both the OLKB Planck and Preonic
* Rename rules.mk.txt to rules.mk
* added Tapping Toggle
removed tapping toggle from keymap level
* Update info.json
took out } as requested
* update config.h
added GPL2+ license and #pragma once
* update info.json again
cleaned up syntax
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* update config.h
added GPL2+ License
* Update info.json - and again
fixed it - oops
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Add target 'build-for-compare' to `build_keyboard.mk`
The `build-for-compare` target provides an easy way to check the md5 checksum of the generated binary.
You can easily see if there is any change in the generated binaries between the two versions, as in the example below.
```
$ git checkout 0.11.0
M build_keyboard.mk
M tmk_core/rules.mk
Note: checking out '0.11.0'.
HEAD is now at c66df1664 2020 November 28 Breaking Changes Update (#11053)
$ make helix:all:build-for-compare | grep ^MD5
MD5 (.build/helix_rev2_default.hex) = 5c3606562c944bb4d18832e601b45d4a
MD5 (.build/helix_rev2_edvorakjp.hex) = 9e43d13d389d518ba7e99cd7337e28d6
MD5 (.build/helix_rev2_five_rows.hex) = 8bcb61c2fd5d237c2997f2fa007d4934
MD5 (.build/helix_rev2_five_rows_jis.hex) = b97cd818d52f73ca2d4e78c86d90a791
MD5 (.build/helix_rev2_froggy.hex) = c492172364188f4e2918b10bf0f3a0a6
MD5 (.build/helix_rev2_froggy_106.hex) = b0861fd735a8f81881a8c02730641a2b
MD5 (.build/helix_rev2_led_test.hex) = 5c97d982a5da5cfb3dacb28a8934b81d
MD5 (.build/helix_rev2_xulkal.hex) = 01f603dc46bcf9094d7e106831d8f5b1
MD5 (.build/helix_rev2_yshrsmz.hex) = 5a008bca2d0c5790a151c02834c529ba
$ git checkout 0.11.1
M build_keyboard.mk
M tmk_core/rules.mk
Previous HEAD position was c66df1664 2020 November 28 Breaking Changes Update (#11053)
HEAD is now at cc08e3082 nix-shell: add milc dependency (#11086)
$ make helix:all:build-for-compare | grep ^MD5
MD5 (.build/helix_rev2_default.hex) = 5c3606562c944bb4d18832e601b45d4a
MD5 (.build/helix_rev2_edvorakjp.hex) = 9e43d13d389d518ba7e99cd7337e28d6
MD5 (.build/helix_rev2_five_rows.hex) = 8bcb61c2fd5d237c2997f2fa007d4934
MD5 (.build/helix_rev2_five_rows_jis.hex) = b97cd818d52f73ca2d4e78c86d90a791
MD5 (.build/helix_rev2_froggy.hex) = c492172364188f4e2918b10bf0f3a0a6
MD5 (.build/helix_rev2_froggy_106.hex) = b0861fd735a8f81881a8c02730641a2b
MD5 (.build/helix_rev2_led_test.hex) = 5c97d982a5da5cfb3dacb28a8934b81d
MD5 (.build/helix_rev2_xulkal.hex) = d848383adfd7463b138c6da179cf1436
MD5 (.build/helix_rev2_yshrsmz.hex) = 5a008bca2d0c5790a151c02834c529ba
```
* make builds reproducable by default
* update build_keyboard.mk: remove 'build-for-compare' target
* GNU make (3.81) on macOS 10.14(Mojave) does not have the 'undefine' directive.
* Adopted fauxpark's suggestion.
* Update tmk_core/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* update tmk_core/rules.mk
* fix tmk_core/rules.mk
Co-authored-by: Zach White <skullydazed@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Adding support for the 2 x 2u layout.
This adds a macro to support the 2 x 2u layout which facilitates
a cleaner looking layout configuration for the people using it.
* Update keyboards/kyria/kyria.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: swampmonster <>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Added mac variant of portuguese keymap
This keymap is very similar to the existing portuguese keymap, but
some symbols are moved around.
Apply suggestions from code review
Corrected whitespace and implemented some suggested changes.
Co-authored-by: Ryan <fauxpark@gmail.com>
Converted some spaces to nbsp
Added sendstring ISO version
* Apply suggestions from code review
Added suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Replaced space with nbsp
* Corrected 2 chars in ascii_to_shift_lut
{ and } require shift
Co-authored-by: Ryan <fauxpark@gmail.com>
* My first cut at firmware for te DMQDesign Spin
* Turn off underglow when computer sleeps
* dmqdesigns spin - a little more refined keymap now
* a few more refinements for spin
* missing key up event for CH_CPNL and CH_ASST
* better naming for keymap
* cformat
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Old #include habits die hard... :)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
To successfully compile bootloadHID, we must have the libusb-config tool, which comes from the libusb-dev package. This package is available in both Ubuntu Groovy and Debian Buster
Co-authored-by: Jonathan Paugh <jpaugh@gmx.com>
* added main keyboard files
* working default and iso maps
* add via config
* made default ansi map
* fixed info.json and made readme
* renamed folders
* reincluding the folders I renamed
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* I made a change before PR to clean up VIA map that broke it now its fixed
* Apply suggestions from code review
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/boardsource/the_mark/the_mark.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add default mode eighty firmware
* Add via keymap
* Mode80 firmware upgrades
- Removed SPI and PWM drivers from MCU configuration, HAL configuration and Chibi configuration as neither peripherals are being used
- Included second backspace key (row 5, col 14) which should solve the non-appearance of the backspace key on the hotswap PCB
* Add default mode eighty firmware
* Add via keymap
* Update keyboards/mode/eighty/config.h
Remove comment lines from config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/mode/eighty/config.h
Remove comments from config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update eighty.c
Add GPLv2 header
* Update eighty.h
Add GPLv2 license header
* Update readme.md
Update README
* Update keyboards/mode/eighty/config.h
Remove keyboard description
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Delete config.h
Delete config.h in keynap folder
* Update keyboards/mode/eighty/rules.mk
Remove feature disabling in rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Move rules.mk to VIA folder
* Update keyboards/mode/eighty/keymaps/via/rules.mk
Use LTO_ENABLE as short for LINK_TIME_OPTIMIZATION_ENABLE
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/mode/eighty/readme.md
Puts a single image embedded in the readme, and links to the full gallery
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/mode/eighty/readme.md
Use * for markdown list
Co-authored-by: Ryan <fauxpark@gmail.com>
* Apply suggestions from code review
Correct comment characters
Co-authored-by: Ryan <fauxpark@gmail.com>
* Adjusted copyright name, USB descriptor and removed info.json
* Separate Mode80 S and H firwares into subfolders
* Added info.json files for QMK Configurator
* Lowercase folder and filenames
* Remove config definition macros in M80H
* Remove config definition macros in M80S and root
* Change definitions to lowercase parameters
* Moce chconf and mcuconf chibiOS files to root folder
* Move halconf to root folder, keymaps to subfolders
* Update readme for building/flashing guide
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add layers to VIA keymaps, remove CONSOLE_ENABLE
* Push master changes to lib/
* Retrieve lufa and googletest submodules to previous heads at master
* Disabled LTO in VIA keymaps
* Fix layout declaration to lowercase in m80s default keymap
* Added readme's for each M80S and M80H
Co-authored-by: Jaicob <jaicob@icloud.com>
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Create Alter folder
* Revert "Create Alter folder"
This reverts commit 361103b821.
* Add octopad folder
* Added a new keyboard, the Octopad
* Edited files based on requested changes
* Moved encoder code in keyboard level
* Updated the readme
* Corrected the rows and columns of encoders on config.h
* Changed the Vendor ID to D812 since the first one was already taken
* Added support for ast1109MLTRQ speakers
* Increased number of layers to 8 on VIA keymap
* Edited files based on comments
* Edited rules.mk as per comment
* Edited readme.md as per comment
* Update vendor and product info
* Add rev2 for Choco60
* Add keymap for VIA
* Add readme.md for rev1 and rev2
* Use list instead of new line
* Remove DESCRIPTION
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update rev1/readme.md to specify rev1 directly.
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove some definitions
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove comments
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* fix abacus so it works with configurator
* create the keymap path if it doesn't exist
* bpiphany/unloved_bastard: remove the nested macros, move default keymap to json
* readd the unloved_bastard default keymap
* fix clueboard/card
* fixup handwired/2x5keypad
* fixup hub16
* matrix/noah: remove the broken matrix print code to fix compilation
* reinstate matrix_print with the right include
* Revert "create the keymap path if it doesn't exist"
This reverts commit af732776a5.
* Add tabs to getting started page
* Review comments
Co-authored-by: Ryan <fauxpark@gmail.com>
* Align with current theme
* Update docs/newbs_getting_started.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* update keyboards/helix/rev2/keymaps/five_rows/rules.mk: oled selection, led animation selection
* add OLED_UPDATE_INTERVAL support into keyboards/helix/rev2/keymaps/five_rows/oled_display.c
Support for OLED_UPDATE_INTERVAL, even for older types of OLED tasks.
* Add 'HELIX=debug/no-debug' option into 'helix/rev2/keymaps/five_rows/rules.mk'
It looks like features.md was deprecated and content was split into other files. This results in a broken link on the main page which, if removed, would have no impact to the remainder of the documentation. This would also:
resolve#9239resolve#10293resolve#10447
* Portico: Initial support for TKC Portico
* Portico: added GPL header to keymap files
* Update keyboards/tkc/portico/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* add bastyl
* no need to copy the folder anymore
* clean up according to PR rules
* remove via, fix disposition
* add reset button on right half
* Update readme.md
* Update keyboards/hidtech/bastyl/bastyl.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hidtech/bastyl/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hidtech/bastyl/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* move json, remove via files
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* add GPL to c and h files
* Update keyboards/hidtech/bastyl/info.json
Change order to match layout macro
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hidtech/bastyl/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* serial define can be ommited, is used by default
* Corrected VENDOR_ID
Incorrect VENDOR_ID has been updated to the correct one.
Co-authored-by: Quentin <qlebastard@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Initial test version of Scarlet keyboard
* First commit of DElec Scarlet
* Change to new Draytronics branding
* Update to keyboard details
Update to keyboard details and link to Draytronics website.
* Update keyboards/draytronics/scarlet/scarlet.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/draytronics/scarlet/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/draytronics/scarlet/readme.md
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/draytronics/scarlet/keymaps/default/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/draytronics/scarlet/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keymap.c
* Update config.h
* Update scarlet.h
* Update keyboards/draytronics/scarlet/config.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/draytronics/scarlet/config.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/draytronics/scarlet/scarlet.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/draytronics/scarlet/keymaps/default/keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* provide info.json layout to fix qmk configurator
* Correctly name keyboard in info.json
* Added website and layout key labels to info.json
* VIA support. Thanks sirdicholas
* Readme change, link to VIA design file.
Co-authored-by: Blake Drayson <blake@Euclid.ghost7.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update feature_rgb_matrix.md
Added more clarification on how to use a newly created rgb effect as it was unclear that the prefix 'RGB_MATRIX_CUSTOM_' had to be added.
Also included an example consistent with the documentation example.
* Update docs/feature_rgb_matrix.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update docs/feature_rgb_matrix.md
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* [Keymap] fix and update helix/rev3_5rows:five_rows
* fix rgblight animation selection
* use `DEBUG_MATRIX_SCAN_RATE_ENABLE` insted of keyboard_post_init_user_scan.c
* Change the initial value of the ENCODER_ENABLE to 'no' in 'keymaps/five_rows/rules.mk'
* Add 'HELIX=debug/no-debug' option into 'rev3_5rows/keymaps/five_rows/rules.mk'
* Add '#define OLED_UPDATE_INTERVAL 100' 'rev3_5rows/keymaps/five_rows/config.h'
* add LED_ANIMATIONS_LEVEL macro into rev3_5rows/keymaps/five_rows/
* Change OLED_UPDATE_INTERVAL value in rev3_5rows/keymaps/five_rows/config.h
* YMD75 rev 3: fix BACKLIGHT_PIN
Update backlight LED pin used by QMK to control the per-key backlight for YMD75 rev 3
* YMD75 rev 3: fix BACKLIGHT_PIN - fix comments
* YMD75: move BACKLIGHT_PIN definitions to the respective versions
Signed-off-by: Nathan13888 <29968201+Nathan13888@users.noreply.github.com>
* Add VIA keymap for reviung41
* Change VID for compatibility
* Add GPL header to config.h
* Enable link time optimization
* Remove config since it might not be needed
* add the ability to exclude keyboards from travis builds
* add filtering to make all:
* only skip keyboards during make all:
* working implementation
* forego a CI_KEYBOARDS variable
* optimize the startup by only listing keyboards once
* add sort -u to all list_keyboard invocations
* move the if else if tree back to 1 level
* Add pos78 keyboard
* tidy up links
* Added missing commas
The missing commas were causing a compile error (Travis CI, #41934 failed).
* Added trailing commas
On lines 10-14, just missed last line (15).
* Travis CI errors
Trying to correct errors from Travis CI #41951 failed
* Corrected(?) TG(_FN) from Travis CI failure
* Revert readme.md to original format
Fauxpark
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove trailing \ from keymap.c
Fauxpark
Co-authored-by: Ryan <fauxpark@gmail.com>
* Change Vendor and Product ID
How do I update the Product ID search tool if 0x7878 is used/good?
* Add LAYOUT_ortho_6x13 Update keyboards/pos78/pos78.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* I bow to drashna's superior knowledge. Update keyboards/pos78/info.json
Co-authored-by: Drashna Jaelre <drashna@live.com>
* I bow to drashna's superior knowledge. Update keyboards/pos78/keymaps/default/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* I bow to drashna's superior knowledge. Update keyboards/pos78/keymaps/default/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Added pic
* Add picture properly. Update keyboards/pos78/readme.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove Bootmagic_enable (fauxpark)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Initial BOX75 PCB v1.0.6 PCB support
* New prototype firmware
* Correct column pin assignment
* Update README
* Update keyboards/box75/config.h
Remove USB description
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/box75/rules.mk
Remove comment lines from BLUETOOTH_ENABLE and AUDIO_ENABLE
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add VIA support
* Remove KC_NO define and use traditional one
* Update keyboards/box75/keymaps/default/keymap.c
Move KC_HOME location on keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/box75/box75.h
Move HOME key location on keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Changed F13 to print screen in default VIA firmware
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Initial CK60i support
* Initial Iron180 support
* Add PWM support
* Feedback from PCB protos
* Update README
* Remove CK60i references
* Remove KC_NO ____ definition and replaced with predefined
* Remove description field in USD descriptors
* Shorten bluetooth enable and audio output comments on rules.mk
* Initial VIA support
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
* Initial technika support
* Updated README
* Update keyboards/technika/config.h
Remove DESCRIPTION from usb desciptor fields
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/technika/rules.mk
Remove words from comments in rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove old KC_NO definitions and used default one
* Use defines for num, caps and scroll lock LED pins
* Fix underscore KC_NO substitution in keymap
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* update keyboards/helix/rev2/local_features.mk - Improved parsing of the `HELIX =` option
* add 'is_mac_mode()' into keyboards/helix/rev2/rev2.c
* update helix/rev2/keymaps/default/keymap.c: use rgblight query functions
* Makes the OLED driver used by the helix:default keymap switchable.
* use TOP/drivers/oled/oled_driver.c
`make helix:default`
or
`make OLED_SELECT=core helix:default`
* use helix/local_drivers/ssd1306.c
`make OLED_SELECT=local helix:default`
* Separated the OLED related code from keymap.c and moved it to oled_display.c.
* Change the 'led_test' keymap to follow the changes in the 'default' keymap.
* update helix/rev2/keymaps/default/oled_display.c
* add '#define OLED_UPDATE_INTERVAL 50' into keyboards/helix/rev2/config.h
* Support for OLED_UPDATE_INTERVAL, even for older types of OLED tasks
* add readme.md for helix/rev2
* Apply drashna's suggestions to rev2.c.
* Apply drashna's suggestions to rev3_4rows.c, rev3_5rows.c.
Co-authored-by: mtei <2170248+mtei@users.noreply.github.com>
* Remove command and console
- these options prevent community layouts from being built on other
keyboards. Selectively enable it on keyboards I own rather than on
everything.
* Update users/yanfali/rules.mk
When `rgblight.c` includes `rgblight_breathe_table.h`, the search order should be as follows.
* `keyboards/KEYBOARD/keymaps/USER/rgblight_breathe_table.h`
* `users/USER/rgblight_breathe_table.h`
* `quantum/rgblight_breathe_table.h`
However, the current implementation was wrong, so I fixed it.
* Initial commit of Geekboards Macropad V2 keyboard
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* Apply suggestions from code review: delete unnecessary files
* Fixed typos
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Change RGB_MATRIX config syntax following recent core changes
* Apply suggestions from drashna code review
* Remove unnecessary file (it is now defined in the core)
* Remove unnecessary code, due to PR 11084 approve
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* [Keyboard] New Keyboard - BDE
Added the Big Dill Extended by MechWild
* Corrected pinout for righty config
Corrected the copied line from the lefty config that had not been updated prior to this commit.
* Corrected the files that had been overwritten with old versions during testing.
* Update keyboards/mechwild/bde/lefty/config.h
* Made changes based on suggestions. Added GPL and split preference config.h lines into keymap level.
* Apply suggestions from code review
Readme cleanup
* Update keyboards/mechwild/bde/lefty/keymaps/fancy/config.h
* Update keyboards/mechwild/bde/lefty/keymaps/via/config.h
* Apply suggestions from code review
Corrects a stray style line in one of the readme files as well as correcting the name of the keymap layout from the inaccurate 3x14 name to just "layout"
* add bastyl
* no need to copy the folder anymore
* clean up according to PR rules
* remove via, fix disposition
* add reset button on right half
* Update readme.md
* Update keyboards/hidtech/bastyl/bastyl.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hidtech/bastyl/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hidtech/bastyl/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* move json, remove via files
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* add GPL to c and h files
* Update keyboards/hidtech/bastyl/info.json
Change order to match layout macro
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/hidtech/bastyl/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
* serial define can be ommited, is used by default
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Adding customMK Genesis keyboard and keymap files
* Updated readme.md
fixed a typo
* Fixed code for QMK PR
* Updated syntax in config.h and changed dfu to flash in readme
Co-authored-by: Ray <ray@custommk.com>
* Add support for LAYOUT_alice to sneakbox pcb
* define variables for sneakbox led pins
* set rules for sneakbox pcb
* add rotary encoder to userspace
* fix rotary function
* add custom layer indicators for sneakbox
* Revert "Add support for LAYOUT_alice to sneakbox pcb"
This reverts commit 5ed94d8d89.
* add license header
* Use KEYBOARD_sneakbox_aliceclone
* cleaned up indicator code
* Added a dactyl promicro with a slightly different 6x6 layout
* updated keyboard layout
* Removed description as per code review
* refactored as per code review
* removed redundant config.h file
* removed and updated a couple of lines in rules.mk
* replaced symlink with copy of file
* removed lines in readme
* Update readme.md
Co-authored-by: ralphie02 <ralph.azucena@carbon60.com>
* Reset everything to upstream, reapply Bocaj changes
* Bocaj - address PR comments
* Just in time changes
* Bocaj - Several adjustments after using the layout for a while
* Allow APM32 MCUs on certain CannonKeys PCBs
* another one
* Update DFU suffix args
* missed one
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* Hotfix for #11106: Rework LAYOUT_alice support; add LAYOUT_alice_split_bs
Accidentally missed backwards compatibility on the sneakbox/aliceclone in #11106, which broke stanrc85's Community Layout keymap.
* sneakbox/aliceclone: move 2u Backspace to column 6
* add new keyboard scatter42 by bbrfkr
* mod info.json to work
* mod info.json
* mod readme
* Update keyboards/scatter42/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/scatter42/keymaps/default/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/scatter42/scatter42.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/scatter42/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add LAYOUT_alice support: fallacy
* Add LAYOUT_alice support: kb_elmo/sesame
* Add LAYOUT_alice support: cheshire/curiosity
* Add LAYOUT_alice support: evyd13/wonderland
* Add LAYOUT_alice support: mechlovin/adelais
* Update LAYOUT_alice support: projectkb/alice
The PR that added Alice community layout support for the projectkb/alice/rev2 simultaneously broke support for every other keyboard that supported LAYOUT_alice.
This commit partially reverts the offending PR. `LAYOUT_alice` for the projectkb/alice has been renamed to `LAYOUT_alice_split_bs`, and a correct 65-key `LAYOUT_alice` has been added.
Additionally, the `LAYOUTS` rule has been moved to keyboard level as the layout macros are shared between rev1 and rev2 boards, which means the layout options are the same for both revisions.
* Update ramonimbao/aelith info.json
Keyboard source was already correct to support LAYOUT_alice, but the layout tree was missing from info.json.
* Fork `alice` Community Layout...
... into Standard and Split Backspace versions
Also updates stanrc85's layout keymap to use 65 keys instead of the Split Backspace 66-key version.
* Update LAYOUT_alice support: sneakbox/aliceclone
Rework the sneakbox/aliceclone to use the Split Backspace Alice layout.
* Update LAYOUT_alice support: zoo/wampus
The layout macro that was `LAYOUT_alice` was 66 keys. This layout macro has been renamed to `LAYOUT_alice_split_bs`, and a 65-key `LAYOUT_alice` has been added.
Additionally, the 66-key macro has been rearranged to accept its keycodes in the intended order for Community Layout support.
* Update keyboards for `LAYOUT_alice_split_bs` support
* LAYOUT_alice_split_bs support: ergosaurus
* LAYOUT_alice_split_bs support: handwired/colorlice
* LAYOUT_alice(_split_bs) support: handwired/owlet60
* LAYOUT_alice_split_bs support: nightly_boards/alter/rev1
* LAYOUT_alice(_split_bs) support: sck/osa
* LAYOUT_alice_split_bs support: tgr/alice
* LAYOUT_alice(_split_bs) support: tkc/osav2
* LAYOUT_alice_split_bs support: xelus/valor/rev1
* Add Via keymap
* Via Enable in Rules.mk
* Update config.h
added nasp before Plexus75 in PRODUCT to better follow Via naming convention
* Update keymap.c
changed KC_CTRL to KC_LCTL
* Update config.h
took out the manu repeat
* Update rules.mk
* Create rules.mk
changed location of rules.mk for supporting Via
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/plexus75/keymaps/via/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
QMK (*Quantum Mechanical Keyboard*) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains [QMK Firmware](https://github.com/qmk/qmk_firmware), [QMK Configurator](https://config.qmk.fm), [QMK Toolbox](https://github.com/qmk/qmk_toolbox), [qmk.fm](https://qmk.fm), and this documentation with the help of community members like you.
## Get Started
Totally new to QMK? There are two ways to get started:
<divclass="flex-container">
*Basic: [QMK Configurator](https://config.qmk.fm)
* Just select your keyboard from the dropdown and program your keyboard.
* We have an [introductory video](https://www.youtube.com/watch?v=-imgglzDMdY) you can watch.
* There is also an overview [document you can read](newbs_building_firmware_configurator.md).
User friendly graphical interfaces, no programming knowledge required.
?> **Advanced** [Use The Source](newbs.md) <br>
More powerful, but harder to use.
</div>
## Make It Yours
QMK has lots of [features](features.md) to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
@@ -296,6 +296,16 @@ This command allows you to generate QMK documentation locally. It can be uses fo
qmk generate-docs
```
## `qmk generate-rgb-breathe-table`
This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/`.
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite.
@@ -29,7 +29,9 @@ This level contains all of the options for that particular keymap. If you wish t
This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The `config.h` file shouldn't be including other `config.h` files, or anything besides this:
@@ -41,7 +41,9 @@ Bevorzugst Du es lieber auf der Befehlszeile zu debuggen? Dafür eignet sich das
Manchmal ist es hilfreich Debug-Nachrichten innerhalb deines eigenen [Custom Codes](de/custom_quantum_functions.md) zu drucken. Das ist ziemlich einfach. Beginne damit `print.h` am Anfang deiner Datei zu inkludieren:
#include<print.h>
```c
#include"print.h"
```
Danach stehen dir verschiedene Druck-Funktionen zur Verfügung:
@@ -14,16 +14,11 @@ Some keyboards may have specific instructions for entering the bootloader. For e
To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button.
Alternatively, hold `BOOT` while inserting the USB cable.
Zadig will automatically detect the bootloader device. You may sometimes need to check **Options → List All Devices**.
- For keyboards with Atmel AVR MCUs, the bootloader will be named something similar to `ATm32U4DFU`, and have a Vendor ID of `03EB`.
- USBasp bootloaders will appear as `USBasp`, with a VID/PID of `16C0:05DC`.
- AVR keyboards flashed with the QMK-DFU bootloader will be named `<keyboard name> Bootloader` and will also have the VID `03EB`.
- For most ARM keyboards, it will be called `STM32 BOOTLOADER`, and have a VID/PID of `0483:DF11`.
Zadig should automatically detect the bootloader device, but you may sometimes need to check **Options → List All Devices** and select the device from the dropdown instead.
!> If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. **Do not** proceed if this is the case!
If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. USBAspLoader devices must use the `libusbK` driver.
If the arrow appears green, select the driver, and click **Install Driver**. See the [list of known bootloaders](#list-of-known-bootloaders) for the correct driver to install.

@@ -43,6 +38,40 @@ Right-click it and hit **Uninstall device**. Make sure to tick **Delete the driv

Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again!
Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat the process until Zadig reports the correct driver.
?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.
## List of Known Bootloaders
This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.
The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays.
@@ -33,4 +33,3 @@ Soporte para hasta 2 controladores. Cada controlador implementa 2 matrices charl
## IS31FL3733
Soporte para hasta un solo controlador con espacio para expansión. Cada controlador puede controlar 192 LEDs individuales o 64 LEDs RGB. Para obtener más información sobre cómo configurar el controlador, consulta la página de [Matriz RGB](feature_rgb_matrix.md).
@@ -41,7 +41,9 @@ Para plataformas compatibles, [QMK Toolbox](https://github.com/qmk/qmk_toolbox)
A veces, es útil imprimir mensajes de depuración desde tu [código personalizado](custom_quantum_functions.md). Hacerlo es bastante simple. Comienza incluyendo `print.h` al principio de tu fichero:
#include<print.h>
```c
#include"print.h"
```
Después de eso puedes utilzar algunas funciones print diferentes:
Note that running `make` with `sudo` is generally ***not*** a good idea, and you should use one of the former methods, if possible.
### Linux `udev` Rules
### Linux `udev` Rules :id=linux-udev-rules
On Linux, you'll need proper privileges to communicate with the bootloader device. You can either use `sudo` when flashing firmware (not recommended), or place [this file](https://github.com/qmk/qmk_firmware/tree/master/util/udev/50-qmk.rules) into `/etc/udev/rules.d/`.
This page details various common questions people have about troubleshooting their keyboards.
# Debug Console
## Debugging :id=debugging
Your keyboard will output debug information if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, use the [Command](feature_command.md) feature to enable debug mode, or add the following code to your keymap.
```c
voidkeyboard_post_init_user(void){
// Customise these values to desired behaviour
debug_enable=true;
debug_matrix=true;
//debug_keyboard=true;
//debug_mouse=true;
}
```
## Debugging Tools
There are two different tools you can use to debug your keyboard.
### Debugging With QMK Toolbox
For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can be used to display debug messages from your keyboard.
### Debugging With hid_listen
Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
## Sending Your Own Debug Messages
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
```c
#include"print.h"
```
After that you can use a few different print functions:
*`print("string")`: Print a simple string.
*`uprintf("%s string", var)`: Print a formatted string
*`dprint("string")` Print a simple string, but only when debug mode is enabled
*`dprintf("%s string", var)`: Print a formatted string, but only when debug mode is enabled
## Debug Examples
Below is a collection of real world debugging examples. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
### Which matrix position is this keypress?
When porting, or when attempting to diagnose pcb issues, it can be useful to know if a keypress is scanned correctly. To enable logging for this scenario, add the following code to your keymaps `keymap.c`
When testing performance issues, it can be useful to know the frequency at which the switch matrix is being scanned. To enable logging for this scenario, add the following code to your keymaps `config.h`
```c
#define DEBUG_MATRIX_SCAN_RATE
```
Example output
```text
> matrix scan frequency: 315
> matrix scan frequency: 313
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
```
## `hid_listen` Can't Recognize Device
When debug console of your device is not ready you will see like this:
@@ -11,7 +98,7 @@ When debug console of your device is not ready you will see like this:
Waiting for device:.........
```
once the device is plugged in then *hid_listen* finds it you will get this message:
Once the device is plugged in then *hid_listen* finds it you will get this message:
```
Waiting for new device:.........................
@@ -20,129 +107,12 @@ Listening:
If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes` in [Makefile]
You may need privilege to access the device on OS like Linux.
- try `sudo hid_listen`
You may need privileges to access the device an OS like Linux. Try `sudo hid_listen`.
## Can't Get Message on Console
Check:
- *hid_listen* finds your device. See above.
- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
-set `debug_enable=true`. See [Testing and Debugging](newbs_testing_debugging.md#debugging)
-try using 'print' function instead of debug print. See **common/print.h**.
-disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
***
# Miscellaneous
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If your keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard, leaving it in DFU mode.
- To this end, note that the maximum .hex file size on Planck is
7000h (28672 decimal)
```
Linking: .build/planck_rev4_cbbrowne.elf [OK]
Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
Size after:
text data bss dec hex filename
0 22396 0 22396 577c planck_rev4_cbbrowne.hex
```
- The above file is of size 22396/577ch, which is less than
28672/7000h
- As long as you have a suitable alternative .hex file around, you
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in extra fruit salad of options), so there is little risk
there.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.
## NKRO Doesn't work
First you have to compile firmware with this build option `NKRO_ENABLE` in **Makefile**.
Try `Magic`**N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmware built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic`**N** command(`Space+N` by default). This setting is stored in EEPROM and kept over power cycles.
Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
In C `1` means one of [int] type which is [16 bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
## Special Extra Key Doesn't Work (System, Audio Control Keys)
You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
## Wakeup from Sleep Doesn't Work
In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
Arduino Leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Enabling JTAG
By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the `JTAGEN` fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.
If you would like to keep JTAG enabled, just add the following to your `config.h`:
```c
#define NO_JTAG_DISABLE
```
## USB 3 Compatibility
I heard some people have a problem with USB 3 port, try USB 2 port.
## Problem on BIOS (UEFI)/Resume (Sleep & Wake)/Power Cycles
Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If your keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard, leaving it in DFU mode.
- To this end, note that the maximum .hex file size on e.g. Planck
is 7000h (28672 decimal)
```
Linking: .build/planck_rev4_cbbrowne.elf [OK]
Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
Size after:
text data bss dec hex filename
0 22396 0 22396 577c planck_rev4_cbbrowne.hex
```
- The above file is of size 22396/577ch, which is less than
28672/7000h
- As long as you have a suitable alternative .hex file around, you
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in an extra fruit salad of options), so there is little risk
there.
- EEPROM has around a 100000 (100k) write cycle. You shouldn't rewrite
the firmware repeatedly and continually; that'll burn the EEPROM
eventually.
## NKRO Doesn't work
First you have to compile firmware with the build option `NKRO_ENABLE` in **Makefile**.
Try `Magic`**N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work and you will need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmware was built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic`**N** command(`Space+N` by default). This setting is stored in EEPROM and kept over power cycles.
Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
In C `1` means one of [int] type which is [16 bit] in case of AVR, so you can't shift left more than 15. Thus, calculating `1<<16` will unexpectedly equal zero. To work around this, you have to use [unsigned long] type with `1UL`.
## Special Extra Key Doesn't Work (System, Audio Control Keys)
You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
## Wake from Sleep Doesn't Work
In Windows check `Allow this device to wake the computer` setting in **Power Management** property tab of **Device Manager**. Also check your BIOS settings. Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
Arduino Leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Enabling JTAG
By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the `JTAGEN` fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.
If you would like to keep JTAG enabled, just add the following to your `config.h`:
```c
#define NO_JTAG_DISABLE
```
## USB 3 Compatibility
Some problems can be fixed by switching from a USB 3.x port to a USB 2.0 port.
## Mac Compatibility
### OS X 10.11 and Hub
See here: https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles
Some people reported their keyboard stops working in BIOS and/or after resume(power cycles).
As of now the root cause is not clear, but some build options seem to be related. In Makefile, try to disable options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
@@ -182,7 +182,9 @@ Which would send Left Control+`a` (Left Control down, `a`, Left Control up) - no
By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap:
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.
?> You can also use the functions described in [Useful functions](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro.
`raw_hid_receive` can receive variable size packets from host with maximum length `RAW_EPSIZE`. `raw_hid_send` on the other hand can send packets to host of exactly `RAW_EPSIZE` length, therefore it should be used with data of length `RAW_EPSIZE`.
These two functions send and receive packets of length `RAW_EPSIZE` bytes to and from the host (32 on LUFA/ChibiOS/V-USB, 64 on ATSAM).
Make sure to flash raw enabled firmware before proceeding with working on the host side.
@@ -306,6 +319,12 @@ To declare new effects, create a new `rgb_matrix_user/kb.inc` that looks somethi
`rgb_matrix_user.inc` should go in the root of the keymap directory.
`rgb_matrix_kb.inc` should go in the root of the keyboard directory.
To use custom effects in your code, simply prepend `RGB_MATRIX_CUSTOM_` to the effect name specified in `RGB_MATRIX_EFFECT()`. For example, an effect declared as `RGB_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
?> **Note:** Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See [RGB Matrix Indicators](feature_rgb_matrix.md?indicators) for details on how to do so.
By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
@@ -194,7 +196,7 @@ it easy to use your underglow LEDs as status indicators to show which keyboard l
By default, 8 layers are possible. This can be expanded to as many as 32 by overriding the definition of `RGBLIGHT_MAX_LAYERS` in `config.h` (e.g. `#define RGBLIGHT_MAX_LAYERS 32`). Please note, if you use a split keyboard, you will need to flash both sides of the split after changing this. Also, increasing the maximum will increase the firmware size, and will slow sync on split keyboards.
To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
To define a layer, we modify `keymap.c` to list the LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
```c
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
@@ -184,7 +184,7 @@ If you wanted to consolidate macros and other functions into your userspace for
First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes
Then add `#include <name.h>` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.
Then add `#include "<name>.h"` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.
Once you've done that, you'll want to set the keycode definitions that you need to the `<name>.h` file. For instance:
# Flashing Instructions and Bootloader Information
There are quite a few different types of bootloaders that keyboards use, and just about all of them use a different flashing method. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to be compatible with all the different types without having to think about it much, but this article will describe the different types of bootloaders, and available methods for flashing them.
There are quite a few different types of bootloaders that keyboards use, and almost all of them use their own flashing method and tools. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to support as many of them as possible, but this article will describe the different types of bootloaders, and available methods for flashing them.
If you have a bootloader selected with the `BOOTLOADER` variable in your `rules.mk`, QMK will automatically calculate if your .hex file is the right size to be flashed to the device, and output the total size in bytes (along with the max).
For AVR-based keyboards, QMK will automatically calculate if your `.hex` file is the right size to be flashed to the device based on the `BOOTLOADER` value set in `rules.mk`, and output the total size in bytes (along with the max).
## DFU
You will also be able to use the CLI to flash your keyboard, by running:
```
$ qmk flash -kb <keyboard> -km <keymap>
```
See the [`qmk flash`](cli_commands.md#qmk-flash) documentation for more information.
Atmel's DFU bootloader comes on all atmega32u4 chips by default, and is used by many keyboards that have their own ICs on their PCBs (Older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader (or QMK's fork) (Newer OLKB boards) that adds in additional features specific to that hardware.
## Atmel DFU
To ensure compatibility with the DFU bootloader, make sure this block is present your `rules.mk` (optionally with `lufa-dfu` or `qmk-dfu` instead):
Atmel's DFU bootloader comes on all USB AVRs by default (except for 16/32U4RC), and is used by many keyboards that have their own ICs on their PCBs (older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader, or QMK's fork of it (newer OLKB boards), that adds in additional features specific to that hardware.
To ensure compatibility with the DFU bootloader, make sure this block is present in your `rules.mk` (optionally with `lufa-dfu` or `qmk-dfu` instead):
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` in QMK (recommended command line)
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` target in QMK (recommended command line)
Flashing sequence:
1.Press the `RESET` keycode, or tap the RESET button (or short RST to GND).
1.Enter the bootloader using any of the following methods:
* Press the `RESET` keycode
* Press the `RESET` button on the PCB if available
* Short RST to GND quickly
2. Wait for the OS to detect the device
3. Erase the memory (may be done automatically)
3. Erase the flash memory (will be done automatically if using the Toolbox or CLI/`make` command)
4. Flash a .hex file
5. Reset the device into application mode (may be done automatically)
or:
make <keyboard>:<keymap>:dfu
5. Reset the device into application mode (will be done automatically as above)
### QMK DFU
QMK has a fork of the LUFA DFU bootloader that allows for a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. To enable these features, use this block in your `config.h` (The key that exits the bootloader needs to be hooked-up to the INPUT and OUTPUT defined here):
QMK maintains [a fork of the LUFA DFU bootloader](https://github.com/qmk/lufa/tree/master/Bootloaders/DFU) that additionally performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. To enable these features, add the following defines to your `config.h`:
#define QMK_ESC_OUTPUT F1 // usually COL
#define QMK_ESC_INPUT D5 // usually ROW
#define QMK_LED E6
#define QMK_SPEAKER C6
```c
#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW
#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW
// Optional:
//#define QMK_LED E6
//#define QMK_SPEAKER C6
```
Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
The Manufacturer and Product names are automatically pulled from your `config.h`, and "Bootloader" is added to the product.
The manufacturer and product strings are automatically pulled from `config.h`, with "Bootloader" appended to the product string.
To generate this bootloader, use the `bootloader` target, eg `make planck/rev4:default:bootloader`.
To generate this bootloader, use the `bootloader` target, eg.`make planck/rev4:default:bootloader`. To generate a production-ready .hex file (combining QMK and the bootloader), use the `production` target, eg. `make planck/rev4:default:production`.
To generate a production-ready .hex file (containing the application and the bootloader), use the `production` target, eg `make planck/rev4:default:production`.
### `make` Targets
### DFU commands
There are a number of DFU commands that you can use to flash firmware to a DFU device:
*`:dfu` - This is the normal option and waits until a DFU device is available, and then flashes the firmware. This will check every 5 seconds, to see if a DFU device has appeared.
*`:dfu-ee` - This flashes an `eep` file instead of the normal hex. This is uncommon.
*`:dfu-split-left` - This flashes the normal firmware, just like the default option (`:dfu`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Elite C based split keyboards._
*`:dfu-split-right` - This flashes the normal firmware, just like the default option (`:dfu`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Elite C based split keyboards._
*`:dfu`: Checks every 5 seconds until a DFU device is available, and then flashes the firmware.
*`:dfu-split-left` and `:dfu-split-right`: Flashes the firmware as with `:dfu`, but also sets the handedness setting in EEPROM. This is ideal for Elite-C-based split keyboards.
## Caterina
Arduino boards and their clones use the [Caterina bootloader](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (any keyboard built with a Pro Micro, or clone), and uses the avr109 protocol to communicate through virtual serial. Bootloaders like [A-Star](https://www.pololu.com/docs/0J61/9) are based on Caterina.
Arduino boards and their clones use the [Caterina bootloader](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) or a variant of it (any keyboard built with a Pro Micro or clone, and the Pololu A-Star), and uses the AVR109 protocol to communicate through virtual serial.
To ensure compatibility with the Caterina bootloader, make sure this block is present your `rules.mk`:
To ensure compatibility with the Caterina bootloader, make sure this block is present in your `rules.mk`:
1.Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
1.Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters; some variants may require you to reset twice within 750 milliseconds):
* Press the `RESET` keycode
* Press the `RESET` button on the PCB if available
* Short RST to GND quickly
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Wait for the device to reset automatically
or
### `make` Targets
make <keyboard>:<keymap>:avrdude
*`:avrdude`: Checks every 5 seconds until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
*`:avrdude-loop`: Flashes the firmware as with `:avrdude`, but after each device is flashed, will attempt to flash again. This is useful for bulk flashing. Hit Ctrl+C to escape the loop.
*`:avrdude-split-left` and `:avrdude-split-right`: Flashes the firmware as with `:avrdude`, but also sets the handedness setting in EEPROM. This is ideal for Pro Micro-based split keyboards.
## HalfKay
### Caterina commands
HalfKay is a super-slim bootloader developed by PJRC that presents itself as an HID device (which requires no additional driver), and comes preflashed on all Teensys, namely the 2.0. It is currently closed-source, and thus once overwritten (eg. via ISP flashing another bootloader), cannot be restored.
There are a number of DFU commands that you can use to flash firmware to a DFU device:
*`:avrdude` - This is the normal option which waits until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
*`:avrdude-loop` - This runs the same command as `:avrdude`, but after each device is flashed, it will attempt to flash again. This is useful for bulk flashing. _This requires you to manually escape the loop by hitting Ctrl+C._
*`:avrdude-split-left` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
*`:avrdude-split-right` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
## Halfkay
Halfkay is a super-slim protocol developed by PJRC that uses HID, and comes on all Teensys (namely the 2.0).
To ensure compatibility with the Halfkay bootloader, make sure this block is present your `rules.mk`:
To ensure compatibility with the Halfkay bootloader, make sure this block is present in your `rules.mk`:
1.Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
1.Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters):
* Press the `RESET` keycode
* Press the `RESET` button on the Teensy or PCB if available
* short RST to GND quickly
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
## USBasploader
USBasploader is a bootloader developed by matrixstorm. It is used in some non-USB AVR chips such as the ATmega328P, which run V-USB.
USBasploader is a bootloader originally by [Objective Development](https://www.obdev.at/products/vusb/usbasploader.html). It emulates a USBasp ISP programmer and is used in some non-USB AVR chips such as the ATmega328P, which run V-USB.
To ensure compatibility with the USBasploader bootloader, make sure this block is present in your `rules.mk`:
1.Press the `RESET` keycode, or keep the boot pin shorted to GND while quickly shorting RST to GND
1.Enter the bootloader using any of the following methods:
* Press the `RESET` keycode
* Keep the `BOOT` button held while quickly tapping the `RESET` button on the PCB
2. Wait for the OS to detect the device
3. Flash a .hex file
4.Reset the device into application mode (may be done automatically)
4.Press the `RESET` button on the PCB or short RST to GND
## BootloadHID
BootloadHID is a USB bootloader for AVR microcontrollers. The uploader tool requires no kernel level driver on Windows and can therefore be run without installing any DLLs.
BootloadHID is a USB bootloader for AVR microcontrollers. It presents itself as an HID input device, much like HalfKay, and can therefore be run without installing any driver on Windows.
To ensure compatibility with the bootloadHID bootloader, make sure this block is present your `rules.mk`:
To ensure compatibility with the bootloadHID bootloader, make sure this block is present in your `rules.mk`:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER= bootloadHID
```
Compatible flashers:
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (recommended Windows GUI)
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (may not work on all devices)
* Hold the salt key while plugging the keyboard in (usually documented within keyboard readme)
* Tap the `RESET` keycode
* Hold the salt key while plugging the keyboard in - for PS2AVRGB boards, this is usually the key connected to MCU pins A0 and B0, otherwise it will be documented in your keyboard's readme
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
or:
## STM32/APM32 DFU
make <keyboard>:<keymap>:bootloadHID
All STM32 and APM32 MCUs, except for F103 (see the [STM32duino section](#stm32duino)) come preloaded with a factory bootloader that cannot be modified nor deleted.
## STM32
To ensure compatibility with the STM32-DFU bootloader, make sure this block is present in your `rules.mk` (optionally with `apm32-dfu` instead):
All STM32 chips come preloaded with a factory bootloader that cannot be modified nor deleted. Some STM32 chips have bootloaders that do not come with USB programming (e.g. STM32F103) but the process is still the same.
At the moment, no `BOOTLOADER`variable is needed on `rules.mk` for STM32.
* [dfu-util](http://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (may not work on STM32F042 devices)
* If a reset circuit is present, tap the RESET button
* Otherwise, you need to bridge BOOT0 to VCC (via BOOT0 button or bridge), short RESET to GND (via RESET button or bridge), and then let go of the BOOT0 bridge
* If a reset circuit is present, tap the `RESET` button on the PCB; some boards may also have a toggle switch that must be flipped
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
2. Wait for the OS to detect the device
3. Flash a .bin file
* You will receive a warning about the DFU signature; Just ignore it
4. Reset the device into application mode (may be done automatically)
* If you are building from command line (e.g. `make planck/rev6:default:dfu-util`), make sure that `:leave` is passed to the `DFU_ARGS` variable inside your `rules.mk` (e.g. `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) so that your device resets after flashing
### STM32 Commands
### `make` Targets
There are a number of DFU commands that you can use to flash firmware to a STM32 device:
*`:dfu-util`: Waits until an STM32 bootloader device is available, and then flashes the firmware.
*`:dfu-util-split-left` and `:dfu-util-split-right`: Flashes the firmware as with `:avrdude`, but also sets the handedness setting in EEPROM. This is ideal for Proton-C-based split keyboards.
*`:st-link-cli`: Allows you to flash the firmware via the ST-Link CLI utility, rather than dfu-util. Requires an ST-Link dongle.
*`:st-flash`: Allows you to flash the firmware via the `st-flash` utility from [STLink Tools](https://github.com/stlink-org/stlink), rather than dfu-util. Requires an ST-Link dongle.
*`:dfu-util` - The default command for flashing to STM32 devices, and will wait until an STM32 bootloader device is present.
*`:dfu-util-split-left` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Left Side" EEPROM setting for split keyboards.
*`:dfu-util-split-right` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Right Side" EEPROM setting for split keyboards.
*`:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util.
*`:st-flash` - This allows you to flash the firmware via the `st-flash` utility from [STLink Tools](https://github.com/stlink-org/stlink), rather than dfu-util.
## STM32duino
This bootloader is used almost exclusively for STM32F103 boards, as they do not come with a USB DFU bootloader. The source code and prebuilt binaries can be found [here](https://github.com/rogerclarkmelbourne/STM32duino-bootloader).
To ensure compatibility with the STM32duino bootloader, make sure this block is present in your `rules.mk`:
* [dfu-util](http://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode
* If a reset circuit is present, tap the `RESET` button on the PCB
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
2. Wait for the OS to detect the device
3. Flash a .bin file
4. Reset the device into application mode (may be done automatically)
## Kiibohd DFU
Keyboards produced by Input Club use NXP Kinetis microcontrollers rather than STM32, and come with their own [custom bootloader](https://github.com/kiibohd/controller/tree/master/Bootloader), however the process and protocol is largely the same.
The `rules.mk` setting for this bootloader is `kiibohd`, but since this bootloader is limited to Input Club boards, it should not be necessary to set at keymap or user level.
@@ -42,7 +42,9 @@ Vous préférez une solution basée sur le terminal? [hid_listen](https://www.pj
Parfois, il est utile d'afficher des messages de débugage depuis votre [code custom](custom_quantum_functions.md). Le faire est assez simple. Commencez par ajouter `print.h` au début de votre fichier:
#include<print.h>
```c
#include"print.h"
```
Une fois fait, vous pouvez utiliser les fonctions print suivantes:
@@ -14,16 +14,32 @@ The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`,
The `<target>` means the following
* If no target is given, then it's the same as `all` below
*`all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck.
*`flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:flash`.
*`flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
* **Note**: some operating systems need privileged access for these commands to work. This means that you may need to setup [`udev rules`](faq_build.md#linux-udev-rules) to access these without root access, or to run the command with root access (`sudo make planck/rev4:default:flash`).
*`clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
*`distclean` removes .hex files and .bin files.
The following targets are for developers:
*`show-path` shows the path of the source and object files.
*`dump-vars` dumps the makefile variable.
*`objs-size` displays the size of individual object files.
*`show_build_options` shows the options set in 'rules.mk'.
*`check-md5` displays the md5 checksum of the generated binary file.
You can also add extra options at the end of the make command line, after the target
*`make COLOR=false` - turns off color output
*`make SILENT=true` - turns off output besides errors/warnings
*`make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug)
*`make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands)
*`make VERBOSE_LD_CMD=yes` - execute the ld command with the -v option.
*`make VERBOSE_AS_CMD=yes` - execute the as command with the -v option.
*`make VERBOSE_C_CMD=<c_source_file>` - add the -v option when compiling the specified C source file.
*`make DUMP_C_MACROS=<c_source_file>` - dump preprocessor macros when compiling the specified C source file.
*`make DUMP_C_MACROS=<c_source_file> > <logfile>` - dump preprocessor macros to `<logfile>` when compiling the specified C source file.
*`make VERBOSE_C_INCLUDE=<c_source_file>` - dumps the file names to be included when compiling the specified C source file.
*`make VERBOSE_C_INCLUDE=<c_source_file> 2> <logfile>` - dumps the file names to be included to `<logfile>` when compiling the specified C source file.
The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.
@@ -78,7 +78,7 @@ Established materials and techniques include:
| Short lengths of wire | [u/xicolinguada's ortho build](https://www.reddit.com/r/MechanicalKeyboards/comments/c39k4f/my_first_hand_wired_keyboard_its_not_perfect_but/) | Easier to strip the wire | More difficult to place | 
| Magnet/Enamelled wire | [Brett Kosinski's handwired alpha](http://blog.b-ark.ca/Blog-2019-01-27) and [fknraiden's custom board](https://geekhack.org/index.php?topic=74223.0) | Can be directly soldered onto (insulation burns off with heat) | Appearance? | 
| Bending the legs of the diodes for the rows | [Matt3o's Brownfox](https://deskthority.net/viewtopic.php?f=7&t=6050) | Fewer solder joints required | Uninsulated | 
| Using ridid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | 
| Using rigid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | 
| Bare wire with insulation added after (e.g. kapton tape) | [Matt3o's 65% on his website](https://matt3o.com/hand-wiring-a-custom-keyboard/) | Easier (no wire stripping required) | Not as attractive | 
| Copper tape | [ManuForm Dactyl](https://github.com/tshort/dactyl-keyboard) | Very easy | Only really works when your plate/case aligns with the bottom of your switches | 
@@ -121,7 +121,7 @@ Letting the diode rest, grab your solder, and touch both it and the soldering ir
The smoke that the rosin releases is harmful, so be careful not to breath it or get it in your eyes/face.
After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiny) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blow on it will accelerate this process.
After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiny) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blowing on it will accelerate this process.
When the first diode is complete, the next one will need to be soldered to both the keyswitch, and the previous diode at the new elbow. That will look something like this:
@@ -77,7 +77,7 @@ Do change the `MANUFACTURER` and `PRODUCT` lines to accurately reflect your keyb
#define PRODUCT my_awesome_keyboard
```
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead takes these from the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html) by default. `lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead prefers the values in the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html). By default, it will only use `MANUFACTURER` and `PRODUCT` if the list does not contain that `VENDOR_ID` / `PRODUCT_ID`. `sudo lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
מקמו את התיעוד שלכם בתוך `docs/feature_<my_cool_feature>.md`, והוסיפו קישור לקובץ זה במקום המתאים ב `docs/_sidebar.md`. אם הוספתם קודי מקשים נוספים, תקפידו להוסיף אותם ל- `docs/keycodes.md` עם לינק לעמוד היכולת שלכם.
מנק׳ מבט של הפרוייקט וניהול הקהילה, TMK מנהל את כל המקלדות הנתמכות בעצמו, עם מעט תמיכה מהקהילה. כל אחד יכול לעשות פורק מהפרוייקט עבור מקלדות אחרות. רק מס׳ מיפויי מקשים נמצאים בברירת המחדל כך שאנשים בד״כ לא משתפים מיפויי מקשים זה עם זה. QMK מעודד את השיתוף של המקלדות וקודי המקשים דרך רפוזיטורי בניהול מרכזי, אשר מקבל את כל בקשות ה- Pull Requests שעומדות בסטנדרט האיכות. רובם מנוהלות ע״י הקהילה, אבל הצוות של QMK עוזר כשנדרש.
לשתי הגישות יש יתרונות וחסרונות וקוד עובר בחופשיות בין TMK ל- QMK כשצריך.
これは最初に include されるものの 1 つである C ヘッダファイルで、プロジェクト全体(もし含まれる場合)にわたって持続します。多くの変数をここで設定し、他の場所からアクセスすることができます。`config.h` ファイルでは、以下のもの以外の、他の `config.h` ファイルやその他のファイルの include をしないでください:
これで、キーボードへの HID インタフェースを開くために必要な4つの情報全てが揃いました。必要なのは、ライブラリの利用可能な関数を使って ID パラメータを使ってデバイスを開くことだけです。
Vendor ID と Product ID はデバイスを開くために実際には必要ないことに注意してください。それらは接続した多くの HID デバイスから特定のデバイスをフィルターするためだけに使われます。多くのライブラリでは、代わりに製品名と製造元名を使ってデバイスを開くオプションがあります。`node-hid` が代表的な例です。これは USB ハブが組み込まれているデバイスや、同じ製品名または同じ製造元の複数のインタフェースがある特別な HID インタフェースで問題になります。Product ID と Vendor ID を合わせると単一のインタフェースの固有名を作成できるため、この問題を防げます。したがって、ライブラリで必要が無い場合でも、この問題を防ぐためにそれらを使うことをお勧めします。
ただし、Vendor ID や Product ID と異なり、Usage Page と Usage は通信を成功させるために必要です。
|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, Brightness Up (macOS) |
|`KC_INSERT` |`KC_INS` |Insert |
|`KC_HOME` | |Home |
|`KC_PGUP` | |Page Up |
|`KC_DELETE` |`KC_DEL` |Forward Delete |
|`KC_END` | |End |
|`KC_PGDOWN` |`KC_PGDN` |Page Down |
|`KC_RIGHT` |`KC_RGHT` |Right Arrow |
|`KC_LEFT` | |Left Arrow |
|`KC_DOWN` | |Down Arrow |
|`KC_UP` | |Up Arrow |
|`KC_APPLICATION` |`KC_APP` |Application (Windows Context Menu Key)|
|`KC_POWER` | |System Power |
|`KC_EXECUTE` |`KC_EXEC` |Execute |
|`KC_HELP` | |Help |
|`KC_MENU` | |Menu |
|`KC_SELECT` |`KC_SLCT` |Select |
|`KC_STOP` | |Stop |
|`KC_AGAIN` |`KC_AGIN` |Again |
|`KC_UNDO` | |Undo |
|`KC_CUT` | |Cut |
|`KC_COPY` | |Copy |
|`KC_PASTE` |`KC_PSTE` |Paste |
|`KC_FIND` | |Find |
|`KC__MUTE` | |Mute |
|`KC__VOLUP` | |Volume Up |
|`KC__VOLDOWN` | |Volume Down |
|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase |
|`KC_SYSREQ` | |SysReq/Attention |
|`KC_CANCEL` | |Cancel |
|`KC_CLEAR` |`KC_CLR` |Clear |
|`KC_PRIOR` | |Prior |
|`KC_RETURN` | |Return |
|`KC_SEPARATOR` | |Separator |
|`KC_OUT` | |Out |
|`KC_OPER` | |Oper |
|`KC_CLEAR_AGAIN` | |Clear/Again |
|`KC_CRSEL` | |CrSel/Props |
|`KC_EXSEL` | |ExSel |
## Media Keys
@@ -193,34 +193,34 @@ These keycodes are not part of the Keyboard/Keypad usage page. The `SYSTEM_` key
?> Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes `KC_MEDIA_FAST_FORWARD`, `KC_MEDIA_REWIND`, `KC_MEDIA_NEXT_TRACK` and `KC_MEDIA_PREV_TRACK` skip within the current track when held, but skip the entire track when tapped.
@@ -6,25 +6,19 @@ QMK tries to put a lot of power into your hands by making easy things easy, and
Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](http://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do.
## Is This Guide For Me?
This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. If the thought of programming intimidates you please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead.
?> **Is This Guide For Me?**<br>
If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead.</div>
## Overview
There are 4 main sections to this guide:
This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. There are 3 main sections to this guide:
1. [Setup Your Environment](newbs_getting_started.md)
2. [Building Your First Firmware](newbs_building_firmware.md)
3. [Flashing Firmware](newbs_flashing.md)
4. [Testing and Debugging](newbs_testing_debugging.md)
This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md).
## Additional Resources
Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Learning Resources](newbs_learn_more_resources.md) page.
## Open Source
QMK is Open Source Software released under the GNU General Public License.
Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Syllabus](syllabus.md) and [Learning Resources](newbs_learn_more_resources.md) pages.
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware hex files.
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware `.hex` or `.bin` files.
Watch the [Video Tutorial](https://www.youtube.com/watch?v=-imgglzDMdY). Many people find that is enough information to start programming their own keyboard.
@@ -37,18 +37,22 @@ Begin by opening the QMK Toolbox application. You'll want to locate the firmware
If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.
#### Windows
<!-- tabs:start -->
#### ** Windows **
```
start .
```
#### macOS
#### ** macOS **
```
open .
```
<!-- tabs:end -->
The firmware file always follows this naming format:
```
@@ -106,6 +110,9 @@ In this case, you'll have to fall back on specifying the bootloader. See the [Fl
## Test It Out!
Congrats! Your custom firmware has been programmed to your keyboard!
Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!
Give it a try and make sure everything works the way you want it to. We've written [Testing and Debugging](newbs_testing_debugging.md) to round out this guide, so head over there to learn about validating your firmware and how to troubleshoot your custom functionality.
With a little bit of luck everything will work perfectly, but if not there are steps that will help you figure out what's wrong.
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
Still not working? Browse the FAQ topics for more information, or [chat with us on Discord](https://discord.gg/Uq7gcHh).
Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.
## 1. Download Software
## 1. Prerequisites
There are a few pieces of software you'll need to get started.
* You’ll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
* A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard
You'll need a program that can edit and save **plain text** files. If you're on Windows you can make do with Notepad, and on Linux you can use gedit. Both of these are simple but functional text editors. On macOS, be careful with the default TextEdit app: it will not save plain text files unless you explicitly select _Make Plain Text_ from the _Format_ menu.
You can also download and install a dedicated text editor like [Sublime Text](https://www.sublimetext.com/) or [VS Code](https://code.visualstudio.com/). This is probably the best way to go regardless of platform, as these programs are specifically made for editing code.
?> Not sure which text editor to use? Laurence Bradford wrote [a great introduction](https://learntocodewith.me/programming/basics/text-editors/) to the subject.
### QMK Toolbox
QMK Toolbox is an optional graphical program for Windows and macOS that allows you to both program and debug your custom keyboard. You will likely find it invaluable for easily flashing your keyboard and viewing debug messages that it prints.
[Download the latest release here.](https://github.com/qmk/qmk_toolbox/releases/latest)
* For Windows: `qmk_toolbox.exe` (portable) or `qmk_toolbox_install.exe` (installer)
* For macOS: `QMK.Toolbox.app.zip` (portable) or `QMK.Toolbox.pkg` (installer)
### A Unix-like Environment
Linux and macOS come with unix shells you can execute already. You will only need to setup your build environment.
On Windows you will need to install MSYS2 or WSL and use those environments. Instructions for setting up MSYS2 are provided below.
?> If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. [These resources](newbs_learn_more_resources.md#command-line-resources) will teach you enough to be able to work with QMK.
## 2. Prepare Your Build Environment :id=set-up-your-environment
We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.
?> If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK:<br>
[Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
You will need to install MSYS2, Git, and the QMK CLI.
QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also provides a handy `QMK MSYS` terminal shortcut to boot you directly into the correct environment.
Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org). Close any open MSYS terminals and open a new MinGW 64-bit terminal. **NOTE: This is *not* the same as the MSYS terminal that opens when installation is completed.**
#### Prerequisites
Then, run the following:
You will need to install [QMK MSYS](https://msys.qmk.fm/). The latest release is available [here](https://github.com/qmk/qmk_distro_msys/releases/latest).
Alternatively, if you'd like to manually install MSYS2, the following section will walk you through the process.
<details>
<summary>Manual Install</summary>
?> Ignore the following steps if you use `QMK MSYS`.
#### Prerequisites
You will need to install MSYS2, Git and Python. Follow the installation instructions on https://www.msys2.org.
Once MSYS2 is installed, close any open MSYS terminals and open a new MinGW 64-bit terminal.
!> **NOTE:** The MinGW 64-bit terminal is *not* the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See [this page](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems) for more information on the differences.
`python3 -m pip install --user qmk` (on Arch-based distros you can also try the `qmk` package from AUR (**note**: it's maintained by a community member): `yay -S qmk`)
Install the QMK CLI by running:
### FreeBSD
python3 -m pip install --user qmk
#### Community Packages
These packages are maintained by community members, so may not be up to date or completely functional. If you encounter problems, please report them to their respective maintainers.
On Arch-based distros you can install the CLI from the official repositories (NOTE: at the time of writing this package marks some dependencies as optional that should not be):
sudo pacman -S qmk
You can also try the `qmk-git` package from AUR:
yay -S qmk-git
### ** FreeBSD **
#### Prerequisites
You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them:
pkg install git python3
Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally install Python packages are available.
Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available.
Once installed, you can install QMK CLI:
#### Installation
Install the QMK CLI by running:
python3 -m pip install --user qmk
<!-- tabs:end -->
## 3. Run QMK Setup :id=set-up-qmk
<!-- tabs:start -->
### ** Windows **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer Yes to all of the prompts.
In most situations you will want to answer `y` to all of the prompts.
### ** macOS **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer `y` to all of the prompts.
### ** Linux/WSL **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer `y` to all of the prompts.
?>**Note on Debian, Ubuntu and their derivatives**:
It's possible, that you will get an error saying something like: `bash: qmk: command not found`.
@@ -97,12 +152,22 @@ This is due to a [bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155)
Sadly, Ubuntu reitroduced this bug and is [yet to fix it](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562).
Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc`
### ** FreeBSD **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer `y` to all of the prompts.
?>**Note on FreeBSD**:
It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your
base system using `pkg`. However the installation will probably fail when run as an unprivileged user.
To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`.
Once that completes, re-run `qmk setup` to complete the setup and checks.
<!-- tabs:end -->
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
These resources are aimed at giving new members in the QMK community more understanding to the information provided in the Newbs docs.
**QMK resources**:
### QMK resources
* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – A user-created blog covering the basics of how to use QMK Firmware, as seen from a new user's perspective.
**Command Line resources**:
### Command Line resources
* [Good General Tutorial on Command Line](https://www.codecademy.com/learn/learn-the-command-line)
* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
Once you've flashed your keyboard with a custom firmware you're ready to test it out. With a little bit of luck everything will work perfectly, but if not this document will help you figure out what's wrong.
## Testing
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
[Moved here](faq_misc.md#testing)
## Debugging :id=debugging
Your keyboard will output debug information if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, use the [Command](feature_command.md) feature to enable debug mode, or add the following code to your keymap.
```c
voidkeyboard_post_init_user(void){
// Customise these values to desired behaviour
debug_enable=true;
debug_matrix=true;
//debug_keyboard=true;
//debug_mouse=true;
}
```
## Debugging Tools
There are two different tools you can use to debug your keyboard.
### Debugging With QMK Toolbox
For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can be used to display debug messages from your keyboard.
### Debugging With hid_listen
Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
## Sending Your Own Debug Messages
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
#include<print.h>
After that you can use a few different print functions:
*`print("string")`: Print a simple string.
*`uprintf("%s string", var)`: Print a formatted string
*`dprint("string")` Print a simple string, but only when debug mode is enabled
*`dprintf("%s string", var)`: Print a formatted string, but only when debug mode is enabled
## Debug Examples
Below is a collection of real world debugging examples. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
### Which matrix position is this keypress?
When porting, or when attempting to diagnose pcb issues, it can be useful to know if a keypress is scanned correctly. To enable logging for this scenario, add the following code to your keymaps `keymap.c`
When testing performance issues, it can be useful to know the frequency at which the switch matrix is being scanned. To enable logging for this scenario, add the following code to your keymaps `config.h`
@@ -28,6 +28,18 @@ The default setting is 280 µs, which should work for most cases, but this can b
#define WS2812_TRST_US 80
```
#### Byte Order
Some variants of the WS2812 may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB.
In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values:
# The default 0-Sixty layout - largely based on the Preonic's and Planck's
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.