summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/_summary.md18
-rw-r--r--docs/config_options.md2
-rw-r--r--docs/data_driven_config.md5
-rw-r--r--docs/feature_encoders.md36
-rw-r--r--docs/feature_hd44780.md345
-rw-r--r--docs/feature_joystick.md2
-rw-r--r--docs/feature_midi.md6
-rw-r--r--docs/feature_rgb_matrix.md1
-rw-r--r--docs/feature_swap_hands.md13
-rw-r--r--docs/feature_unicode.md11
-rw-r--r--docs/flashing.md11
-rw-r--r--docs/gpio_control.md (renamed from docs/internals_gpio_control.md)0
-rw-r--r--docs/internals/defines.md (renamed from docs/internals_defines.md)0
-rw-r--r--docs/internals/input_callback_reg.md (renamed from docs/internals_input_callback_reg.md)0
-rw-r--r--docs/internals/midi_device.md (renamed from docs/internals_midi_device.md)0
-rw-r--r--docs/internals/midi_device_setup_process.md (renamed from docs/internals_midi_device_setup_process.md)0
-rw-r--r--docs/internals/midi_util.md (renamed from docs/internals_midi_util.md)0
-rw-r--r--docs/internals/send_functions.md (renamed from docs/internals_send_functions.md)0
-rw-r--r--docs/internals/sysex_tools.md (renamed from docs/internals_sysex_tools.md)0
-rw-r--r--docs/ja/_summary.md16
-rw-r--r--docs/ja/feature_unicode.md11
-rw-r--r--docs/ja/gpio_control.md (renamed from docs/ja/internals_gpio_control.md)4
-rw-r--r--docs/ja/internals_defines.md78
-rw-r--r--docs/ja/internals_input_callback_reg.md173
-rw-r--r--docs/ja/internals_midi_device.md148
-rw-r--r--docs/ja/internals_midi_device_setup_process.md36
-rw-r--r--docs/ja/internals_midi_util.md59
-rw-r--r--docs/ja/internals_send_functions.md246
-rw-r--r--docs/ja/internals_sysex_tools.md66
-rw-r--r--docs/ja/proton_c_conversion.md2
-rw-r--r--docs/keycodes.md11
-rw-r--r--docs/proton_c_conversion.md2
-rw-r--r--docs/quantum_keycodes.md11
-rw-r--r--docs/zh-cn/_summary.md16
34 files changed, 404 insertions, 925 deletions
diff --git a/docs/_summary.md b/docs/_summary.md
index 74203aa0f8..249bfcd9ed 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -94,7 +94,7 @@
* Hardware Features
* Displays
- * [HD44780 LCD Controller](feature_hd44780.md)
+ * [HD44780 LCD Driver](feature_hd44780.md)
* [ST7565 LCD Driver](feature_st7565.md)
* [OLED Driver](feature_oled_driver.md)
* Lighting
@@ -147,7 +147,7 @@
* [EEPROM Driver](eeprom_driver.md)
* ['serial' Driver](serial_driver.md)
* [UART Driver](uart_driver.md)
- * [GPIO Controls](internals_gpio_control.md)
+ * [GPIO Controls](gpio_control.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* Python Development
@@ -183,10 +183,10 @@
* [Understanding QMK](understanding_qmk.md)
* QMK Internals (In Progress)
- * [Defines](internals_defines.md)
- * [Input Callback Reg](internals_input_callback_reg.md)
- * [Midi Device](internals_midi_device.md)
- * [Midi Device Setup Process](internals_midi_device_setup_process.md)
- * [Midi Util](internals_midi_util.md)
- * [Send Functions](internals_send_functions.md)
- * [Sysex Tools](internals_sysex_tools.md)
+ * [Defines](internals/defines.md)
+ * [Input Callback Reg](internals/input_callback_reg.md)
+ * [Midi Device](internals/midi_device.md)
+ * [Midi Device Setup Process](internals/midi_device_setup_process.md)
+ * [Midi Util](internals/midi_util.md)
+ * [Send Functions](internals/send_functions.md)
+ * [Sysex Tools](internals/sysex_tools.md)
diff --git a/docs/config_options.md b/docs/config_options.md
index 838c4d86fd..8227a0e074 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -131,6 +131,8 @@ If you define these options you will disable the associated feature, which can s
If you define these options you will enable the associated feature, which may increase your code size.
+* `#define ENABLE_COMPILE_KEYCODE`
+ * Enables the `QK_MAKE` keycode
* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* `#define STRICT_LAYER_RELEASE`
diff --git a/docs/data_driven_config.md b/docs/data_driven_config.md
index 38fb5dbf14..cdcf21a19c 100644
--- a/docs/data_driven_config.md
+++ b/docs/data_driven_config.md
@@ -44,7 +44,7 @@ In other cases you should group like options together in an `object`. This is pa
In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.json` and `data/mappings/info_rules.json`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys:
* `info_key`: (required) The location within `info.json` for this value. See below.
-* `value_type`: (optional) Default `str`. The format for this variable's value. See below.
+* `value_type`: (optional) Default `raw`. The format for this variable's value. See below.
* `to_json`: (optional) Default `true`. Set to `false` to exclude this mapping from info.json
* `to_c`: (optional) Default `true`. Set to `false` to exclude this mapping from config.h
* `warn_duplicate`: (optional) Default `true`. Set to `false` to turn off warning when a value exists in both places
@@ -57,7 +57,7 @@ Under the hood we use [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/)
#### Value Types
-By default we treat all values as simple strings. If your value is more complex you can use one of these types to intelligently parse the data:
+By default we treat all values as unquoted "raw" data. If your value is more complex you can use one of these types to intelligently parse the data:
* `array`: A comma separated array of strings
* `array.int`: A comma separated array of integers
@@ -65,6 +65,7 @@ By default we treat all values as simple strings. If your value is more complex
* `hex`: A number formatted as hex
* `list`: A space separate array of strings
* `mapping`: A hash of key/value pairs
+* `str`: A quoted string literal
### Add code to extract it
diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md
index 6a1a3750a6..a3d56fd5ef 100644
--- a/docs/feature_encoders.md
+++ b/docs/feature_encoders.md
@@ -54,9 +54,43 @@ If you are using different pinouts for the encoders on each half of a split keyb
#define ENCODER_RESOLUTIONS_RIGHT { 2, 4 }
```
+If the `_RIGHT` definitions aren't specified in your `config.h`, then the non-`_RIGHT` versions will be applied to both sides of the split.
+
+Additionally, if one side does not have an encoder, you can specify `{}` for the pins/resolution -- for example, a split keyboard with only a right-side encoder:
+
+```c
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { }
+#define ENCODERS_PAD_A_RIGHT { B12 }
+#define ENCODERS_PAD_B_RIGHT { B13 }
+#define ENCODER_RESOLUTIONS_RIGHT { 4 }
+```
+
+## Encoder map
+
+Encoder mapping may be added to your `keymap.c`, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your `rules.mk`:
+
+```make
+ENCODER_MAP_ENABLE = yes
+```
+
+Your `keymap.c` will then need an encoder mapping defined (for four layers and two encoders):
+
+```c
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+ [_ADJUST] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
+};
+#endif
+```
+
## Callbacks
-The callback functions can be inserted into your `<keyboard>.c`:
+When not using `ENCODER_MAP_ENABLE = yes`, the callback functions can be inserted into your `<keyboard>.c`:
```c
bool encoder_update_kb(uint8_t index, bool clockwise) {
diff --git a/docs/feature_hd44780.md b/docs/feature_hd44780.md
index dc476c734f..4ade640baa 100644
--- a/docs/feature_hd44780.md
+++ b/docs/feature_hd44780.md
@@ -1,57 +1,298 @@
-# 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://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.
-
-## Configuration
-
-You will need to configure the pins used by your display, and its number of lines and columns in your keyboard's `config.h`.
-
-
-Uncomment the section labled HD44780 and change the parameters as needed.
-````
-/*
- * HD44780 LCD Display Configuration
- */
-
-#define LCD_LINES 2 //< number of visible lines of the display
-#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
-#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
-#if LCD_IO_MODE
-#define LCD_PORT PORTB //< port for the LCD lines
-#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
-#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
-#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
-#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
-#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
-#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
-#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
-#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
-#define LCD_RS_PORT LCD_PORT //< port for RS line
-#define LCD_RS_PIN 3 //< pin for RS line
-#define LCD_RW_PORT LCD_PORT //< port for RW line
-#define LCD_RW_PIN 2 //< pin for RW line
-#define LCD_E_PORT LCD_PORT //< port for Enable line
-#define LCD_E_PIN 1 //< pin for Enable line
-#endif
-````
-
-Should you need to configure other properties you can copy them from `quantum/hd44780.h` and set them in your `config.h`
+# HD44780 LCD Driver
+
+## Supported Hardware
+
+LCD modules using [HD44780U](https://www.sparkfun.com/datasheets/LCD/HD44780.pdf) IC or equivalent, communicating in 4-bit mode.
+
+|Module|Size |Notes |
+|------|--------------|---------------------------------|
+|1602A |16x2, 5x8 dots| |
+|2004A |20x4, 5x8 dots|Untested, not currently supported|
+
+To run these modules at 3.3V, an additional MAX660 voltage converter IC must be soldered on, along with two 10µF capacitors. See [this page](https://www.codrey.com/electronic-circuits/hack-your-16x2-lcd/) for more details.
## Usage
-To initialize your display, call `lcd_init()` with one of these parameters:
-````
-LCD_DISP_OFF : display off
-LCD_DISP_ON : display on, cursor off
-LCD_DISP_ON_CURSOR : display on, cursor on
-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_clrscr()`.
+Add the following to your `rules.mk`:
+
+```make
+HD44780_ENABLE = yes
+```
+
+## Basic Configuration
+
+Add the following to your `config.h`:
+
+|Define |Default |Description |
+|-----------------------|--------------|-----------------------------------------------------------------------------------------------------|
+|`HD44780_DATA_PINS` |*Not defined* |(Required) An array of four GPIO pins connected to the display's D4-D7 pins, eg. `{ B1, B3, B2, B6 }`|
+|`HD44780_RS_PIN` |*Not defined* |(Required) The GPIO connected to the display's RS pin |
+|`HD44780_RW_PIN` |*Not defined* |(Required) The GPIO connected to the display's RW pin |
+|`HD44780_E_PIN` |*Not defined* |(Required) The GPIO connected to the display's E pin |
+|`HD44780_DISPLAY_COLS` |`16` |The number of visible characters on a single line of the display |
+|`HD44780_DISPLAY_LINES`|`2` |The number of visible lines on the display |
+|`HD44780_WRAP_LINES` |*Not defined* |If defined, input characters will wrap to the next line |
+
+## Examples
+
+### Hello World
+
+Add the following to your `keymap.c`:
+
+```c
+void keyboard_post_init_user(void) {
+ hd44780_init(true, true); // Show blinking cursor
+ hd44780_puts_P(PSTR("Hello, world!\n"));
+}
+```
+
+### Custom Character Definition
+
+Up to eight custom characters can be defined. This data is stored in the Character Generator RAM (CGRAM), and is not persistent across power cycles.
+
+This example defines the QMK Psi as the first custom character. The first 16 positions in the character set are reserved for the eight custom characters duplicated.
+
+```
+Byte | 16 8 4 2 1
+ 1 | x x x ■ □ ■ □ ■
+ 2 | x x x ■ □ ■ □ ■
+ 3 | x x x ■ □ ■ □ ■
+ 4 | x x x □ ■ ■ ■ □
+ 5 | x x x □ □ ■ □ □
+ 6 | x x x □ □ ■ □ □
+ 7 | x x x □ □ ■ □ □
+ 8 | x x x □ □ □ □ □
+```
+
+```c
+const uint8_t PROGMEM psi[8] = { 0x15, 0x15, 0x15, 0x0E, 0x04, 0x04, 0x04, 0x00 };
+
+void keyboard_post_init_user(void) {
+ hd44780_init(false, false);
+ hd44780_define_char_P(0, psi);
+ // Cursor is incremented while defining characters so must be reset
+ hd44780_home();
+ // 0x08 to avoid null terminator
+ hd44780_puts_P(PSTR("\x08 QMK Firmware"));
+}
+```
+
+## API
+
+### `void hd44780_init(bool cursor, bool blink)`
+
+Initialize the display.
+
+This function should be called only once, before any of the other functions can be called.
+
+#### Arguments
+
+ - `bool cursor`
+ Whether to show the cursor.
+ - `bool blink`
+ Whether to blink the cursor, if shown.
+
+---
+
+### `void hd44780_clear(void)`
+
+Clear the display.
+
+This function is called on init.
+
+---
+
+### `void hd44780_home(void)`
+
+Move the cursor to the home position.
+
+This function is called on init.
+
+---
+
+### `void hd44780_on(bool cursor, bool blink)`
+
+Turn the display on, and/or set the cursor properties.
+
+This function is called on init.
+
+#### Arguments
+
+ - `bool cursor`
+ Whether to show the cursor.
+ - `bool blink`
+ Whether to blink the cursor, if shown.
+
+---
+
+### `void hd44780_off(void)`
+
+Turn the display off.
+
+---
+
+### `void hd44780_set_cursor(uint8_t col, uint8_t line)`
+
+Move the cursor to the specified position on the display.
+
+#### Arguments
+
+ - `uint8_t col`
+ The column number to move to, from 0 to 15 on 16x2 displays.
+ - `bool line`
+ The line number to move to, either 0 or 1 on 16x2 displays.
+
+---
+
+### `void hd44780_putc(char c)`
+
+Print a character to the display. The newline character `\n` will move the cursor to the start of the next line.
+
+The exact character shown may depend on the ROM code of your particular display - refer to the datasheet for the full character set.
+
+#### Arguments
+
+ - `char c`
+ The character to print.
+
+---
+
+### `void hd44780_puts(const char *s)`
+
+Print a string of characters to the display.
+
+#### Arguments
+
+ - `const char *s`
+ The string to print.
+
+---
+
+### `void hd44780_puts_P(const char *s)`
+
+Print a string of characters from PROGMEM to the display.
+
+On ARM devices, this function is simply an alias of `hd44780_puts()`.
+
+#### Arguments
+
+ - `const char *s`
+ The PROGMEM string to print (ie. `PSTR("Hello")`).
+
+---
+
+### `void hd44780_define_char(uint8_t index, uint8_t *data)`
+
+Define a custom character.
+
+#### Arguments
+
+ - `uint8_t index`
+ The index of the custom character to define, from 0 to 7.
+ - `uint8_t *data`
+ An array of 8 bytes containing the 5-bit row data of the character, where the first byte is the topmost row, and the least significant bit of each byte is the rightmost column.
+
+---
+
+### `void hd44780_define_char_P(uint8_t index, const uint8_t *data)`
+
+Define a custom character from PROGMEM.
+
+On ARM devices, this function is simply an alias of `hd44780_define_char()`.
+
+#### Arguments
+
+ - `uint8_t index`
+ The index of the custom character to define, from 0 to 7.
+ - `const uint8_t *data`
+ A PROGMEM array of 8 bytes containing the 5-bit row data of the character, where the first byte is the topmost row, and the least significant bit of each byte is the rightmost column.
+
+---
+
+### `bool hd44780_busy(void)`
+
+Indicates whether the display is currently processing, and cannot accept instructions.
+
+#### Return Value
+
+`true` if the display is busy.
+
+---
+
+### `void hd44780_write(uint8_t data, bool isData)`
+
+Write a byte to the display.
+
+#### Arguments
+
+ - `uint8_t data`
+ The byte to send to the display.
+ - `bool isData`
+ Whether the byte is an instruction or character data.
+
+---
+
+### `uint8_t hd44780_read(bool isData)`
+
+Read a byte from the display.
+
+#### Arguments
+
+ - `bool isData`
+ Whether to read the current cursor position, or the character at the cursor.
+
+#### Return Value
+
+If `isData` is `true`, the returned byte will be the character at the current DDRAM address. Otherwise, it will be the current DDRAM address and the busy flag.
+
+---
+
+### `void hd44780_command(uint8_t command)`
+
+Send a command to the display. Refer to the datasheet and `hd44780.h` for the valid commands and defines.
+
+This function waits for the display to clear the busy flag before sending the command.
+
+#### Arguments
+
+ - `uint8_t command`
+ The command to send.
+
+---
+
+### `void hd44780_data(uint8_t data)`
+
+Send a byte of data to the display.
+
+This function waits for the display to clear the busy flag before sending the data.
+
+#### Arguments
+
+ - `uint8_t data`
+ The byte of data to send.
+
+---
+
+### `void hd44780_set_cgram_address(uint8_t address)`
+
+Set the CGRAM address.
+
+This function is used when defining custom characters.
+
+#### Arguments
+
+ - `uint8_t address`
+ The CGRAM address to move to, from `0x00` to `0x3F`.
+
+---
+
+### `void hd44780_set_ddram_address(uint8_t address)`
+
+Set the DDRAM address.
+
+This function is used when printing characters to the display, and setting the cursor.
-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")`.
+#### Arguments
-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)
+ - `uint8_t address`
+ The DDRAM address to move to, from `0x00` to `0x7F`.
diff --git a/docs/feature_joystick.md b/docs/feature_joystick.md
index fe33517a16..2635298587 100644
--- a/docs/feature_joystick.md
+++ b/docs/feature_joystick.md
@@ -150,3 +150,5 @@ Note that the supported AVR MCUs have a 10-bit ADC, and 12-bit for most STM32 MC
Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured.
To trigger a joystick button, just add the corresponding keycode to your keymap.
+
+You can also trigger joystick buttons in code with `register_joystick_button(button)` and `unregister_joystick_button(button)`, where `button` is the 0-based button index (0 = button 1).
diff --git a/docs/feature_midi.md b/docs/feature_midi.md
index 3da5c4940a..490bf7cc7d 100644
--- a/docs/feature_midi.md
+++ b/docs/feature_midi.md
@@ -254,7 +254,7 @@ For the above, the `MI_C` keycode will produce a C3 (note number 48), and so on.
<!--
#### QMK Internals (Autogenerated)
- * [Internals/MIDI Device Setup Process](internals_midi_device_setup_process.md)
- * [Internals/MIDI Device](internals_midi_device.md)
- * [Internals/MIDI Util](internals_midi_util.md)
+ * [Internals/MIDI Device Setup Process](internals/midi_device_setup_process.md)
+ * [Internals/MIDI Device](internals/midi_device.md)
+ * [Internals/MIDI Util](internals/midi_util.md)
-->
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 87dbc5f780..a8793be328 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -171,6 +171,7 @@ Configure the hardware via your `config.h`:
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
+| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3737B only | 0 |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md
index 654108ae70..6768020f12 100644
--- a/docs/feature_swap_hands.md
+++ b/docs/feature_swap_hands.md
@@ -31,3 +31,16 @@ Note that the array indices are reversed same as the matrix and the values are o
|`SH_OS` |One shot swap hands: toggles while pressed or until next key press. |
`SH_TT` swap-hands tap-toggle key is similar to [layer tap-toggle](feature_layers.md?id=switching-and-toggling-layers). Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like `SH_TG`. Tap-toggle count can be changed by defining a value for `TAPPING_TOGGLE`.
+
+## Encoder Mapping
+
+When using an encoder mapping, it's also able to handle swapping encoders between sides, too.
+
+Encoder indexes are defined as left-to-right, and the extent of the array needs to match the number of encoders on the keyboard.
+
+As an example, if a split keyboard has a single encoder per side, you can swap the order by using the following code in your keymap:
+```c
+#if defined(SWAP_HANDS_ENABLE) && defined(ENCODER_MAP_ENABLE)
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = { 1, 0 };
+#endif
+```
diff --git a/docs/feature_unicode.md b/docs/feature_unicode.md
index 6c3e2a1a2f..bced419a03 100644
--- a/docs/feature_unicode.md
+++ b/docs/feature_unicode.md
@@ -230,17 +230,6 @@ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
Example uses include sending Unicode strings when a key is pressed, as described in [Macros](feature_macros.md).
-### `send_unicode_hex_string()` (Deprecated)
-
-Similar to `send_unicode_string()`, but the characters are represented by their Unicode code points, written in hexadecimal and separated by spaces. For example, the table flip above would be achieved with:
-
-```c
-send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
-```
-
-An easy way to convert your Unicode string to this format is to use [this site](https://r12a.github.io/app-conversion/) and take the result in the "Hex/UTF-32" section.
-
-
## Additional Language Support
In `quantum/keymap_extras`, you'll see various language files — these work the same way as the ones for alternative layouts such as Colemak or BÉPO. When you include one of these language headers, you gain access to keycodes specific to that language / national layout. Such keycodes are defined by a 2-letter country/language code, followed by an underscore and a 4-letter abbreviation of the character to which the key corresponds. For example, including `keymap_french.h` and using `FR_UGRV` in your keymap will output `ù` when typed on a system with a native French AZERTY layout.
diff --git a/docs/flashing.md b/docs/flashing.md
index 83f4bf82ae..ae31f9c621 100644
--- a/docs/flashing.md
+++ b/docs/flashing.md
@@ -347,3 +347,14 @@ Flashing sequence:
2. Wait for the OS to detect the device
3. Copy the .uf2 file to the new USB disk
4. Wait for the keyboard to become available
+
+or
+
+CLI Flashing sequence:
+
+1. Enter the bootloader using any of the following methods:
+ * Tap the `RESET` keycode
+ * Double-tap the `nRST` button on the PCB.
+2. Wait for the OS to detect the device
+3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/blackpill_f411_tinyuf2 --keymap default`
+4. Wait for the keyboard to become available
diff --git a/docs/internals_gpio_control.md b/docs/gpio_control.md
index e1f1515b71..e1f1515b71 100644
--- a/docs/internals_gpio_control.md
+++ b/docs/gpio_control.md
diff --git a/docs/internals_defines.md b/docs/internals/defines.md
index fdcb553589..fdcb553589 100644
--- a/docs/internals_defines.md
+++ b/docs/internals/defines.md
diff --git a/docs/internals_input_callback_reg.md b/docs/internals/input_callback_reg.md
index 4ea132a83a..4ea132a83a 100644
--- a/docs/internals_input_callback_reg.md
+++ b/docs/internals/input_callback_reg.md
diff --git a/docs/internals_midi_device.md b/docs/internals/midi_device.md
index 5b57abd454..5b57abd454 100644
--- a/docs/internals_midi_device.md
+++ b/docs/internals/midi_device.md
diff --git a/docs/internals_midi_device_setup_process.md b/docs/internals/midi_device_setup_process.md
index ae82197c5c..ae82197c5c 100644
--- a/docs/internals_midi_device_setup_process.md
+++ b/docs/internals/midi_device_setup_process.md
diff --git a/docs/internals_midi_util.md b/docs/internals/midi_util.md
index 97821bd180..97821bd180 100644
--- a/docs/internals_midi_util.md
+++ b/docs/internals/midi_util.md
diff --git a/docs/internals_send_functions.md b/docs/internals/send_functions.md
index b331508008..b331508008 100644
--- a/docs/internals_send_functions.md
+++ b/docs/internals/send_functions.md
diff --git a/docs/internals_sysex_tools.md b/docs/internals/sysex_tools.md
index 55dbe9e164..55dbe9e164 100644
--- a/docs/internals_sysex_tools.md
+++ b/docs/internals/sysex_tools.md
diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md
index b90480041c..81b5756c27 100644
--- a/docs/ja/_summary.md
+++ b/docs/ja/_summary.md
@@ -137,7 +137,7 @@
* [EEPROM ドライバ](ja/eeprom_driver.md)
* [シリアル ドライバ](ja/serial_driver.md)
* [UART ドライバ](ja/uart_driver.md)
- * [GPIO 制御](ja/internals_gpio_control.md)
+ * [GPIO 制御](ja/gpio_control.md)
* [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
* Python 開発
@@ -173,10 +173,10 @@
* [QMK を理解する](ja/understanding_qmk.md)
* QMK の内部詳細(作成中)
- * [定義](ja/internals_defines.md)
- * [入力コールバック登録](ja/internals_input_callback_reg.md)
- * [Midi デバイス](ja/internals_midi_device.md)
- * [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
- * [Midi ユーティリティ](ja/internals_midi_util.md)
- * [Midi 送信関数](ja/internals_send_functions.md)
- * [Sysex Tools](ja/internals_sysex_tools.md)
+ * [定義](ja/internals/defines.md)
+ * [入力コールバック登録](ja/internals/input_callback_reg.md)
+ * [Midi デバイス](ja/internals/midi_device.md)
+ * [Midi デバイスのセットアップ手順](ja/internals/midi_device_setup_process.md)
+ * [Midi ユーティリティ](ja/internals/midi_util.md)
+ * [Midi 送信関数](ja/internals/send_functions.md)
+ * [Sysex Tools](ja/internals/sysex_tools.md)
diff --git a/docs/ja/feature_unicode.md b/docs/ja/feature_unicode.md
index bfcb866ce1..2158678f3c 100644
--- a/docs/ja/feature_unicode.md
+++ b/docs/ja/feature_unicode.md
@@ -233,17 +233,6 @@ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
使用例には、[Macros](ja/feature_macros.md) で説明されているように、キーが押された時に Unicode 文字列を送信することが含まれます。
-### `send_unicode_hex_string()`
-
-`send_unicode_string()` に似ていますが、文字は Unicode コードポイントで表され、16進数で記述され、空白で区切られています。例えば、上記のちゃぶ台返しは以下で表されます:
-
-```c
-send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
-```
-
-[このサイト](https://r12a.github.io/app-conversion/)で結果を "Hex/UTF-32" で受け取ることで、Unicode 文字列をこの形式に簡単に変換できます。
-
-
## 追加の言語サポート
`quantum/keymap_extras` には、様々な言語ファイルがあります — これらは Colemak または BÉPO のような代替レイアウトのファイルと同じように動作します。これらの言語ヘッダのいずれかを `#include` すると、その言語/国のレイアウトに固有のキーコードにアクセスできます。このようなキーコードは、2文字の国/言語コードの後に、アンダースコアとキーが対応する4文字の略語が続くことで定義されます。例えば、キーマップに `keymap_french.h` を含め、`FR_UGRV` を使うと、ネイティブのフランス語 AZERTY レイアウトを使うシステムで入力すると、`ù` が出力されます。
diff --git a/docs/ja/internals_gpio_control.md b/docs/ja/gpio_control.md
index 60c5367870..7bece3e0c7 100644
--- a/docs/ja/internals_gpio_control.md
+++ b/docs/ja/gpio_control.md
@@ -1,8 +1,8 @@
# GPIO 制御 :id=gpio-control
<!---
- original document: 0.13.15:docs/internals_gpio_control.md
- git diff 0.13.15 HEAD -- docs/internals_gpio_control.md | cat
+ original document: 0.13.15:docs/gpio_control.md
+ git diff 0.13.15 HEAD -- docs/gpio_control.md | cat
-->
QMK には、マイクロコントローラに依存しない GPIO 制御抽象レイヤーがあります。これは異なるプラットフォーム間でピン制御に簡単にアクセスできるようにするためのものです。
diff --git a/docs/ja/internals_defines.md b/docs/ja/internals_defines.md
deleted file mode 100644
index 512730df75..0000000000
--- a/docs/ja/internals_defines.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# `defines` グループ {#group__defines}
-
-## 概要
-
-メンバー | 説明
---------------------------------|---------------------------------------------
-`define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) |
-`define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) |
-`define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) |
-`define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) |
-`define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) |
-`define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) |
-`define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) |
-`define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) |
-`define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) |
-`define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) |
-`define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) |
-`define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) |
-`define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) |
-`define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) |
-`define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) |
-`define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) |
-`define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) |
-`define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) |
-`define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) |
-`define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) |
-`define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) |
-`define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) |
-`define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) |
-
-## メンバー
-
-#### `define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) {#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79}
-
-#### `define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) {#group__defines_1ga753706d1d28e6f96d7caf1973e80feed}
-
-#### `define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) {#group__defines_1gab78a1c818a5f5dab7a8946543f126c69}
-
-#### `define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) {#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909}
-
-#### `define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) {#group__defines_1ga45f116a1daab76b3c930c2cecfaef215}
-
-#### `define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) {#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7}
-
-#### `define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) {#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc}
-
-#### `define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) {#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f}
-
-#### `define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) {#group__defines_1gabcc799504e8064679bca03f232223af4}
-
-#### `define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) {#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42}
-
-#### `define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) {#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe}
-
-#### `define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) {#group__defines_1gafa5e4e295aafd15ab7893344599b3b89}
-
-#### `define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) {#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7}
-
-#### `define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) {#group__defines_1ga8233631c85823aa546f932ad8975caa4}
-
-#### `define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) {#group__defines_1gab24430f0081e27215b0da84dd0ee745c}
-
-#### `define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) {#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62}
-
-#### `define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) {#group__defines_1gacd88ed42dba52bb4b2052c5656362677}
-
-#### `define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) {#group__defines_1ga02947f30ca62dc332fdeb10c5868323b}
-
-#### `define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) {#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31}
-
-#### `define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) {#group__defines_1ga412f6ed33a2150051374bee334ee1705}
-
-#### `define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) {#group__defines_1gafcab254838b028365ae0259729e72c4e}
-
-#### `define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) {#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795}
-
-#### `define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) {#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f}
-
diff --git a/docs/ja/internals_input_callback_reg.md b/docs/ja/internals_input_callback_reg.md
deleted file mode 100644
index 864b1d5750..0000000000
--- a/docs/ja/internals_input_callback_reg.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# group `input_callback_reg` {#group__input__callback__reg}
-
-<!---
- original document: 0.9.34:docs/internals_input_callback_reg.md
- git diff 0.9.34 HEAD -- docs/internals_input_callback_reg.md | cat
--->
-
-これらは受信コールバックを登録するために使用する関数です。
-
-関数は、適切な midi メッセージが関連するデバイスの入力と一致した場合に呼び出されます。
-
-## 概要
-
-| メンバー | 説明 |
---------------------------------|---------------------------------------------
-| `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | コントロールチェンジメッセージ受信コールバックを登録する。 |
-| `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ノートオン受信コールバックを登録する。 |
-| `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ノートオフ受信コールバックを登録する。 |
-| `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | アフタータッチ受信コールバックを登録する。 |
-| `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ピッチベンド受信コールバックを登録する。 |
-| `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | ソングポジション受信コールバックを登録する。 |
-| `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | プログラムチェンジ受信コールバックを登録する。 |
-| `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | チャンネルプレッシャー受信コールバックを登録する。 |
-| `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | ソングセレクト受信コールバックを登録する。 |
-| `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | タイムコードクォータフレーム受信コールバックを登録する。 |
-| `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` | リアルタイム受信コールバックを登録する。 |
-| `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` | チューンリクエスト受信コールバックを登録する。 |
-| `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_sysex_func_t func)` | システムエクスクルーシブ受信コールバックを登録する。 |
-| `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` | フォールスルー受信コールバックを登録する。 |
-| `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` | キャッチオール受信コールバックを登録する。 |
-
-## メンバー
-
-#### `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718}
-
-コントロールチェンジメッセージ受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga3962f276c17618923f1152779552103e}
-
-ノートオン受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d}
-
-ノートオフ受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f}
-
-アフタータッチ受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48}
-
-ピッチベンド受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6}
-
-ソングポジション受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127}
-
-プログラムチェンジ受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5}
-
-チャンネルプレッシャー受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72}
-
-ソングセレクト受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e}
-
-タイムコードクォータフレーム受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a}
-
-リアルタイム受信コールバックを登録する。
-
-全てのリアルタイムメッセージ型に対してコールバックが呼ばれます。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1}
-
-チューンリクエスト受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_sysex_func_t func)` {#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48}
-
-システムエクスクルーシブ受信コールバックを登録する。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94}
-
-フォールスルー受信コールバックを登録する。
-
-より具体的なコールバックが見つからない場合にのみ呼ばれます。例えば、ノートオン受信コールバックを登録していないがノートオンメッセージを受け取った場合、フォールスルー受信コールバックが登録されている場合はそれが呼ばれます。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
-
-#### `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99}
-
-キャッチオール受信コールバックを登録する。
-
-登録されている場合は、より具体的なコールバックあるいはフォールスルー受信コールバックが登録されている場合でも、一致する全てのメッセージに対してキャッチオール受信コールバックが呼ばれます。
-
-#### パラメータ
-* `device` 関連するデバイス
-
-* `func` 登録するコールバック関数
diff --git a/docs/ja/internals_midi_device.md b/docs/ja/internals_midi_device.md
deleted file mode 100644
index 6adc2d5ad9..0000000000
--- a/docs/ja/internals_midi_device.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# `midi_device` グループ {#group__midi__device}
-
-<!---
- original document: 0.10.9:docs/internals_midi_device.md
- git diff 0.10.9 HEAD -- docs/internals_midi_device.md | cat
--->
-
-独自の MIDI デバイスを実装する時に、関数を使います。
-
-実際にデバイスを介してバイトを送信するために、送信関数を設定します。このメソッドは、このデバイスで例えば midi_send_cc のような送信関数を呼ぶ時に呼ばれます。
-
-midi_device_input を使ってデバイスからの入力データを処理し、それをデバイスに関連付けられたコールバックで渡します。
-
-デバイスのプロセス関数の最初に呼び出される関数が必要な場合、midi_device_set_pre_input_process_func を使います。通常、入力をポーリングして midi_device_input に渡します。
-
-## 概要
-
-メンバー | 説明
---------------------------------|---------------------------------------------
-`define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) |
-`enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) |
-`public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` | 入力バイトを処理します。この関数はバイトを解析し、指定されたデバイスに関連する適切なコールバックを呼びます。この関数は、カスタムデバイスを作成していて、MIDI 入力が必要な場合に使います。
-`public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` | 出力データバイトの送信に使われるコールバック関数を設定します。これは、カスタムデバイスを作成している場合のみ使われます。ロックを気にすることなく様々な MIDI 送信関数を呼び出すことができるように、コールバック関数で割り込みを無効にすることができます。
-`public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` | midi_device_process 呼び出しの最初に呼ばれるコールバックを設定します。これは入力データをポーリングし、midi_device_input 関数を介してデータを送信できます。カスタムデバイスを作成している場合のみ、これを使う可能性があります。
-`struct `[`_midi_device`](docs/api_midi_device.md#struct__midi__device) | この構造体は、MIDI デバイスの入出力関数と処理データを表します。
-
-## メンバー
-
-#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) {#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8}
-
-#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) {#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621}
-
-値 | 説明
---------------------------------|---------------------------------------------
-IDLE |
-ONE_BYTE_MESSAGE |
-TWO_BYTE_MESSAGE |
-THREE_BYTE_MESSAGE |
-SYSEX_MESSAGE |
-
-#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` {#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db}
-
-入力バイトを処理します。この関数はバイトを解析し、指定されたデバイスに関連する適切なコールバックを呼びます。この関数は、カスタムデバイスを作成していて、MIDI 入力が必要な場合に使います。
-
-#### パラメータ
-* `device` 入力を関連付ける MIDI デバイス
-
-* `cnt` 処理中のバイト数
-
-* `input` 処理するバイトデータ
-
-#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` {#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673}
-
-出力データバイトの送信に使われるコールバック関数を設定します。これは、カスタムデバイスを作成している場合のみ使われます。ロックを気にすることなく様々な MIDI 送信関数を呼び出すことができるように、コールバック関数で割り込みを無効にすることができます。
-
-#### パラメータ
-* `device` このコールバックを関連付ける MIDI デバイス
-
-* `send_func` 送信を行うコールバック関数
-
-#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` {#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69}
-
-midi_device_process 呼び出しの最初に呼ばれるコールバックを設定します。これは入力データをポーリングし、midi_device_input 関数を介してデータを送信できます。カスタムデバイスを作成している場合のみ、これを使う可能性があります。
-
-#### パラメータ
-* `device` このコールバックを関連付ける MIDI デバイス
-
-* `midi_no_byte_func_t` 実際のコールバック関数
-
-# `_midi_device` 構造体 {#struct__midi__device}
-
-この構造体は、MIDI デバイスの入出力関数と処理データを表します。
-
-デバイスは、実際の物理デバイス [シリアルポート、USB ポート]、または仮想デバイスを表すことができます。この構造体を直接変更する必要はありません。
-
-## 概要
-
-| メンバー | 説明
---------------------------------|---------------------------------------------
-`public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) |
-`public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) |
-`public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) |
-`public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) |
-`public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) |
-`public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) |
-`public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) |
-`public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) |
-`public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) |
-`public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) |
-`public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) |
-`public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) |
-`public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) |
-`public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) |
-`public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) |
-`public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) |
-`public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) |
-`public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) |
-`public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) |
-`public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) |
-`public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) |
-`public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) |
-
-## メンバー
-
-#### `public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) {#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9}
-
-#### `public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) {#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1}
-
-#### `public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) {#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c}
-
-#### `public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) {#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84}
-
-#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) {#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f}
-
-#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) {#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18}
-
-#### `public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) {#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586}
-
-#### `public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) {#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da}
-
-#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) {#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7}
-
-#### `public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) {#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f}
-
-#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) {#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0}
-
-#### `public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) {#struct__midi__device_1a9448eba4afb7e43650434748db3777be}
-
-#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) {#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d}
-
-#### `public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) {#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2}
-
-#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) {#struct__midi__device_1abb974ec6d734001b4a0e370f292be503}
-
-#### `public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) {#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8}
-
-#### `public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) {#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754}
-
-#### `public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) {#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a}
-
-#### `public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) {#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39}
-
-#### `public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) {#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d}
-
-#### `public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) {#struct__midi__device_1ada41de021135dc423abedcbb30f366ff}
-
-#### `public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) {#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f}
-
diff --git a/docs/ja/internals_midi_device_setup_process.md b/docs/ja/internals_midi_device_setup_process.md
deleted file mode 100644
index 9806156452..0000000000
--- a/docs/ja/internals_midi_device_setup_process.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# `midi_device_setup_process` グループ {#group__midi__device__setup__process}
-
-<!---
- original document: 0.10.9:docs/internals_midi_device_setup_process.md
- git diff 0.10.9 HEAD -- docs/internals_midi_device_setup_process.md | cat
--->
-
-これらは、デバイスを初期化して実行するために使う必要があるメソッドです。
-
-## 概要
-
-メンバー | 説明
---------------------------------|---------------------------------------------
-`public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` | デバイスを初期化します。
-`public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 入力データを処理します。
-
-## メンバー
-
-#### `public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9}
-
-デバイスを初期化します。
-
-問題のデバイスを使う前にこれを呼び出す必要があります。
-
-#### パラメータ
-* `device` 初期化するデバイス
-
-#### `public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b}
-
-入力データを処理します。
-
-このメソッドは入力処理を駆動します。入力コールバックが呼び出されることが予想される場合は、このメソッドを頻繁に呼び出す必要があります。
-
-#### パラメータ
-* `device` 処理するデバイス
-
diff --git a/docs/ja/internals_midi_util.md b/docs/ja/internals_midi_util.md
deleted file mode 100644
index 5ff9870df9..0000000000
--- a/docs/ja/internals_midi_util.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# `midi_util` グループ {#group__midi__util}
-
-<!---
- original document: 0.10.9:docs/internals_midi_util.md
- git diff 0.10.9 HEAD -- docs/internals_midi_util.md | cat
--->
-
-## 概要
-
-| メンバー | 説明
---------------------------------|---------------------------------------------
-| `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) | 可能なパケット長の値の列挙型。
-| `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` | 指定されたバイトがステータスバイトであるかどうかを検査します。
-| `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` | 指定されたバイトがリアルタイムメッセージであるかどうかを検査します。
-| `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` | 指定されたステータスバイトに関連付けられたパケットの長さを調べます。
-
-## メンバー
-
-#### `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) {#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e}
-
-| 値 | 説明
---------------------------------|---------------------------------------------
-UNDEFINED |
-ONE |
-TWO |
-THREE |
-
-可能なパケット長の値の列挙型。
-
-#### `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` {#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5}
-
-指定されたバイトがステータスバイトであるかどうかを検査します。
-
-#### パラメータ
-* `theByte` 検査するバイト
-
-#### 返り値
-指定されたバイトが MIDI ステータスバイトの場合は true
-
-#### `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` {#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7}
-
-指定されたバイトがリアルタイムメッセージであるかどうかを検査します。
-
-#### パラメータ
-* `theByte` 検査するバイト
-
-#### 返り値
-リアルタイムメッセージの場合は true、それ以外の場合は false
-
-#### `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` {#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175}
-
-指定されたステータスバイトに関連付けられたパケットの長さを調べます。
-
-#### パラメータ
-* `status` ステータスバイト
-
-#### 返り値
-パケットの長さ。バイトがステータスバイトではない場合、あるいは sysex ステータスバイトの場合は、UNDEFINED を返します。
-
diff --git a/docs/ja/internals_send_functions.md b/docs/ja/internals_send_functions.md
deleted file mode 100644
index 2747d3997f..0000000000
--- a/docs/ja/internals_send_functions.md
+++ /dev/null
@@ -1,246 +0,0 @@
-# `send_functions` グループ {#group__send__functions}
-
-<!---
- original document: 0.10.9:docs/internals_send_functions.md
- git diff 0.10.9 HEAD -- docs/internals_send_functions.md | cat
--->
-
-これらは、デバイスを介して MIDI データを送信するために使う関数です。
-
-## 概要
-
-メンバー | 説明
---------------------------------|---------------------------------------------
-`public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` | 指定されたデバイスを介して、コントロールチェンジメッセージを送信します。
-`public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | 指定されたデバイスを介してノートオンメッセージを送信します。
-`public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | 指定されたデバイスを介してノートオフメッセージを送信します。
-`public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` | 指定されたデバイスを介してアフタータッチメッセージを送信します。
-`public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` | 指定されたデバイスを介してピッチベンドメッセージを送信します。
-`public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` | 指定されたデバイスを介してプログラムチェンジメッセージを送信します。
-`public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` | 指定されたデバイスを介してチャンネルプレッシャーメッセージを送信します。
-`public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してクロックメッセージを送信します。
-`public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してティックメッセージを送信します。
-`public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してスタートメッセージを送信します。
-`public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してコンティニューメッセージを送信します。
-`public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してストップメッセージを送信します。
-`public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してアクティブセンスメッセージを送信します。
-`public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してリセットメッセージを送信します。
-`public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` | 指定されたデバイスを介してタイムコードクォータフレームメッセージを送信します。
-`public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` | 指定されたデバイスを介してソングポジションメッセージを送信します。
-`public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` | 指定されたデバイスを介してソングセレクトメッセージを送信します。
-`public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してチューンリクエストメッセージを送信します。
-`public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` | 指定されたデバイスを介してバイトを送信します。
-`public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` | 最大3バイトのデータを送信します。
-`public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` | フォーマットされた MIDI データの配列を送信します。
-
-## メンバー
-
-#### `public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` {#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960}
-
-指定されたデバイスを介して、コントロールチェンジメッセージ(cc)を送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `num` コントロールチェンジナンバー
-
-* `val` コントロールチェンジナンバーの値
-
-#### `public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775}
-
-指定されたデバイスを介してノートオンメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `num` ノート番号
-
-* `vel` ノートベロシティ
-
-#### `public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49}
-
-指定されたデバイスを介してノートオフメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `num` ノート番号
-
-* `vel` ノートベロシティ
-
-#### `public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` {#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f}
-
-指定されたデバイスを介してアフタータッチメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `note_num` ノート番号
-
-* `amt` アフタータッチ量
-
-#### `public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` {#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491}
-
-指定されたデバイスを介してピッチベンドメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `amt` ベンド量の範囲: -8192..8191、0 はベンドしないことを意味します
-
-#### `public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` {#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86}
-
-指定されたデバイスを介してプログラムチェンジメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `num` 変更先のプログラム
-
-#### `public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` {#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b}
-
-指定されたデバイスを介してチャンネルプレッシャーメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `chan` 送信するチャンネル、0-15
-
-* `amt` チャンネルプレッシャーの量
-
-#### `public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa}
-
-指定されたデバイスを介してクロックメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga2b43c7d433d940c5b907595aac947972}
-
-指定されたデバイスを介してティックメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc}
-
-指定されたデバイスを介してスタートメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120}
-
-指定されたデバイスを介してコンティニューメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988}
-
-指定されたデバイスを介してストップメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37}
-
-指定されたデバイスを介してアクティブセンスメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b}
-
-指定されたデバイスを介してリセットメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` {#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a}
-
-指定されたデバイスを介してタイムコードクォータフレームメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `time` このクォータフレームの時間。範囲は、0..16383
-
-#### `public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` {#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f}
-
-指定されたデバイスを介してソングポジションメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `pos` ソングポジション
-
-#### `public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` {#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50}
-
-指定されたデバイスを介してソングセレクトメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `song` 選択するソング
-
-#### `public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656}
-
-指定されたデバイスを介してチューンリクエストメッセージを送信します。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-#### `public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` {#group__send__functions_1ga857e85eb90b288385642d4d991e09881}
-
-指定されたデバイスを介してバイトを送信します。
-
-これは、指定された MIDI デバイスを介してデータを送信する一般的なメソッドです。これは、この API に実装されていない sysex データまたはメッセージがある場合、それらを送信するのに役立ちます。そのようなものを見つけた場合は、私たちがそれらを追加できるように、作者に連絡してください。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `b` 送信するバイト
-
-#### `public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` {#group__send__functions_1ga36e2f2e45369d911b76969361679054b}
-
-最大3バイトのデータを送信します。
-
-これを使って sysex を通過できるように count に4の剰余が適用されます。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `count` 送信するバイト数、4の剰余が適用されます
-
-* `byte0` 最初のバイト
-
-* `byte1` 2番目のバイト。cnt % 4 != 2 の場合は無視されます
-
-* `byte2` 3番目のバイト。cnt % 4 != 3 の場合は無視されます
-
-#### `public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` {#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead}
-
-フォーマットされた MIDI データの配列を送信します。
-
-sysex に使うことができます。
-
-#### パラメータ
-* `device` 送信に使うデバイス
-
-* `count` 送信するバイト数
-
-* `array` バイトの配列
-
diff --git a/docs/ja/internals_sysex_tools.md b/docs/ja/internals_sysex_tools.md
deleted file mode 100644
index 629b4f2445..0000000000
--- a/docs/ja/internals_sysex_tools.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# `sysex_tools` グループ {#group__sysex__tools}
-
-<!---
- original document: 0.10.9:docs/internals_sysex_tools.md
- git diff 0.10.9 HEAD -- docs/internals_sysex_tools.md | cat
--->
-
-## 概要
-
-| メンバー | 説明
---------------------------------|---------------------------------------------
-| `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` | エンコード後のメッセージの長さを計算します。
-| `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` | デコード後のメッセージの長さを計算します。
-| `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` | sysex メッセージで安全に送信できるようにデータをエンコードします。
-| `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` | エンコードされたデータをデコードします。
-
-## メンバー
-
-#### `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` {#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a}
-
-エンコード後のメッセージの長さを計算します。
-
-#### パラメータ
-* `decoded_length` エンコードするメッセージの長さのバイト数。
-
-#### 返り値
-エンコード後のメッセージの長さのバイト数。
-
-#### `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` {#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0}
-
-デコード後のメッセージの長さを計算します。
-
-#### パラメータ
-* `encoded_length` エンコードされたメッセージの長さのバイト数。
-
-#### 返り値
-デコードされた後のメッセージの長さのバイト数。
-
-#### `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742}
-
-sysex メッセージで安全に送信できるようにデータをエンコードします。
-
-#### パラメータ
-* `encoded` 出力データバッファは、少なくとも sysex_encoded_length(length) バイトの長さが必要です。
-
-* `source` エンコードされるデータの入力バッファ。
-
-* `length` 入力バッファからエンコードするバイト数。
-
-#### 返り値
-エンコードされたバイト数。
-
-#### `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229}
-
-エンコードされたデータをデコードします。
-
-#### パラメータ
-* `decoded` 出力データバッファは、少なくとも sysex_decoded_length(length) バイトの長さが必要です。
-
-* `source` デコードされるデータの入力バッファ。
-
-* `length` 入力バッファからデコードするバイト数。
-
-#### 返り値
-デコードされたバイト数。
-
diff --git a/docs/ja/proton_c_conversion.md b/docs/ja/proton_c_conversion.md
index 983aed4ee5..8f0c857cba 100644
--- a/docs/ja/proton_c_conversion.md
+++ b/docs/ja/proton_c_conversion.md
@@ -27,7 +27,7 @@ QMK で現在サポートされているキーボードが Pro Micro(または
#endif
```
-`PORTB/DDRB` などが定義されていないというエラーが発生した場合は、ARM と AVR の両方で機能する [GPIO 制御](ja/internals_gpio_control.md) を使用するようにキーボードのコードを変換する必要があります。これは AVR ビルドにまったく影響を与えません。
+`PORTB/DDRB` などが定義されていないというエラーが発生した場合は、ARM と AVR の両方で機能する [GPIO 制御](ja/gpio_control.md) を使用するようにキーボードのコードを変換する必要があります。これは AVR ビルドにまったく影響を与えません。
Proton C には1つのオンボード LED(C13)しかなく、デフォルトでは TXLED(D5) がそれにマップされています。代わりに RXLED(B0) をそれにマッピングしたい場合は、`config.h` に次のように追加してください。
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 58ce43d309..942e0a6616 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -219,11 +219,12 @@ See also: [Basic Keycodes](keycodes_basic.md)
See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
-|Key |Aliases |Description |
-|-----------------|---------|-------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
-|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|
+|Key |Aliases |Description |
+|-----------------|---------|---------------------------------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
+|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
## Audio Keys :id=audio-keys
diff --git a/docs/proton_c_conversion.md b/docs/proton_c_conversion.md
index 47511e1b1e..1e1b1e806d 100644
--- a/docs/proton_c_conversion.md
+++ b/docs/proton_c_conversion.md
@@ -20,7 +20,7 @@ This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `
#endif
```
-If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](internals_gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
+If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:
diff --git a/docs/quantum_keycodes.md b/docs/quantum_keycodes.md
index 8e29e05886..46a8b7de19 100644
--- a/docs/quantum_keycodes.md
+++ b/docs/quantum_keycodes.md
@@ -8,8 +8,9 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes :id=qmk-keycodes
-|Key |Aliases |Description |
-|-----------------|---------|-------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
-|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|
+|Key |Aliases |Description |
+|-----------------|---------|---------------------------------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
+|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index 8a710a9ec1..dbad1021fa 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -146,7 +146,7 @@
* [EEPROM驱动](zh-cn/eeprom_driver.md)
* [串口驱动](zh-cn/serial_driver.md)
* [UART驱动](zh-cn/uart_driver.md)
- * [操控GPIO](zh-cn/internals_gpio_control.md)
+ * [操控GPIO](zh-cn/gpio_control.md)
* [键盘开发指引](zh-cn/hardware_keyboard_guidelines.md)
* Python开发
@@ -182,12 +182,12 @@
* [了解QMK](zh-cn/understanding_qmk.md)
* QMK内部细节 (编辑中)
- * [定义](zh-cn/internals_defines.md)
- * [输入回调的注册](zh-cn/internals_input_callback_reg.md)
- * [Midi设备](zh-cn/internals_midi_device.md)
- * [Midi设备驱动流程](zh-cn/internals_midi_device_setup_process.md)
- * [Midi辅助功能](zh-cn/internals_midi_util.md)
- * [发送函数](zh-cn/internals_send_functions.md)
- * [Sysex工具](zh-cn/internals_sysex_tools.md)
+ * [定义](zh-cn/internals/defines.md)
+ * [输入回调的注册](zh-cn/internals/input_callback_reg.md)
+ * [Midi设备](zh-cn/internals/midi_device.md)
+ * [Midi设备驱动流程](zh-cn/internals/midi_device_setup_process.md)
+ * [Midi辅助功能](zh-cn/internals/midi_util.md)
+ * [发送函数](zh-cn/internals/send_functions.md)
+ * [Sysex工具](zh-cn/internals/sysex_tools.md)
<!--fromen:20211014-12:00(GMT+8) commit 04cf161aa01fd433b5dae69d9fd31569ed5dca59-->