Compare commits

..

130 Commits

Author SHA1 Message Date
5e1ce3988d Remove unused LED_BREATHING_TABLE 2020-03-06 22:29:01 -08:00
dd05007f3b [Docs] i2c_driver translation to Japanese (#8274)
* [WIP] i2c_driver translation to ja

* update docs/ja/i2c_driver.md

* update docs/ja/i2c_driver.md

* align table + remove comment

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* add original document commit hash

Co-Authored-By: shela <shelaf@users.noreply.github.com>
2020-03-06 18:27:15 -08:00
2306c974e5 format code according to conventions [skip ci] 2020-03-07 01:24:47 +00:00
833c5ae87a Buffer based OLED panning, write byte to buffer at arbitrary index (#8055)
* Add buffer based single line pan, arbitrary byte write to buffer

* Change dirty mask to inverse of OLED_BLOCK_TYPE for future proofing larger buffer sizes

* Updating docs to include new functions

* Updating to clarify scroll vs pan
2020-03-07 00:52:39 +00:00
57de9e65ef Super 16 Puzzle Game (#8306)
* 15/16 game with lights for the super 16

* Updated readme with style

* adding comments and initial style to keymap

trying to make the code look prettier, need to test by redownloading

* Final style revisions before pull request

* formatting changes, removed config.h

* modified rules.mk, works with changes in PR8314

* formatting

no number of spaces is enough for a newline, whoops

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

Co-authored-by: Sam Reinehr <swreinehr@mines.edu>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-07 00:15:44 +00:00
6b6e47cbf1 DZ60 keyboard layout tuning and README update/fix (#8325)
* Added custom dz60 keymap

* Update readme.md

* Updated pictures in README.md

* README.md fixes

* Updated mouse layout/ added ` key

* Changed bkspc key to del in mod

* Changed picture

* Updated keymap

* Removed default dz60 config.h

* Updated Readme

* Added Devorak Keymap

* Re-added Default Config File

* Updated Flash Command

* Cleaned Up Custom Config File

* Added Lock Security Layer

* Updated Readme Picture

* Fixed Readme

* Re-added keyboard picture

* Added home and end button

* added insert, pgup, pgdn

* final commit before pull request

* fixing merge

* Added custom dz60 keymap

* adding lufa?

Co-authored-by: chrisae9 <chrisae9@penguin>
2020-03-07 00:11:41 +00:00
54b6bf5910 [Keyboard] Add VIA support for neuron (#8264)
* add VIA support for neuron

* update neuron vendor and product id

* update neuron product id

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-03-06 16:00:44 -08:00
73728e9bec [Docs] Fix links in Config Options doc 2020-03-06 13:10:17 -08:00
4f1a62ca1d [Keyboard] keebwerk. nano. slider support (#7914)
* Initial Keeb.werk nano.slider support

* fixed open ifdef

* Fixed layout macros

* Added LTO

* Enabled LTO and dissabled console

* Added basic slider example

* rate limited adc, and fixed send_string

* Made slider courser

* new-line after each slider print

* Switched slider example mirror the stock behavior using midi

* switched division to bit-shifting

* Apply suggestions from code review

* Update keyboards/keebwerk/nano_slider/keymaps/default/keymap.c

* Update keyboards/keebwerk/nano_slider/config.h

* Update keyboards/keebwerk/nano_slider/config.h

* Applied suggestions from code review

* Apply suggestions from code review

* Added fauxparks info.json

* Reverse midi value direction, move to QMKVID

* Update keyboards/keebwerk/nano_slider/config.h

* Update keyboards/keebwerk/nano_slider/config.h

* Update keyboards/keebwerk/nano_slider/keymaps/default/keymap.c

* Apply suggestions from code review

* Update keyboards/keebwerk/nano_slider/rules.mk

* Update keyboards/keebwerk/nano_slider/nano_slider.h

* Update keyboards/keebwerk/nano_slider/readme.md

* Defined backlight pin and settings
2020-03-06 11:00:17 -08:00
4e826ba61f Correct typo in tap_hold.md (#8326)
Correct typo: "reasonal" to "reasonable"
2020-03-07 05:42:08 +11:00
b438c6f8ea Fix up Arm builds with nix-shell. (#8312) 2020-03-07 03:05:51 +11:00
bad9468ce1 format code according to conventions [skip ci] 2020-03-06 13:28:11 +00:00
9810756ee0 Fix typo in uart.c backport and add 32A "support" (#8219) 2020-03-06 23:55:15 +11:00
918a85d342 Refactor more backlight to a common location (#8292)
* Refactor more backlight to a common location

* BACKLIGHT_PIN not defined for custom backlight

* align function names
2020-03-06 12:49:45 +00:00
116c0e44a1 Remove stub backlight functions from clueboard/66/rev4 (#8303) 2020-03-06 12:12:20 +00:00
3c0ef04390 [Keymap] Dichotomy keymap by beat (#8279)
* Added more led helpers

* Working keymap

* Added new mouse button an made lower layer toggleable

* Small improvement to process_record_user

* Removed extra layer buttons

* Added Numpad to apply layer

* Moved buttons and added toggle for raise button

* Added Menu,PrintScreen and Windowslock buttons, and left handmouse

* Fixed Scroll Buttons

* Turned TAPPING TOGGLE to 2

* Switched Del and Ctrl on left hand

* Added Home Button to Mouse layer

* Fixed led initialization to avoid red led on boot

* Updated formatting to follow guidelines

* Used enums instead of defines and used layer_state_t type

* Added license

* Moved TAPPING settings to keymap config

* Fixed small formatting issue in keymap.c

* Use GPIO Control instead of lowlevel ports
2020-03-06 00:47:52 -08:00
fd7b52cc64 format code according to conventions [skip ci] 2020-03-06 02:15:29 +00:00
d0d6fb27c4 Add f401 and f411 blackpill examples (#7930)
* Add f401 and f411 blackpill examples

* Add readme files

* Align dfu args with core

* Add support for RESET keycode

* move STM32_BOOTLOADER_ADDRESS to rules

* Update conf files to latest ChibiOS

* Update conf files to latest ChibiOS
2020-03-06 01:40:39 +00:00
b368db9e02 Refactor fortitude60 to use split_common (#8113) 2020-03-06 01:39:54 +00:00
76189d9a28 link the 2020 Feb 29 Breaking Changes changelog from the summary 2020-03-05 16:00:10 -08:00
2939751eb3 keycodes.md: hard-code section link id attributes 2020-03-05 16:00:10 -08:00
772bacb770 keycodes.md: don't use section headings as links
It prevents the Table of Contents from parsing that heading.
2020-03-05 16:00:10 -08:00
961477c791 make sure all our redirects are in order 2020-03-05 16:00:10 -08:00
6956784ac1 Add more call to action items 2020-03-05 16:00:10 -08:00
54c58ea6de Add explicit id tags to externally linked headers 2020-03-05 16:00:10 -08:00
a95a314f78 refactor How a Matrix Works doc 2020-03-05 16:00:10 -08:00
bc31ebd0c4 Hand Wire guide tidying, part 2 2020-03-05 16:00:10 -08:00
fbf27e7444 Hand Wire guide tidying 2020-03-05 16:00:10 -08:00
8b5ca3d110 clean up Firmware Setup section in Hand Wire guide 2020-03-05 16:00:10 -08:00
06708b9dc8 remove collapsible section for Compiling; redirect to Building Firmware doc 2020-03-05 16:00:10 -08:00
772d5264d6 replace QMK Toolbox image in Hand Wire guide
Showing a current version of QMK Toolbox
2020-03-05 16:00:10 -08:00
994de86121 restructure Hand Wire Guide 2020-03-05 16:00:10 -08:00
906bdce6ce split Hand Wire Preamble to a separate doc 2020-03-05 16:00:10 -08:00
3bd65d2173 CSS updates: ul and pre elements 2020-03-05 16:00:10 -08:00
d5f34c4810 Polish Configurator section 2020-03-05 16:00:10 -08:00
503b52652c Adjust the H2 and H2 margins 2020-03-05 16:00:10 -08:00
b5030907eb reduce the line-height of the sidebar 2020-03-05 16:00:10 -08:00
8b0fdc82dc rearrange the sidebar a bit 2020-03-05 16:00:10 -08:00
8d8d61b3c5 limit the TOC to H1 and H2 2020-03-05 16:00:10 -08:00
f86fd0cd14 remove line drawing chars 2020-03-05 16:00:10 -08:00
12e43230c6 make custom_keycode_names.md a faq entry instead 2020-03-05 16:00:10 -08:00
55c5b82638 reduce space on h3s 2020-03-05 16:00:10 -08:00
9035c3497e break feature_advanced_keycodes.md up into multiple files 2020-03-05 16:00:10 -08:00
5d35098bfc improve our docsify setup 2020-03-05 16:00:10 -08:00
8249a288d7 fix numbering 2020-03-05 16:00:10 -08:00
45e218ceec overhaul the newbs guide 2020-03-05 16:00:10 -08:00
86f6405574 More sidebar organization 2020-03-05 16:00:10 -08:00
99850aabca Add API documentation 2020-03-05 16:00:10 -08:00
3c98854044 update flashing.md
- minor typo on intro paragraph (the -> them)
- remove note about :check-size target (`make` task now does this automatically)
- heading level for Caterina commands section
- typo regarding Halfkay (come -> comes)
2020-03-05 16:00:10 -08:00
7b1b53054f update newbs_building_firmware.md
Update the text sample for when the compile task completes.
2020-03-05 16:00:10 -08:00
a701c15d87 Rework the newbs guide around the qmk cli 2020-03-05 16:00:10 -08:00
1b7fa46f8e Add dark mode support 2020-03-05 16:00:10 -08:00
58fb57bfa7 _summary.md: move Auto Shift page to Software Features category 2020-03-05 16:00:10 -08:00
6af58fc25e clean up links to keycode references in newbs_building_firmware_configurator.md 2020-03-05 16:00:10 -08:00
e01763b8e5 clean up callouts in newbs_building_firmware_configurator.md 2020-03-05 16:00:10 -08:00
cdb5c074d3 remove some unnecessary external links
Also clean up some trailing whitespace.
2020-03-05 16:00:10 -08:00
3f1e47dbcd rework the index page 2020-03-05 16:00:10 -08:00
d1c0710dec remove unused docs 2020-03-05 16:00:10 -08:00
5b14456082 more wip 2020-03-05 16:00:10 -08:00
d1c18086d2 wip 2020-03-05 16:00:10 -08:00
4ef10a424a [Keyboard] add miller/gm-862 keyboard (#8230)
* add miller/gm-862 keyboard

* Update keyboards/miller/gm862/gm862.c

* Update keyboards/miller/gm862/gm862.h

* Update keyboards/miller/gm862/gm862.h

* Update keyboards/miller/gm862/readme.md

* Update keyboards/miller/gm862/readme.md

* Update keyboards/miller/gm862/readme.md

* Update keyboards/miller/gm862/readme.md

* Update config.h

* Update keyboards/miller/gm862/config.h

* Update keyboards/miller/gm862/readme.md
2020-03-05 13:51:43 -08:00
23c31dd929 update lily58/rev1:yshrsmz (#8298)
* update lily58/rev1:yshrsmz

* use pre-shifted keycodes
2020-03-06 06:56:28 +11:00
921e18988f [Keyboard] CapsUnlocked CU80 (#8257)
* Initial commit for CU80

* Added iso and ansi to .json

* Update keyboards/cu80/config.h

Remove "Custom matrix"

* Update keyboards/cu80/config.h

* Update keyboards/cu80/config.h

* Update keyboards/cu80/config.h

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/keymaps/default/keymap.c

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/readme.md

* Update keyboards/cu80/keymaps/default/keymap.c

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/info.json

* Update keyboards/cu80/info.json

* Update keyboards/cu80/info.json

* Update keyboards/cu80/info.json

* Update keyboards/cu80/keymaps/default/keymap.c

* Update keyboards/cu80/rules.mk
2020-03-04 21:40:03 -08:00
7e30d189e9 Update config.h - Fixed number of RGB LEDs (#8316)
There are 18 LEDs, not 16
2020-03-05 12:39:50 +11:00
8fd8454308 [Keymap] Add @cjuniet's keymap/layout/userspace (#8258)
* Add Colemak layout

* Add status bar for mods & locks with a custom font

* Swap DEL and TAB

* Fix media keys and add QMK Configurator layout

* Add dead grave accent on <leader>e
2020-03-04 17:19:26 -08:00
8e229f0db6 [Keymap] Wilba/Singav3 nk65 keymap updates (#8267)
* via configurator can't do AG_TOGG with any key - meh

* same issue - via can't do AG_TOGG

* oops - missed AG_TOGG on the NK65

* add media and mousekeys

* Update keyboards/nk65/keymaps/madhatter/keymap.c
2020-03-04 17:14:36 -08:00
95ce19f846 Add RGB lighting through one of the free pins (#8294) 2020-03-04 16:59:06 -08:00
9550ab3342 [Keymap] Adding the 4sStylZ xd75 (#8285)
* Adding the 4sStylZ xd75

* Update keyboards/xd75/keymaps/4sstylz/keycodes.h

* Apply suggestions from code review
2020-03-04 16:42:09 -08:00
607e2f6c31 YD60MQ refactor and Configurator layout support (#8313)
* refactor yd60mq.h

- four-space indent
- use K<row><col> base32hex notation
- rename LAYOUT to LAYOUT_all (with alias for backwards compatibility)

* refactor yd60mq.c to use led_update_kb()

* align rules.mk to AVR template

* refactor default keymap

Also correct positions for KC_NUHS and KC_NUBS.

* update readme

* add Configurator layout support

* initialize the Caps Lock LED pin properly
2020-03-05 07:26:25 +11:00
2d1081c296 [Keyboard] Forget to ifdef Super16 led config (#8314) 2020-03-04 19:46:03 +00:00
0275098bdd [Keyboard] Switch to RGB Matrix for Super16 (#8305) 2020-03-04 18:19:39 +00:00
0c9171a619 [Keymap] Keymap Update (#8309)
* Keymap Update

Some key codes have been updated.
naked64:salicylic
7skb:default

* Keymap Update

Some key codes have been updated.
KC_GRAVE to KC_GRV
7skb:default
2020-03-04 16:16:36 +00:00
23eb9f4fe5 New Keyboard: SiddersKB Majbritt (Pronounced My Brit) (#8260)
* Initial commit of majbritt

* Add QMK and VIA support to majbritt

* Change vendor and product id

* Change name

* Change make path

* Move Majbritt into sidderskb directory

* Update keyboards/sidderskb/majbritt/majbritt.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>
Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/sidderskb/majbritt/keymaps/default/config.h
Co-Authored-By: Ryan <fauxpark@gmail.com>

* remove unused file
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-04 13:12:00 +01:00
31662af342 [Keyboard] VIA Support: Tada68 (#8289)
* tada68 via files

* change vid and pid based on wilba's recommendaton
2020-03-04 01:22:47 -08:00
8c3ff3f32c [Keyboard] LFK78 refactor (#7835)
* Change include guards to pragma once

* Clean up default keymaps

* Remove some magic numbers and use GPIO macros

* Clean up keyboard.[ch]

* Tidy up info.json and readme

* Align config.h with template

* Split up revision code into subfolders

* rev C-H has no audio, apparently

* Change revc_h to revc and document differences

* Turn off Audio on revb for now, for Travis' sake

* Split info.json into revision folders

* Clean up default keymaps some more
2020-03-03 14:10:39 -08:00
910d603c65 [Keymap] new userspace for ibnuda (#8221)
* to ease the maintenance for some boards ibnuda has.

* followed ridingqwerty's suggestion on 8821.

* folloing drashna's suggestion on qmk's 8221.

* following drashn's suggestion on qmk's 8211
2020-03-03 13:46:11 -08:00
ad96e995af [Keymap] Add crd's equinox keymap (#8251) 2020-03-03 12:45:18 -08:00
ed6586e25b [Keymap] Feature/alfrdmalr/keymap update (#8174)
* WIP do not merge

* first pass at custom preonic layout

* add auto shift and reset via leader key

* Update readme

* update copyright notice

* formatting changes

* fix: use MO instead of process_record_user

* added backslash and moved grave position

* remove extraneous 'j' characer in NUMPAD template

* update template formatting

* remove process_record_user

* swap "!" with "@"

* fix readme formatting

* update readme layout image

* restore settings layer

* add windows minimize sequence

* fix: switch to correct seq function for three-key sequence

* fix: missing semicolon

* refactor: move keymap to userspace and generic 5x12 layout

* add numlock to numpad layer

* add readme

* update readme formatting

* remove unused wrappers from layout keymap

* update readme title to reflect new location

* remove alfrdmalr directory from preonic/keymaps

* add ortho 4x12 support

* add 'trilayer' settings and update keymap

* update SYMBOLS layer to SYMBOL

* remove minimize sequence

* clean up user config

* add brightness controls

* update settings ascii

* moved some symbols around to make vim/linux smoother
2020-03-03 10:13:42 -08:00
acaecb4f94 Fix bootloader definition for namecard2x4 (#8301)
BOOTLOADER needs to be defined as caterina because namecard2x4 uses avrdude for flasher.
2020-03-03 15:00:34 +00:00
53ac4d214f Update Hungarian keymap and add sendstring LUT (#8220) 2020-03-03 11:55:42 +11:00
bff56aa46c Remove "ugly hack in usb_main.c" comments (#8296) 2020-03-02 23:56:46 +00:00
ce30cd2a01 Update encoder functions for Iris VIA keymap (#8295) 2020-03-02 23:55:57 +00:00
552f8d81b9 Reduce PROGMEM usage for sendstring LUT (#8109)
* Reduce PROGMEM usage for keycode map

Bit-pack the keycode bool array to gain back a small amount of flash space.
The trade-off is an increase in runtime instructions when running macros.

It does make the code a bit harder to read, as well as maintain.

For configs that use send_string() et al, it saves ~100 bytes.

* Switch to macro and common definition

Rewrite the array declarations so both the unpacked (original) and
packed LUT arrays can use the same value definitions. This is done by
defining a macro that "knows what to do".

This makes the code much easier to read and maintain.

* Fix macro typos and improve perf

Pack the bits in a more efficient order for extraction.
And also fix the copy/paste error in the macro...

* Switch fully to packed LUT

Some minor reformatting.
Compile tested all sendstring_xyz.h to make sure they were converted
properly. Also checked that an unconverted version would generate a
compile error.

* Apply whitespace suggestions from code review

Co-Authored-By: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-03 10:43:18 +11:00
abd36de5ad [Docs] Update ISP Flashing guide (#8149)
* [Docs] Update ISP Flashing guide

* Apply suggestions from code review

AKA why you shouldn't write docs at 2am

Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update workding for planck-qmk-dfu

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-03-01 22:29:26 -08:00
b72a1aa3fe Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243)
* Keyboard: revamp frosty-flake leds

This commit transitions bpiphany/frosty_flake to led_update_{kb,user}
and rewrites the AVR bit twiddling logic to use the standard QMK GPIO
API.

* Keyboard: rewrite frosty_flake's matrix reader to be a lite custom matrix

This commit replaces frosty_flake's custom matrix and debounce logic
with a "lite" custom matrix. In addition to being somewhat clearer, this
allows a consumer of the flake board to choose their own debouncing
algorithm. The one closest to the implementation originally in use is
sym_g, but this opens us up to supporting eager_pk and eager_pr.

The original matrix code was 18 columns for 8 rows, but using a single
row read and unpacking the bits into individual columns. To simplify,
I've changed the key layout to be 8C 18R instead of 18C 8R: this lets us
use a single read directly into the matrix _and_ drop down to a uint8_t
instead of a uint32_t for matrix_row_t.

Since we're no longer implementing our own debouncing and row unpacking,
we save ~400 bytes on the final firmware image.

Fully tested against a CM Storm QFR hosting the flake -- this commit
message was written using the new matrix code.

Firmware Sizes (assuming stock configuration as of 42d6270f2)

Matrix+Debounce     Size (bytes)
---------------     ------------
original            17740
new + sym_g         17284
new + eager_pr      18106
new + eager_pk      18204

I expect that there are some scanning speed benefits as well.

* Keyboard: update frosty_flake's UNUSED_PINS

* Keyboard: Remove meaningless weak redefinitions from frosty

These are not necessary (and all of them already live somewhere in
Quantum).
2020-03-02 05:17:09 +00:00
78069d4826 Add onekey keymap for testing reset to bootloader. (#8288) 2020-03-01 22:36:17 +00:00
c543ccf07c Get the direction right on the S75 encoder (#8287) 2020-03-01 21:30:01 +00:00
88356c85c4 Prune out pure software pwm && custom driver && remove wrapping BACKLIGHT_PIN (#8041) 2020-03-01 20:22:13 +00:00
3dc061ac78 Make a fix to savage65 and tmov2 for via (#8286) 2020-03-02 07:16:43 +11:00
95124bf933 format code according to conventions [skip ci] 2020-03-01 19:20:09 +00:00
e7fb873ee2 Short term fix for conflicting types for 'tfp_printf' (#8157) 2020-03-02 05:46:40 +11:00
629950e51b Fix recent clang-format breaking quantum.c (#8282) 2020-03-01 17:55:43 +00:00
1ec8a7205f format code according to conventions [skip ci] 2020-03-01 13:54:25 +00:00
ce604e1629 Remove duplicate BRTG case (#8277) 2020-03-01 13:22:21 +00:00
c9e3fa6f70 Clean up includes for glcdfont headers (#7745)
* Clean up includes for glcdfont headers

* Remove pragma once, most of these are not headers

* Missed these
2020-03-01 17:56:50 +11:00
f513a9193c Fix the Breaking Changes doc again
WHAT YEAR IS IT?!
2020-02-29 20:46:48 -08:00
21715210e2 [Docs] translated 'feature_tap_dance.md' to japanese. (#8137)
* complete translation.

* Update docs/ja/feature_tap_dance.md

Update the file based on the suggestions.

* Update docs/ja/feature_tap_dance.md

Update the file based on the suggestions.

* Apply suggestions from code review

Update the file based on the suggestions.

* Apply suggestions from code review

Update the file based on the suggestions (Part 2).

* Apply suggestions from code review

Update the file based on the suggestions (Part 3).

* Apply suggestions from code review

Update the file based on the suggestions (Part 3).

* Apply suggestions from code review

Update the file based on the suggestions (Part 4).

* Apply suggestions from code review

Update the file based on the suggestions (Part 5).
ご提案いただいた修正案は全て確認できました。
続いて、コメント行の調整、「打つ・叩く」の変更、その他の修正を行います。

* fixed typo.

* Update the file based on the suggestions (Part 6).

* Update the file based on the suggestions (Part 7).

* Fixed sentence.

* Update docs/ja/feature_tap_dance.md

Update the file based on the suggestions (Part 8).

* Update the file based on the suggestions (Part 9).

Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-Authored-By: shela <shelaf@users.noreply.github.com>
2020-02-29 20:22:15 -08:00
f74c769a19 PWM DMA based RGB Underglow for STM32 (#7928)
* Add pwm ws2812 driver

* Add docs for pwm ws2812 driver

* Update ws2812_pwm for ChibiOS 19

Co-Authored-By: Nick Brassel <nick@tzarc.org>

Co-authored-by: Nick Brassel <nick@tzarc.org>
2020-03-01 13:05:56 +11:00
bb47236490 Add VIA support to Prime_M. Clean up all files (#8247)
* Add VIA support for Prime_L

* Update keyboards/primekb/prime_l/v1/config.h

* Add prime_exl_plus keyboard

* Temporary removal of prime_exl_plus

* Add Prime_EXL Plus, including VIA support

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/rules.mk

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keymap.c

* correct spacing of keymaps and layout macro. move indicator logic from user space to keyboard space

* further corrections to keymaps and layout macro.

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update prime_exl_plus.c

* small edit to prime_exl_plus.c

* Add via support to Prime_M and clean things up

* Update rules.mk

* Update keyboards/primekb/prime_m/readme.md

* Update keyboards/primekb/prime_m/readme.md

* Update keyboards/primekb/prime_m/config.h
2020-02-29 17:42:50 -08:00
f5d1409c26 Track master branches for lib/chibios, lib/chibios-contrib, lib/ugfx. (#8273) 2020-03-01 11:51:38 +11:00
d0c3acbe3e Allow for ChibiOS 20.x (master), as well as enabling ChibiOS-Contrib HAL. (#8272) 2020-03-01 11:50:49 +11:00
c775104b9f Use nano specs (#8270) 2020-03-01 11:49:16 +11:00
8d9c800da0 Unconditionally enable ChibiOS syscalls (#8268)
* Enable syscalls all the time

* fix whitespace
2020-03-01 09:45:21 +11:00
cae91510dc Breaking Changes documentation fixes 2020-02-29 12:30:38 -08:00
26eef35f07 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
85041ff05b Update Breaking Changes checklist 2020-02-27 12:03:30 -08:00
7eab5ad60f Update Breaking Changes timeline
I've been working from one timeline while the docs said something different.
2020-02-27 11:17:23 -08:00
ae46e6ace9 Fix MCU rule for Wete (#8254)
Including the `xB` suffix prevents qmk_compiler (and thus QMK Configurator) from compiling firmware for the Wete.

Rolling this change back until we work out a long-term solution for the suffixes.
2020-02-27 20:40:31 +11:00
444fd3b1cc Add support for delays in send_string. (#8244) 2020-02-27 20:38:19 +11:00
e18be69104 Add community layout support to KBD67 MKIIRGB v2 (#8249) 2020-02-27 13:19:34 +11:00
4667bc554e Fixed OS detection such that OSX doesn't take over the world (#8248) 2020-02-26 10:12:13 +01:00
d52cd8886c [Keyboard] Add Prime_EXL Plus to handwired (#8238)
* Add VIA support for Prime_L

* Update keyboards/primekb/prime_l/v1/config.h

* Add prime_exl_plus keyboard

* Temporary removal of prime_exl_plus

* Add Prime_EXL Plus, including VIA support

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/rules.mk

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keymap.c

* correct spacing of keymaps and layout macro. move indicator logic from user space to keyboard space

* further corrections to keymaps and layout macro.

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update prime_exl_plus.c

* small edit to prime_exl_plus.c
2020-02-25 13:21:59 -08:00
61b71320f7 format code according to conventions [skip ci] 2020-02-25 18:57:18 +00:00
b949343b78 New feature: PERMISSIVE_HOLD_PER_KEY (#7994)
* Implement 'PERMISSIVE_HOLD_PER_KEY'

* Document 'PERMISSIVE_HOLD_PER_KEY'

Co-authored-by: GeorgeKoenig <35542036+GeorgeKoenig@users.noreply.github.com>
2020-02-25 13:25:52 -05:00
f6111d49bb Split - Avoid race condition during matrix_init_quantum (#8235)
* Avoid race condition during matrix_init_quantum

* spelling is hard
2020-02-25 14:10:04 +00:00
891d28a379 Acheron VIA support (#8204)
* Update acheron USB IDs

* Add shark via keymap

* Update austin via keymap

* Fix eeprom build error

* 3 layers fit
2020-02-25 11:28:07 +00:00
bb8d4b4d23 send_unicode_string(): Add support for code points > 0xFFFF (#8236) 2020-02-25 12:54:51 +11:00
93c5307fd6 [Keyboard] Add Wete (#8229)
* [Keyboard] Add Wete

* Fix width and height in Wete info.json

* Use default board files, core backlight, and disable RTC

* Disable I2C, SPI. Minor corrections

* Keymap typo update

* Add LAYOUT_all to info.json

* Remove extra spaces in README, delete matrix_*_kb functions

* Fix layout errors in wete.h, and some minor corrections

* Actually fix LAYOUT_all in info.json
2020-02-24 17:36:30 -08:00
088b64ab3d Improvements to extrakey HID descriptors (#8156) 2020-02-25 12:18:11 +11:00
ef8878fba5 Hineybush h87a lock indicators (#8237)
* move lighting code from VIA into the keyboard's .c file so that every keymap can access it

* after some serious conversations with default and wkl, they agreed to let me modify their keymaps. They weren't too happy
2020-02-24 12:04:40 -08:00
f673c965ba Add VIA support for Prime_L (#8233)
* Add VIA support for Prime_L

* Update keyboards/primekb/prime_l/v1/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Add prime_exl_plus keyboard

* Temporary removal of prime_exl_plus

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-24 14:19:27 +00:00
a2c0c1479c Hub16 - Bug removal + clean up code (#8227)
* bugfixes + cleaned up code

* typo

* Update keyboards/hub16/keymaps/no_mod/keymap.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-02-24 14:14:09 +00:00
20e1c8c571 [Keyboard] ai03 Equinox (#8224)
Re-attempt to add Equinox with newer Via changes

* Add nox

* Tweak based on previous pullrequests

* Add necessary descriptions

* Modernize Via config

* Modernize old files with massive blocks of unneeded options

* Fix missing bootmagic

* Update keyboards/ai03/equinox/equinox.h

* Update keyboards/ai03/equinox/keymaps/default/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/readme.md

* Update keyboards/ai03/equinox/readme.md

* Update keyboards/ai03/equinox/readme.md

* Update keyboards/ai03/equinox/readme.md

* Update keyboards/ai03/equinox/info.json

* Update keyboards/ai03/equinox/keymaps/default/keymap.c

* Update keyboards/ai03/equinox/keymaps/default/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Fix indents

* Update keyboards/ai03/equinox/keymaps/proto_via/rules.mk

* Update keyboards/ai03/equinox/rules.mk
2020-02-23 21:18:14 -08:00
40f7981395 [Keyboard] Add zfrontier/big_switch (#8205)
* add zfrontier/big_switch

* Update keyboards/zfrontier/big_switch/config.h

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/zfrontier/big_switch/config.h

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* add overriding keymap makefile

* Update keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/zfrontier/big_switch/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* remove redundant defines

* taplong no longer needed

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-24 14:04:26 +11:00
156c9c4ec0 Gingham Update (#8225) 2020-02-24 11:25:18 +11:00
371ff9dd6f A proper send_string() for the Unicode feature (#8155) 2020-02-24 10:27:25 +11:00
716c29881c Rollback PR #7967 in preference of fixing I2C start/stop properly, in a followup PR. (#8173) 2020-02-24 10:08:00 +11:00
f76f9c7d2a Add mouse support to SEND_STRING (#8223)
* Add mouse support to SEND_STRING

* add short forms
2020-02-23 14:03:01 -08:00
530c997638 Add link to "Useful functions" in macro docs (#7446)
* Add link to "Useful functions" in macro docs

Help people find additional features they can activate within a macro

* Update docs/feature_macros.md

Co-Authored-By: Drashna Jaelre <drashna@live.com>

Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-23 12:50:11 -08:00
b353028ea5 New functionality for cformat (#7893)
Fixing complexity

remove lambda

PR review fixes #1

Removing unneccesary string substitution

Handle -a and specified files

Complexity rewrite, use pathlib
2020-02-22 20:57:19 -08:00
798 changed files with 46869 additions and 15113 deletions

3
.gitignore vendored
View File

@ -70,3 +70,6 @@ id_rsa_*
# python things
__pycache__
# prerequisites for updating ChibiOS
/util/fmpp*

4
.gitmodules vendored
View File

@ -1,13 +1,15 @@
[submodule "lib/chibios"]
path = lib/chibios
url = https://github.com/qmk/ChibiOS
branch = master
[submodule "lib/chibios-contrib"]
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = k-type-fix
branch = master
[submodule "lib/ugfx"]
path = lib/ugfx
url = https://github.com/qmk/uGFX
branch = master
[submodule "lib/googletest"]
path = lib/googletest
url = https://github.com/google/googletest

View File

@ -5,7 +5,8 @@
// Configure glob patterns for excluding files and folders.
"files.exclude": {
"**/.build": true,
"**/*.hex": true
"**/*.hex": true,
"**/*.bin": true
},
"files.associations": {
"*.h": "c",

View File

@ -623,13 +623,19 @@ endif
# Generate the version.h file
ifndef SKIP_GIT
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
CHIBIOS_VERSION := $(shell cd lib/chibios && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
CHIBIOS_CONTRIB_VERSION := $(shell cd lib/chibios-contrib && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
else
GIT_VERSION := NA
CHIBIOS_VERSION := NA
CHIBIOS_CONTRIB_VERSION := NA
endif
ifndef SKIP_VERSION
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
else
BUILD_DATE := NA
endif

View File

@ -159,7 +159,6 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE := yes
LED_BREATHING_TABLE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
@ -298,6 +297,7 @@ VALID_BACKLIGHT_TYPES := pwm software custom
BACKLIGHT_ENABLE ?= no
BACKLIGHT_DRIVER ?= pwm
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
$(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
endif
@ -350,11 +350,6 @@ ifeq ($(strip $(CIE1931_CURVE)), yes)
LED_TABLES := yes
endif
ifeq ($(strip $(LED_BREATHING_TABLE)), yes)
OPT_DEFS += -DUSE_LED_BREATHING_TABLE
LED_TABLES := yes
endif
ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif

View File

@ -0,0 +1,75 @@
# QMK Breaking Change - 2020 Feb 29 Changelog
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
## Update ChibiOS/ChibiOS-Contrib/uGFX submodules
* General Notes
* A `make git-submodule` may be required after pulling the latest QMK firmware code to update affected submodules to the upgraded revisions
* Enabling link-time-optimization (`LINK_TIME_OPTIMIZATION_ENABLE = yes`) should work on a lot more boards
* Upgrade to ChibiOS ver19.1.3
* This will allow QMK to update to upstream ChibiOS a lot easier -- the old version was ~2 years out of date. Automated update scripts have been made available to simplify future upgrades.
* Includes improved MCU support and bugfixes
* ChibiOS revision is now included in Command output
* Timers should now be more accurate
* Upgrade to newer ChibiOS-Contrib
* Also includes improved MCU support and bugfixes
* ChibiOS-Contrib revision is now included in Command output
* Upgrade to newer uGFX
* Required in order to support updated ChibiOS
## Fix ChibiOS timer overflow for 16-bit SysTick devices
* On 16-bit SysTick devices, the timer subsystem in QMK was incorrectly dealing with overflow.
* When running at a 100000 SysTick frequency (possible on 16-bit devices, but uncommon), this overflow would occur after 0.65 seconds.
* Timers are now correctly handling this overflow case and timing should now be correct on ChibiOS/ARM.
## Update LUFA submodule
* Updates the LUFA submodule to include updates from upstream (abcminiuser/lufa)
* Includes some cleanup for QMK DFU generation
## Encoder flip
* Flips the encoder direction so that `clockwise == true` is for actually turning the knob clockwise
* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected dirction is simple for users.
* Cleans up documentation page for encoders
## Adding support for `BACKLIGHT_ON_STATE` for hardware PWM backlight
* Previously, the define only affected software PWM, and hardware PWM always assumed an N-channel MOSFET.
* The hardware PWM backlight setup has been updated to respect this option.
* The default "on" state has been changed to `1` - **this impacts all keyboards using software PWM backlight that do not define it explicitly**. If your keyboard's backlight is acting strange, it may have a P-channel MOSFET, and will need to have `#define BACKLIGHT_ON_STATE 0` added to the keyboard-level `config.h`. Please see the PR for more detailed information.
## Migrating `ACTION_LAYER_TAP_KEY()` entries in `fn_actions` to `LT()` keycodes
* `fn_actions` is deprecated, and its functionality has been superseded by direct keycodes and `process_record_user()`
* The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
* All keymaps affected are recommended to switch away from `fn_actions` in favour of the [custom keycode](https://docs.qmk.fm/#/custom_quantum_functions) and [macro](https://docs.qmk.fm/#/feature_macros) features
## Moving backlight keycode handling to `process_keycode/`
* This refactors the backlight keycode logic to be clearer and more modular.
* All backlight-related keycodes are now actioned in a single file.
* The `ACTION_BACKLIGHT_*` macros have also been deleted. If you are still using these in a `fn_actions[]` block, please switch to using the backlight keycodes or functions directly.
## Refactor Planck keymaps to use Layout Macros
* Refactor Planck keymaps to use layout macros instead of raw matrix assignments
* Makes keymaps revision-agnostic
* Should reduce noise and errors in Travis CI logs
## GON NerD codebase refactor
* Splits the codebase for GON NerD 60 and NerdD TKL PCBs into two separate directories.
* If your keymap is for a NerD 60 PCB, your `make` command is now `make gon/nerd60:<keymap>`.
* If your keymap is for a NerD TKL PCB, your `make` command is now `make gon/nerdtkl:<keymap>`.

View File

@ -9,24 +9,35 @@
## What is QMK Firmware?
QMK (*Quantum Mechanical Keyboard*) is an open source community that maintains QMK Firmware, QMK Toolbox, qmk.fm, and these docs. QMK Firmware is a keyboard firmware based on the [tmk\_keyboard](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). It has also been ported to ARM chips using ChibiOS. You can use it to power your own hand-wired or custom keyboard PCB.
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.
## How to Get It
## Get Started
If you plan on contributing a keymap, keyboard, or features to QMK, the easiest thing to do is [fork the repo through Github](https://github.com/qmk/qmk_firmware#fork-destination-box), and clone your repo locally to make your changes, push them, then open a [Pull Request](https://github.com/qmk/qmk_firmware/pulls) from your fork.
Totally new to QMK? There are two ways to get started:
Otherwise, you can clone it directly with `git clone https://github.com/qmk/qmk_firmware`. Do not download the zip or tar files; a git repository is required to download the submodules in order to compile.
* 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).
* Advanced: [Use The Source](newbs.md)
* More powerful, but harder to use
## How to Compile
## Make It Yours
Before you are able to compile, you'll need to [install an environment](getting_started_build_tools.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
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).
make planck/rev4:default
## Need help?
This would build the `rev4` revision of the `planck` with the `default` keymap. Not all keyboards have revisions (also called subprojects or folders), in which case, it can be omitted:
Check out the [support page](support.md) to see how you can get help using QMK.
make preonic:default
## Give Back
## How to Customize
There are a lot of ways you can contribute to the QMK Community. The easiest way to get started is to use it and spread the word to your friends.
QMK has lots of [features](features.md) to explore, and a good deal of [reference documentation](http://docs.qmk.fm) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
* Help people out on our forums and chat rooms:
* [/r/olkb](https://www.reddit.com/r/olkb/)
* [Discord Server](https://discord.gg/Uq7gcHh)
* Contribute to our documentation by clicking "Edit This Page" at the bottom
* [Translate our documentation into your language](translating.md)
* [Report a bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
* [Open a Pull Request](contributing.md)

View File

@ -1,130 +1,162 @@
* [Complete Newbs Guide](newbs.md)
* [Getting Started](newbs_getting_started.md)
* Tutorial
* [Introduction](newbs.md)
* [Setup](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Best Git Practices](newbs_git_best_practices.md)
* [Using Your Fork's Master](newbs_git_using_your_master_branch.md)
* [Resolving Merge Conflicts](newbs_git_resolving_merge_conflicts.md)
* [Resynchronizing a Branch](newbs_git_resynchronize_a_branch.md)
* [Learning Resources](newbs_learn_more_resources.md)
* [Getting Help/Support](support.md)
* [Other Resources](newbs_learn_more_resources.md)
* [QMK Basics](README.md)
* [QMK Introduction](getting_started_introduction.md)
* [QMK CLI](cli.md)
* [QMK CLI Config](cli_configuration.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [Getting Help](getting_started_getting_help.md)
* [Breaking Changes](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [2019 Aug 30](ChangeLog/20190830.md)
* [FAQ](faq.md)
* FAQs
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)
* [Driver Installation with Zadig](driver_installation_zadig.md)
* Detailed Guides
* [Install Build Tools](getting_started_build_tools.md)
* [Vagrant Guide](getting_started_vagrant.md)
* [Build/Compile Instructions](getting_started_make_guide.md)
* [Flashing Firmware](flashing.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Keymap Overview](keymap.md)
* [Hardware](hardware.md)
* [Compatible Microcontrollers](compatible_microcontrollers.md)
* [AVR Processors](hardware_avr.md)
* [Drivers](hardware_drivers.md)
* Reference
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* [Config Options](config_options.md)
* [Keycodes](keycodes.md)
* [Coding Conventions - C](coding_conventions_c.md)
* [Coding Conventions - Python](coding_conventions_python.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Keymap FAQ](faq_keymap.md)
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [info.json Format](reference_info_json.md)
* [Python CLI Development](cli_development.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* [Quantum Keycodes](quantum_keycodes.md)
* [Advanced Keycodes](feature_advanced_keycodes.md)
* [Audio](feature_audio.md)
* [Auto Shift](feature_auto_shift.md)
* [Backlight](feature_backlight.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Combos](feature_combo.md)
* [Command](feature_command.md)
* [Debounce API](feature_debounce_type.md)
* [DIP Switch](feature_dip_switch.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Encoders](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
* [Haptic Feedback](feature_haptic_feedback.md)
* [HD44780 LCD Controller](feature_hd44780.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
* [Leader Key](feature_leader_key.md)
* [LED Matrix](feature_led_matrix.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [OLED Driver](feature_oled_driver.md)
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
* [Pointing Device](feature_pointing_device.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [RGB Lighting](feature_rgblight.md)
* [RGB Matrix](feature_rgb_matrix.md)
* [Space Cadet](feature_space_cadet.md)
* [Split Keyboard](feature_split_keyboard.md)
* [Stenography](feature_stenography.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Terminal](feature_terminal.md)
* [Thermal Printer](feature_thermal_printer.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* [Velocikey](feature_velocikey.md)
* Configurator
* [Overview](newbs_building_firmware_configurator.md)
* [Step by Step](configurator_step_by_step.md)
* [Troubleshooting](configurator_troubleshooting.md)
* [Problems and Bugs](configurator_problems.md)
* QMK API
* [Overview](api_overview.md)
* [API Documentation](api_docs.md)
* [Keyboard Support](reference_configurator_support.md)
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [ADC Driver](adc_driver.md)
* [I2C Driver](i2c_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Custom Matrix](custom_matrix.md)
* [Proton C Conversion](proton_c_conversion.md)
* CLI
* [Overview](cli.md)
* [Configuration](cli_configuration.md)
* [Commands](cli_commands.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Using QMK
* Guides
* [Customizing Functionality](custom_quantum_functions.md)
* [Driver Installation with Zadig](driver_installation_zadig.md)
* [Keymap Overview](keymap.md)
* [Vagrant Guide](getting_started_vagrant.md)
* Flashing
* [Flashing](flashing.md)
* [Flashing ATmega32A (ps2avrgb)](flashing_bootloadhid.md)
* IDEs
* [Using Eclipse with QMK](other_eclipse.md)
* [Using VSCode with QMK](other_vscode.md)
* Git Best Practices
* [Introduction](newbs_git_best_practices.md)
* [Your Fork](newbs_git_using_your_master_branch.md)
* [Merge Conflicts](newbs_git_resolving_merge_conflicts.md)
* [Fixing Your Branch](newbs_git_resynchronize_a_branch.md)
* Keyboard Building
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* Other Topics
* [Using Eclipse with QMK](other_eclipse.md)
* [Using VSCode with QMK](other_vscode.md)
* [Support](support.md)
* [Translating the QMK Docs](translating.md)
* Simple Keycodes
* [Full List](keycodes.md)
* [Basic Keycodes](keycodes_basic.md)
* [Layer Switching](feature_advanced_keycodes.md)
* [Quantum Keycodes](quantum_keycodes.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Midi Device](internals_midi_device.md)
* [Midi Device Setup Process](internals_midi_device_setup_process.md)
* [Midi Util](internals_midi_util.md)
* [Send Functions](internals_send_functions.md)
* [Sysex Tools](internals_sysex_tools.md)
* Advanced Keycodes
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Grave Escape](feature_grave_esc.md)
* [Leader Key](feature_leader_key.md)
* [Mod-Tap](mod_tap.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [Space Cadet Shift](feature_space_cadet.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* Software Features
* [Auto Shift](feature_auto_shift.md)
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
* [Key Lock](feature_key_lock.md)
* [One Shot Keys](one_shot_keys.md)
* [Pointing Device](feature_pointing_device.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Tap-Hold Configuration](tap_hold.md)
* [Terminal](feature_terminal.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* Hardware Features
* Displays
* [HD44780 LCD Controller](feature_hd44780.md)
* [OLED Driver](feature_oled_driver.md)
* Lighting
* [Backlight](feature_backlight.md)
* [LED Matrix](feature_led_matrix.md)
* [RGB Lighting](feature_rgblight.md)
* [RGB Matrix](feature_rgb_matrix.md)
* [Audio](feature_audio.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Custom Matrix](custom_matrix.md)
* [DIP Switch](feature_dip_switch.md)
* [Encoders](feature_encoders.md)
* [Haptic Feedback](feature_haptic_feedback.md)
* [Proton C Conversion](proton_c_conversion.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [Split Keyboard](feature_split_keyboard.md)
* [Stenography](feature_stenography.md)
* [Thermal Printer](feature_thermal_printer.md)
* [Velocikey](feature_velocikey.md)
* Developing QMK
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* History
* [2020 Feb 29](ChangeLog/20200229.md)
* [2019 Aug 30](ChangeLog/20190830.md)
* C Development
* [ARM Debugging Guide](arm_debugging.md)
* [AVR Processors](hardware_avr.md)
* [Coding Conventions](coding_conventions_c.md)
* [Compatible Microcontrollers](compatible_microcontrollers.md)
* [Drivers](hardware_drivers.md)
* [ADC Driver](adc_driver.md)
* [I2C Driver](i2c_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* Python Development
* [Coding Conventions](coding_conventions_python.md)
* [QMK CLI Development](cli_development.md)
* [QMK CLI Config](cli_dev_configuration.md)
* Configurator Development
* QMK API
* [Development Environment](api_development_environment.md)
* [Architecture Overview](api_development_overview.md)
* QMK Reference
* [Contributing to QMK](contributing.md)
* [Translating the QMK Docs](translating.md)
* [Config Options](config_options.md)
* [Make Documentation](getting_started_make_guide.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Community Layouts](feature_layouts.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [info.json Format](reference_info_json.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [How a Matrix Works](how_a_matrix_works.md)
* [Understanding QMK](understanding_qmk.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Midi Device](internals_midi_device.md)
* [Midi Device Setup Process](internals_midi_device_setup_process.md)
* [Midi Util](internals_midi_util.md)
* [Send Functions](internals_send_functions.md)
* [Sysex Tools](internals_sysex_tools.md)

View File

@ -0,0 +1,3 @@
# Development Environment Setup
To setup a development stack head over to the [qmk_web_stack](https://github.com/qmk/qmk_web_stack).

View File

@ -0,0 +1,44 @@
# QMK Compiler Development Guide
This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.
# Overview
The QMK Compile API consists of a few movings parts:
![Architecture Diagram](https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg)
API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into [Redis Queue](https://python-rq.org) and checks both RQ and S3 for the results of those jobs.
Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.
# Workers
QMK Compiler Workers are responsible for doing the actual building. When a worker pulls a job from RQ it does several things to complete that job:
* Make a fresh qmk_firmware checkout
* Use the supplied layers and keyboard metadata to build a `keymap.c`
* Build the firmware
* Zip a copy of the source
* Upload the firmware, source zip, and a metadata file to S3.
* Report the status of the job to RQ
# API Service
The API service is a relatively simple Flask application. There are a few main views you should understand.
## @app.route('/v1/compile', methods=['POST'])
This is the main entrypoint for the API. A client's interaction starts here. The client POST's a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.
## @app.route('/v1/compile/&lt;string:job_id&gt;', methods=['GET'])
This is the most frequently called endpoint. It pulls the job details from redis, if they're still available, or the cached job details on S3 if they're not.
## @app.route('/v1/compile/&lt;string:job_id&gt;/download', methods=['GET'])
This method allows users to download the compiled firmware file.
## @app.route('/v1/compile/&lt;string:job_id&gt;/source', methods=['GET'])
This method allows users to download the source for their firmware.

68
docs/api_docs.md Normal file
View File

@ -0,0 +1,68 @@
# QMK API
This page describes using the QMK API. If you are an application developer you can use this API to compile firmware for any [QMK](https://qmk.fm) Keyboard.
## Overview
This service is an asynchronous API for compiling custom keymaps. You POST some JSON to the API, periodically check the status, and when your firmware has finished compiling you can download the resulting firmware and (if desired) source code for that firmware.
#### Example JSON Payload:
```json
{
"keyboard": "clueboard/66/rev2",
"keymap": "my_awesome_keymap",
"layout": "LAYOUT_all",
"layers": [
["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
]
}
```
As you can see the payload describes all aspects of a keyboard necessary to create and generate a firmware. Each layer is a single list of QMK keycodes the same length as the keyboard's `LAYOUT` macro. If a keyboard supports mulitple `LAYOUT` macros you can specify which macro to use.
## Submitting a Compile Job
To compile your keymap into a firmware simply POST your JSON to the `/v1/compile` endpoint. In the following example we've placed the JSON payload into a file named `json_data`.
```
$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" http://api.qmk.fm/v1/compile
{
"enqueued": true,
"job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
}
```
## Checking The Status
After submitting your keymap you can check the status using a simple HTTP GET call:
```
$ curl http://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
{
"created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"id": "f5f9b992-73b4-479b-8236-df1deb37c163",
"status": "running",
"result": null
}
```
This shows us that the job has made it through the queue and is currently running. There are 5 possible statuses:
* **failed**: Something about the compiling service has broken.
* **finished**: The compilation is complete and you should check `result` to see the results.
* **queued**: The keymap is waiting for a compilation server to become available.
* **running**: The compilation is in progress and should be complete soon.
* **unknown**: A serious error has occurred and you should [file a bug](https://github.com/qmk/qmk_compiler/issues).
## Examining Finished Results
Once your compile job has finished you'll check the `result` key. The value of this key is a hash containing several key bits of information:
* `firmware_binary_url`: A list of URLs for the the flashable firmware
* `firmware_keymap_url`: A list of URLs for the the `keymap.c`
* `firmware_source_url`: A list of URLs for the full firmware source code
* `output`: The stdout and stderr for this compile job. Errors will be found here.

15
docs/api_overview.md Normal file
View File

@ -0,0 +1,15 @@
# QMK API
The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by [QMK](http://qmk.fm/). The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.
## App Developers
If you are an app developer interested in using this API in your application you should head over to [Using The API](api_docs.md).
## Keyboard Maintainers
If you would like to enhance your keyboard's support in the QMK Compiler API head over to the [Keyboard Support](reference_configurator_support.md) section.
## Backend Developers
If you are interested in working on the API itself you should start by setting up a [Development Environment](api_development_environment.md), then check out [Hacking On The API](api_development_overview.md).

View File

@ -1,9 +0,0 @@
# Becoming a QMK Collaborator
A QMK collaborator is a keyboard maker or designer that is interested in helping QMK grow and fully support their keyboard(s), and encouraging their users and customers to submit features, ideas, and keymaps. We're always looking to add more keyboards and collaborators, but we ask that they fulfill these requirements:
* **Have a PCB available for sale.** Unfortunately there's just too much variation and complications with handwired keyboards.
* **Maintain your keyboard in QMK.** This may just require an initial setup to get your keyboard working, but it could also include accommodating changes made to QMK's core that might break or render any custom code redundant.
* **Approve and merge keymap pull requests for your keyboard.** We like to encourage users to contribute their keymaps for others to see and work from when creating their own.
If you feel you meet these requirements, shoot us an email at hello@qmk.fm with an introduction and some links to your keyboard!

View File

@ -6,20 +6,21 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
* [2020 Feb 29](ChangeLog/20200229.md)
* [2019 Aug 30](ChangeLog/20190830.md)
## When is the next Breaking Change?
The next Breaking Change is scheduled for February 29, 2020.
The next Breaking Change is scheduled for May 30, 2020.
### Important Dates
* [x] 2019 Sep 21 - `future` is created. It will be rebased weekly.
* [x] 2020 Feb 1 - `future` closed to new PR's.
* [x] 2020 Feb 1 - Call for testers.
* [ ] 2020 Feb 26 - `master` is locked, no PR's merged.
* [ ] 2020 Feb 28 - Merge `future` to `master`.
* [ ] 2020 Feb 29 - `master` is unlocked. PR's can be merged again.
* [x] 2020 Feb 29 - `future` is created. It will be rebased weekly.
* [ ] 2020 May 2 - `future` closed to new PR's.
* [ ] 2020 May 2 - Call for testers.
* [ ] 2020 May 28 - `master` is locked, no PR's merged.
* [ ] 2020 May 30 - Merge `future` to `master`.
* [ ] 2020 May 30 - `master` is unlocked. PR's can be merged again.
## What changes will be included?

View File

@ -71,14 +71,36 @@ There are some limitations to the local CLI compared to the global CLI:
## `qmk cformat`
This command formats C code using clang-format. Run it with no arguments to format all core code, or pass filenames on the command line to run it on specific files.
This command formats C code using clang-format.
**Usage**:
Run it with no arguments to format all core code that has been changed. Default checks `origin/master` with `git diff`, branch can be changed using `-b <branch_name>`
Run it with `-a` to format all core code, or pass filenames on the command line to run it on specific files.
**Usage for specified files**:
```
qmk cformat [file1] [file2] [...] [fileN]
```
**Usage for all core files**:
```
qmk cformat -a
```
**Usage for only changed files against origin/master**:
```
qmk cformat
```
**Usage for only changed files against branch_name**:
```
qmk cformat -b branch_name
```
## `qmk compile`
This command allows you to compile firmware from any directory. You can compile JSON exports from <https://config.qmk.fm>, compile keymaps in the repo, or compile the keyboard in the current working directory.
@ -145,8 +167,7 @@ $ qmk compile -kb dz60
## `qmk flash`
This command is similar to `qmk compile`, but can also target a bootloader. The bootloader is optional, and is set to `:flash` by default.
To specify a different bootloader, use `-bl <bootloader>`. Visit <https://docs.qmk.fm/#/flashing>
for more details of the available bootloaders.
To specify a different bootloader, use `-bl <bootloader>`. Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
**Usage for Configurator Exports**:

View File

@ -4,7 +4,7 @@ This document explains how `qmk config` works.
# Introduction
Configuration for QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.
Configuration for the QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.
## Simple Example

View File

@ -136,20 +136,22 @@ If you define these options you will enable the associated feature, which may in
* enables handling for per key `TAPPING_TERM` settings
* `#define RETRO_TAPPING`
* tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
* See [Retro Tapping](feature_advanced_keycodes.md#retro-tapping) for details
* See [Retro Tapping](tap_hold.md#retro-tapping) for details
* `#define TAPPING_TOGGLE 2`
* how many taps before triggering the toggle
* `#define PERMISSIVE_HOLD`
* makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
* See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details
* See [Permissive Hold](tap_hold.md#permissive-hold) for details
* `#define PERMISSIVE_HOLD_PER_KEY`
* enabled handling for per key `PERMISSIVE_HOLD` settings
* `#define IGNORE_MOD_TAP_INTERRUPT`
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
* See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details
* See [Ignore Mod Tap Interrupt](tap_hold.md#ignore-mod-tap-interrupt) for details
* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
* enables handling for per key `IGNORE_MOD_TAP_INTERRUPT` settings
* `#define TAPPING_FORCE_HOLD`
* makes it possible to use a dual role key as modifier shortly after having been tapped
* See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold)
* See [Tapping Force Hold](tap_hold.md#tapping-force-hold)
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
* `#define TAPPING_FORCE_HOLD_PER_KEY`
* enables handling for per key `TAPPING_FORCE_HOLD` settings
@ -333,7 +335,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `bootloadHID`
* `USBasp`
## Feature Options
## Feature Options :id=feature-options
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.

View File

@ -0,0 +1,58 @@
# QMK Configurator: Step by Step
This page describes the steps for building your firmware in QMK Configurator.
## Step 1: Select Your Keyboard
Click the drop down box and select the keyboard you want to create a keymap for.
?> If your keyboard has several versions, make sure you select the correct one.
I'll say that again because it's important:
!> **MAKE SURE YOU SELECT THE RIGHT VERSION!**
If your keyboard has been advertised to be powered by QMK but is not in the list, chances are a developer hasn't gotten to it yet or we haven't had a chance to merge it in yet. File an issue at [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) requesting to support that particular keyboard, if there is no active [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) for it. There are also QMK powered keyboards that are in their manufacturer's own github accounts. Double check for that as well. <!-- FIXME(skullydazed): This feels too wordy and I'm not sure we want to encourage these kinds of issues. Also, should we prompt them to bug the manufacutrer? -->
## Step 2: Select Your Keyboard Layout
Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.
!> Sometimes there isn't a layout that supports your exact build. In that case select `LAYOUT_all`.
## Step 3: Name Your Keymap
Call this keymap what you want.
?> If you are running into issues when compiling, it may be worth changing this name, as it may already exist in the QMK Firmware repo.
## Step 4: Define Your Keymap
Keycode Entry is accomplished in one of 3 ways:
1. Drag and drop
2. Clicking on an empty spot on the layout, then clicking the keycode you desire
3. Clicking on an empty spot on the layout, then pressing the physical key on your keyboard
?> Hover your mouse over a key and a short blurb will tell you what that keycode does. For a more verbose description please see:
* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)
!> If your selected layout doesn't match your physical build leave the unused keys blank. If you're not sure which key is in use, for example you have a one backspace key but `LAYOUT_all` has 2 keys, put the same keycode in both locations.
## Step 5: Save Your Keymap for Future Changes
When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Import Keymap` button.
!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.
## Step 6: Compile Your Firmware File
Press the green `Compile` button.
When the compilation is done, you will be able to press the green `Download Firmware` button.
## Next steps: Flashing Your Keyboard
Please refer to [Flashing Firmware](newbs_flashing.md).

View File

@ -0,0 +1,26 @@
# Configurator Troubleshooting
## My .json file is not working
If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues).
If not... how did you miss the big bold message at the top saying not to use other .json files?
## There are extra spaces in my layout? What do I do?
If you're referring to having three spots for space bar, the best course of action is to just fill them all with Space. The same can be done for Backspace and Shift keys.
## What is the keycode for...
Please see:
* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)
## It won't compile
Please double check the other layers of your keymap to make sure there are no random keys present.
## Problems and Bugs
We are always accepting customer requests and bug reports. Please file them at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues).

View File

@ -101,7 +101,7 @@ enum my_keycodes {
};
```
### Previewing the Documentation
### Previewing the Documentation :id=previewing-the-documentation
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:

View File

@ -4,7 +4,7 @@ For a lot of people a custom keyboard is about more than sending button presses
This page does not assume any special knowledge about QMK, but reading [Understanding QMK](understanding_qmk.md) will help you understand what is going on at a more fundamental level.
## A Word on Core vs Keyboards vs Keymap
## A Word on Core vs Keyboards vs Keymap :id=a-word-on-core-vs-keyboards-vs-keymap
We have structured QMK as a hierarchy:
@ -34,7 +34,7 @@ enum my_keycodes {
};
```
## Programming the Behavior of Any Keycode
## Programming the Behavior of Any Keycode :id=programming-the-behavior-of-any-keycode
When you want to override the behavior of an existing key, or define the behavior for a new key, you should use the `process_record_kb()` and `process_record_user()` functions. These are called by QMK during key processing before the actual key event is handled. If these functions return `true` QMK will process the keycodes as usual. That can be handy for extending the functionality of a key rather than replacing it. If these functions return `false` QMK will skip the normal key handling, and it will be up to you to send any key up or down events that are required.
@ -313,7 +313,7 @@ void suspend_wakeup_init_user(void) {
* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
# Layer Change Code
# Layer Change Code :id=layer-change-code
This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.

View File

@ -77,7 +77,7 @@
* [Macros](de/feature_macros.md)
* [Mouse Keys](de/feature_mouse_keys.md)
* [OLED Driver](de/feature_oled_driver.md)
* [One Shot Keys](de/feature_advanced_keycodes.md#one-shot-keys)
* [One Shot Keys](de/one_shot_keys.md)
* [Pointing Device](de/feature_pointing_device.md)
* [PS/2 Mouse](de/feature_ps2_mouse.md)
* [RGB Lighting](de/feature_rgblight.md)
@ -108,7 +108,7 @@
* Andere Themen
* [Eclipse mit QMK](de/other_eclipse.md)
* [VSCode mit QMK](de/other_vscode.md)
* [Support](de/support.md)
* [Support](de/getting_started_getting_help.md)
* [Übersetzungen](de/translating.md)
* QMK Internals (In Progress)

View File

@ -2,7 +2,7 @@
This page documents the templates you should use when submitting new Keymaps and Keyboards to QMK.
## Keymap `readme.md` Template
## Keymap `readme.md` Template :id=keyboard-readmemd-template
Most keymaps have an image depicting the layout. You can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to create an image. Upload it to [Imgur](http://imgur.com) or another hosting service, please do not include images in your Pull Request.

View File

@ -77,7 +77,7 @@
* [Macros](es/feature_macros.md)
* [Teclas del ratón](es/feature_mouse_keys.md)
* [Driver OLED](es/feature_oled_driver.md)
* [Teclas One Shot](es/feature_advanced_keycodes.md#one-shot-keys)
* [Teclas One Shot](es/one_shot_keys.md)
* [Dispositivo de apuntado](es/feature_pointing_device.md)
* [Ratón PS/2](es/feature_ps2_mouse.md)
* [Iluminación RGB](es/feature_rgblight.md)
@ -108,7 +108,7 @@
* Otros temas
* [Usando Eclipse con QMK](es/other_eclipse.md)
* [Usando VSCode con QMK](es/other_vscode.md)
* [Soporte](es/support.md)
* [Soporte](es/getting_started_getting_help.md)
* [Cómo añadir traducciones](es/translating.md)
* QMK Internals (En progreso)

View File

@ -1,9 +0,0 @@
# Llegar a ser un colaborador QMK
Un colaborador QMK es un maker o diseñador de teclados que tiene interés en ayudar a QMK a crecer y mantener sus teclado(s), y alentar a los usuarios y clientes a presentar herramientas, ideas, y keymaps. Siempre procuramos agregar más teclados y colaboradores, pero pedimos que cumplan los siguientes requisitos:
* **Tener un PCB disponible a la venta.** Desafortunadamente, hay demasiada variación y complicaciones con teclados cableados a mano.
* **Realizar el mantenimiento de tu teclado en QMK.** Este podría requirir un setup inicial para hacer que tu teclado funcione, pero también podría incluir adaptarse a cambios hecho al base de QMK que podrían descomponer o rendir código superfluo.
* **Aprobar e incorporar pull requests de keymaps para tu teclado.** Nos gusta alentar a los usuarios a contribuir sus keymaps para que otros los vean y los puedan usar para crear sus propios.
Si sientes que cumples los requisitos, ¡mándanos un email a hello@qmk.fm con una introducción y algunos enlaces para tu teclado!

View File

@ -4,7 +4,7 @@ El [Configurador QMK](https://config.qmk.fm) es un entorno gráfico online que g
?> **Por favor sigue estos pasos en orden.**
Ve el [Video tutorial](https://youtu.be/tx54jkRC9ZY)
Ve el [Video tutorial](https://www.youtube.com/watch?v=-imgglzDMdY)
El Configurador QMK functiona mejor con Chrome/Firefox.

View File

@ -1,6 +0,0 @@
# Frequently Asked Questions
* [General](faq_general.md)
* [Building or Compiling QMK](faq_build.md)
* [Debugging and Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)

View File

@ -4,6 +4,44 @@
[QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard).
## I don't know where to start!
If this is the case, then you should start with our [Newbs Guide](newbs.md). There is a lot of great info there, and that should cover everything you need to get started.
If that's an issue, hop onto the [QMK Configurator](https://config.qmk.fm), as that will handle a majority of what you need there.
## How can I flash the firmware I built?
First, head to the [Compiling/Flashing FAQ Page](faq_build.md). There is a good deal of info there, and you'll find a bunch of solutions to common issues there.
## What if I have an issue that isn't covered here?
Okay, that's fine. Then please check the [open issues in our GitHub](https://github.com/qmk/qmk_firmware/issues) to see if somebody is experiencing the same thing (make sure it's not just similar, but actually the same).
If you can't find anything, then please open a [new issue](https://github.com/qmk/qmk_firmware/issues/new)!
## What if I found a bug?
Then please open an [issue](https://github.com/qmk/qmk_firmware/issues/new), and if you know how to fix it, open up a Pull Request on GitHub with the fix.
## But `git` and `GitHub` are intimidating!
Don't worry, we have some pretty nice [Guidelines](newbs_git_best_practices.md) on how to start using `git` and GitHub to make things easier to develop.
Additionally, you can find additional `git` and GitHub related links [here](newbs_learn_more_resources.md).
## I have a Keyboard that I want to add support for
Awesome! Open up a Pull Request for it. We'll review the code, and merge it!
### What if I want to do brand it with `QMK`?
That's amazing! We would love to assist you with that!
In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/Uq7gcHh).
## What Differences Are There Between QMK and TMK?
TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert](https://github.com/jackhumbert)'s fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.

View File

@ -14,6 +14,17 @@ There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JI
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
![Keyboard Layout Image](https://i.imgur.com/5wsh5wM.png)
## How Can I Make Custom Names For Complex Keycodes?
Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using `#define`. For example:
```c
#define FN_CAPS LT(_FL, KC_CAPSLOCK)
#define ALT_TAB LALT(KC_TAB)
```
This will allow you to use `FN_CAPS` and `ALT_TAB` in your keymap, keeping it more readable.
## Some Of My Keys Are Swapped Or Not Working
QMK has two features, Bootmagic and Command, which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling Gui, swapping Alt/Gui, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More