aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/ChangeLog/20200530.md239
-rw-r--r--docs/_summary.md7
-rw-r--r--docs/breaking_changes.md47
-rw-r--r--docs/breaking_changes_instructions.md2
-rw-r--r--docs/cli.md9
-rw-r--r--docs/cli_commands.md37
-rw-r--r--docs/cli_configuration.md2
-rw-r--r--docs/cli_development.md2
-rw-r--r--docs/config_options.md9
-rw-r--r--docs/configurator_step_by_step.md2
-rw-r--r--docs/custom_quantum_functions.md57
-rw-r--r--docs/de/README.md2
-rw-r--r--docs/de/_summary.md2
-rw-r--r--docs/de/newbs_learn_more_resources.md2
-rw-r--r--docs/eeprom_driver.md29
-rw-r--r--docs/es/README.md2
-rw-r--r--docs/es/_summary.md2
-rw-r--r--docs/es/newbs_best_practices.md2
-rw-r--r--docs/es/newbs_building_firmware_configurator.md2
-rw-r--r--docs/es/newbs_learn_more_resources.md2
-rw-r--r--docs/faq_build.md16
-rw-r--r--docs/feature_hd44780.md6
-rw-r--r--docs/feature_pointing_device.md15
-rw-r--r--docs/feature_rawhid.md6
-rw-r--r--docs/feature_rgb_matrix.md19
-rw-r--r--docs/feature_rgblight.md74
-rw-r--r--docs/feature_split_keyboard.md13
-rw-r--r--docs/feature_swap_hands.md1
-rw-r--r--docs/feature_userspace.md6
-rw-r--r--docs/fr-fr/README.md6
-rw-r--r--docs/fr-fr/breaking_changes.md2
-rw-r--r--docs/fr-fr/getting_started_github.md4
-rw-r--r--docs/fr-fr/newbs_best_practices.md2
-rw-r--r--docs/getting_started_docker.md47
-rw-r--r--docs/getting_started_github.md12
-rw-r--r--docs/he-il/README.md2
-rw-r--r--docs/he-il/_summary.md4
-rw-r--r--docs/he-il/getting_started_getting_help.md2
-rw-r--r--docs/he-il/getting_started_github.md10
-rw-r--r--docs/isp_flashing_guide.md18
-rw-r--r--docs/ja/cli_configuration.md2
-rw-r--r--docs/ja/custom_quantum_functions.md8
-rw-r--r--docs/ja/feature_hd44780.md2
-rw-r--r--docs/ja/feature_layouts.md114
-rw-r--r--docs/ja/feature_leader_key.md151
-rw-r--r--docs/ja/feature_led_matrix.md95
-rw-r--r--docs/ja/feature_mouse_keys.md127
-rw-r--r--docs/ja/feature_pointing_device.md49
-rw-r--r--docs/ja/feature_thermal_printer.md15
-rw-r--r--docs/ja/feature_velocikey.md35
-rw-r--r--docs/ja/getting_started_github.md8
-rw-r--r--docs/ja/newbs_building_firmware_configurator.md2
-rw-r--r--docs/ja/newbs_learn_more_resources.md4
-rw-r--r--docs/keycodes.md1
-rw-r--r--docs/keymap.md20
-rw-r--r--docs/newbs_flashing.md82
-rw-r--r--docs/newbs_getting_started.md28
-rw-r--r--docs/other_vscode.md2
-rw-r--r--docs/proton_c_conversion.md2
-rw-r--r--docs/pt-br/README.md2
-rw-r--r--docs/pt-br/_summary.md2
-rw-r--r--docs/reference_keymap_extras.md80
-rw-r--r--docs/ru-ru/_summary.md2
-rw-r--r--docs/ru-ru/getting_started_github.md4
-rw-r--r--docs/serial_driver.md69
-rw-r--r--docs/support.md2
-rw-r--r--docs/tap_hold.md87
-rw-r--r--docs/zh-cn/README.md2
-rw-r--r--docs/zh-cn/_summary.md2
-rw-r--r--docs/zh-cn/custom_quantum_functions.md6
-rw-r--r--docs/zh-cn/getting_started_getting_help.md2
-rw-r--r--docs/zh-cn/getting_started_github.md12
-rw-r--r--docs/zh-cn/newbs_building_firmware.md2
73 files changed, 1468 insertions, 276 deletions
diff --git a/docs/ChangeLog/20200530.md b/docs/ChangeLog/20200530.md
new file mode 100644
index 0000000000..9def9ae123
--- /dev/null
+++ b/docs/ChangeLog/20200530.md
@@ -0,0 +1,239 @@
+# QMK Breaking Change - 2020 May 30 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.
+
+The list of changes follows.
+
+
+## Core Changes
+
+### Converting V-USB usbdrv to a submodule
+
+[#8321](https://github.com/qmk/qmk_firmware/pull/8321) and [qmk_compiler#62](https://github.com/qmk/qmk_compiler/pull/62).
+
+These PRs move the V-USB driver code out of the qmk_firmware repository and into a submodule pointed at https://github.com/obdev/v-usb. This will make it easier to update the codebase if needed, while applying any potential QMK-specific modifications by forking it to the QMK GitHub organization.
+
+### Unify Tap Hold functions and documentation
+
+[#8348](https://github.com/qmk/qmk_firmware/pull/8348)
+
+Updates all of the per key tap-hold functions to pass the `keyrecord_t` structure, and include documentation changes.
+
+Any remaining versions or code outside of the main repo will need to be converted:
+| Old function | New Function |
+|------------------------------------------------------|---------------------------------------------------------------------------|
+|`uint16_t get_tapping_term(uint16_t keycode)` |`uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record)` |
+|`bool get_ignore_mod_tap_interrupt(uint16_t keycode)` |`bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record)` |
+
+### Python Required In The Build Process
+
+[#9000](https://github.com/qmk/qmk_firmware/pull/9000)
+
+This is the last release of QMK that will work without having Python 3.6 (or later) installed. If your environment is not fully setup you will get a warning instructing you to set it up.
+
+After the next breaking change you will not be able to build if `bin/qmk hello` does not work.
+
+### Upgrade from tinyprintf to mpaland/printf
+
+[#8269](https://github.com/qmk/qmk_firmware/pull/8269)
+
+- Provides debug functionality on ChibiOS/ARM that is more compliant than previous integrations.
+- Less maintenence, fewer QMK customisations, and allows QMK to sidestep previous compile and runtime issues.
+- A `make git-submodule` may be required after pulling the latest QMK Firmware code to update to the new dependency.
+
+### Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup
+
+[#6480](https://github.com/qmk/qmk_firmware/pull/6480)
+
+- Changes `RGB_DISABLE_AFTER_TIMEOUT` to be based on milliseconds instead of ticks.
+- Includes a code cleanup, resulting in a savings of 100 bytes, depending on features used.
+- Fixed issues with timeouts / suspending at the wrong time not turning off all LEDs in some cases.
+
+The `RGB_DISABLE_AFTER_TIMEOUT` definition is now deprecated, and has been superseded by `RGB_DISABLE_TIMEOUT`. To use the new definition, rename `RGB_DISABLE_AFTER_TIMEOUT` to `RGB_DISABLE_TIMEOUT` in your `config.h` file, and multiply the value set by 1200.
+
+Before: `#define RGB_DISABLE_AFTER_TIMEOUT 100`
+After: `#define RGB_DISABLE_TIMEOUT 120000`
+
+### Switch to qmk forks for everything
+
+[#9019](https://github.com/qmk/qmk_firmware/pull/9019)
+
+Fork all QMK submodules to protect against upstream repositories disappearing.
+
+### code cleanup regarding deprecated macro PLAY_NOTE_ARRAY by replacing it with PLAY_SONG
+
+[#8484](https://github.com/qmk/qmk_firmware/pull/8484)
+
+Removes the deprecated `PLAY_NOTE_ARRAY` macro. References to it are replaced with `PLAY_SONG`, which references the same function.
+
+### fixing wrong configuration of AUDIO feature
+
+[#8903](https://github.com/qmk/qmk_firmware/pull/8903) and [#8974](https://github.com/qmk/qmk_firmware/pull/8974)
+
+`audio_avr.c` does not default to any pin; there has to be a #define XX_AUDIO in config.h at some level for Audio to actually work. Otherwise, the Audio code ends up cluttering the firmware, possibly breaking builds because the maximum allowed firmware size is exceeded.
+
+These changes fix this by disabling Audio on keyboards that have the feature misconfigured, and therefore non-functional.
+
+Also, add a compile-time error to alert the user to a missing pin-configuration (on AVR boards) when `AUDIO_ENABLE = yes` is set.
+
+
+## Keyboard Refactors
+
+### Migrating Lily58 to use split_common
+
+[#6260](https://github.com/qmk/qmk_firmware/pull/6260)
+
+Modifies the default firmware for Lily58 to use the `split_common` library, instead of including and depending on its own set of libraries for the following functionality:
+
+- SSD1306 display
+- i2c for OLED
+- Serial Communication
+
+This allows current lily58 firmware to advance with updates to the `split_common` library, which is shared with many other split keyboards.
+
+#### To migrate existing Lily58 firmware:
+
+[Changes to `config.h`](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-445ac369c8717dcd6fc6fc3630836fc1):
+- Remove `#define SSD1306OLED` from config.h
+
+
+[Changes to `keymap.c`](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7):
+- Find/Replace each instance of `#ifdef SSD1306OLED` with `#ifdef OLED_DRIVER_ENABLE`
+- The following changes are for compatibility with the OLED driver. If you don't use the OLED driver you may safely delete [this section](https://github.com/qmk/qmk_firmware/blob/e6b9980bd45c186f7360df68c24b6e05a80c10dc/keyboards/lily58/keymaps/default/keymap.c#L144-L190)
+- Alternatively, if you did not change the OLED code from that in `default`, you may find it easier to simply copy the [relevant section](https://github.com/qmk/qmk_firmware/blob/4ac310668501ae6786c711ecc8f01f62ddaa1c0b/keyboards/lily58/keymaps/default/keymap.c#L138-L172). Otherwise, the changes you need to make are as follows (sample change [here](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7R138-R173))
+- [Remove](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7L138-L141) the block
+```c
+#ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+#endif
+```
+- Within the block bounded by `#ifdef OLED_DRIVER_ENABLE` and `#endif // OLED_DRIVER_ENABLE`, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
+```c
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master())
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ return rotation;
+}
+```
+- Remove the functions `matrix_scan_user`, `matrix_update` and `iota_gfx_task_user`
+- Find/Replace `matrix_render_user(struct CharacterMatrix *matrix)` with `iota_gfx_task_user(void)`
+- Find/Replace `is_master` with `is_keyboard_master()`
+- For each instance of `matrix_write_ln(matrix, display_fn())`, rewrite it as `oled_write_ln(read_layer_state(), false);`
+- For each instance of `matrix_write(matrix, read_logo());`, replace with `oled_write(read_logo(), false);`
+
+### Refactor zinc to use split_common
+
+[#7114](https://github.com/qmk/qmk_firmware/pull/7114) and [#9171](https://github.com/qmk/qmk_firmware/pull/9171)
+
+* Refactor to use split_common and remove split codes under the zinc/revx/
+* Add - backlight RGB LED and/or underglow RGB LED option
+* Add - continuous RGB animations feature (between L and R halves)
+* Fix - keymap files to adapt to changes
+ * all authors of keymaps confirmed this PR
+* Update - documents and rules.mk
+
+### Refactor of TKC1800 to use common OLED code
+
+[#8472](https://github.com/qmk/qmk_firmware/pull/8472)
+
+Modifies the default firmware for TKC1800 to use the in-built I2C and OLED drivers, instead of including and depending on its own set of libraries for the following functionality:
+
+- SSD1306 display
+- i2c for OLED
+
+This allows current TKC1800 firmware to advance with updates to those drivers, which are shared with other keyboards.
+
+#### To migrate existing TKC1800 firmware:
+
+[Changes to `config.h`](https://github.com/qmk/qmk_firmware/pull/8472/files#diff-d10b26e676b4a55cbb00d71955116526):
+- Remove `#define SSD1306OLED` from config.h
+
+[Changes to `tkc1800.c`](https://github.com/qmk/qmk_firmware/pull/8472/files#diff-3b35bd30abe89c8110717c6972cd2cc5):
+- Add the following to avoid debug errors on HID_listen if the screen is not present
+```c
+void keyboard_pre_init_kb(void) {
+ setPinInputHigh(D0);
+ setPinInputHigh(D1);
+
+ keyboard_pre_init_user();
+}
+```
+
+[Changes to `keymap.c`](https://github.com/qmk/qmk_firmware/pull/8472/files#diff-05a2a344ce27e4d045fe68520ccd4771):
+- Find/Replace each instance of `#ifdef SSD1306OLED` with `#ifdef OLED_DRIVER_ENABLE`
+- The following changes are for compatibility with the OLED driver. If you don't use the OLED driver you may safely delete [this section](https://github.com/qmk/qmk_firmware/blob/e6b9980bd45c186f7360df68c24b6e05a80c10dc/keyboards/lily58/keymaps/default/keymap.c#L144-L190)
+- [Remove](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7L91-L158) the block
+```c
+#ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+#endif
+```
+- Within the block bounded by `#ifdef OLED_DRIVER_ENABLE` and `#endif // OLED_DRIVER_ENABLE`, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
+```c
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master())
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ return rotation;
+}
+```
+- Remove the function `iota_gfx_task_user`
+
+### Split HHKB to ANSI and JP layouts and Add VIA support for each
+
+[#8582](https://github.com/qmk/qmk_firmware/pull/8582)
+
+- Splits the HHKB codebase into two separate folders `keyboards/hhkb/ansi` and `keyboards/hhkb/jp`.
+- Adds VIA Configurator support for both versions.
+
+#### Migrating existing HHKB keymaps
+
+- Remove any checks for the `HHKB_JP` definition
+ - All checks for this definition have been removed, and each version uses the source that is appropriate to that version.
+- Move the directory for your keymap into the appropriate `keymaps` directory
+ - `keyboards/hhkb/ansi/keymaps/` for ANSI HHKBs
+ - `keyboards/hhkb/jp/keymaps/` for HHKB JPs
+- Compile with the new keyboard names
+ - This PR changes the compilation instructions for the HHKB Alternate Controller. To compile firmware for this controller moving forward, use:
+ - `make hhkb/ansi` for ANSI-layout HHKBs
+ - `make hhkb/jp` for HHKB JP keyboards
+
+
+## Keyboard Moves
+
+- [#8412](https://github.com/qmk/qmk_firmware/pull/8412 "Changing board names to prevent confusion") by blindassassin111
+- [#8499](https://github.com/qmk/qmk_firmware/pull/8499 "Move the Keyboardio Model01 to a keyboardio/ subdir") by algernon
+- [#8830](https://github.com/qmk/qmk_firmware/pull/8830 "Move spaceman keyboards") by Spaceman (formerly known as Rionlion100)
+- [#8537](https://github.com/qmk/qmk_firmware/pull/8537 "Organizing my keyboards (plaid, tartan, ergoinu)") by hsgw
+
+Keyboards by Keyboardio, Spaceman, and hsgw move to vendor folders, while PCBs designed by blindassassin111 are renamed.
+
+Old Name | New Name
+:----------------- | :-----------------
+2_milk | spaceman/2_milk
+at101_blackheart | at101_bh
+ergoinu | dm9records/ergoinu
+model01 | keyboardio/model01
+omnikey_blackheart | omnikey_bh
+pancake | spaceman/pancake
+plaid | dm9records/plaid
+tartan | dm9records/tartan
+z150_blackheart | z150_bh
+
+If you own one of these PCBs, please use the new names to compile your firmware moving forward.
+
+
+## Keycode Migration PRs
+
+[#8954](https://github.com/qmk/qmk_firmware/pull/8954 "Migrate `ACTION_LAYER_TOGGLE` to `TG()`"), [#8957](https://github.com/qmk/qmk_firmware/pull/8957 "Migrate `ACTION_MODS_ONESHOT` to `OSM()`"), [#8958](https://github.com/qmk/qmk_firmware/pull/8958 "Migrate `ACTION_DEFAULT_LAYER_SET` to `DF()`"), [#8959](https://github.com/qmk/qmk_firmware/pull/8959 "Migrate `ACTION_LAYER_MODS` to `LM()`"), [#8968](https://github.com/qmk/qmk_firmware/pull/8968 "Migrate `ACTION_MODS_TAP_KEY` to `MT()`"), [#8977](https://github.com/qmk/qmk_firmware/pull/8977 "Migrate miscellaneous `fn_actions` entries"), and [#8979](https://github.com/qmk/qmk_firmware/pull/8979 "Migrate `ACTION_MODS_KEY` to chained mod keycodes")
+
+Authored by fauxpark, these pull requests remove references to deprecated TMK macros that have been superseded by native QMK keycodes.
+
+Old `fn_actions` action | New QMK keycode
+:---------------------- | :--------------
+`ACTION_DEFAULT_LAYER_SET(layer)` | `DF(layer)`
+`ACTION_LAYER_MODS(layer, mod)` | `LM(layer, mod)`
+`ACTION_LAYER_ONESHOT(mod)` | `OSL(mod)`
+`ACTION_LAYER_TOGGLE(layer)` | `TG(layer)`
+`ACTION_MODS_ONESHOT(mod)` | `OSM(mod)`
+`ACTION_MODS_TAP_KEY(mod, kc)` | `MT(mod, kc)`
+`ACTION_MODS_KEY(mod, kc)`<br>e.g. `ACTION_MODS_KEY(MOD_LCTL, KC_0)` | `MOD(kc)`<br>e.g. `LCTL(KC_0)`
diff --git a/docs/_summary.md b/docs/_summary.md
index 75b9a83e66..1b6ddc67ca 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -34,7 +34,9 @@
* [Customizing Functionality](custom_quantum_functions.md)
* [Driver Installation with Zadig](driver_installation_zadig.md)
* [Keymap Overview](keymap.md)
- * [Vagrant Guide](getting_started_vagrant.md)
+ * Development Environments
+ * [Docker Guide](getting_started_docker.md)
+ * [Vagrant Guide](getting_started_vagrant.md)
* Flashing
* [Flashing](flashing.md)
* [Flashing ATmega32A (ps2avrgb)](flashing_bootloadhid.md)
@@ -53,6 +55,7 @@
* Simple Keycodes
* [Full List](keycodes.md)
* [Basic Keycodes](keycodes_basic.md)
+ * [Language-Specific Keycodes](reference_keymap_extras.md)
* [Modifier Keys](feature_advanced_keycodes.md)
* [Quantum Keycodes](quantum_keycodes.md)
@@ -112,6 +115,7 @@
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* History
+ * [2020 May 30](ChangeLog/20200530.md)
* [2020 Feb 29](ChangeLog/20200229.md)
* [2019 Aug 30](ChangeLog/20190830.md)
@@ -126,6 +130,7 @@
* [SPI Driver](spi_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
+ * ['serial' Driver](serial_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md
index 12bc0db9da..154695ddac 100644
--- a/docs/breaking_changes.md
+++ b/docs/breaking_changes.md
@@ -6,27 +6,28 @@ 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 May 30](ChangeLog/20200530.md)
* [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 May 30, 2020.
+The next Breaking Change is scheduled for Aug 29, 2020.
### Important Dates
-* [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.
+* [x] 2020 May 30 - `develop` is created. It will be rebased weekly.
+* [ ] 2020 Aug 1 - `develop` closed to new PR's.
+* [ ] 2020 Aug 1 - Call for testers.
+* [ ] 2020 Aug 27 - `master` is locked, no PR's merged.
+* [ ] 2020 Aug 29 - Merge `develop` to `master`.
+* [ ] 2020 Aug 29 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
-To see a list of breaking change candidates you can look at the [`breaking_change` label](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr). New changes might be added between now and when `future` is closed, and a PR with that label applied is not guaranteed to be merged.
+To see a list of breaking change candidates you can look at the [`breaking_change` label](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr). New changes might be added between now and when `develop` is closed, and a PR with that label applied is not guaranteed to be merged.
-If you want your breaking change to be included in this round you need to create a PR with the `breaking_change` label and have it accepted before `future` closes. After `future` closes no new breaking changes will be accepted.
+If you want your breaking change to be included in this round you need to create a PR with the `breaking_change` label and have it accepted before `develop` closes. After `develop` closes no new breaking changes will be accepted.
Criteria for acceptance:
@@ -37,9 +38,9 @@ Criteria for acceptance:
This section documents various processes we use when running the Breaking Changes process.
-## Rebase `future` from `master`
+## Rebase `develop` from `master`
-This is run every Friday while `future` is open.
+This is run every Friday while `develop` is open.
Process:
@@ -47,31 +48,31 @@ Process:
cd qmk_firmware
git checkout master
git pull --ff-only
-git checkout future
+git checkout develop
git rebase master
git push --force
```
-## Creating the `future` branch
+## Creating the `develop` branch
-This happens immediately after the previous `future` branch is merged.
+This happens immediately after the previous `develop` branch is merged.
* `qmk_firmware` git commands
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
- * [ ] `git checkout -b future`
+ * [ ] `git checkout -b develop`
* [ ] Edit `readme.md`
* [ ] Add a big notice at the top that this is a testing branch.
* [ ] Include a link to this document
* [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
* [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
- * [ ] `git push origin future`
+ * [ ] `git push origin develop`
* [ ] `git push --tags`
## 4 Weeks Before Merge
-* `future` is now closed to new PR's, only fixes for current PR's may be merged
+* `develop` is now closed to new PR's, only fixes for current PR's may be merged
* Post call for testers
* [ ] Discord
* [ ] GitHub PR
@@ -94,15 +95,15 @@ This happens immediately after the previous `future` branch is merged.
## Day Of Merge
* `qmk_firmware` git commands
- * [ ] `git checkout future`
+ * [ ] `git checkout develop`
* [ ] `git pull --ff-only`
* [ ] `git rebase origin/master`
* [ ] Edit `readme.md`
- * [ ] Remove the notes about `future`
+ * [ ] Remove the notes about `develop`
* [ ] Roll up the ChangeLog into one file.
* [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
- * [ ] `git push origin future`
-* Github Actions
- * [ ] Create a PR for `future`
+ * [ ] `git push origin develop`
+* GitHub Actions
+ * [ ] Create a PR for `develop`
* [ ] Make sure travis comes back clean
- * [ ] Merge `future` PR
+ * [ ] Merge `develop` PR
diff --git a/docs/breaking_changes_instructions.md b/docs/breaking_changes_instructions.md
index 3f2f93834f..d835671556 100644
--- a/docs/breaking_changes_instructions.md
+++ b/docs/breaking_changes_instructions.md
@@ -27,7 +27,7 @@ If you are contributing core code, and the only reason it needs to go through br
We require submissions that go through the Breaking Change process to include a changelog entry. The entry should be a short summary of the changes your pull request makes &ndash; [each section here started as a changelog](ChangeLog/20190830.md "n.b. This should link to the 2019 Aug 30 Breaking Changes doc - @noroadsleft").
-Your changelog should be located at `docs/ChangeLog/YYYYMMDD/PR####.md`, where `YYYYMMDD` is the date on which QMK's breaking change branch &ndash; usually named `future` &ndash; will be merged into the `master` branch, and `####` is the number of your pull request.
+Your changelog should be located at `docs/ChangeLog/YYYYMMDD/PR####.md`, where `YYYYMMDD` is the date on which QMK's breaking change branch &ndash; usually named `develop` &ndash; will be merged into the `master` branch, and `####` is the number of your pull request.
If your submission requires action on the part of users, your changelog should instruct users what action(s) must be taken, or link to a location that does so.
diff --git a/docs/cli.md b/docs/cli.md
index 01641bd8b8..8684479d0c 100644
--- a/docs/cli.md
+++ b/docs/cli.md
@@ -13,18 +13,17 @@ QMK requires Python 3.6 or greater. We try to keep the number of requirements sm
If you have installed [Homebrew](https://brew.sh) you can tap and install QMK:
```
-brew tap qmk/qmk
-brew install qmk
+brew install qmk/qmk/qmk
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
```
-### Install Using easy_install or pip :id=install-using-easy_install-or-pip
+### Install Using pip :id=install-using-easy_install-or-pip
-If your system is not listed above you can install QMK manually. First ensure that you have python 3.6 (or later) installed and have installed pip. Then install QMK with this command:
+If your system is not listed above you can install QMK manually. First ensure that you have Python 3.6 (or later) installed and have installed pip. Then install QMK with this command:
```
-pip3 install qmk
+python3 -m pip install qmk
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
```
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index eff5321bdb..bb0de3c0db 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -6,6 +6,8 @@
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.
+This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
+
**Usage for Configurator Exports**:
```
@@ -73,8 +75,9 @@ $ 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 the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
+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 the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
+
+This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
**Usage for Configurator Exports**:
@@ -128,6 +131,32 @@ Check your environment and report problems only:
qmk doctor -n
+## `qmk info`
+
+Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.
+
+**Usage**:
+
+```
+qmk info [-f FORMAT] [-m] [-l] [-km KEYMAP] [-kb KEYBOARD]
+```
+
+This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
+
+**Examples**:
+
+Show basic information for a keyboard:
+
+ qmk info -kb planck/rev5
+
+Show the matrix for a keyboard:
+
+ qmk info -kb ergodox_ez -m
+
+Show a JSON keymap for a keyboard:
+
+ qmk info -kb clueboard/california -km default
+
## `qmk json2c`
Creates a keymap.c from a QMK Configurator export.
@@ -152,6 +181,8 @@ qmk list-keyboards
This command lists all the keymaps for a specified keyboard (and revision).
+This command is directory aware. It will automatically fill in KEYBOARD if you are in a keyboard directory.
+
**Usage**:
```
@@ -162,6 +193,8 @@ qmk list-keymaps -kb planck/ez
This command creates a new keymap based on a keyboard's existing default keymap.
+This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
+
**Usage**:
```
diff --git a/docs/cli_configuration.md b/docs/cli_configuration.md
index 1196ab669d..50f5dc6e28 100644
--- a/docs/cli_configuration.md
+++ b/docs/cli_configuration.md
@@ -108,7 +108,7 @@ compile.keymap: skully -> None
|-----|---------------|-------------|
| user.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) |
| user.keymap | None | The keymap name (Example: `default`) |
-| user.name | None | The user's github username. |
+| user.name | None | The user's GitHub username. |
# All Configuration Options
diff --git a/docs/cli_development.md b/docs/cli_development.md
index af86686c07..07c8f281ba 100644
--- a/docs/cli_development.md
+++ b/docs/cli_development.md
@@ -210,7 +210,7 @@ Our tests can be found in `lib/python/qmk/tests/`. You will find both unit and i
If your PR does not include a comprehensive set of tests please add comments like this to your code so that other people know where they can help:
- # TODO(unassigned/<yourGithubUsername>): Write <unit|integration> tests
+ # TODO(unassigned/<your_github_username>): Write <unit|integration> tests
We use [nose2](https://nose2.readthedocs.io/en/latest/getting_started.html) to run our tests. You can refer to the nose2 documentation for more details on what you can do in your test functions.
diff --git a/docs/config_options.md b/docs/config_options.md
index 16fea83a33..ab26fd46ce 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -191,7 +191,14 @@ If you define these options you will enable the associated feature, which may in
* `#define RGBLIGHT_ANIMATIONS`
* run RGB animations
* `#define RGBLIGHT_LAYERS`
- * Lets you define [lighting layers](feature_rgblight.md) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
+ * Lets you define [lighting layers](feature_rgblight.md?id=lighting-layers) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
+* `#define RGBLIGHT_MAX_LAYERS`
+ * Defaults to 8. Can be expanded up to 32 if more [lighting layers](feature_rgblight.md?id=lighting-layers) are needed.
+ * Note: Increasing the maximum will increase the firmware size and slow sync on split keyboards.
+* `#define RGBLIGHT_LAYER_BLINK`
+ * Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
+* `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF`
+ * If defined, then [lighting layers](feature_rgblight?id=overriding-rgb-lighting-onoff-status) will be shown even if RGB Light is off.
* `#define RGBLED_NUM 12`
* number of LEDs
* `#define RGBLIGHT_SPLIT`
diff --git a/docs/configurator_step_by_step.md b/docs/configurator_step_by_step.md
index aee1d4e1f6..965012a907 100644
--- a/docs/configurator_step_by_step.md
+++ b/docs/configurator_step_by_step.md
@@ -12,7 +12,7 @@ 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? -->
+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
diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
index 84ae589ed6..6eb144af76 100644
--- a/docs/custom_quantum_functions.md
+++ b/docs/custom_quantum_functions.md
@@ -57,7 +57,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ENTER:
// Play a tone when enter is pressed
if (record->event.pressed) {
- PLAY_NOTE_ARRAY(tone_qwerty);
+ PLAY_SONG(tone_qwerty);
}
return true; // Let QMK send the enter press/release events
default:
@@ -438,7 +438,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ENTER:
// Play a tone when enter is pressed
if (record->event.pressed) {
- PLAY_NOTE_ARRAY(tone_qwerty);
+ PLAY_SONG(tone_qwerty);
}
return true; // Let QMK send the enter press/release events
case RGB_LYR: // This allows me to use underglow as layer indication, or as normal
@@ -486,56 +486,3 @@ And you're done. The RGB layer indication will only work if you want it to. And
* Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)`
The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM.
-
-# Custom Tapping Term
-
-By default, the tapping term and related options (such as `IGNORE_MOD_TAP_INTERRUPT`) are defined globally, and are not configurable by key. For most users, this is perfectly fine. But in some cases, dual function keys would be greatly improved by different timeout behaviors than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable timeout behaviors.
-
-There are two configurable options to control per-key timeout behaviors:
-
-- `TAPPING_TERM_PER_KEY`
-- `IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
-
-You need to add `#define` lines to your `config.h` for each feature you want.
-
-```
-#define TAPPING_TERM_PER_KEY
-#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
-```
-
-
-## Example `get_tapping_term` Implementation
-
-To change the `TAPPING_TERM` based on the keycode, you'd want to add something like the following to your `keymap.c` file:
-
-```c
-uint16_t get_tapping_term(uint16_t keycode) {
- switch (keycode) {
- case SFT_T(KC_SPC):
- return TAPPING_TERM + 1250;
- case LT(1, KC_GRV):
- return 130;
- default:
- return TAPPING_TERM;
- }
-}
-```
-
-## Example `get_ignore_mod_tap_interrupt` Implementation
-
-To change the `IGNORE_MOD_TAP_INTERRUPT` value based on the keycode, you'd want to add something like the following to your `keymap.c` file:
-
-```c
-bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
- switch (keycode) {
- case SFT_T(KC_SPC):
- return true;
- default:
- return false;
- }
-}
-```
-
-## `get_tapping_term` / `get_ignore_mod_tap_interrupt` Function Documentation
-
-Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard level function. Only user level functions are useful here, so no need to mark them as such.
diff --git a/docs/de/README.md b/docs/de/README.md
index 88239d45d4..bf8fbac57a 100644
--- a/docs/de/README.md
+++ b/docs/de/README.md
@@ -13,7 +13,7 @@ QMK (*Quantum Mechanical Keyboard*) ist eine Open-Source-Community, welche die Q
## Bezugsquelle für QMK
-Wenn Du vorhast, deine Tastatur, Tastaturbelegung oder Features zu QMK beizusteuern, geht das am einfachsten, indem Du das [Repository auf Github](https://github.com/qmk/qmk_firmware#fork-destination-box) forkst, die Änderungen in deinem lokalen Repo vornimmst und anschließend einen [Pull Request](https://github.com/qmk/qmk_firmware/pulls) einreichst.
+Wenn Du vorhast, deine Tastatur, Tastaturbelegung oder Features zu QMK beizusteuern, geht das am einfachsten, indem Du das [Repository auf GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) forkst, die Änderungen in deinem lokalen Repo vornimmst und anschließend einen [Pull Request](https://github.com/qmk/qmk_firmware/pulls) einreichst.
Ansonsten kannst Du es als [zip](https://github.com/qmk/qmk_firmware/zipball/master) oder [tar](https://github.com/qmk/qmk_firmware/tarball/master) herunterladen, oder es direkt via git klonen (`git clone [email protected]:qmk/qmk_firmware.git` bzw. `git clone https://github.com/qmk/qmk_firmware.git`).
diff --git a/docs/de/_summary.md b/docs/de/_summary.md
index 19c75ecd38..ffbd292bd4 100644
--- a/docs/de/_summary.md
+++ b/docs/de/_summary.md
@@ -11,7 +11,7 @@
* [QMK CLI](de/cli.md)
* [QMK CLI Konfiguration](de/cli_configuration.md)
* [Zu QMK beitragen](de/contributing.md)
- * [Anleitung für Github](de/getting_started_github.md)
+ * [Anleitung für GitHub](de/getting_started_github.md)
* [Nach Hilfe fragen](de/getting_started_getting_help.md)
* [Breaking Changes](de/breaking_changes.md)
diff --git a/docs/de/newbs_learn_more_resources.md b/docs/de/newbs_learn_more_resources.md
index 59b72152dd..ac5adb0c12 100644
--- a/docs/de/newbs_learn_more_resources.md
+++ b/docs/de/newbs_learn_more_resources.md
@@ -6,7 +6,7 @@ Git Ressourcen:
* [Gutes allgemeines Tutorial](https://www.codecademy.com/learn/learn-git) (auf Englisch)
* [Git spielerisch anhand von Beispielen lernen](https://learngitbranching.js.org/) (auf Englisch)
-* [Mehr über den allgemeinen Umgang mit Github](getting_started_github.md)
+* [Mehr über den allgemeinen Umgang mit GitHub](getting_started_github.md)
* [Mehr über Git im Bezug zu QMK](contributing.md)
Mehr über die Arbeit mit der Befehlszeile:
diff --git a/docs/eeprom_driver.md b/docs/eeprom_driver.md
index 5a91a7c2da..188b95caa7 100644
--- a/docs/eeprom_driver.md
+++ b/docs/eeprom_driver.md
@@ -1,4 +1,4 @@
-# EEPROM Driver Configuration
+# EEPROM Driver Configuration :id=eeprom-driver-configuration
The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
@@ -6,15 +6,20 @@ Driver | Description
-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`EEPROM_DRIVER = vendor` (default) | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
+`EEPROM_DRIVER = spi` | Supports writing to SPI-based 25xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
-## Vendor Driver Configuration
+## Vendor Driver Configuration :id=vendor-eeprom-driver-configuration
+
+#### STM32 L0/L1 Configuration :id=stm32l0l1-eeprom-driver-configuration
!> Resetting EEPROM using an STM32L0/L1 device takes up to 1 second for every 1kB of internal EEPROM used.
-No configurable options are available.
+`config.h` override | Description | Default Value
+------------------------------------|--------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------
+`#define STM32_ONBOARD_EEPROM_SIZE` | The size of the EEPROM to use, in bytes. Erase times can be high, so it's configurable here, if not using the default value. | Minimum required to cover base _eeconfig_ data, or `1024` if VIA is enabled.
-## I2C Driver Configuration
+## I2C Driver Configuration :id=i2c-eeprom-driver-configuration
Currently QMK supports 24xx-series chips over I2C. As such, requires a working i2c_master driver configuration. You can override the driver configuration via your config.h:
@@ -41,7 +46,21 @@ MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/p
?> If you find that the EEPROM is not cooperating, ensure you've correctly shifted up your EEPROM address by 1. For example, the datasheet might state the address as `0b01010000` -- the correct value of `EXTERNAL_EEPROM_I2C_BASE_ADDRESS` needs to be `0b10100000`.
-## Transient Driver configuration
+## SPI Driver Configuration :id=spi-eeprom-driver-configuration
+
+Currently QMK supports 25xx-series chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:
+
+`config.h` override | Description | Default Value
+-----------------------------------------------|--------------------------------------------------------------------------------------|--------------
+`#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN` | SPI Slave select pin in order to inform that the EEPROM is currently being addressed | _none_
+`#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR` | Clock divisor used to divide the peripheral clock to derive the SPI frequency | `64`
+`#define EXTERNAL_EEPROM_BYTE_COUNT` | Total size of the EEPROM in bytes | 8192
+`#define EXTERNAL_EEPROM_PAGE_SIZE` | Page size of the EEPROM in bytes, as specified in the datasheet | 32
+`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | The number of bytes to transmit for the memory location within the EEPROM | 2
+
+!> There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero.
+
+## Transient Driver configuration :id=transient-eeprom-driver-configuration
The only configurable item for the transient EEPROM driver is its size:
diff --git a/docs/es/README.md b/docs/es/README.md
index d39b278008..75fd3cb64e 100644
--- a/docs/es/README.md
+++ b/docs/es/README.md
@@ -13,7 +13,7 @@ QMK (*Quantum Mechanical Keyboard*) es una comunidad open source que mantiene el
## Cómo conseguirlo
-Si estás pensando en contribuir con un keymap, teclado, or característica a QMK, la manera más sencilla es hacer un [fork del repositorio en Github](https://github.com/qmk/qmk_firmware#fork-destination-box), y clonar tu repositorio localmente para hacer los cambios, subirlos, y abir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) desde tu fork.
+Si estás pensando en contribuir con un keymap, teclado, or característica a QMK, la manera más sencilla es hacer un [fork del repositorio en GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box), y clonar tu repositorio localmente para hacer los cambios, subirlos, y abir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) desde tu fork.
De cualquier manera, también puedes descargarlo directamente en formatos ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), o clonarlo via git (`[email protected]:qmk/qmk_firmware.git`), o https (`https://github.com/qmk/qmk_firmware.git`).
diff --git a/docs/es/_summary.md b/docs/es/_summary.md
index b58d825f74..aa2a0ca5d9 100644
--- a/docs/es/_summary.md
+++ b/docs/es/_summary.md
@@ -11,7 +11,7 @@
* [QMK CLI](es/cli.md)
* [Configuración de QMK CLI](es/cli_configuration.md)
* [Contribuyendo a QMK](es/contributing.md)
- * [Cómo usar Github](es/getting_started_github.md)
+ * [Cómo usar GitHub](es/getting_started_github.md)
* [Obtener ayuda](es/getting_started_getting_help.md)
* [Cambios incompatibles](es/breaking_changes.md)
diff --git a/docs/es/newbs_best_practices.md b/docs/es/newbs_best_practices.md
index fc2afb9ed2..2f72eff788 100644
--- a/docs/es/newbs_best_practices.md
+++ b/docs/es/newbs_best_practices.md
@@ -6,7 +6,7 @@ Este documento procura instruir a los novatos en las mejores prácticas para ten
En este documento suponemos un par de cosas:
-1. Tienes una cuenta de Github, y has hecho un [fork del repo qmk_firmware](getting_started_github.md) en tu cuenta.
+1. Tienes una cuenta de GitHub, y has hecho un [fork del repo qmk_firmware](getting_started_github.md) en tu cuenta.
2. Has [configurado tu entorno de desarrollo](newbs_getting_started.md?id=environment-setup).
diff --git a/docs/es/newbs_building_firmware_configurator.md b/docs/es/newbs_building_firmware_configurator.md
index 9333159c2c..60d67f5fa4 100644
--- a/docs/es/newbs_building_firmware_configurator.md
+++ b/docs/es/newbs_building_firmware_configurator.md
@@ -21,7 +21,7 @@ Lo diré otra vez porque es importante
!> **ASEGÚRATE DE QUE SELECCIONAS LA VERSIÓN CORRECTA!**
-Si se ha anunciado que tu teclado funciona con QMK pero no está en la lista, es probable que un desarrollador no se haya encargado de él aún o que todavía no hemos tenido la oportunidad de incluirlo. Abre un issue en [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) solicitando soportar ese teclado un particular, si no hay un [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) activo para ello. Hay también teclados que funcionan con QMK que están en las cuentas de github de sus manufacturantes. Acuérdate de comprobar esto también.
+Si se ha anunciado que tu teclado funciona con QMK pero no está en la lista, es probable que un desarrollador no se haya encargado de él aún o que todavía no hemos tenido la oportunidad de incluirlo. Abre un issue en [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) solicitando soportar ese teclado un particular, si no hay un [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) activo para ello. Hay también teclados que funcionan con QMK que están en las cuentas de GitHub de sus manufacturantes. Acuérdate de comprobar esto también.
## Eligiendo el layout de tu teclado
diff --git a/docs/es/newbs_learn_more_resources.md b/docs/es/newbs_learn_more_resources.md
index 413b9ffa5e..34fd7556bf 100644
--- a/docs/es/newbs_learn_more_resources.md
+++ b/docs/es/newbs_learn_more_resources.md
@@ -6,7 +6,7 @@ Recursos de Git:
* [Excelente tutorial general](https://www.codecademy.com/learn/learn-git)
* [Juego de Git para aprender usando ejemplos](https://learngitbranching.js.org/)
-* [Recursos de Git para aprender más sobre Github](getting_started_github.md)
+* [Recursos de Git para aprender más sobre GitHub](getting_started_github.md)
* [Recursos de Git dirigidos específicamente a QMK](contributing.md)
diff --git a/docs/faq_build.md b/docs/faq_build.md
index 70a16afea4..2f1a4dd7f4 100644
--- a/docs/faq_build.md
+++ b/docs/faq_build.md
@@ -113,26 +113,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=2048
```
## `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)` on MacOS
+
This is an issue with updating on brew, causing symlinks that avr-gcc depend on getting mangled.
The solution is to remove and reinstall all affected modules.
```
-brew rm avr-gcc
-brew rm avr-gcc@8
-brew rm dfu-programmer
-brew rm dfu-util
-brew rm gcc-arm-none-eabi
-brew rm arm-gcc-bin@8
-brew rm avrdude
-brew install avr-gcc@8
-brew install dfu-programmer
-brew install dfu-util
-brew install arm-gcc-bin@8
-brew install avrdude
+brew rm avr-gcc avr-gcc@8 dfu-programmer dfu-util gcc-arm-none-eabi arm-gcc-bin@8 avrdude qmk
+brew install qmk/qmk/qmk
brew link --force avr-gcc@8
brew link --force arm-gcc-bin@8
-
```
### `avr-gcc` and LUFA
diff --git a/docs/feature_hd44780.md b/docs/feature_hd44780.md
index 0a174035be..dc476c734f 100644
--- a/docs/feature_hd44780.md
+++ b/docs/feature_hd44780.md
@@ -1,6 +1,6 @@
# HD44780 LCD Displays
-This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
+This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
@@ -50,8 +50,8 @@ LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
````
This is best done in your keyboards `matrix_init_kb` or your keymaps `matrix_init_user`.
It is advised to clear the display before use.
-To do so call `lcd_clrsrc()`.
+To do so call `lcd_clrscr()`.
To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
-There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
+There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index b90c341d5e..f0b3d75bd8 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -27,20 +27,17 @@ In the following example, a custom key is used to click the mouse and scroll 127
```c
case MS_SPECIAL:
- report_mouse_t currentReport = pointing_device_get_report();
- if (record->event.pressed)
- {
+ report_mouse_t currentReport = pointing_device_get_report();
+ if (record->event.pressed) {
currentReport.v = 127;
- currentReport.h = 127;
- currentReport.buttons |= MOUSE_BTN1; //this is defined in report.h
- }
- else
- {
+ currentReport.h = 127;
+ currentReport.buttons |= MOUSE_BTN1; // this is defined in report.h
+ } else {
currentReport.v = -127;
currentReport.h = -127;
currentReport.buttons &= ~MOUSE_BTN1;
}
- pointing_device_set_report(currentReport);
+ pointing_device_set_report(currentReport);
break;
```
diff --git a/docs/feature_rawhid.md b/docs/feature_rawhid.md
index ed848a4c79..01e215be45 100644
--- a/docs/feature_rawhid.md
+++ b/docs/feature_rawhid.md
@@ -44,7 +44,11 @@ To connect your host computer to your keyboard with raw HID you need four pieces
3. Usage Page
4. Usage
-The first two can easily be found in your keyboard's `config.h` in the keyboard's main directory under `VENDOR_ID` and `PRODUCT_ID`. **Usage Page** is **`0xFF60`** and **Usage** is **`0x0061`**.
+The first two can easily be found in your keyboard's `config.h` in the keyboard's main directory under `VENDOR_ID` and `PRODUCT_ID`.
+
+The final two can be overridden in your keyboard's `config.h` in the keyboard's main directory by redefining the values: `#define RAW_USAGE_PAGE 0xFF60` and `#define RAW_USAGE_ID 0x61`.
+
+By default, **Usage Page** is `0xFF60` and **Usage** is `0x61`.
### Building your host
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 2cec55ee77..a4f434cbd9 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -374,7 +374,8 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo
```c
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off
+#define RGB_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: number of ticks to wait until disabling effects
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
#define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
@@ -437,12 +438,16 @@ Where `28` is an unused index from `eeconfig.h`.
|`rgb_matrix_sethsv_noeeprom(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 (not written to EEPROM) |
### Query Current Status :id=query-current-status
-|Function |Description |
-|-----------------------|-----------------|
-|`rgb_matrix_get_mode()` |Get current mode |
-|`rgb_matrix_get_hue()` |Get current hue |
-|`rgb_matrix_get_sat()` |Get current sat |
-|`rgb_matrix_get_val()` |Get current val |
+|Function |Description |
+|---------------------------------|---------------------------|
+|`rgb_matrix_is_enabled()` |Gets current on/off status |
+|`rgb_matrix_get_mode()` |Gets current mode |
+|`rgb_matrix_get_hue()` |Gets current hue |
+|`rgb_matrix_get_sat()` |Gets current sat |
+|`rgb_matrix_get_val()` |Gets current val |
+|`rgb_matrix_get_hsv()` |Gets hue, sat, and val and returns a [`HSV` structure](https://github.com/qmk/qmk_firmware/blob/7ba6456c0b2e041bb9f97dbed265c5b8b4b12192/quantum/color.h#L56-L61)|
+|`rgb_matrix_get_speed()` |Gets current speed |
+|`rgb_matrix_get_suspend_state()` |Gets current suspend state |
## Callbacks :id=callbacks
diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md
index 219cd8317b..5921e9941a 100644
--- a/docs/feature_rgblight.md
+++ b/docs/feature_rgblight.md
@@ -94,6 +94,7 @@ if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a n
|`RGBLIGHT_MODE_STATIC_GRADIENT`| 0,1,..,9 |Static gradient |
|`RGBLIGHT_MODE_RGB_TEST` | *None* |RGB Test |
|`RGBLIGHT_MODE_ALTERNATING` | *None* |Alternating |
+|`RGBLIGHT_MODE_TWINKLE` | 0,1,2,3,4,5 |Twinkle |
Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstration.
@@ -103,8 +104,8 @@ Note: For versions older than 0.6.117, The mode numbers were written directly. I
Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.
-|Define |Default |Description |
-|------------------------------------|-------------|-------------------------------------------------------------------------------------|
+|Define |Default |Description |
+|------------------------------------|-------------|-------------------------------------------------------------------------|
|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. |
|`RGBLIGHT_EFFECT_ALTERNATING` |*Not defined*|Enable alternating animation mode. |
|`RGBLIGHT_EFFECT_BREATHING` |*Not defined*|Enable breathing animation mode. |
@@ -115,6 +116,7 @@ Use these defines to add or remove animations from the firmware. When you are ru
|`RGBLIGHT_EFFECT_RGB_TEST` |*Not defined*|Enable RGB test animation mode. |
|`RGBLIGHT_EFFECT_SNAKE` |*Not defined*|Enable snake animation mode. |
|`RGBLIGHT_EFFECT_STATIC_GRADIENT` |*Not defined*|Enable static gradient mode. |
+|`RGBLIGHT_EFFECT_TWINKLE` |*Not defined*|Enable twinkle animation mode. |
### Effect and Animation Settings
@@ -131,6 +133,8 @@ The following options are used to tweak the various animations:
|`RGBLIGHT_EFFECT_KNIGHT_OFFSET` |`0` |The number of LEDs to start the "Knight" animation from the start of the strip by |
|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`255` |Range adjustment for the rainbow swirl effect to get different swirls |
|`RGBLIGHT_EFFECT_SNAKE_LENGTH` |`4` |The number of LEDs to light up for the "Snake" animation |
+|`RGBLIGHT_EFFECT_TWINKLE_LIFE` |`75` |Adjusts how quickly each LED brightens and dims when twinkling (in animation steps) |
+|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
### Example Usage to Reduce Memory Footprint
1. Remove `RGBLIGHT_ANIMATIONS` from `config.h`.
@@ -168,6 +172,9 @@ const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};
// How long (in milliseconds) to wait between animation steps for each of the "Knight" animations
const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};
+// How long (in milliseconds) to wait between animation steps for each of the "Twinkle" animations
+const uint8_t RGBLED_TWINKLE_INTERVALS[] PROGMEM = {50, 25, 10};
+
// These control which hues are selected for each of the "Static gradient" modes
const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
```
@@ -177,6 +184,10 @@ const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
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.
+### Defining Lighting Layers :id=defining-lighting-layers
+
+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:
```c
@@ -211,8 +222,12 @@ void keyboard_post_init_user(void) {
rgblight_layers = my_rgb_layers;
}
```
+Note: For split keyboards with two controllers, both sides need to be flashed when updating the contents of rgblight_layers.
+
+### Enabling and disabling lighting layers :id=enabling-lighting-layers
-Finally, we enable and disable the lighting layers whenever the state of the keyboard changes:
+Everything above just configured the definition of each lighting layer.
+We can now enable and disable the lighting layers whenever the state of the keyboard changes:
```c
layer_state_t layer_state_set_user(layer_state_t state) {
@@ -228,7 +243,44 @@ bool led_update_user(led_t led_state) {
}
```
-Note: For split keyboards with two controllers, both sides need to be flashed when updating the contents of rgblight_layers.
+### Lighting layer blink :id=lighting-layer-blink
+
+By including `#define RGBLIGHT_LAYER_BLINK` in your `config.h` file you can turn a lighting
+layer on for a specified duration. Once the specified number of milliseconds has elapsed
+the layer will be turned off. This is useful, e.g., if you want to acknowledge some
+action (e.g. toggling some setting):
+
+```c
+const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_GREEN} );
+const rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_RED} );
+
+const rgblight_segment_t* const PROGMEM _rgb_layers[] =
+ RGBLIGHT_LAYERS_LIST( _yes_layer, _no_layer );
+
+void keyboard_post_init_user(void) {
+ rgblight_layers = _rgb_layers;
+}
+
+// Note we user post_process_record_user because we want the state
+// after the flag has been flipped...
+void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case DEBUG:
+ rgblight_blink_layer(debug_enable ? 0 : 1, 500);
+ break;
+
+ case NK_TOGG:
+ case NK_ON:
+ case NK_OFF:
+ rgblight_blink_layer(keymap_config.nkro ? 0 : 1, 500);
+ break;
+ }
+}
+```
+
+### Overriding RGB Lighting on/off status
+
+Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
## Functions
@@ -328,12 +380,14 @@ rgblight_sethsv(HSV_GREEN, 2); // led 2
|`rgblight_set_layer_state(i, is_on)` |Enable or disable lighting layer `i` based on value of `bool is_on` |
#### query
-|Function |Description |
-|-----------------------|-----------------|
-|`rgblight_get_mode()` |Get current mode |
-|`rgblight_get_hue()` |Get current hue |
-|`rgblight_get_sat()` |Get current sat |
-|`rgblight_get_val()` |Get current val |
+|Function |Description |
+|-----------------------|---------------------------|
+|`rgblight_is_enabled()`|Gets current on/off status |
+|`rgblight_get_mode()` |Gets current mode |
+|`rgblight_get_hue()` |Gets current hue |
+|`rgblight_get_sat()` |Gets current sat |
+|`rgblight_get_val()` |Gets current val |
+|`rgblight_get_speed()` |Gets current speed |
## Colors
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index 66194c5f4b..63374a804e 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -8,9 +8,20 @@ QMK Firmware has a generic implementation that is usable by any board, as well a
For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards.
-!> ARM is not yet supported for Split Keyboards. Progress is being made, but we are not quite there, yet.
+!> ARM is not yet fully supported for Split Keyboards and has many limitations. Progress is being made, but we have not yet reached 100% feature parity.
+## Compatibility Overview
+
+| Transport | AVR | ARM |
+|------------------------------|--------------------|--------------------|
+| ['serial'](serial_driver.md) | :heavy_check_mark: | :white_check_mark: <sup>1</sup> |
+| I2C | :heavy_check_mark: | |
+
+Notes:
+
+1. Both hardware and software limitations are detailed within the [driver documentation](serial_driver.md).
+
## Hardware Configuration
This assumes that you're using two Pro Micro-compatible controllers, and are using TRRS jacks to connect to two halves.
diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md
index 09e01d50d3..009477d203 100644
--- a/docs/feature_swap_hands.md
+++ b/docs/feature_swap_hands.md
@@ -28,3 +28,4 @@ Note that the array indices are reversed same as the matrix and the values are o
|`SH_MOFF` |Momentarily turns off swap. |
|`SH_TG` |Toggles swap on and off with every key press. |
|`SH_TT` |Toggles with a tap; momentary when held. |
+|`SH_OS` |One shot swap hands: toggles while pressed or until next key press. |
diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md
index ac0a1360d9..8665481db9 100644
--- a/docs/feature_userspace.md
+++ b/docs/feature_userspace.md
@@ -1,6 +1,6 @@
# Userspace: Sharing Code Between Keymaps
-If you use more than one keyboard with a similar keymap, you might see the benefit in being able to share code between them. Create your own folder in `users/` named the same as your keymap (ideally your github username, `<name>`) with the following structure:
+If you use more than one keyboard with a similar keymap, you might see the benefit in being able to share code between them. Create your own folder in `users/` named the same as your keymap (ideally your GitHub username, `<name>`) with the following structure:
* `/users/<name>/` (added to the path automatically)
* `readme.md` (optional, recommended)
@@ -73,7 +73,7 @@ The reason for this, is that `<name>.h` won't be added in time to add settings (
## Readme (`readme.md`)
-Please include authorship (your name, github username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses).
+Please include authorship (your name, GitHub username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses).
You can use this as a template:
```
@@ -93,7 +93,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
```
-You'd want to replace the year, name, email and github username with your info.
+You'd want to replace the year, name, email and GitHub username with your info.
Additionally, this is a good place to document your code, if you wish to share it with others.
diff --git a/docs/fr-fr/README.md b/docs/fr-fr/README.md
index 4527ec4b42..3743bedc97 100644
--- a/docs/fr-fr/README.md
+++ b/docs/fr-fr/README.md
@@ -4,8 +4,8 @@
[![Statut du build](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![Statut de la doc](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![Contributeurs Github](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![Forks Github](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
+[![Contributeurs GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
+[![Forks GitHub](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
## Qu'est-ce que QMK Firmware ?
@@ -13,7 +13,7 @@ QMK (*Quantum Mechanical Keyboard*) est une communauté open source qui maintien
## Comment l'obtenir
-Si vous souhaitez contribuer à une disposition de clavier (keymap), ou à des fonctionnalités de QMK alors le plus simple est de [forker le dépôt avec Github](https://github.com/qmk/qmk_firmware#fork-destination-box) puis cloner le dépôt localement pour y faire des changements. Vous pourrez pousser vos changements sur github puis ouvrir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) depuis votre fork Github.
+Si vous souhaitez contribuer à une disposition de clavier (keymap), ou à des fonctionnalités de QMK alors le plus simple est de [forker le dépôt avec GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) puis cloner le dépôt localement pour y faire des changements. Vous pourrez pousser vos changements sur GitHub puis ouvrir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) depuis votre fork GitHub.
Sinon, vous pouvez aussi le télécharger directement en ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), ou le cloner avec git en ssh (`[email protected]:qmk/qmk_firmware.git`), ou https (`https://github.com/qmk/qmk_firmware.git`).
diff --git a/docs/fr-fr/breaking_changes.md b/docs/fr-fr/breaking_changes.md
index 53bbb2212a..2dbb26e5a5 100644
--- a/docs/fr-fr/breaking_changes.md
+++ b/docs/fr-fr/breaking_changes.md
@@ -101,7 +101,7 @@ Ceci est fait immédiatement après la fusion de la branche `future` précédent
* [ ] Regroupe ChangeLog dans un fichier.
* [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
* [ ] `git push origin future`
-* Actions sur Github
+* Actions sur GitHub
* [ ] Crée un PR pour `future`
* [ ] S'assurer que Travis ne relève aucun problème
* [ ] Fusion le PR `future`
diff --git a/docs/fr-fr/getting_started_github.md b/docs/fr-fr/getting_started_github.md
index 48755625a7..76d107dfb9 100644
--- a/docs/fr-fr/getting_started_github.md
+++ b/docs/fr-fr/getting_started_github.md
@@ -6,11 +6,11 @@ GitHub peut être un peu compliqué pour ceux qui n'y sont pas familier. Ce guid
Commencez par la [page GitHub de QMK](https://github.com/qmk/qmk_firmware), et vous verrez un bouton dans le coin en haut à droite qui indique "Fork":
-![Fork on Github](http://i.imgur.com/8Toomz4.jpg)
+![Fork on GitHub](http://i.imgur.com/8Toomz4.jpg)
Si vous faites partie d'une organisation, vous aurez besoin de savoir quel compte utiliser pour le fork. Dans la plupart des cas, vous voudrez créer le fork dans votre compte personnel. Une fois le fork complet (cela peut quelques fois prendre un peu de temps), appuyez sur le bouton "Clone or download":
-![Download from Github](http://i.imgur.com/N1NYcSz.jpg)
+![Download from GitHub](http://i.imgur.com/N1NYcSz.jpg)
Faites attention à sélectionner "HTTPS", et sélectionnez le lien et copiez-le:
diff --git a/docs/fr-fr/newbs_best_practices.md b/docs/fr-fr/newbs_best_practices.md
index 1491013147..ec68a5e3e5 100644
--- a/docs/fr-fr/newbs_best_practices.md
+++ b/docs/fr-fr/newbs_best_practices.md
@@ -44,7 +44,7 @@ git pull upstream master
git push origin master
```
-Cela vous change la branche courante en master, synchronise les données de références du dépôt QMK vers votre ordinateur. La commande pull tire les données de références vers votre branche courante puis les y téleverse. La commande push permet de pousser la branche courante (master) vers votre fork github.
+Cela vous change la branche courante en master, synchronise les données de références du dépôt QMK vers votre ordinateur. La commande pull tire les données de références vers votre branche courante puis les y téleverse. La commande push permet de pousser la branche courante (master) vers votre fork GitHub.
### Faire des changements
diff --git a/docs/getting_started_docker.md b/docs/getting_started_docker.md
new file mode 100644
index 0000000000..e5309fdbbf
--- /dev/null
+++ b/docs/getting_started_docker.md
@@ -0,0 +1,47 @@
+# Docker Quick Start
+
+This project includes a Docker workflow that will allow you to build a new firmware for your keyboard very easily without major changes to your primary operating system. This also ensures that when you clone the project and perform a build, you have the exact same environment as anyone else and the QMK build infrastructure. This makes it much easier for people to help you troubleshoot any issues you encounter.
+
+## Requirements
+
+The main prerequisite is a working `docker` install.
+* [Docker CE](https://docs.docker.com/install/#supported-platforms)
+
+## Usage
+
+Acquire a local copy of the QMK's repository (including submodules):
+
+```bash
+git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
+cd qmk_firmware
+```
+
+Run the following command to build a keymap:
+```bash
+util/docker_build.sh <keyboard>:<keymap>
+# For example: util/docker_build.sh planck/rev6:default
+```
+
+This will compile the desired keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, all keymaps are used. Note that the parameter format is the same as when building with `make`.
+
+There is also support for building _and_ flashing the keyboard straight from Docker by specifying the `target` as well:
+
+```bash
+util/docker_build.sh keyboard:keymap:target
+# For example: util/docker_build.sh planck/rev6:default:flash
+```
+
+You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
+
+```bash
+util/docker_build.sh
+# Reads parameters as input (leave blank for all keyboards/keymaps)
+```
+
+## FAQ
+
+### Why can't I flash on Windows/macOS
+
+On Windows and macOS, it requires [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/) to be running. This is tedious to set up, so it's not recommended; use [QMK Toolbox](https://github.com/qmk/qmk_toolbox) instead.
+
+!> Docker for Windows requires [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) to be enabled. This means that it cannot work on versions of Windows which don't have Hyper-V, such as Windows 7, Windows 8 and **Windows 10 Home**.
diff --git a/docs/getting_started_github.md b/docs/getting_started_github.md
index 07f523f578..ae594f68d8 100644
--- a/docs/getting_started_github.md
+++ b/docs/getting_started_github.md
@@ -1,16 +1,16 @@
-# How to Use Github with QMK
+# How to Use GitHub with QMK
-Github can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
+GitHub can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
?> This guide assumes you're somewhat comfortable with running things at the command line, and have git installed on your system.
-Start on the [QMK Github page](https://github.com/qmk/qmk_firmware), and you'll see a button in the upper right that says "Fork":
+Start on the [QMK GitHub page](https://github.com/qmk/qmk_firmware), and you'll see a button in the upper right that says "Fork":
-![Fork on Github](http://i.imgur.com/8Toomz4.jpg)
+![Fork on GitHub](http://i.imgur.com/8Toomz4.jpg)
If you're a part of an organization, you'll need to choose which account to fork it to. In most circumstances, you'll want to fork it to your personal account. Once your fork is completed (sometimes this takes a little while), click the "Clone or Download" button:
-![Download from Github](http://i.imgur.com/N1NYcSz.jpg)
+![Download from GitHub](http://i.imgur.com/N1NYcSz.jpg)
And be sure to select "HTTPS", and select the link and copy it:
@@ -54,7 +54,7 @@ To https://github.com/whoeveryouare/qmk_firmware.git
+ 20043e64...7da94ac5 master -> master
```
-Your changes now exist on your fork on Github - if you go back there (`https://github.com/<whoeveryouare>/qmk_firmware`), you can create a "New Pull Request" by clicking this button:
+Your changes now exist on your fork on GitHub - if you go back there (`https://github.com/<whoeveryouare>/qmk_firmware`), you can create a "New Pull Request" by clicking this button:
![New Pull Request](http://i.imgur.com/DxMHpJ8.jpg)
diff --git a/docs/he-il/README.md b/docs/he-il/README.md
index 8e0c470b44..c16801b2bd 100644
--- a/docs/he-il/README.md
+++ b/docs/he-il/README.md
@@ -14,7 +14,7 @@ QMK (*Quantum Mechanical Keyboard*) היא קהילת קוד פתוח (open sour
## איך להשיג אותה
-אם אתם מתכננים לתרום מיפוי מקשים, מקלדת או יכולת ל QMK, הדבר הקל ביותר הוא [לעשות פורק לריפו בGithub](https://github.com/qmk/qmk_firmware#fork-destination-box), ולעשות קלון לריפו בסביבה המקומית ושם לבצע את השינויים שלכם, לדחוף אותם ולפתוח [Pull Request](https://github.com/qmk/qmk_firmware/pulls) מהפורק שלך.
+אם אתם מתכננים לתרום מיפוי מקשים, מקלדת או יכולת ל QMK, הדבר הקל ביותר הוא [לעשות פורק לריפו בGitHub](https://github.com/qmk/qmk_firmware#fork-destination-box), ולעשות קלון לריפו בסביבה המקומית ושם לבצע את השינויים שלכם, לדחוף אותם ולפתוח [Pull Request](https://github.com/qmk/qmk_firmware/pulls) מהפורק שלך.
אחרת, אפשר להוריד את הקושחה באופן ישיר ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), או לשכפל אותה באמצעות git (`[email protected]:qmk/qmk_firmware.git`), או https (`https://github.com/qmk/qmk_firmware.git`).
diff --git a/docs/he-il/_summary.md b/docs/he-il/_summary.md
index bdacd0d1fd..148eb6400d 100644
--- a/docs/he-il/_summary.md
+++ b/docs/he-il/_summary.md
@@ -5,7 +5,7 @@
* [מקורות ללמידה](he-il/newbs_learn_more_resources.md)
* [בסיס QMK](he-il/README.md)
* [מבוא לQMK](he-il/getting_started_introduction.md)
- * [איך להשתמש בGithub](he-il/getting_started_github.md)
+ * [איך להשתמש בGitHub](he-il/getting_started_github.md)
* [קבלת עזרה](he-il/getting_started_getting_help.md)
* [שאלות נפוצות](he-il/faq.md)
* [שאלות נפוצות כלליות](he-il/faq_general.md)
@@ -27,7 +27,7 @@
* [QMK CLI](he-il/cli.md)
* [QMK CLI Config](he-il/cli_configuration.md)
* [תרומה ל QMK](he-il/contributing.md)
- * [איך להשתמש בGithub](he-il/getting_started_github.md)
+ * [איך להשתמש בGitHub](he-il/getting_started_github.md)
* [קבלת עזרה](he-il/getting_started_getting_help.md)
* [שינויים משמעותיים](he-il/breaking_changes.md)
diff --git a/docs/he-il/getting_started_getting_help.md b/docs/he-il/getting_started_getting_help.md
index 1a2edc3133..e62c9f403d 100644
--- a/docs/he-il/getting_started_getting_help.md
+++ b/docs/he-il/getting_started_getting_help.md
@@ -11,7 +11,7 @@
הפורום הרשמי של QMK נמצא ב - [/r/olkb](https://reddit.com/r/olkb) באתר [reddit.com](https://reddit.com).
-## סוגיות Github
+## סוגיות GitHub
ניתן לפתוח [סוגייה ב-GitHub](https://github.com/qmk/qmk_firmware/issues). הדבר שימושי במיוחד כאשר הסוגיה דורשת דיון עמוק וארוך או דיבאגינג.
</div> \ No newline at end of file
diff --git a/docs/he-il/getting_started_github.md b/docs/he-il/getting_started_github.md
index e5d0f7c782..5cafac5ac5 100644
--- a/docs/he-il/getting_started_github.md
+++ b/docs/he-il/getting_started_github.md
@@ -1,17 +1,17 @@
<div dir="rtl" markdown="1">
-# איך להשתמש ב-Github עם QMK
+# איך להשתמש ב-GitHub עם QMK
-Github עלול להיות קצת טריקי למי שלא מכיר את העבודה איתו - מדריך זה ילווה אתכם שלב אחר שלב דרך ביצוע פעולות fork, clone ו-pull request עם QMK.
+GitHub עלול להיות קצת טריקי למי שלא מכיר את העבודה איתו - מדריך זה ילווה אתכם שלב אחר שלב דרך ביצוע פעולות fork, clone ו-pull request עם QMK.
?> מדריך זה מניח שאתם מרגישים בנוח עם הרצה של פקודות בסביבת command line (שורת הפקודה) ו-git מותקן במערכת שלכם.
-התחילו ב- [עמוד של QMK ב-Github](https://github.com/qmk/qmk_firmware), ותצמאו כפתור בחלק העליון מימין עם התיכוב "Fork":
+התחילו ב- [עמוד של QMK ב-GitHub](https://github.com/qmk/qmk_firmware), ותצמאו כפתור בחלק העליון מימין עם התיכוב "Fork":
-![Fork ב-Github](http://i.imgur.com/8Toomz4.jpg)
+![Fork ב-GitHub](http://i.imgur.com/8Toomz4.jpg)
אם אתם חלק מארגון, תצטרכו לבחור לאיזה חשבון לבצע פעולת fork. ברוב המבקרים, תרצו לבצע fork לתוך החשבון הפרטי שלכם. ברגע שה-fork הסתיים (לפעמים זה יכול לקחת קצת זמן) הקליקו על כפתור ה-"Clone or Download":
-![הורדה מ-Github](http://i.imgur.com/N1NYcSz.jpg)
+![הורדה מ-GitHub](http://i.imgur.com/N1NYcSz.jpg)
תוודאו שאתם בוחרים באופצייה של "HTTPS", בחרו את הקישור והעתיקו אותו:
diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md
index 944dd34622..8ee5a40d9e 100644
--- a/docs/isp_flashing_guide.md
+++ b/docs/isp_flashing_guide.md
@@ -115,12 +115,18 @@ The simplest and quickest way to get things back to normal is to flash only a bo
You can find the stock bootloaders in the [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util). Be sure to flash the correct bootloader for your chip:
-* [`atmega32u4`](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1_0_0.hex) - Most keyboards, Planck Rev 1-5, Preonic Rev 1-2
-* [`Pro Micro`](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex) - The default bootloader for Pro Micro controllers
-* [`at90usb1286`](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128x_1_0_1.hex) - Planck Light Rev 1
-* [`atmega32a`](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32a_1_0_0.hex) - jj40, and other V-USB/ps2avrGB keyboards
-
-If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU =` line will have the value you need. It may differ between different versions of the board.
+* **Atmel DFU**
+ * [ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)
+ * [ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)
+ * [AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex)
+ * [AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)
+* **Caterina**
+ * [Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex)
+ * [Pro Micro (3.3V/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex)
+* **BootloadHID (PS2AVRGB)**
+ * [ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)
+
+If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the value you need. It may differ between different versions of the board.
### Production Techniques
diff --git a/docs/ja/cli_configuration.md b/docs/ja/cli_configuration.md
index 7e9c3e57fa..d21a27596d 100644
--- a/docs/ja/cli_configuration.md
+++ b/docs/ja/cli_configuration.md
@@ -113,7 +113,7 @@ compile.keymap: skully -> None
|-----|---------------|-------------|
| user.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
| user.keymap | None | キーマップ名 (例: `default`) |
-| user.name | None | ユーザの github のユーザ名。 |
+| user.name | None | ユーザの GitHub のユーザ名。 |
# 全ての設定オプション
diff --git a/docs/ja/custom_quantum_functions.md b/docs/ja/custom_quantum_functions.md
index 7e4fbd897e..1524717c8e 100644
--- a/docs/ja/custom_quantum_functions.md
+++ b/docs/ja/custom_quantum_functions.md
@@ -62,7 +62,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ENTER:
// enter が押された時に音を再生します
if (record->event.pressed) {
- PLAY_NOTE_ARRAY(tone_qwerty);
+ PLAY_SONG(tone_qwerty);
}
return true; // QMK に enter のプレスまたはリリースイベントを送信させます
default:
@@ -440,7 +440,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ENTER:
// enter が押された時に音を再生します
if (record->event.pressed) {
- PLAY_NOTE_ARRAY(tone_qwerty);
+ PLAY_SONG(tone_qwerty);
}
return true; // QMK に enter のプレスまたはリリースイベントを送信させます
case RGB_LYR: // これにより、アンダーグローをレイヤー表示として、あるいは通常通りに使うことができます。
@@ -511,7 +511,7 @@ void eeconfig_init_user(void) { // EEPROM がリセットされます!
キーコードに基づいて `TAPPING_TERM` を変更するには、次のようなものを `keymap.c` ファイルに追加します:
```c
-uint16_t get_tapping_term(uint16_t keycode) {
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SFT_T(KC_SPC):
return TAPPING_TERM + 1250;
@@ -528,7 +528,7 @@ uint16_t get_tapping_term(uint16_t keycode) {
キーコードに基づいて `IGNORE_MOD_TAP_INTERRUPT` の値を変更するには、次のようなものを `keymap.c` ファイルに追加します:
```c
-bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
+bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SFT_T(KC_SPC):
return true;
diff --git a/docs/ja/feature_hd44780.md b/docs/ja/feature_hd44780.md
index 5258632536..5ca4aade1e 100644
--- a/docs/ja/feature_hd44780.md
+++ b/docs/ja/feature_hd44780.md
@@ -55,7 +55,7 @@ LCD_DISP_ON_CURSOR_BLINK : ディスプレイオン、点滅カーソル
````
これはキーボードの `matrix_init_kb` またはキーマップの `matrix_init_user` で行うのが最適です。
使用前にディスプレイをクリアすることをお勧めします。
-そのためには、`lcd_clrsrc()` を呼びます。
+そのためには、`lcd_clrscr()` を呼びます。
ディスプレイに何かを表示するには、最初に `lcd_gotoxy(column, line)` を呼びます。最初の行の先頭に移動するには、`lcd_gotoxy(0, 0)` を呼び出し、その後 `lcd_puts("example string")` を使って文字列を出力します。
diff --git a/docs/ja/feature_layouts.md b/docs/ja/feature_layouts.md
new file mode 100644
index 0000000000..9b36a1eda5
--- /dev/null
+++ b/docs/ja/feature_layouts.md
@@ -0,0 +1,114 @@
+# レイアウト: 複数のキーボードで1つのキーマップを使用
+
+<!---
+ original document: 0.8.134:docs/feature_layouts.md
+ git diff 0.8.134 HEAD -- docs/feature_layouts.md | cat
+-->
+
+`layouts/` フォルダは、様々なキーボードに適用できる色々な物理キーレイアウトを含みます。
+
+```
+layouts/
++ default/
+| + 60_ansi/
+| | + readme.md
+| | + layout.json
+| | + a_good_keymap/
+| | | + keymap.c
+| | | + readme.md
+| | | + config.h
+| | | + rules.mk
+| | + <keymap folder>/
+| | + ...
+| + <layout folder>/
++ community/
+| + <layout folder>/
+| + ...
+```
+
+`layouts/default/` と `layouts/community/` は、レイアウト「repositories」の2つの例です。現在のところ、`default` にはユーザの参考用に、レイアウトに関する全ての情報および、`default_<layout>` という名前の1つのデフォルトのキーマップが含まれています。`community` には全ての共有キーマップが含まれており、それらはユーザが `layouts/` にクローンするための別のリポジトリに分割することを最終的な目的としていますQMK は `layouts/` 内のすべてのフォルダを検索するため、ここに複数のリポジトリを持つことができます。
+
+各レイアウトフォルダは、レイアウトの物理的な側面に基づいて、可能な限り一般的な名称で(`[a-z0-9_]`)という名前が付けられ、キーボードで定義されるレイアウトと一緒に `readme.md` を含みます。
+
+```md
+# 60_ansi
+
+ LAYOUT_60_ansi
+```
+
+新しい名前は既存のレイアウトで設定された標準に準拠しようと努力する必要があり、必要に応じて PR/Issue で議論することができます。
+
+## レイアウトのサポート
+
+キーボードがレイアウトをサポートするために、変数は `<keyboard>.h` で定義し、引数/キー (できれば物理レイアウト)の数に一致している必要があります。
+
+ #define LAYOUT_60_ansi KEYMAP_ANSI
+
+レイアウトの名前は次の正規表現に一致しなければなりません: `[a-z0-9_]+`
+
+フォルダ名はキーボードの `rules.mk` に追加する必要があります:
+
+ LAYOUTS = 60_ansi
+
+`LAYOUTS` は任意のキーボードフォルダレべルの `rules.mk` に設定することができます:
+
+ LAYOUTS = 60_iso
+
+ただし、`LAYOUT_<layout>` 変数は `<folder>.h` でも定義する必要があります。
+
+## キーマップのビルド
+
+以下の形式でコマンドを使ってキーボードキーマップを作成できるはずです:
+
+ make <keyboard>:<layout>
+
+### レイアウトの競合
+キーボードが複数のレイアウトオプションをサポートし、
+
+ LAYOUTS = ortho_4x4 ortho_4x12
+
+なおかつ両方のオプションについてレイアウトが存在する場合、
+```
+layouts/
++ community/
+| + ortho_4x4/
+| | + <layout>/
+| | | + ...
+| + ortho_4x12/
+| | + <layout>/
+| | | + ...
+| + ...
+```
+
+FORCE_LAYOUT 引数はどのレイアウトをビルドするかを指定するために使うことができます
+
+ make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4
+ make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12
+
+## キーボードに依存しないレイアウトを作成するためのヒント
+
+### インクルード
+
+`#include "planck.h"` を使う代わりに、以下の行を使ってコンパイルされる `<keyboard>.h` (`<folder>.h` はここでインクルードすべきではありません)ファイルをインクルードすることができます:
+
+ #include QMK_KEYBOARD_H
+
+キーボード固有のコードを保持したい場合は、これらの変数を使って `#ifdef` 文でエスケープすることができます:
+
+* `KEYBOARD_<folder1>_<folder2>`
+
+例えば:
+
+```c
+#ifdef KEYBOARD_planck
+ #ifdef KEYBOARD_planck_rev4
+ planck_rev4_function();
+ #endif
+#endif
+```
+
+名前は小文字でキーボード/リビジョンのフォルダ/ファイル名と正確に一致することに注意してください。
+
+### キーマップ
+
+同じレイアウトで分割および非分割キーボードをサポートするためには、キーマップでキーボード非依存の `LAYOUT_<layout name>` マクロを使う必要があります。例えば、Let's Split および Planck が同じレイアウトを共有するには、`LAYOUT_planck_grid` や C 配列の場合の単なる `{}` の代わりに、`LAYOUT_ortho_4x12` を使う必要があります。
diff --git a/docs/ja/feature_leader_key.md b/docs/ja/feature_leader_key.md
new file mode 100644
index 0000000000..538358a6b2
--- /dev/null
+++ b/docs/ja/feature_leader_key.md
@@ -0,0 +1,151 @@
+# リーダーキー: 新しい種類のモディファイア
+
+<!---
+ original document: 0.8.134:docs/feature_leader_key.md
+ git diff 0.8.134 HEAD -- docs/feature_leader_key.md | cat
+-->
+
+もしあなたが Vim を使ったことがある場合、リーダーキーは何であるかを知っています。そうでなければ、素晴らしい概念を発見しようとしています。:) 例えば、Alt+Shift+W を押す(3つのキーを同時に押す)代わりに、キーの_シーケンス_を押すことができたらどうでしょう?つまり、特別なモディファイア (リーダーキー)を押して、続けて W と C を押すと (単純にキーを高速に繋げます)、何かが起こります。
+
+それが `KC_LEAD` の機能です。以下は例です:
+
+1. リーダーキーとして使いたいキーボードのキーを選択します。それにキーコード `KC_LEAD` を割り当てます。このキーはこのためだけの専用です -- 単一アクションのキーで、他の用途には使うことができません。
+2. `config.h` に `#define LEADER_TIMEOUT 300` という行を追加します。これによって `KC_LEAD` キーのタイムアウトを設定します。具体的には、`KC_LEAD` キーを押してからリーダーキーのシーケンスを完了するまで一定の時間しかありません。ここでの `300` はそれを300msに設定します。この値を増やして、シーケンスを入力する時間を増やすことができます。ただし、この時間中に押されたキーは全て途中で遮られ、送信されません。そのためこの値は小さくしておいたほうが良いかもしれません。
+ * デフォルトでは、このタイムアウトは、`KC_LEAD` を押してからシーケンス全体が完了するまでに掛かる時間です。これは一部の人にとっては非常に短いかもしれません。そのため、このタイムアウトを増やしたほうが良い場合もあります。必要に応じて、`LEADER_PER_KEY_TIMING` オプションを有効にしたほうが良い場合もあります。これは各キーがタップされる度にタイムアウトまでの時間をリセットする機能です。これにより、タイムアウト時間を短くしつつも、比較的長いシーケンスを使うことができます。このオプションを有効にするには、`config.h` に `#define LEADER_PER_KEY_TIMING` を追加します。
+3. `matrix_scan_user` 関数の中で、以下のようなものを追加します:
+
+```c
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ leading = false;
+ leader_end();
+
+ SEQ_ONE_KEY(KC_F) {
+ // マクロ内でできること
+ SEND_STRING("QMK is awesome.");
+ }
+ SEQ_TWO_KEYS(KC_D, KC_D) {
+ SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
+ }
+ SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
+ SEND_STRING("https://start.duckduckgo.com\n");
+ }
+ SEQ_TWO_KEYS(KC_A, KC_S) {
+ register_code(KC_LGUI);
+ register_code(KC_S);
+ unregister_code(KC_S);
+ unregister_code(KC_LGUI);
+ }
+ }
+}
+```
+
+ご覧のとおり、幾つかの関数があります。`SEQ_ONE_KEY` を単一キーシーケンス (リーダーの後に1つのキーのみ)に使い、より長いシーケンスについては `SEQ_TWO_KEYS`、`SEQ_THREE_KEYS` から `SEQ_FIVE_KEYS` を使うことができます。
+
+これらはそれぞれ1つ以上のキーコードを引数として受け付けます。これは重要な点です: **キーボードの任意のレイヤー**のキーコードを使うことができます。当たり前ですが、リーダーマクロが発動するにはそのレイヤーがアクティブである必要があります
+
+## `rules.mk` にリーダーキーサポートを追加
+
+リーダーキーのサポートを追加するには、単純にキーマップの `rules.mk` に1行を追加します:
+
+```make
+LEADER_ENABLE = yes
+```
+
+## リーダーキーのキーごとのタイミング
+
+長いリーダーキー文字列のためや 200wpm のタイピングスキルが無い場合に、非常に長いタイムアウト時間に頼るのではなく、キーを押すごとに入力を完了するまでの時間を増やす機能を使用することができます。これは、リーダーキーを使ってタップダンスを再現する場合に非常に役立ちます (C, C, C のような同じキーを複数回タップする場合)。
+
+これを有効にするには、以下を `config.h` に配置します:
+```c
+#define LEADER_PER_KEY_TIMING
+```
+
+この後、`LEADER_TIMEOUT` を 300ms 未満に下げることをお勧めします。
+
+```c
+#define LEADER_TIMEOUT 250
+```
+
+これで、リーダーキーのタイムアウト時間を 1000ms に設定することなく以下のようなことが可能になると思われます。
+
+```c
+SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
+ SEND_STRING("Per key timing is great!!!");
+}
+```
+
+## 厳密なキー処理
+
+デフォルトでは、リーダーキー機能は、リーダーシーケンスの確認時に [`モッドタップ`](ja/mod_tap.md) および [`レイヤータップ`](ja/feature_layers.md#switching-and-toggling-layers) 機能からのキーコードをフィルターします。つまり、`LT(3, KC_A)` を使っている場合、`LT(3, KC_A)` ではなくシーケンスの `KC_A` として取り出され、新しいユーザにとってより期待される動作を提供します。
+
+ほとんどの場合これで問題ありませんが、シーケンスでキーコード全体(例えば、上の例での `LT(3, KC_A)`) を指定したい場合は、`config.h` ファイルに `#define LEADER_KEY_STRICT_KEY_PROCESSING` を追加することこのような機能を有効にすることができます。これでフィルタリングが無効になり、キーコード全体を指定する必要があります。
+
+## カスタマイズ
+
+リーダーキー機能には、リーダーキー機能の動作にいくらかのカスタマイズを追加する方法があります。リーダーキー機能のプロセスの特定の部分で呼び出すことができる2つの関数、`leader_start()` と `leader_end()` です。
+
+`KC_LEAD` キーがタップされた時に `leader_start()` 関数が呼ばれ、リーダーシーケンスが完了するか、リーダータイムアウトの時間に達した時に `leader_end()` 関数が呼ばれます。
+
+リーダーシーケンスにフィードバック(ビープまたは音楽を再生するなど)を追加するために、これらの関数をコード (通常 は`keymap.c`)に追加することができます。
+
+```c
+void leader_start(void) {
+ // シーケンスの開始
+}
+
+void leader_end(void) {
+ // シーケンスの終了 (成功しない/失敗を検知)
+}
+```
+
+### 例
+
+この例では、リーダーシーケンスを開始するために `KC_LEAD` を押すとマリオの "One Up" 音が再生され、正常に完了した場合は "All Star" が再生され、失敗した場合は "Rick Roll" を再生されます。
+
+```c
+bool did_leader_succeed;
+#ifdef AUDIO_ENABLE
+float leader_start[][2] = SONG(ONE_UP_SOUND );
+float leader_succeed[][2] = SONG(ALL_STAR);
+float leader_fail[][2] = SONG(RICK_ROLL);
+#endif
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ did_leader_succeed = leading = false;
+
+ SEQ_ONE_KEY(KC_E) {
+ // マクロ内でできること
+ SEND_STRING(SS_LCTL(SS_LSFT("t")));
+ did_leader_succeed = true;
+ } else
+ SEQ_TWO_KEYS(KC_E, KC_D) {
+ SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c"));
+ did_leader_succeed = true;
+ }
+ leader_end();
+ }
+}
+
+void leader_start(void) {
+#ifdef AUDIO_ENABLE
+ PLAY_SONG(leader_start);
+#endif
+}
+
+void leader_end(void) {
+ if (did_leader_succeed) {
+#ifdef AUDIO_ENABLE
+ PLAY_SONG(leader_succeed);
+#endif
+ } else {
+#ifdef AUDIO_ENABLE
+ PLAY_SONG(leader_fail);
+#endif
+ }
+}
+```
diff --git a/docs/ja/feature_led_matrix.md b/docs/ja/feature_led_matrix.md
new file mode 100644
index 0000000000..b2595f9989
--- /dev/null
+++ b/docs/ja/feature_led_matrix.md
@@ -0,0 +1,95 @@
+# LED マトリックスライト
+
+<!---
+ original document: 0.8.141:docs/feature_led_matrix.md
+ git diff 0.8.141 HEAD -- docs/feature_led_matrix.md | cat
+-->
+
+この機能により、外部ドライバによって駆動される LED マトリックスを使うことができます。この機能は、バックライト制御と同じキーコードを使えるようにするため、バックライトシステムに接続します。
+
+RGB LED を使いたい場合は、代わりに [RGB マトリックスサブシステム](ja/feature_rgb_matrix.md) を使うべきです。
+
+## ドライバ設定
+
+### IS31FL3731
+
+I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED マトリックスライトのための基本的なサポートがあります:有効にするには、`rules.mk` に以下を追加します:
+
+ LED_MATRIX_ENABLE = IS31FL3731
+
+1から4個の IS31FL3731 IC を使うことができます。キーボード上に存在しない IC の `LED_DRIVER_ADDR_<N>` 定義を指定しないでください。`config.h` に以下の項目を定義することができます:
+
+| 変数 | 説明 | デフォルト |
+|----------|-------------|---------|
+| `ISSI_TIMEOUT` | (オプション) i2c メッセージを待つ時間 | 100 |
+| `ISSI_PERSISTENCE` | (オプション) 失敗したメッセージをこの回数再試行する | 0 |
+| `LED_DRIVER_COUNT` | (必須) LED ドライバ IC の数 | |
+| `LED_DRIVER_LED_COUNT` | (必須) 全てのドライバの LED ライトの数 | |
+| `LED_DRIVER_ADDR_1` | (必須) 最初の LED ドライバのアドレス | |
+| `LED_DRIVER_ADDR_2` | (オプション) 2番目の LED ドライバのアドレス | |
+| `LED_DRIVER_ADDR_3` | (オプション) 3番目の LED ドライバのアドレス | |
+| `LED_DRIVER_ADDR_4` | (オプション) 4番目の LED ドライバのアドレス | |
+
+2つのドライバを使う例です。
+
+ // これは7ビットのアドレスで、左シフトされます
+ // ビット0に0を設定すると書き込み、1を設定すると読み込みです (I2C プロトコルに従う)
+ // アドレスは配線によって変わります:
+ // 0b1110100 AD <-> GND
+ // 0b1110111 AD <-> VCC
+ // 0b1110101 AD <-> SCL
+ // 0b1110110 AD <-> SDA
+ #define LED_DRIVER_ADDR_1 0b1110100
+ #define LED_DRIVER_ADDR_2 0b1110110
+
+ #define LED_DRIVER_COUNT 2
+ #define LED_DRIVER_1_LED_COUNT 25
+ #define LED_DRIVER_2_LED_COUNT 24
+ #define LED_DRIVER_LED_COUNT LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL
+
+現在、2つのドライバのみがサポートされますが、4つの組み合わせ全てをサポートすることは簡単です。
+
+`<keyboard>.c` に全ての LED を列挙する配列を定義します:
+
+ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ /* これらの位置については IS31 マニュアルを参照してください
+ * driver
+ * | LED address
+ * | | */
+ {0, C3_3},
+ ....
+ }
+
+ここで、`Cx_y` は[データシート](http://www.issi.com/WW/pdf/31FL3731.pdf)およびヘッダファイル `drivers/issi/is31fl3731-simple.h` で定義されるマトリックス内の LED の位置です。`driver` は `config.h` で定義したドライバのインデックス(`0`、`1`、`2`、`3`のいずれか)です。
+
+## キーコード
+
+現在のところ、全ての LED マトリックスのキーコードは[バックライトシステム](ja/feature_backlight.md)と共有されます。
+
+## LED マトリックス効果
+
+現在のところ、LED マトリックス効果は作成されていません。
+
+## カスタムレイヤー効果
+
+カスタムレイヤー効果は `<keyboard>.c` 内で以下を定義することで行うことができます:
+
+ void led_matrix_indicators_kb(void) {
+ led_matrix_set_index_value(index, value);
+ }
+
+同様の関数がキーマップ内で `led_matrix_indicators_user` として動作します。
+
+## サスペンド状態
+
+サスペンド機能を使うには、以下を `<keyboard>.c` に追加します:
+
+ void suspend_power_down_kb(void)
+ {
+ led_matrix_set_suspend_state(true);
+ }
+
+ void suspend_wakeup_init_kb(void)
+ {
+ led_matrix_set_suspend_state(false);
+ }
diff --git a/docs/ja/feature_mouse_keys.md b/docs/ja/feature_mouse_keys.md
new file mode 100644
index 0000000000..43ca8bb08b
--- /dev/null
+++ b/docs/ja/feature_mouse_keys.md
@@ -0,0 +1,127 @@
+# マウスキー
+
+<!---
+ original document: 0.8.141:docs/feature_mouse_keys.md
+ git diff 0.8.141 HEAD -- docs/feature_mouse_keys.md | cat
+-->
+
+マウスキーは、キーボードを使ってマウスをエミュレートできる機能です。様々な速度でポインタを移動し、5つのボタンを押し、8方向にスクロールすることができます。
+
+## キーボードにマウスキーを追加
+
+マウスキーを使うためには、少なくともマウスキーサポートを有効にし、マウスアクションをキーボードのキーにマップする必要があります。
+
+### マウスキーを有効にする
+
+マウスキーを有効にするには、キーマップの `rules.mk` に以下の行を追加します:
+
+```c
+MOUSEKEY_ENABLE = yes
+```
+
+### マウスアクションのマッピング
+
+キーマップでキー押下をマウスアクションにマップするために、以下のキーコードを使うことができます:
+
+| キー | エイリアス | 説明 |
+|----------------|---------|-----------------|
+| `KC_MS_UP` | `KC_MS_U` | カーソルを上に移動 |
+| `KC_MS_DOWN` | `KC_MS_D` | カーソルを下に移動 |
+| `KC_MS_LEFT` | `KC_MS_L` | カーソルを左に移動 |
+| `KC_MS_RIGHT` | `KC_MS_R` | カーソルを右に移動 |
+| `KC_MS_BTN1` | `KC_BTN1` | ボタン1を押す |
+| `KC_MS_BTN2` | `KC_BTN2` | ボタン2を押す |
+| `KC_MS_BTN3` | `KC_BTN3` | ボタン3を押す |
+| `KC_MS_BTN4` | `KC_BTN4` | ボタン4を押す |
+| `KC_MS_BTN5` | `KC_BTN5` | ボタン5を押す |
+| `KC_MS_WH_UP` | `KC_WH_U` | ホイールを向こう側に回転 |
+| `KC_MS_WH_DOWN` | `KC_WH_D` | ホイールを手前側に回転 |
+| `KC_MS_WH_LEFT` | `KC_WH_L` | ホイールを左に倒す |
+| `KC_MS_WH_RIGHT` | `KC_WH_R` | ホイールを右に倒す |
+| `KC_MS_ACCEL0` | `KC_ACL0` | 速度を0に設定 |
+| `KC_MS_ACCEL1` | `KC_ACL1` | 速度を1に設定 |
+| `KC_MS_ACCEL2` | `KC_ACL2` | 速度を2に設定 |
+
+## マウスキーの設定
+
+マウスキーはカーソルを移動するための2つの異なるモードをサポートします:
+
+* **加速 (デフォルト):** 移動キーを押したままにすると、カーソルが最大速度に達するまでカーソルを加速します。
+* **定速:** 移動キーを押したままにすると、カーソルを一定の速度で移動します。
+
+同じ原則がスクロールにも適用されます。
+
+時間、間隔、遅延の設定オプションは、ミリ秒で指定されます。スクロール速度はデフォルトスクロールステップの倍数として渡されます。例えば、スクロール速度8は、各スクロールアクションがオペレーティングシステムまたはアプリケーションで定義されるデフォルトのスクロールステップの8倍の距離進むことを意味します。
+
+### 加速モード
+
+これはデフォルトのモードです。キーマップの `config.h` ファイルの以下の設定を使ってカーソルとスクロールの加速を調整することができます:
+
+| 定義 | デフォルト | 説明 |
+|----------------------------|-------|---------------------------------------------------------|
+| `MOUSEKEY_DELAY` | 300 | 移動キーを押してからカーソルが移動するまでの遅延 |
+| `MOUSEKEY_INTERVAL` | 50 | カーソル移動間の時間 |
+| `MOUSEKEY_MAX_SPEED` | 10 | 加速が停止する最大のカーソル速度 |
+| `MOUSEKEY_TIME_TO_MAX` | 20 | 最大カーソル速度に達するまでの時間 |
+| `MOUSEKEY_WHEEL_DELAY` | 300 | ホイールキーを押してからホイールが動くまでの遅延 |
+| `MOUSEKEY_WHEEL_INTERVAL` | 100 | ホイールの動きの間の時間 |
+| `MOUSEKEY_WHEEL_MAX_SPEED` | 8 | スクロールアクションごとのスクロールステップの最大数 |
+| `MOUSEKEY_WHEEL_TIME_TO_MAX` | 40 | 最大スクロール速度に達するまでの時間 |
+
+ヒント:
+
+* `MOUSEKEY_DELAY` の設定が低すぎるとカーソルが応答しなくなります。設定が高すぎると小さな動きが難しくなります。
+* カーソルの動きをスムーズにするには、`MOUSEKEY_INTERVAL` の値を低くします。ディスプレイのリフレッシュレートが60Hzの場合、`16` (1/60) に設定することができます。これによりカーソルの速度が大幅に向上するため、`MOUSEKEY_MAX_SPEED` を下げた方が良いかもしれません。
+* `MOUSEKEY_TIME_TO_MAX` または `MOUSEKEY_WHEEL_TIME_TO_MAX` を `0` に設定すると、それぞれカーソルの速度またはスクロールの加速が無効になります。この方法では、一方を加速しながら他方を一定にすることができますが、これは定速モードでは不可能です。
+* `MOUSEKEY_WHEEL_INTERVAL` の設定が低すぎるとスクロールがとても速くなります。設定が高すぎるとホイールキーを押したままにした時にスクロールがとても遅くなります
+
+カーソルの加速は、X Window System MouseKeysAccel 機能と同じアルゴリズムを使います。詳細については [Wikipedia](https://en.wikipedia.org/wiki/Mouse_keys) をご覧ください。
+
+### 定速モード
+
+このモードでは、カーソルおよびマウスホイールの両方について複数の異なる速度を定義することができます。加速はありません。`KC_ACL0`、`KC_ACL1` および `KC_ACL2` は、カーソルとスクロールの速度をそれぞれの設定に変更します。
+
+速度の選択は、一時的とタップ選択のどちらかを選べます:
+
+* **一時的:** 選択された速度は、それぞれのキーを押している間のみアクティブになります。キーを放すと、マウスキーは変更される前の速度に戻ります。
+* **タップ選択:** それぞれのキーを押すと選択された速度がアクティブになり、キーを放した後もアクティブのままになります。デフォルトの速度は `KC_ACL1` です。未変更の速度はありません。
+
+最も遅い速度から最も速い速度までのデフォルトの速度は以下の通りです:
+
+* **一時的:** `KC_ACL0` < `KC_ACL1` < *変更無し* < `KC_ACL2`
+* **タップ選択:** `KC_ACL0` < `KC_ACL1` < `KC_ACL2`
+
+定速モードを使うには、少なくともキーマップの keymaps ディレクトリの `config.h` ファイルに `MK_3_SPEED` を定義する必要があります。
+
+```c
+#define MK_3_SPEED
+```
+
+一時的モードを有効にするには、`MK_MOMENTARY_ACCEL` も定義します:
+
+```c
+#define MK_MOMENTARY_ACCEL
+```
+
+カーソル移動あるいはスクロールを調整する場合は、以下の設定を使います:
+
+| 定義 | デフォルト | 説明 |
+|---------------------|-------------|-------------------------------------------|
+| `MK_3_SPEED` | *定義なし* | 定速カーソルを有効にする |
+| `MK_MOMENTARY_ACCEL` | *定義なし* | 一時的モードを有効にする |
+| `MK_C_OFFSET_UNMOD` | 16 | 移動ごとのカーソルオフセット (変更無し) |
+| `MK_C_INTERVAL_UNMOD` | 16 | カーソルの移動間の時間 (変更無し) |
+| `MK_C_OFFSET_0` | 1 | 移動ごとのカーソルオフセット (`KC_ACL0`) |
+| `MK_C_INTERVAL_0` | 32 | カーソル移動間の時間 (`KC_ACL0`) |
+| `MK_C_OFFSET_1` | 4 | 移動ごとのカーソルオフセット (`KC_ACL1`) |
+| `MK_C_INTERVAL_1` | 16 | カーソル移動間の時間 (`KC_ACL1`) |
+| `MK_C_OFFSET_2` | 32 | 移動ごとのカーソルオフセット (`KC_ACL2`) |
+| `MK_C_INTERVAL_2` | 16 | カーソル移動間の時間 (`KC_ACL2`) |
+| `MK_W_OFFSET_UNMOD` | 1 | スクロールアクションごとのスクロールステップ (変更無し) |
+| `MK_W_INTERVAL_UNMOD` | 40 | スクロールステップ間の時間 (変更無し) |
+| `MK_W_OFFSET_0` | 1 | スクロールアクションごとのスクロールステップ (`KC_ACL0`) |
+| `MK_W_INTERVAL_0` | 360 | スクロールステップ間の時間 (`KC_ACL0`) |
+| `MK_W_OFFSET_1` | 1 | スクロールアクションごとのスクロールステップ (`KC_ACL1`) |
+| `MK_W_INTERVAL_1` | 120 | スクロールステップ間の時間 (`KC_ACL1`) |
+| `MK_W_OFFSET_2` | 1 | スクロールアクションごとのスクロールステップ (`KC_ACL2`) |
+| `MK_W_INTERVAL_2` | 20 | スクロールステップ間の時間 (`KC_ACL2`) |
diff --git a/docs/ja/feature_pointing_device.md b/docs/ja/feature_pointing_device.md
new file mode 100644
index 0000000000..8b26ac102f
--- /dev/null
+++ b/docs/ja/feature_pointing_device.md
@@ -0,0 +1,49 @@
+# ポインティングデバイス :id=pointing-device
+
+<!---
+ original document: 0.8.182:docs/feature_pointing_device.md
+ git diff 0.8.182 HEAD -- docs/feature_pointing_device.md | cat
+-->
+
+ポインティングデバイスは汎用的な機能の総称です: システムポインタを移動します。マウスキーのような他のオプションも確かにありますが、これは簡単に変更可能で軽量であることを目指しています。機能を制御するためにカスタムキーを実装したり、他の周辺機器から情報を収集してここに直接挿入したりできます - QMK に処理を任せてください。
+
+ポインティングデバイスを有効にするには、rules.mk の以下の行のコメントを解除します:
+
+```makefile
+POINTING_DEVICE_ENABLE = yes
+```
+
+マウスレポートを操作するために、以下の関数を使うことができます:
+
+* `pointing_device_get_report()` - ホストコンピュータに送信された情報を表す現在の report_mouse_t を返します。
+* `pointing_device_set_report(report_mouse_t newMouseReport)` - ホストコンピュータに送信される report_mouse_t を上書き保存します。
+
+report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つことを覚えておいてください:
+
+* `mouseReport.x` - これは、x軸の動き(+ 右へ、- 左へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
+* `mouseReport.y` - これは、y軸の動き(+ 上へ、- 下へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
+* `mouseReport.v` - これは、垂直スクロール(+ 上へ、- 下へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
+* `mouseReport.h` - これは、水平スクロール(+ 右へ、- 左へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
+* `mouseReport.buttons` - これは uint8_t で、上位の5ビットを使っています。これらのビットはマウスボタンの状態を表します - ビット 3 はマウスボタン 5、ビット 7 はマウスボタン 1 です。
+
+マウスレポートが送信されると、x、y、v、h のいずれの値も 0 に設定されます (これは "pointing_device_send()" で行われます。この挙動を回避するためにオーバーライドすることができます)。このように、ボタンの状態は持続しますが、動きは1度だけ起こります。さらにカスタマイズするために、`pointing_device_init` と `pointing_device_task` のどちらもオーバーライドすることができます。
+
+以下の例では、カスタムキーを使ってマウスをクリックし垂直および水平方向に127単位スクロールし、リリースされた時にそれを全て元に戻します - なぜならこれは完全に便利な機能だからです。いいですか、以下はひとつの例です:
+
+```c
+case MS_SPECIAL:
+ report_mouse_t currentReport = pointing_device_get_report();
+ if (record->event.pressed) {
+ currentReport.v = 127;
+ currentReport.h = 127;
+ currentReport.buttons |= MOUSE_BTN1; // this is defined in report.h
+ } else {
+ currentReport.v = -127;
+ currentReport.h = -127;
+ currentReport.buttons &= ~MOUSE_BTN1;
+ }
+ pointing_device_set_report(currentReport);
+ break;
+```
+
+マウスレポートは送信されるたびに 0 (ボタンを除く)に設定されることを思い出してください。そのため、スクロールはそれぞれの場合に1度だけ発生します。
diff --git a/docs/ja/feature_thermal_printer.md b/docs/ja/feature_thermal_printer.md
new file mode 100644
index 0000000000..508123bd64
--- /dev/null
+++ b/docs/ja/feature_thermal_printer.md
@@ -0,0 +1,15 @@
+# 感熱式プリンタ
+
+<!---
+ original document: 0.8.147:docs/feature_thermal_printer.md
+ git diff 0.8.147 HEAD -- docs/feature_thermal_printer.md | cat
+-->
+
+<!-- FIXME: Describe thermal printers support here. -->
+
+## 感熱式プリンタのキーコード
+
+| キー | 説明 |
+|-----------|----------------------------------------|
+| `PRINT_ON` | ユーザが入力した全ての印刷を開始 |
+| `PRINT_OFF` | ユーザが入力した全ての印刷を停止 |
diff --git a/docs/ja/feature_velocikey.md b/docs/ja/feature_velocikey.md
new file mode 100644
index 0000000000..f9b6e73bd4
--- /dev/null
+++ b/docs/ja/feature_velocikey.md
@@ -0,0 +1,35 @@
+# Velocikey
+
+<!---
+ original document: 0.8.147:docs/feature_velocikey.md
+ git diff 0.8.147 HEAD -- docs/feature_velocikey.md | cat
+-->
+
+Velocikey は入力の速度を使って(レインボー渦巻効果のような)ライト効果の速度を制御できる機能です。速く入力すればするほどライトが速くなります!
+
+## 使用法
+Velocikey を使うためには、2つのステップがあります。最初に、キーボードをコンパイルする時に、`rules.mk` に `VELOCIKEY_ENABLE=yes` を設定する必要があります。例えば:
+
+```
+BOOTMAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
+STENO_ENABLE = no
+EXTRAKEY_ENABLE = yes
+VELOCIKEY_ENABLE = yes
+```
+
+次に、キーボードの使用中に、VLK_TOG キーコードを使って Velocikey を有効にする必要もあります。これは機能をオンおよびオフにします。
+
+以下の全てのライト効果が、Velocikey を有効にすることで制御されます:
+- RGB 明滅動作
+- RGB レインボームード
+- RGB レインボー渦巻
+- RGB スネーク
+- RGB ナイト
+
+LED 明滅動作の効果のサポートは計画されていますがまだ利用できません。
+
+Velocikey が有効になっている限り、現在オンになっている RGB ライトの他の全ての速度設定に関係なく、速度が制御されます。
+
+## 設定
+Velocikey は現在のところキーボード設定を介したどのような設定もサポートしません。速度の増加あるいは減少率などを調整したい場合は、`velocikey.c` を編集し、そこで値を調整して、好みの速度を実現する必要があります。
diff --git a/docs/ja/getting_started_github.md b/docs/ja/getting_started_github.md
index 5457c1e06e..24a217c745 100644
--- a/docs/ja/getting_started_github.md
+++ b/docs/ja/getting_started_github.md
@@ -1,15 +1,15 @@
-# QMK で Github を使う方法
+# QMK で GitHub を使う方法
<!---
original document: 0.8.82:docs/getting_started_github.md
git diff 0.8.82 HEAD -- docs/getting_started_github.md | cat
-->
-Github は慣れていない人には少し注意が必要です - このガイドは、QMK におけるフォーク、クローン、プルリクエストのサブミットの各ステップについて説明します。
+GitHub は慣れていない人には少し注意が必要です - このガイドは、QMK におけるフォーク、クローン、プルリクエストのサブミットの各ステップについて説明します。
?> このガイドでは、あなたがコマンドラインでの実行にある程度慣れており、システムに git がインストールされていることを前提にしています。
-[QMK Github ページ](https://github.com/qmk/qmk_firmware)を開くと、右上に "Fork" というボタンが見えます:
+[QMK GitHub ページ](https://github.com/qmk/qmk_firmware)を開くと、右上に "Fork" というボタンが見えます:
![Git でのフォーク](http://i.imgur.com/8Toomz4.jpg)
@@ -59,7 +59,7 @@ To https://github.com/whoeveryouare/qmk_firmware.git
+ 20043e64...7da94ac5 master -> master
```
-あなたの変更は今では Github 上のフォークにあります - フォーク (`https://github.com/<whoeveryouare>/qmk_firmware`)に戻ると、"New Pull Request" ボタンをクリックすることで新しいプルリクエストを作成することができます:
+あなたの変更は今では GitHub 上のフォークにあります - フォーク (`https://github.com/<whoeveryouare>/qmk_firmware`)に戻ると、"New Pull Request" ボタンをクリックすることで新しいプルリクエストを作成することができます:
![New Pull Request](http://i.imgur.com/DxMHpJ8.jpg)
diff --git a/docs/ja/newbs_building_firmware_configurator.md b/docs/ja/newbs_building_firmware_configurator.md
index e54921e520..419ba1416b 100644
--- a/docs/ja/newbs_building_firmware_configurator.md
+++ b/docs/ja/newbs_building_firmware_configurator.md
@@ -28,7 +28,7 @@ QMK Configurator は Chrome/Firefox で最適に動作します。
キーボードが QMK を搭載していると宣伝されていてもリストにない場合は、開発者がまだ作業中か、私たちがまだマージするきっかけがなかった可能性があります。
アクティブな [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) がない場合、[qmk_firmware](https://github.com/qmk/qmk_firmware/issues)で報告して、その特定のキーボードのサポートをリクエストします。
-製作者自身の github アカウントにある QMK 搭載キーボードもあります。
+製作者自身の GitHub アカウントにある QMK 搭載キーボードもあります。
それも再確認してください。
## キーボードのレイアウトを選択する
diff --git a/docs/ja/newbs_learn_more_resources.md b/docs/ja/newbs_learn_more_resources.md
index 523d91a05a..f2f8270e1d 100644
--- a/docs/ja/newbs_learn_more_resources.md
+++ b/docs/ja/newbs_learn_more_resources.md
@@ -14,7 +14,7 @@
* [Great General Tutorial](https://www.codecademy.com/learn/learn-git)
* [Git Game To Learn From Examples](https://learngitbranching.js.org/)
-* [Git Resources to Learn More About Github](getting_started_github.md)
+* [Git Resources to Learn More About GitHub](getting_started_github.md)
* [Git Resources Aimed Specifically toward QMK](contributing.md)
### 日本語
@@ -22,7 +22,7 @@
_日本語のリソース情報を募集中です。_
* [Git Game To Learn From Examples(日本語対応有り)](https://learngitbranching.js.org/)
-* [QMK で Github を使う方法](ja/getting_started_github.md)
+* [QMK で GitHub を使う方法](ja/getting_started_github.md)
* [貢献方法](ja/contributing.md)
## コマンドラインに関するリソース:
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 18fd811184..40a46964a8 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -531,6 +531,7 @@ See also: [Swap Hands](feature_swap_hands.md)
|`SH_MOFF` |Momentarily turns off swap. |
|`SH_TG` |Toggles swap on and off with every key press. |
|`SH_TT` |Toggles with a tap; momentary when held. |
+|`SH_OS` |One shot swap hands: toggle while pressed or until next key press. |
## Unicode Support :id=unicode-support
diff --git a/docs/keymap.md b/docs/keymap.md
index ba358edbe0..ef476e87f5 100644
--- a/docs/keymap.md
+++ b/docs/keymap.md
@@ -71,10 +71,22 @@ On the other hand, you can change `layer_state` to overlay the base layer with o
### Layer Precedence and Transparency
-Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred.
-
-You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer.
-Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead.
+Note that ***higher layers have higher priority within the stack of layers***. The firmware works its way down from the highest active layers to look up keycodes. Once the firmware locates a keycode other than `KC_TRNS` (transparent) on an active layer, it stops searching, and lower layers aren't referenced.
+
+ ____________
+ / / <--- Higher layer
+ / KC_TRNS //
+ /___________// <--- Lower layer (KC_A)
+ /___________/
+
+ In the above scenario, the non-transparent keys on the higher layer would be usable, but whenever `KC_TRNS` (or equivalent) is defined, the keycode (`KC_A`) on the lower level would be used.
+
+**Note:** Valid ways to denote transparency on a given layer:
+* `KC_TRANSPARENT`
+* `KC_TRNS` (alias)
+* `_______` (alias)
+
+These keycodes allow the processing to fall through to lower layers in search of a non-transparent keycode to process.
## Anatomy of a `keymap.c`
diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md
index dc81efd212..04c7c55aed 100644
--- a/docs/newbs_flashing.md
+++ b/docs/newbs_flashing.md
@@ -1,18 +1,41 @@
-# Flashing Your Keyboard
+# Flashing Your Keyboard
-Now that you've built a custom firmware file you'll want to flash your keyboard.
+Now that you've built a custom firmware file you'll want to flash your keyboard.
+
+## Put Your Keyboard into DFU (Bootloader) Mode
+
+In order to flash your custom firmware you must first put your keyboard into a special flashing mode. While it is in this mode you will not be able to type or otherwise use your keyboard. It is very important that you do not unplug the keyboard or otherwise interrupt the flashing process while the firmware is being written.
+
+Different keyboards have different ways to enter this special mode. If your PCB currently runs QMK, TMK, or PS2AVRGB (Bootmapper Client) and you have not been given specific instructions, try the following, in order:
+
+* Hold down both shift keys and press `Pause`
+* Hold down both shift keys and press `B`
+* Unplug your keyboard, hold down the Spacebar and `B` at the same time, plug in your keyboard and wait a second before releasing the keys
+* Unplug your keyboard, hold down the top or bottom left key (usually Escape or Left Control) and plug in your keyboard
+* Press the physical `RESET` button, usually located on the underside of the PCB
+* Locate header pins on the PCB labeled `RESET` and `GND`, and short them together while plugging your PCB in
+
+If you've attempted all of the above to no avail, and the main chip on the board says `STM32` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
+
+Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:
+
+```
+*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)
+```
+
+and this bootloader device will also be present in Device Manager, System Information.app, or `lsusb`.
## Flashing Your Keyboard with QMK Toolbox
-The simplest way to flash your keyboard will be with the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
+The simplest way to flash your keyboard will be with the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
-However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), proceed down to [Flash Your Keyboard From The Command Line](#flash-your-keyboard-from-the-command-line).
+However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the [Flash your Keyboard from the Command Line](#flash-your-keyboard-from-the-command-line) section.
-### Load The File Into QMK Toolbox
+### Load the File into QMK Toolbox
Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- `.hex` or `.bin`. QMK tries to copy the appropriate one for your keyboard into the root `qmk_firmware` directory.
-If you are on Windows or macOS there are commands you can use to easily open the current firmware folder in Explorer or Finder.
+If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.
#### Windows
@@ -38,65 +61,44 @@ For example, the `planck/rev5` with a `default` keymap will have this filename:
planck_rev5_default.hex
```
-Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
-
-### Put Your Keyboard Into DFU (Bootloader) Mode
-
-In order to flash your custom firmware you have to put your keyboard into a special flashing mode. While it is in this mode you will not be able to type or otherwise use your keyboard. It is very important that you do not unplug your keyboard or otherwise interrupt the flashing process while the firmware is being written.
-
-Different keyboards have different ways to enter this special mode. If your PCB currently runs QMK or TMK and you have not been given specific instructions try the following, in order:
-
-* Hold down both shift keys and press `Pause`
-* Hold down both shift keys and press `B`
-* Unplug your keyboard, hold down the Spacebar and `B` at the same time, plug in your keyboard and wait a second before releasing the keys
-* Press the physical `RESET` button on the bottom of the PCB
-* Locate header pins on the PCB labeled `BOOT0` or `RESET`, short those together while plugging your PCB in
-
-When you are successful you will see a message similar to this in QMK Toolbox:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-```
+Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
### Flash Your Keyboard
Click the `Flash` button in QMK Toolbox. You will see output similar to the following:
```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
+*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)
*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
+>>> dfu-programmer.exe atmega32u4 erase --force
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
+>>> dfu-programmer.exe atmega32u4 flash "D:\Git\qmk_firmware\gh60_satan_default.hex"
+ Checking memory from 0x0 to 0x3F7F... Empty.
+ 0% 100% Programming 0x3F80 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0% 100% Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
+ 0x3F80 bytes written into 0x7000 bytes memory (56.70%).
+>>> dfu-programmer.exe atmega32u4 reset
-*** DFU device disconnected
-*** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
+*** DFU device disconnected: Atmel Corp: ATmega32U4 (03EB:2FF4:0000)
```
## Flash your Keyboard from the Command Line
-This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the flash command:
+This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the flash command:
qmk flash
-If you have not configured your keyboard/keymap name, or you have multiple keyboards, you can specify the keyboard and keymap:
+If you have not configured your keyboard/keymap name in the CLI, or you have multiple keyboards, you can specify the keyboard and keymap:
qmk flash -kb <my_keyboard> -km <my_keymap>
-This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting.
+This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting.
-However, this does rely on the bootloader being set by the keyboard. If this information is not configured, or you're using a board that doesn't have a supported target to flash it, you will see this error:
+However, this does rely on the bootloader being set by the keyboard. If this information is not configured, or you're using a board that doesn't have a supported target to flash it, you will see this error:
WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md
index a3022f15e5..1367d1b409 100644
--- a/docs/newbs_getting_started.md
+++ b/docs/newbs_getting_started.md
@@ -57,10 +57,9 @@ You may be asked to close and reopen the window. Do this and keep running the ab
You will need to install Homebrew. Follow the instructions on the [Homebrew homepage](https://brew.sh).
-After Homebrew is installed run these commands:
+After Homebrew is installed run this command:
- brew tap qmk/qmk
- brew install qmk
+ brew install qmk/qmk/qmk
### Linux
@@ -70,10 +69,21 @@ You will need to install Git and Python. It's very likely that you already have
* Fedora / Red Hat / CentOS: `sudo yum install git python3 python3-pip`
* Arch / Manjaro: `sudo pacman -S git python python-pip python-setuptools libffi`
-
Install the global CLI to bootstrap your system:
- `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`)
+`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`)
+
+### FreeBSD
+
+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.
+
+Once installed, you can install QMK CLI:
+
+ python3 -m pip install --user qmk
## 3. Run QMK Setup :id=set-up-qmk
@@ -89,6 +99,12 @@ 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`
+?>**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.
+
?> 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.
## 4. Test Your Build Environment
@@ -119,7 +135,7 @@ Most people new to QMK only have 1 keyboard. You can set this keyboard as your d
qmk config user.keyboard=clueboard/66/rev4
-You can also set your default keymap name. Most people use their github username here, and we recommend that you do too.
+You can also set your default keymap name. Most people use their GitHub username here, and we recommend that you do too.
qmk config user.keymap=<github_username>
diff --git a/docs/other_vscode.md b/docs/other_vscode.md
index 7427f758e5..d544db6307 100644
--- a/docs/other_vscode.md
+++ b/docs/other_vscode.md
@@ -102,7 +102,7 @@ There are a number of extensions that you may want to install:
This installs a bunch of Git related tools that may make using Git with QMK Firmware easier.
* [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - _[Optional]_ - Helps to keep the code to the QMK Coding Conventions.
* [Bracket Pair Colorizer 2](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2) - _[Optional]_ - This color codes the brackets in your code, to make it easier to reference nested code.
-* [Github Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[Optional]_ - Makes the markdown preview in VS Code more like GitHub's.
+* [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[Optional]_ - Makes the markdown preview in VS Code more like GitHub's.
* [VS Live Share Extension Pack](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack) - _[Optional]_ - This extension allows somebody else to access your workspace (or you to access somebody else's workspace) and help out. This is great if you're having issues and need some help from somebody.
* [VIM Keymap](https://marketplace.visualstudio.com/items?itemName=GiuseppeCesarano.vim-keymap) - _[Optional]_ - For those that prefer VIM style keybindings. There are other options for this, too.
* [Travis CI Status](https://marketplace.visualstudio.com/items?itemName=felixrieseberg.vsc-travis-ci-status) - _[Optional]_ - This shows the current Travis CI status, if you have it set up.
diff --git a/docs/proton_c_conversion.md b/docs/proton_c_conversion.md
index 98f1508a9e..1b5e496e74 100644
--- a/docs/proton_c_conversion.md
+++ b/docs/proton_c_conversion.md
@@ -36,7 +36,7 @@ These are defaults based on what has been implemented for ARM boards.
| [RGB Lighting](feature_rgblight.md) | Disabled |
| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
-| [Split keyboards](feature_split_keyboard.md) | Not supported yet |
+| [Split keyboards](feature_split_keyboard.md) | Partial - heavily dependent on enabled features |
## Manual Conversion
diff --git a/docs/pt-br/README.md b/docs/pt-br/README.md
index 7cff6ce621..ea63ce13b5 100644
--- a/docs/pt-br/README.md
+++ b/docs/pt-br/README.md
@@ -12,7 +12,7 @@ QMK (*Quantum Mechanical Keyboard*) é uma comunidade de código aberto que mant
## Como obter e usar o QMK
-Se você planeja contribuir com um _keymap_ ("mapa de teclas"), teclado ou recursos para o QMK, o jeito mais fácil é [percorrer o repositório através do Github](https://github.com/qmk/qmk_firmware#fork-destination-box) e clonar seu repositório localmente para fazer suas alterações, dê um _push_ nelas e abra uma [_Pull request_](https://github.com/qmk/qmk_firmware/pulls) no seu fork.
+Se você planeja contribuir com um _keymap_ ("mapa de teclas"), teclado ou recursos para o QMK, o jeito mais fácil é [percorrer o repositório através do GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) e clonar seu repositório localmente para fazer suas alterações, dê um _push_ nelas e abra uma [_Pull request_](https://github.com/qmk/qmk_firmware/pulls) no seu fork.
Caso contrário, você pode cloná-lo diretamente com `git clone https://github.com/qmk/qmk_firmware`. Não faça o download dos arquivos zip ou tar; é necessário um repositório git para baixar os submódulos para compilar.
diff --git a/docs/pt-br/_summary.md b/docs/pt-br/_summary.md
index 78b3b20216..e0a1b45b33 100644
--- a/docs/pt-br/_summary.md
+++ b/docs/pt-br/_summary.md
@@ -11,7 +11,7 @@
* [QMK CLI](pt-br/cli.md)
* [QMK CLI Config](pt-br/cli_configuration.md)
* [Contributing to QMK](pt-br/contributing.md)
- * [How to Use Github](pt-br/getting_started_github.md)
+ * [How to Use GitHub](pt-br/getting_started_github.md)
* [Getting Help](pt-br/getting_started_getting_help.md)
* [Breaking Changes](pt-br/breaking_changes.md)
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
new file mode 100644
index 0000000000..fd4b8dd853
--- /dev/null
+++ b/docs/reference_keymap_extras.md
@@ -0,0 +1,80 @@
+# Language-specific Keycodes
+
+Keyboards are able to support a wide range of languages. However, they do not send the actual characters produced by pressing their keys - instead, they send numerical codes. In the USB HID spec, these are called "usages", although they are more often referred to as "scancodes" or "keycodes" when in the context of keyboards.
+Less than 256 usages are defined in the HID Keyboard/Keypad usage page, and some of those do nothing on modern operating systems. So, how is this language support achieved?
+
+In a nutshell, the operating system maps the usages it receives to the appropriate character based on the user's configured keyboard layout. For example, when a Swedish person presses the key with the `å` character printed on it, the keyboard is *actually* sending the keycode for `[`.
+
+Obviously, this could get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap.
+
+To use these, simply `#include` the corresponding [header file](https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras) in your `keymap.c`, and add the keycodes defined in them in place of the `KC_` prefixed ones:
+
+|Layout |Header |
+|---------------------------|--------------------------------|
+|Canadian Multilingual (CSA)|`keymap_canadian_multilingual.h`|
+|Croatian |`keymap_croatian.h` |
+|Czech |`keymap_czech.h` |
+|Danish |`keymap_danish.h` |
+|Dutch (Belgium) |`keymap_belgian.h` |
+|English (Ireland) |`keymap_irish.h` |
+|English (UK) |`keymap_uk.h` |
+|English (US International) |`keymap_us_international.h` |
+|Estonian |`keymap_estonian.h` |
+|Finnish |`keymap_finnish.h` |
+|French |`keymap_french.h` |
+|French (BÉPO) |`keymap_bepo.h` |
+|French (Belgium) |`keymap_belgian.h` |
+|French (Switzerland) |`keymap_fr_ch.h` |
+|French (macOS, ISO) |`keymap_french_osx.h` |
+|German |`keymap_german.h` |
+|German (Switzerland) |`keymap_german_ch.h` |
+|German (macOS) |`keymap_german_osx.h` |
+|German (Neo2)* |`keymap_neo2.h` |
+|Greek* |`keymap_greek.h` |
+|Hungarian |`keymap_hungarian.h` |
+|Icelandic |`keymap_icelandic.h` |
+|Italian |`keymap_italian.h` |
+|Italian (macOS, ANSI) |`keymap_italian_osx_ansi.h` |
+|Italian (macOS, ISO) |`keymap_italian_osx_iso.h` |
+|Japanese |`keymap_jp.h` |
+|Korean |`keymap_korean.h` |
+|Latvian |`keymap_latvian.h` |
+|Lithuanian (ĄŽERTY) |`keymap_lithuanian_azerty.h` |
+|Lithuanian (QWERTY) |`keymap_lithuanian_qwerty.h` |
+|Norwegian |`keymap_norwegian.h` |
+|Polish |`keymap_polish.h` |
+|Portuguese |`keymap_portuguese.h` |
+|Portuguese (Brazil) |`keymap_br_abnt2.h` |
+|Romanian |`keymap_romanian.h` |
+|Russian* |`keymap_russian.h` |
+|Serbian* |`keymap_serbian.h` |
+|Serbian (Latin) |`keymap_serbian_latin.h` |
+|Slovak |`keymap_slovak.h` |
+|Slovenian |`keymap_slovenian.h` |
+|Spanish |`keymap_spanish.h` |
+|Spanish (Dvorak) |`keymap_spanish_dvorak.h` |
+|Swedish |`keymap_swedish.h` |
+|Turkish (F) |`keymap_turkish_f.h` |
+|Turkish (Q) |`keymap_turkish_q.h` |
+
+There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:
+
+|Layout |Header |
+|-------------------|------------------------|
+|Colemak |`keymap_colemak.h` |
+|Dvorak |`keymap_dvorak.h` |
+|Dvorak (Programmer)|`keymap_dvp.h` |
+|Norman |`keymap_norman.h` |
+|Plover* |`keymap_plover.h` |
+|Plover (Dvorak)* |`keymap_plover_dvorak.h`|
+|Steno* |`keymap_steno.h` |
+|Workman |`keymap_workman.h` |
+|Workman (ZXCVM) |`keymap_workman_zxcvm.h`|
+
+## Sendstring Support
+
+By default, `SEND_STRING()` assumes a US ANSI keyboard layout is set. If you are using a different layout, you can also `#include "sendstring_*.h"` (as above) in your keymap to override the lookup tables used for mapping ASCII characters to keycodes.
+
+An important thing to note here is that `SEND_STRING()` only operates on [ASCII text](https://en.wikipedia.org/wiki/ASCII#Character_set). This means that you cannot pass it a string containing Unicode characters - this unfortunately includes accented characters that may be present in your desired layout.
+Many layouts make certain characters, such as Grave or Tilde, available only as [dead keys](https://en.wikipedia.org/wiki/Dead_key), so you must add a space immediately after it in the string you want to send, to prevent it from potentially combining with the next character.
+Certain other layouts have no Sendstring header as they do not use a Latin-derived alphabet (for example Greek and Russian), and thus there is no way to input most of the ASCII character set. These are marked above with a `*`.
diff --git a/docs/ru-ru/_summary.md b/docs/ru-ru/_summary.md
index f893be3cfd..09273172b6 100644
--- a/docs/ru-ru/_summary.md
+++ b/docs/ru-ru/_summary.md
@@ -11,7 +11,7 @@
* [QMK CLI](ru-ru/cli.md)
* [QMK CLI Config](ru-ru/cli_configuration.md)
* [Contributing to QMK](ru-ru/contributing.md)
- * [How to Use Github](ru-ru/getting_started_github.md)
+ * [How to Use GitHub](ru-ru/getting_started_github.md)
* [Getting Help](ru-ru/getting_started_getting_help.md)
* [Breaking Changes](ru-ru/breaking_changes.md)
diff --git a/docs/ru-ru/getting_started_github.md b/docs/ru-ru/getting_started_github.md
index 3b4940dd15..4fd80791f1 100644
--- a/docs/ru-ru/getting_started_github.md
+++ b/docs/ru-ru/getting_started_github.md
@@ -6,10 +6,10 @@ GitHub может показаться несколько сложным для
Откройте [страницу QMK на GitHub] (https://github.com/qmk/qmk_firmware), и в правом верхнем углу вы увидите кнопку с надписью "Fork":
-![Fork on Github](http://i.imgur.com/8Toomz4.jpg)
+![Fork on GitHub](http://i.imgur.com/8Toomz4.jpg)
Если вы состоите в какой-либо организации, вам нужно выбрать учетную запись, к которой будет привязан форк. В большинстве случаев это будет личной аккаунт. Как только ваш форк будет завершен (иногда это занимает немного времени), нажмите кнопку "Clone or Download":
-![Download from Github](http://i.imgur.com/N1NYcSz.jpg)
+![Download from GitHub](http://i.imgur.com/N1NYcSz.jpg)
И обязательно выберите "HTTPS", затем выделите ссылку и скопируйте ее:
diff --git a/docs/serial_driver.md b/docs/serial_driver.md
new file mode 100644
index 0000000000..bc376b6ddd
--- /dev/null
+++ b/docs/serial_driver.md
@@ -0,0 +1,69 @@
+# 'serial' Driver
+This driver powers the [Split Keyboard](feature_split_keyboard.md) feature.
+
+?> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards.
+
+All drivers in this category have the following characteristics:
+* Provides data and signaling over a single conductor
+* Limited to single master, single slave
+
+## Supported Driver Types
+
+| | AVR | ARM |
+|-------------------|--------------------|--------------------|
+| bit bang | :heavy_check_mark: | :heavy_check_mark: |
+| USART Half-duplex | | :heavy_check_mark: |
+
+## Driver configuration
+
+### Bitbang
+Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk:
+
+```make
+SERIAL_DRIVER = bitbang
+```
+
+Configure the driver via your config.h:
+```c
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
+ // 0: about 189kbps (Experimental only)
+ // 1: about 137kbps (default)
+ // 2: about 75kbps
+ // 3: about 39kbps
+ // 4: about 26kbps
+ // 5: about 20kbps
+```
+
+#### ARM
+
+!> The bitbang driver causes connection issues with bitbang WS2812 driver
+
+Along with the generic options above, you must also turn on the `PAL_USE_CALLBACKS` feature in your halconf.h.
+
+### USART Half-duplex
+Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage is that this provides fast and accurate timings. `SOFT_SERIAL_PIN` for this driver is the configured USART TX pin. **The TX pin must have appropriate pull-up resistors**. To configure it, add this to your rules.mk:
+
+```make
+SERIAL_DRIVER = usart
+```
+
+Configure the hardware via your config.h:
+```c
+#define SOFT_SERIAL_PIN B6 // USART TX pin
+#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
+ // 0: about 460800 baud
+ // 1: about 230400 baud (default)
+ // 2: about 115200 baud
+ // 3: about 57600 baud
+ // 4: about 38400 baud
+ // 5: about 19200 baud
+#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
+#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+```
+
+You must also enable the ChibiOS `SERIAL` feature:
+* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE`
+* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
+
+Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
diff --git a/docs/support.md b/docs/support.md
index 79c1dbc1b5..938d9daf78 100644
--- a/docs/support.md
+++ b/docs/support.md
@@ -12,6 +12,6 @@ If you need help with something, the best place to get quick support is going to
The official QMK forum is [/r/olkb](https://reddit.com/r/olkb) on [reddit.com](https://reddit.com).
-## Github Issues
+## GitHub Issues
You can open an [issue on GitHub](https://github.com/qmk/qmk_firmware/issues). This is especially handy when your issue will require long-term discussion or debugging.
diff --git a/docs/tap_hold.md b/docs/tap_hold.md
index a0b648694b..2dc57f03c2 100644
--- a/docs/tap_hold.md
+++ b/docs/tap_hold.md
@@ -4,6 +4,38 @@ While Tap-Hold options are fantastic, they are not without their issues. We hav
These options let you modify the behavior of the Tap-Hold keys.
+## Tapping Term
+
+The crux of all of the following features is the tapping term setting. This determines what is a tap and what is a hold. And the exact timing for this to feel natural can vary from keyboard to keyboard, from switch to switch, and from key to key.
+
+You can set the global time for this by adding the following setting to your `config.h`:
+
+```c
+#define TAPPING_TERM 200
+```
+
+This setting is defined in milliseconds, and does default to 200ms. This is a good average for a majority of people.
+
+For more granular control of this feature, you can add the following to your `config.h`:
+```c
+#define TAPPING_TERM_PER_KEY
+```
+
+You can then add the following function to your keymap:
+
+```c
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SFT_T(KC_SPC):
+ return TAPPING_TERM + 1250;
+ case LT(1, KC_GRV):
+ return 130;
+ default:
+ return TAPPING_TERM;
+}
+```
+
+
## Permissive Hold
As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new `config.h` option:
@@ -27,6 +59,25 @@ Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this wil
?> If you have `Ignore Mod Tap Interrupt` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
+For more granular control of this feature, you can add the following to your `config.h`:
+
+```c
+#define PERMISSIVE_HOLD_PER_KEY
+```
+
+You can then add the following function to your keymap:
+
+```c
+bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(1, KC_BSPC):
+ return true;
+ default:
+ return false;
+ }
+}
+```
+
## Ignore Mod Tap Interrupt
To enable this setting, add this to your `config.h`:
@@ -62,13 +113,13 @@ For more granular control of this feature, you can add the following to your `co
You can then add the following function to your keymap:
```c
-bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
- switch (keycode) {
- case SFT_T(KC_SPC):
- return true;
- default:
- return false;
- }
+bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SFT_T(KC_SPC):
+ return true;
+ default:
+ return false;
+ }
}
```
@@ -106,12 +157,12 @@ You can then add the following function to your keymap:
```c
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LT(1, KC_BSPC):
- return true;
- default:
- return false;
- }
+ switch (keycode) {
+ case LT(1, KC_BSPC):
+ return true;
+ default:
+ return false;
+ }
}
```
@@ -126,3 +177,13 @@ To enable `retro tapping`, add the following to your `config.h`:
Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.
+
+## Why do we include the key record for the per key functions?
+
+One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.
+
+Well, it's simply really: customization. But specifically, it depends on how your keyboard is wired up. For instance, if each row is actually using a row in the keyboard's matrix, then it may be simpler to use `if (record->event.row == 3)` instead of checking a whole bunch of keycodes. Which is especially good for those people using the Tap Hold type keys on the home row. So you could fine tune those to not interfere with your normal typing.
+
+## Why is there no `*_kb` or `*_user` functions?!
+
+Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard level function. Only user level functions are useful here, so no need to mark them as such.
diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md
index bb7e0130f0..173af882da 100644
--- a/docs/zh-cn/README.md
+++ b/docs/zh-cn/README.md
@@ -13,7 +13,7 @@ QMK (*Quantum Mechanical Keyboard*) 是一个社区维护的开源软件,包�
## 如何得到它
-如果你打算贡献布局, 键盘, 或者其他QMK特性, 一下是最简单的方法:[从Github获得repo分支](https://github.com/qmk/qmk_firmware#fork-destination-box), 并克隆你的repo到本地进行编辑,推送,然后从你的分支打开 [Pull Request](https://github.com/qmk/qmk_firmware/pulls).
+如果你打算贡献布局, 键盘, 或者其他QMK特性, 一下是最简单的方法:[从GitHub获得repo分支](https://github.com/qmk/qmk_firmware#fork-destination-box), 并克隆你的repo到本地进行编辑,推送,然后从你的分支打开 [Pull Request](https://github.com/qmk/qmk_firmware/pulls).
此外, 你也可以直接下载 ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), 或者从git克隆 (`[email protected]:qmk/qmk_firmware.git`), 或 https (`https://github.com/qmk/qmk_firmware.git`).
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index 201b83894d..cedcfbd525 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -14,7 +14,7 @@
* [QMK命令行工具](zh-cn/cli.md)
* [QMK命令行工具配置](zh-cn/cli_configuration.md)
* [向QMK贡献代码](zh-cn/contributing.md)
- * [如何使用Github](zh-cn/getting_started_github.md)
+ * [如何使用GitHub](zh-cn/getting_started_github.md)
* [获得帮助](zh-cn/getting_started_getting_help.md)
* [非兼容性修改](zh-cn/breaking_changes.md)
diff --git a/docs/zh-cn/custom_quantum_functions.md b/docs/zh-cn/custom_quantum_functions.md
index f2c6098dcb..95b2084dbf 100644
--- a/docs/zh-cn/custom_quantum_functions.md
+++ b/docs/zh-cn/custom_quantum_functions.md
@@ -57,7 +57,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ENTER:
// 当按下回车时播放音符
if (record->event.pressed) {
- PLAY_NOTE_ARRAY(tone_qwerty);
+ PLAY_SONG(tone_qwerty);
}
return true; // 让QMK触发回车按下/释放事件
default:
@@ -413,7 +413,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ENTER:
// 在按下回车时播放音符
if (record->event.pressed) {
- PLAY_NOTE_ARRAY(tone_qwerty);
+ PLAY_SONG(tone_qwerty);
}
return true; // 让QMK产生回车按下/释放事件
case RGB_LYR: // 本句让underglow作为层指示,或正常使用。
@@ -473,7 +473,7 @@ void eeconfig_init_user(void) { // EEPROM正被重置
想要修改基于键码的`TAPPING TERM`,你要向`keymap.c`文件添加如下代码:
```c
-uint16_t get_tapping_term(uint16_t keycode) {
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SFT_T(KC_SPC):
return TAPPING_TERM + 1250;
diff --git a/docs/zh-cn/getting_started_getting_help.md b/docs/zh-cn/getting_started_getting_help.md
index cf770a7708..8c0ebaa243 100644
--- a/docs/zh-cn/getting_started_getting_help.md
+++ b/docs/zh-cn/getting_started_getting_help.md
@@ -10,6 +10,6 @@
QMK的官方论坛是[/r/olkb](https://reddit.com/r/olkb) 在[reddit.com](https://reddit.com)上.
-## Github的Issue
+## GitHub的Issue
你可以在GitHub上 [提出issue](https://github.com/qmk/qmk_firmware/issues).当您的问题需要长期讨论或调试时,这尤其方便。
diff --git a/docs/zh-cn/getting_started_github.md b/docs/zh-cn/getting_started_github.md
index 2b2f7a75c5..9a01e43b7f 100644
--- a/docs/zh-cn/getting_started_github.md
+++ b/docs/zh-cn/getting_started_github.md
@@ -1,16 +1,16 @@
-# 如何在QMK中使用Github
+# 如何在QMK中使用GitHub
-Github can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
+GitHub can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
?> 本教程假设您已安装GitHub,并且您喜欢使用命令行工作。
-首先 [Github上的QMK页面](https://github.com/qmk/qmk_firmware), 您能看到右上方有个按钮写着"Fork":
+首先 [GitHub上的QMK页面](https://github.com/qmk/qmk_firmware), 您能看到右上方有个按钮写着"Fork":
-![从Github上分叉](http://i.imgur.com/8Toomz4.jpg)
+![从GitHub上分叉](http://i.imgur.com/8Toomz4.jpg)
如果你是某组织成员,你将需要选择分叉到哪个账户。一般情况下, 你是想要分叉到你的私人账户下。当你完成分叉 (有时需要等一会), 点击"Clone or Download" 按钮:
-!从Github下载](http://i.imgur.com/N1NYcSz.jpg)
+!从GitHub下载](http://i.imgur.com/N1NYcSz.jpg)
你要选择 "HTTPS", 然后选择链接复制:
@@ -54,7 +54,7 @@ To https://github.com/whoeveryouare/qmk_firmware.git
+ 20043e64...7da94ac5 master -> master
```
-现在你的改动已经在你Github上的分支中了 - 如果你回到这 (`https://github.com/你的GitHub账户名/qmk_firmware`) ,你可以点击下方所示按钮创建 "New Pull Request":
+现在你的改动已经在你GitHub上的分支中了 - 如果你回到这 (`https://github.com/你的GitHub账户名/qmk_firmware`) ,你可以点击下方所示按钮创建 "New Pull Request":
![新的 Pull Request](http://i.imgur.com/DxMHpJ8.jpg)
diff --git a/docs/zh-cn/newbs_building_firmware.md b/docs/zh-cn/newbs_building_firmware.md
index 31093f2543..fc43583c2b 100644
--- a/docs/zh-cn/newbs_building_firmware.md
+++ b/docs/zh-cn/newbs_building_firmware.md
@@ -20,7 +20,7 @@
## 创建`default` 布局副本
-打开`keymaps`文件夹后,您将需要创建`default`文件夹的副本。我们强烈建议您将文件夹命名为与Github用户名相同的名称,但您也可以使用任何您想使用的名称,只要它只包含小写字母、数字和下划线字符。
+打开`keymaps`文件夹后,您将需要创建`default`文件夹的副本。我们强烈建议您将文件夹命名为与GitHub用户名相同的名称,但您也可以使用任何您想使用的名称,只要它只包含小写字母、数字和下划线字符。
要自动执行此过程,您还可以选择运行`new_keymap.sh`脚本。