", then run "git rebase --continue".
-You can instead skip this commit: run "git rebase --skip".
-To abort and get back to the state before "git rebase", run "git rebase --abort".
-```
-
-これにより、マージの競合があることがわかり、競合のあるファイルの名前が示されます。
-テキストエディタで競合するファイルを開くと、ファイルのどこかに次のような行があります:
-
-```
-<<<<<<< HEAD
-For help with any issues, email us at support@webhost.us.
-=======
-Need help? Email support@webhost.us.
->>>>>>> Commit #1
-```
-
-行 `<<<<<<< HEAD` はマージ競合の始まりを示し、行 `>>>>>>> commit #1` は終了を示し、競合するセクションは `=======` で区切られます。
-`HEAD` 側の部分はファイルの QMK master バージョンからのものであり、コミットメッセージでマークされた部分は現在のブランチとコミットからのものです。
-
-Git はファイルの内容ではなく *ファイルへの変更* を直接追跡するため、Git がコミットの前にファイル内にあったテキストを見つけられない場合、ファイルの編集方法がわかりません。
-ファイルを再編集して、競合を解決します。
-変更を加えてから、ファイルを保存します。
-
-```
-Need help? Email support@webhost.us.
-```
-
-そしてコマンド実行:
-
-```
-git add conflicting_file_1.txt
-git rebase --continue
-```
-
-Git は、競合するファイルへの変更をログに記録し、ブランチのコミットが最後に達するまで適用し続けます。
diff --git a/docs/ja/newbs_git_resynchronize_a_branch.md b/docs/ja/newbs_git_resynchronize_a_branch.md
deleted file mode 100644
index 567ec38bfec..00000000000
--- a/docs/ja/newbs_git_resynchronize_a_branch.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# 同期のとれていない git ブランチの再同期
-
-
-
-仮にあなたの `master` ブランチにあなたのコミットを行い、そしてあなたの QMK リポジトリの更新が必要になったとします。
-(フォーク元の) QMK の `master` ブランチをあなたの `master` ブランチに `git pull` することもできますが、GitHub は、あなたのブランチが `qmk:master` より何コミットか先行していると通知します、この状態で QMK にプルリクエストを行う場合、問題が発生する可能性があります。
-(訳注:この通知は、GitHub のあなたのリポジトリの code ペインのブランチ選択メニューの下のあたりで `This branch is 3 commit ahead of qmk:master` という様な文面で表示されています。)
-
-?> このドキュメントは [あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと](ja/newbs_git_using_your_master_branch.md) で詳述されている概念に基づいています。その概念に慣れていない場合は、まずそれを読んでから、ここに戻ってください。
-(訳注:この文書で言う、「同期のとれていない git ブランチ」とは、master ブランチに関する、この「コミットしない」方針を逸脱して、QMK の master リポジトリに存在しないコミットがあなたのフォークの master ブランチに入っている状態を指します。)
-
-## あなた自身の `master` ブランチでの変更のバックアップ(オプション)
-
-救えるものなら自分の行った変更を失いたくはないでしょう。
-あなたの `master` ブランチに既に加えた変更を保存したい場合、最も簡単な方法は、単に「ダーティな」`master` ブランチの複製を作成することです:
-
-```sh
-git branch old_master master
-```
-
-これで、 `master` ブランチの複製である `old_master` という名前のブランチができました。
-
-## あなたのブランチの再同期
-
-さあ、`master` ブランチを再同期します。
-この手順では、QMK のリポジトリを git のリモートリポジトリとして設定する必要があります。
-設定済みのリモートリポジトリを確認するには、`git remote -v` を実行し、次のような結果が返されなければなりません。
-
-```sh
-QMKuser ~/qmk_firmware (master)
-$ git remote -v
-origin https://github.com//qmk_firmware.git (fetch)
-origin https://github.com//qmk_firmware.git (push)
-upstream https://github.com/qmk/qmk_firmware.git (fetch)
-upstream https://github.com/qmk/qmk_firmware.git (push)
-```
-
-もし、上記のようにならずに以下のように参照されるフォークが、1つだけ表示される場合:
-
-```sh
-QMKuser ~/qmk_firmware (master)
-$ git remote -v
-origin https://github.com/qmk/qmk_firmware.git (fetch)
-origin https://github.com/qmk/qmk_firmware.git (push)
-```
-
-新しいリモートリポジトリを追加します:
-
-```sh
-git remote add upstream https://github.com/qmk/qmk_firmware.git
-```
-
-次に、`origin` リモートリポジトリを、あなた自身のフォークにリダイレクトします:
-
-```sh
-git remote set-url origin https://github.com/<あなたのユーザ名>/qmk_firmware.git
-```
-
-両方のリモートリポジトリが設定されたので、次を実行して、QMK である `upstream` リポジトリの参照を更新する必要があります。
-
-```sh
-git fetch upstream
-```
-
-この時点で、次を実行してあなたの(訳注:master)ブランチを QMK のブランチに再同期します。
-(訳注: 今現在 `master` ブランチがチェックアウトされていなければなりません。
- そうなってなければ、`git checkout master` を先に実行しておく必要があります。)
-
-```sh
-git reset --hard upstream/master
-```
-
-これらの手順により、あなたのコンピュータ上のリポジトリが更新されますが、あなたの GitHub 上のフォークはまだ同期されていません。
-GitHub 上のフォークを再同期するには、あなたのフォークにプッシュして、ローカルリポジトリに反映されていないリモート変更をオーバーライドするように Git に指示する必要があります。
-これを行うには、次を実行します:
-
-```sh
-git push --force-with-lease
-```
-
-!> 他のユーザーがコミットを投稿するフォークで `git push --force-with-lease` を**実行しないでください**。これをすると、かれらのコミットが消去されてしまいます。
-
-これで、あなたの GitHub フォーク、あなたのローカルファイル、および QMK のリポジトリはすべて同じになりました。
-ここから、[ブランチを使って](ja/newbs_git_using_your_master_branch.md#making-changes)さらに必要な変更を加え、通常どおりそれらを投稿できます。
diff --git a/docs/ja/newbs_git_using_your_master_branch.md b/docs/ja/newbs_git_using_your_master_branch.md
deleted file mode 100644
index 308a61eded1..00000000000
--- a/docs/ja/newbs_git_using_your_master_branch.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと
-
-
-
-QMK の開発では、何がどこで行われているかにかかわらず、`master` ブランチを最新の状態に保つことを強くお勧めします、しかし `master` ブランチには***絶対に直接コミットしないでください***。
-代わりに、あなたのすべての変更は開発ブランチで行い、あなたが開発する時にはそのブランチからプルリクエストを発行します。
-
-マージの競合 — これは 2人以上のユーザーがファイルの同じ部分をそれぞれ異なる編集をして統合できなくなった状態 — の可能性を減らすため `master` ブランチをなるべく最新の状態に保ち、新しいブランチを作成して新しい開発を開始します。
-
-## あなたの master ブランチを更新する
-
-`master` ブランチを最新の状態に保つには、git のリモートリポジトリとして QMK ファームウェアのリポジトリ(以降、QMK リポジトリ)を追加することをお勧めします。
-これを行うには、Git コマンドラインインターフェイスを開き、次のように入力します。
-
-```
-git remote add upstream https://github.com/qmk/qmk_firmware.git
-```
-
-?> `upstream`(訳注: `upstream` は`上流`という意味です)という名前は任意ですが、一般的な慣習です。
-QMK のリモートリポジトリには、あなたにとって分かりやすい名前を付けることができます。
-Git の `remote` コマンドは、構文 `git remote add ` を使用します。
-`` はリモートリポジトリの省略形としてあなたが指定するものです。
-この名前は、`fetch`、`pull`、`push` やそれ以外の多くの Git コマンドで、対象のリモートリポジトリを指定するために使用されます。
-
-リポジトリが追加されたことを確認するには、`git remote -v` を実行します。
-次のように表示されます。
-
-```
-$ git remote -v
-origin https://github.com//qmk_firmware.git (fetch)
-origin https://github.com//qmk_firmware.git (push)
-upstream https://github.com/qmk/qmk_firmware.git (fetch)
-upstream https://github.com/qmk/qmk_firmware.git (push)
-```
-
-これが完了すると、`git fetch upstream` を実行してリポジトリの更新を確認できます。
-このコマンドは `upstream` というニックネームを持つ QMK リポジトリから、ブランチとタグ — "refs" と総称されます — を取得します。
-これで、あなたのフォーク `origin` のデータを QMK が保持するデータと比較できます。
-
-あなたのフォークの `master` を更新するには、次を実行します、各行の後に Enter キーを押してください:
-
-```
-git checkout master
-git fetch upstream
-git pull upstream master
-git push origin master
-```
-
-これにより、あなたの `master` ブランチに切り替わり、QMK リポジトリから 'refs' を取得し、現在の QMK の `master` ブランチをコンピュータにダウンロードしてから、あなたのフォークにアップロードします。
-
-## 変更を行なう :id=making-changes
-
-変更するには、以下を入力して新しいブランチを作成します:
-
-```
-git checkout -b dev_branch
-git push --set-upstream origin dev_branch
-```
-
-これにより、`dev_branch` という名前の新しいブランチが作成され、チェックアウトされ、新しいブランチがあなたのフォークに保存されます。
-`--set-upstream` 引数は、このブランチから `git push` または `git pull` を使用するたびに、あなたのフォークと `dev_branch` ブランチを使用するように git に指示します。
-この引数は最初のプッシュでのみ使用する必要があります。
-その後、残りの引数なしで `git push` または `git pull` を安全に使用できます。
-
-?> `git push` では、`-set-upstream` の代わりに `-u` を使用できます、 `-u` は `--set-upstream` のエイリアスです。
-
-ブランチにはほぼ任意の名前を付けることができますが、あなたが行なう変更を表す名前を付けることをお勧めします。
-
-デフォルトでは、`git checkout -b`は、今チェックアウトされているブランチに基づいて新しいブランチを作成します。
-コマンド末尾に既存のブランチの名前を追加指定することにより、チェックアウトされていない既存のブランチを基にして新しいブランチを作成できます:
-
-```
-git checkout -b dev_branch master
-```
-
-これで開発ブランチができたのでテキストエディタを開き必要な変更を加えます。
-ブランチに対して多くの小さなコミットを行うことをお勧めします。
-そうすることで、問題を引き起こす変更をより簡単に特定し必要に応じて元に戻すことができます。
-変更を加えるには、更新が必要なファイルを編集して保存し、Git の *ステージングエリア* に追加してから、ブランチにコミットします:
-
-```
-git add path/to/updated_file
-git commit -m "My commit message."
-```
-
-`git add`は、変更されたファイルを Git の *ステージングエリア* に追加します。
-これは、Git の「ロードゾーン」です。
-これには、`git commit` によって *コミット* される変更が含まれており、リポジトリへの変更が保存されます。
-変更内容が一目でわかるように、説明的なコミットメッセージを使用します。
-
-?> 複数のファイルを変更した場合、`git add -- path/to/file1 path/to/file2 ...` を実行すれば、あなたの望むファイルを追加できます。
-
-## 変更を公開する
-
-最後のステップは、変更をフォークにプッシュすることです。
-これを行うには、`git push`と入力します。
-Git は、 `dev_branch`の現在の状態をフォークに公開します。
diff --git a/docs/ja/newbs_learn_more_resources.md b/docs/ja/newbs_learn_more_resources.md
deleted file mode 100644
index 686b9244651..00000000000
--- a/docs/ja/newbs_learn_more_resources.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# 学習リソース
-
-
-
-これらのリソースは、QMK コミュニティの新しいメンバーに、初心者向けドキュメントで提供されている情報に対する理解を深めることを目的としています。
-
-## QMK に関するリソース
-
-### 英語 :id=english-resources-qmk
-
-* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – 新規ユーザーの視点から見た QMK ファームウェアの使い方の基本を網羅した、ユーザー作成のブログ。
-
-### 日本語 :id=japanese-resources-qmk
-
-_日本語のリソース情報を募集中です。_
-
-## コマンドラインに関するリソース :id=command-line-resources
-
-### 英語 :id=english-resources-cli
-
-* [Good General Tutorial on Command Line](https://www.codecademy.com/learn/learn-the-command-line)
-* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)
-* [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
-
-### 日本語 :id=japanese-resources-cli
-
-_日本語のリソース情報を募集中です。_
-
-## テキストエディタに関するリソース :id=text-editor-resources
-
-どのテキストエディタを使えば良いか分かりませんか?
-
-### 英語 :id=english-resources-text-editor
-
-* [a great introduction to the subject](https://learntocodewith.me/programming/basics/text-editors/)
-
-### 日本語 :id=japanese-resources-text-editor
-
-_日本語のリソース情報を募集中です。_
-
-コーディング用に特別に作成されたエディタ:
-* [Sublime Text](https://www.sublimetext.com/)
-* [VS Code](https://code.visualstudio.com/)
-
-## Git に関するリソース
-
-### 英語 :id=english-resources-git
-
-* [Great General Tutorial](https://www.codecademy.com/learn/learn-git)
-* [Flight Rules For Git](https://github.com/k88hudson/git-flight-rules)
-* [Git Game To Learn From Examples](https://learngitbranching.js.org/)
-
-### 日本語 :id=japanese-resources-git
-
-_日本語のリソース情報を募集中です。_
-
-* [Git Game To Learn From Examples(日本語対応有り)](https://learngitbranching.js.org/)
- git のブランチの作り方、マージの仕方などがビジュアルに学べます。
-* [QMK で GitHub を使う方法](ja/getting_started_github.md)
diff --git a/docs/ja/newbs_testing_debugging.md b/docs/ja/newbs_testing_debugging.md
deleted file mode 100644
index d64f0f6dff8..00000000000
--- a/docs/ja/newbs_testing_debugging.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# テストとデバッグ
-
-
-
-## テスト
-
-[ここに移動しました](ja/faq_misc.md#testing)
-
-## デバッグ :id=debugging
-
-[ここに移動しました](ja/faq_debug.md#debugging)
diff --git a/docs/ja/one_shot_keys.md b/docs/ja/one_shot_keys.md
deleted file mode 100644
index f049c2d6f70..00000000000
--- a/docs/ja/one_shot_keys.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# ワンショットキー
-
-
-
-ワンショットキーは次のキーが押されるまでアクティブのままになり、そのあと放されるキーです。これにより一度に1つ以上のキーを押すことなく、キーボードの組み合わせを入力することができます。これらのキーは通常「スティッキーキー」あるいは「デッドキー」と呼ばれます。
-
-例えば、キーを `OSM(MOD_LSFT)` と定義する場合、最初にシフトを押して放し、続いて A を押して放すことで、大文字の A キャラクタを入力することができます。コンピュータには、シフトが押された瞬間にシフトが押し続けられ、A が放された後ですぐにシフトキーが放されるように見えます。
-
-ワンショットキーは通常のモディファイアのようにも動作します。ワンショットキーを押しながら他のキーを入力すると、キーを放した直後にワンショットキーが解除されます。
-
-さらに、短時間でキーを5回押すと、そのキーをロックします。これはワンショットモディファイアとワンショットレイヤーに適用され、`ONESHOT_TAP_TOGGLE` 定義によって制御されます。
-
-`config.h` でこれらを定義することでワンショットキーの挙動を制御することができます:
-
-```c
-#define ONESHOT_TAP_TOGGLE 5 /* この回数をタップすると、もう一度タップするまでキーが押されたままになります。*/
-#define ONESHOT_TIMEOUT 5000 /* ワンショットキーが解除されるまでの時間 (ms) */
-```
-
-* `OSM(mod)` - *mod*を一時的に押し続けます。[モッドタップ](ja/mod_tap.md)で示したように、`KC_*` コードでは無く、`MOD_*` キーコードを使わなければなりません。
-* `OSL(layer)` - 一時的に*レイヤー*に切り替えます。
-* `OS_ON` - ワンショットキーをオンにします。
-* `OS_OFF` - ワンショットキーをオフにします。OSM は通常の mod キーのように機能し、OSL は `MO` キーのように機能します。
-* `OS_TOGG` - ワンショットキーの状態を切り替えます。
-
-ワンショットキーをマクロあるいはタップダンスルーチンの一部として有効にしたい場合があります。
-
-ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。
-
-ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD_BIT(KC_*))` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。
-
-!> リモートデスクトップ接続で OSM 変換に問題がある場合は、設定を開いて「ローカル リソース」タブに移動し、キーボードセクションでドロップダウンを「このコンピューター」に変更することで修正することができます。これにより問題が修正され、OSM がリモートデスクトップ上で適切に動作するようになります。
-
-## コールバック
-
-ワンショットキーを押す時にカスタムロジックを実行したい場合、実装を選択できる幾つかのコールバックがあります。例えば、LED を点滅させたり、音を鳴らしたりして、ワンショットキーの変化を示すことができます。
-
-`OSM(mod)` のためのコールバックがあります。ワンショット修飾キーの状態が変更されるたびに呼び出されます: オンに切り替わる時だけでなく、オフに切り替わる時にも呼び出されます。以下のように使うことができます:
-
-```c
-void oneshot_mods_changed_user(uint8_t mods) {
- if (mods & MOD_MASK_SHIFT) {
- println("Oneshot mods SHIFT");
- }
- if (mods & MOD_MASK_CTRL) {
- println("Oneshot mods CTRL");
- }
- if (mods & MOD_MASK_ALT) {
- println("Oneshot mods ALT");
- }
- if (mods & MOD_MASK_GUI) {
- println("Oneshot mods GUI");
- }
- if (!mods) {
- println("Oneshot mods off");
- }
-}
-```
-
-`mods` 引数は変更後のアクティブな mod が含まれるため、現在の状態が反映されます。
-
-(`config.h` に `#define ONESHOT_TAP_TOGGLE 2` を追加して) ワンショットタップトグルを使う場合、指定された回数だけ修飾キーを押してロックすることができます。そのためのコールバックもあります:
-
-```c
-void oneshot_locked_mods_changed_user(uint8_t mods) {
- if (mods & MOD_MASK_SHIFT) {
- println("Oneshot locked mods SHIFT");
- }
- if (mods & MOD_MASK_CTRL) {
- println("Oneshot locked mods CTRL");
- }
- if (mods & MOD_MASK_ALT) {
- println("Oneshot locked mods ALT");
- }
- if (mods & MOD_MASK_GUI) {
- println("Oneshot locked mods GUI");
- }
- if (!mods) {
- println("Oneshot locked mods off");
- }
-}
-```
-
-最後に、`OSL(layer)` ワンショットキーのためのコールバックもあります:
-
-```c
-void oneshot_layer_changed_user(uint8_t layer) {
- if (layer == 1) {
- println("Oneshot layer 1 on");
- }
- if (!layer) {
- println("Oneshot layer off");
- }
-}
-```
-
-いずれかのワンショットレイヤーがオフの場合、`layer` は 0 になります。ワンショットレイヤーの変更では無く、レイヤーの変更で何かを実行したい場合は、`layer_state_set_user` は使用するのに良いコールバックです。
-
-独自のキーボードを作成している場合、`_kb` と同等の機能もあります:
-
-```c
-void oneshot_locked_mods_changed_kb(uint8_t mods);
-void oneshot_mods_changed_kb(uint8_t mods);
-void oneshot_layer_changed_kb(uint8_t layer);
-```
-
-他のコールバックと同様に、更にカスタマイズを可能にするために `_user` バージョンを呼ぶようにしてください。
diff --git a/docs/ja/other_eclipse.md b/docs/ja/other_eclipse.md
deleted file mode 100644
index 92901661986..00000000000
--- a/docs/ja/other_eclipse.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# QMK 開発のための Eclipse セットアップ
-
-
-
-[Eclipse][1]は Java 開発のために広く使われているオープンソースの [統合開発環境](https://en.wikipedia.org/wiki/Integrated_development_environment) (IDE) ですが、他の言語および用途のためにカスタマイズできる拡張可能なプラグインシステムがあります。
-
-Eclipse のような IDE の使用は、プレーンテキストエディタの使用よりも多くの利点をもたらします。例えば、次のような利点です。
-* インテリジェントなコード補完
-* コード内の便利なナビゲーション
-* リファクタリングツール
-* 自動ビルド (コマンドラインは不要)
-* Git 用の GUI
-* 静的なコード解析
-* デバッグ、コードフォーマット、呼び出し階層の表示などの多くのツール。
-
-このページの目的は、AVR ソフトウェアの開発および QMK コードベースで作業するために、Eclipse をセットアップする方法を文章化することです。
-
-このセットアップは現時点では Ubuntu 16.04 でのみテストされていることに注意してください。
-
-# 前提条件
-## ビルド環境
-始める前に、チュートリアルの[セットアップ](ja/newbs_getting_started.md)のセクションに従う必要があります。特に、[`qmk compile` コマンド](ja/newbs_building_firmware.md#build-your-firmware)でファームウェアをビルドできなければなりません。
-
-## Java
-Eclipse は Java アプリケーションであるため、実行するには Java 8 以降をインストールする必要があります。JRE または JDK を選択できますが、Java 開発を行う場合は後者が役に立ちます。
-
-# Eclipse とプラグインのインストール
-Eclipse は用途に応じて[いくつかのフレーバー](https://www.eclipse.org/downloads/eclipse-packages/)で提供されます。AVR スタックを構成するパッケージは無いため、Eclipse CDT (C/C++ 開発ツール)から始め、必要なプラグインをインストールする必要があります。
-
-## Eclipse CDT のダウンロードとインストール
-システムに既に Eclipse CDT がある場合は、この手順をスキップできます。ただし、より良いサポートのために最新の状態に保つことをお勧めします。
-
-別の Eclipse パッケージをインストールしている場合は、通常は[その上に CDT プラグインをインストール](https://eclipse.org/cdt/downloads.php)することができます。しかし、軽くして、作業中のプロジェクトに必要のないツールが乱雑にならないように、ゼロから再インストールすることをお勧めします。
-
-インストールは非常に簡単です: [5 Steps to install Eclipse](https://eclipse.org/downloads/eclipse-packages/?show_instructions=TRUE) に従い、ステップ3で **Eclipse IDE for C/C++ Developers** を選択します。
-
-あるいは、直接 [Eclipse IDE for C/C++ Developers をダウンロード](https://www.eclipse.org/downloads/eclipse-packages/)([現在のバージョンへの直接リンク](https://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neonr))し、選択した場所にパッケージを解凍することもできます (これにより `eclipse` フォルダが作成されます)。
-
-## 最初の起動
-インストールが完了したら、Launch ボタンをクリックします。(パッケージを手動で解凍した場合は、Eclipse をインストールしたフォルダを開き、`eclipse` 実行可能ファイルをダブルクリックします)
-
-Workspace 選択で入力を促された場合は、Eclipse メタデータと通常のプロジェクトを保持するディレクトリを選択します。**`qmk_firmware` ディレクトリを選択しないでください**。これはプロジェクトディレクトリになります。代わりに親フォルダを選択するか、(できれば空の)他のフォルダを選択します(まだ使用していない場合は、デフォルトで問題ありません)。
-
-開始したら、右上の Workbench ボタンをクリックし、workbench ビューに切り替えます (下部に開始時のようこそ画面をスキップするためのチェックボックスもあります)。
-
-## 必要なプラグインをインストール
-注意: プラグインをインストールするごとに、Eclipse を再起動する必要はありません。全てのプラグインがインストールされたら単に1回再起動します。
-
-### [The AVR Plugin](https://avr-eclipse.sourceforge.net/)
-これは最も重要なプラグインで、Eclipse が AVR C コードを_理解_できるようになります。[更新サイトを使うための指示](https://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download#Update_Site)に従い、未署名コンテンツのセキュリティ警告に同意します。
-
-### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console)
-このプラグインは QMK makefile によって生成された色付きビルド出力を適切に表示するために必要です。
-
-1. Help > Eclipse Marketplace… を開きます
-2. _ANSI Escape in Console_ を検索します
-3. プラグインの Install ボタンをクリックします
-4. 指示に従い、未署名コンテンツのセキュリティ警告に再度同意します。
-
-両方のプラグインがインストールされたら、プロンプトに従って Eclipse を再起動します。
-
-# QMK 用の Eclipse の設定
-## プロジェクトのインポート
-1. File > New > Makefile Project with Existing Code をクリックします
-2. 次の画面で:
-* _Existing Code Location_ としてリポジトリをクローンしたディレクトリを選択します。
-* (オプション) プロジェクトに別の名前を付けます¹ 例えば _QMK_ あるいは _Quantum_;
-* _AVR-GCC Toolchain_ を選択します;
-* 残りをそのままにして、Finish をクリックします
-
-
-
-3. これでプロジェクトがロードされインデックスされます。左側の _Project Explorer_ から、簡単にファイルを参照できます。
-
-¹ カスタム名でプロジェクトをインポートすると問題が発生するかもしれません。正しく動作しない場合は、デフォルトのプロジェクト名 (つまり、ディレクトリの名前、おそらく `qmk_firmware`) のままにしてみてください。
-
-## キーボードのビルド
-
-プロジェクトのデフォルトの make 対象を `all` から私たちが取り組んでいる特定のキーボードとキーマップの組み合わせ、例えば `kinesis/kint36:stapelberg` に変更します。このようにすると、プロジェクトのクリーニングやビルドのようなプロジェクト全体のアクションは迅速に完了し、長い時間がかかったり Eclipse が完全にロックしたりすることがなくなります。
-
-1. プロジェクト内の editor タブへフォーカスします
-2. `Project` > `Properties` ウィンドウを開き、`C/C++ Build` リストエントリを選択して、`Behavior` タブに切り替えます。
-3. 有効な全てのビルドのデフォルトの `Make build target` テキストフィールドを、`all` から例えば `kinesis/kint41:stapelberg` に変更します。
-4. `Project` > `Clean...` を選択して、セットアップが動作することを確認します。
-
-[1]: https://en.wikipedia.org/wiki/Eclipse_(software)
diff --git a/docs/ja/other_vscode.md b/docs/ja/other_vscode.md
deleted file mode 100644
index 2b6e27bb0af..00000000000
--- a/docs/ja/other_vscode.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# QMK 開発用の Visual Studio Code のセットアップ
-
-
-
-[Visual Studio Code](https://code.visualstudio.com/) (VS Code) は多くの異なるプログラミング言語をサポートするオープンソースのコードエディタです。
-
-VS Code のようなフル機能のエディタの使用は、プレーンテキストエディタの使用よりも多くの利点をもたらします。例えば、次のような利点です。:
-* インテリジェントなコード補完
-* コード内の便利なナビゲーション
-* リファクタリングツール
-* 自動ビルド (コマンドラインは不要)
-* Git 用のグラフィカルなフロントエンド
-* デバッグ、コードフォーマット、呼び出し階層の表示などの多くのツール
-
-このページの目的は、QMK ファームウェアを開発するために VS Code をセットアップする方法を文章化することです。
-
-このガイドは Windows および Ubuntu 18.04 で必要な全てを構成する方法を説明します。
-
-# VS Code のセットアップ
-はじめに、全てのビルドツールをセットアップし、QMK ファームウェアをクローンする必要があります。まだ設定していない場合は、[セットアップ](ja/newbs_getting_started.md)に進んでください。
-
-## Windows
-
-### 前提条件
-
-* [Git for Windows](https://git-scm.com/download/win) (このリンクはインストーラを保存あるいは実行するように促します)
-
- 1. `Git LFS (Large File Support)` および `Check daily for Git for Windows updates` 以外の全てのオプションを無効にします。
- 2. デフォルトのエディタを `Use Visual Studio Code as Git's default editor` に設定します。
- 3. ここで使用すべきオプションなので、`Use Git from Git Bash only` オプションを選択します。
- 4. `Choosing HTTPS transport backend` については、どちらのオプションでも問題ありません。
- 5. `Checkout as-is, commit Unix-style line endings` オプションを選択します。QMK ファームウェアは Unix スタイルのコミットを使います。
- 6. 追加のオプションについては、デフォルトのオプションをそのままにします。
-
- このソフトウェアは、VS Code での Git サポートに必要です。これを含めないことも可能ですが、これを使う方が簡単です。
-
-* [Git Credential Manager for Windows](https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases) (オプション)
-
- このソフトウェアは、git 証明書、MFA、パーソナルアクセストークン生成のためのセキュアストレージを提供することで、Git のより良いサポートを提供します。
-
- これは厳密には必要ありませんが、お勧めします。
-
-
-### VS Code のインストール
-
-1. [VS Code](https://code.visualstudio.com/) に進み、インストーラをダウンロードします
-2. インストーラを実行します
-
-この項は非常に簡単です。ただし、正しく構成されていることを確認するために、しなければならない幾つかの設定があります。
-
-### VS Code の設定
-
-最初に、IntelliSense をセットアップする必要があります。これは厳密には必要ではありませんが、あなたの人生をずっと楽にします。これを行うには、QMK ファームウェアフォルダに `.vscode/c_cpp_properties.json` ファイルを作成する必要があります。これは全て手動で行うことができますが、ほとんどの作業は既に完了しています。
-
-[このファイル](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) を取得して保存します。MSYS2 をデフォルトの場所にインストールしなかった、または WSL か LxSS を使っている場合、このファイルを編集する必要があります。
-
-このファイルを保存したら、VS Code が既に実行中の場合はリロードする必要があります。
-
-?> また、`.vscode` フォルダ に `extensions.json` および `settings.json` ファイルがあるはずです。
-
-
-次に、VSCode に統合ターミナルとして表示されるように、MSYS2 ウィンドウを設定します。これには多くの利点があります。ほとんどの場合で、エラー上で Ctrl + クリックするとこれらのファイルにジャンプできます。これによりデバッグがはるかに簡単になります。また、他のウィンドウへジャンプする必要が無いという点でも優れています。
-
-1. ファイル > ユーザー設定 > > 設定 をクリックします。
-2. 右上の {} ボタンをクリックし、`settings.json` ファイルを開きます。
-3. ファイルの内容を以下のように設定します:
-
- ```json
- {
- "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
- "terminal.integrated.env.windows": {
- "MSYSTEM": "MINGW64",
- "CHERE_INVOKING": "1"
- },
- "terminal.integrated.shellArgs.windows": [
- "--login"
- ],
- "terminal.integrated.cursorStyle": "line"
- }
- ```
-
- ここに既に設定がある場合は、最初と最後の波括弧の間に全てを追加し、既存の設定を新しく追加された設定とカンマで区切ります。
-
-?> MSYS2 を別のフォルダにインストールした場合は、`terminal.integrated.shell.windows` のパスをシステムの正しいパスに変更する必要があります。
-
-4. Ctrl-`
(Grave) を押して、ターミナルを起動するか、表示 > ターミナル (コマンド `workbench.action.terminal.toggleTerminal`)に進みます。まだターミナルが開いていない場合は、新しいターミナルが開きます。
-
- これにより、ワークスペースフォルダ(つまり `qmk_firmware` フォルダ)でターミナルが起動し、キーボードをコンパイルすることができます。
-
-
-## 他の全てのオペレーティングシステム
-
-1. [VS Code](https://code.visualstudio.com/) に進み、インストーラをダウンロードします
-2. インストーラを実行します
-3. 以上です
-
-いいえ、本当に以上です。必要なパスはパッケージのインストール時に既に含まれています。現在のワークスペースのファイルを検出し、IntelliSense 用に解析する方がより良いです。
-
-## プラグイン
-
-インストールした方が良い拡張が幾つかあります。
-
-* [Git Extension Pack](https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack) -
-これは QMK ファームウェアで Git を簡単に使用できる Git 関連ツールを多数インスールします。
-* [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - _[オプション]_ - QMK コーディング規約にコードを準拠させるのに役立ちます。
-* [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[オプション]_ - VS Code の markdown プレビューを GithHub のようにします。
-* [VS Live Share Extension Pack](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack) - _[オプション]_ - この拡張により、他の誰かがあなたのワークスペースにアクセスし(あるいは、あなたが他の誰かのワークスペースにアクセスし)、手伝うことができます。あなたが問題を抱えており、他の誰かの助けが必要な場合に便利です。
-
-いずれかの拡張機能をインストールしたら、再起動します。
-
-# QMK 用の VS Code の設定
-1. ファイル > フォルダーを開く をクリックします
-2. GitHub からクローンした QMK ファームウェアフォルダを開きます。
-3. ファイル > 名前を付けてワークスペースを保存... をクリックします
-
-これで、VS Code で QMK ファームウェアをコーディングする準備ができました。
diff --git a/docs/ja/pr_checklist.md b/docs/ja/pr_checklist.md
deleted file mode 100644
index caab2b4d504..00000000000
--- a/docs/ja/pr_checklist.md
+++ /dev/null
@@ -1,145 +0,0 @@
-# PR チェックリスト
-
-
-
-これは、提出された PR を QMK の協力者がレビューする際に何をチェックするのかの非網羅的なチェックリストです。
-
-これらの推奨事項に矛盾がある場合は、このドキュメントに対して [issue を開く](https://github.com/qmk/qmk_firmware/issues/new)か、[Discord](https://discord.gg/Uq7gcHh) の QMK コラボレータに連絡することをお勧めします。
-
-## 一般的な PR
-
-- PRは、ソースリポジトリ上の `master` ではないブランチを使って提出する必要があります
- - これは、あなたの PR にとって別のブランチをターゲットにするという意味ではなく、むしろ自分の master ブランチで作業をしていないという意味です
- - もし PR の提出者が自分の `master` ブランチを使っている場合は、マージ後に ["git の使い方"](https://docs.qmk.fm/#/ja/newbs_git_using_your_master_branch) ページへのリンクが表示されます - (このドキュメントの最後にはメッセージの内容が含まれます)
-- 新しく追加されたディレクトリとファイル名は小文字でなければなりません
- - 上流のソースが元々大文字を使っていた場合 (ChibiOS や他のリポジトリからインポートしたファイルなど)、このルールは緩和されるかもしれません
- - 十分な正当性がある場合 (既存のコアファイルとの整合性など) は、このルールを緩和することができます。
- - ボードデザイナーがキーボードの名前を大文字にした場合は、十分な正当性とはみとめられません
-- すべての `*.c` および `*.h` ソースファイルの有効なライセンスヘッダ
- - 一貫性のために GPL2/GPL3 が推奨されています
- - 他のライセンスも許可されていますが、GPL と互換性があり、再配布が許可されていなければなりません。異なるライセンスを使うと、PR がマージされるのをほぼ確実に遅らせることになります
-- QMK コードベースの「ベストプラクティス」に従う
- - これは網羅的なリストではありませんし、時間が経つにつれて修正される可能性が高いです
- - ヘッダファイルでは、`#ifndef` インクルードガードの代わりに `#pragma once` を使います
- - 「旧式の」 GPIO/I2C/SPI 関数を使用しない - 正当な理由がない限り、QMK の抽象化を使用しなければなりません (怠惰は正当な理由にはなりません)
- - タイミングの抽象化にも従う必要があります:
- - `_delay_ms()` のかわりに `wait_ms()` を。(`#include ` も消します)
- - `timer_read()` と `timer_read32()` など。 -- タイミング API は [timer.h](https://github.com/qmk/qmk_firmware/blob/master/platforms/timer.h) を参照してください
- - 新しい抽象化が有用だと思う場合は、次のことをお勧めします:
- - 機能が完成するまで自分のキーボードでプロトタイプを作成する
- - Discord の QMK コラボレータと話し合う
- - 個別のコア変更としてそれをリファクタリングする
- - あなたのキーボードからそのコピーを削除する
-- PR を開く前にリベースしてマージの競合をすべて修正します (ヘルプやアドバイスが必要な場合は、Discord で QMK コラボレータに連絡してください)。
-
-## キーマップの PR
-
-- 特定のボードファイルをインクルードするよりも `#include QMK_KEYBOARD_H` を推奨します
-- レイヤーは `#define` よりも `enum` が好まれます
-- カスタムキーコードは `#define` ではなく `enum` が必要です。最初のエントリには `= SAFE_RANGE` が必要です
-- LAYOUT マクロ呼び出しのパラメータの途中の改行ではバックスラッシュ(`\`)は不要です
-- スペーシング(コンマまたはキーコードの最初の文字の配置など)に注意を払うと、見栄えの良いキーマップになります
-
-## キーボードの PR
-
-終了した PR(インスピレーションを得るために、以前のレビューコメントセットは、自分のレビューのピンポンをなくすのに役立ちます):
-https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
-
-- `info.json`
- - 有効な URL
- - 有効なメンテナ
- - Configurator で正しく表示されること(Ctrl + Shift + I を押してローカルファイルをプレビューし、高速入力をオンにして順序を確認する)
-- `readme.md`
- - 標準テンプレートがあること
- - 書き込みコマンドが `:flash` で終わっていること
- - 有効なハードウェアの入手方法へのリンク (手配線の場合を除く) -- プライベートな共同購入は問題ありませんが、一回限りのプロトタイプは疑問視されます。オープンソースの場合は、ファイルへのリンクを提供してください
- - ボードをブートローダーモードにリセットする方法を明確に説明してください
- - キーボードの写真、できれば PCB の写真も添付してください
-- `rules.mk`
- - `MIDI_ENABLE`、`FAUXCLICKY_ENABLE`、`HD44780_ENABLE` は削除されました
- - `# Enable Bluetooth with the Adafruit EZ-Key HID` は `# Enable Bluetooth` に変更されました
- - 機能の有効化に関する `(-/+サイズ)` コメントはなくなりました
- - ブートローダが指定されている場合は、代替ブートローダのリストを削除します
- - [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/quantum/mcu_selection.mk)の同等の MCU と比較した場合、同じ値の場合、デフォルトの MCU パラメータの再定義がないこと
-- キーボードの `config.h`
- - `PRODUCT` 値に `MANUFACTURER` を繰り返さないでください
- - `#define DESCRIPTION` は要りません
- - マジックキーオプション、 MIDI オプション、HD44780 コンフィギュレーションは要りません
- - ユーザー設定の設定可能な `#define` はキーマップ `config.h` に移動する必要があります
- - "`DEBOUNCING_DELAY`" の代りに "`DEBOUNCE`" を使います
- - キーボードが QMK で起動するために最低限必要なコードが存在する必要があります
- - マトリックスと重要なデバイスの初期化コード
- - (カスタムキーコードや特別なアニメーションなど)商用キーボードの既存の機能をミラーリングする場合は、`default` ではないキーマップを使って処理する必要があります
- - Vial 関連のファイルまたは変更は QMK ファームウェアで使用されないため受け入れられません (Vial 固有のコアコードは提出またはマージされていません)
-- `keyboard.c`
- - 空の `xxxx_xxxx_kb()` または他の weak-define のデフォルト実装関数が削除されていること
- - コメントアウトされた関数も削除されていること
- - `matrix_init_board()` などが `keyboard_pre_init_kb()` に移行されました。[keyboard_pre_init*](https://docs.qmk.fm/#/ja/custom_quantum_functions?id=keyboard_pre_init_-function-documentation) を参照してください
- - カスタムマトリックスを使用する場合は、`CUSTOM_MATRIX = lite` を選択し、標準のデバウンスを許可します。[マトリックスコードの部分置き換え](https://docs.qmk.fm/#/ja/custom_matrix?id=lite) を参照してください
- - 可能な場合は、独自の `led_update_*()` 実装よりも LED インジケータの[設定オプション](https://docs.qmk.fm/#/ja/feature_led_indicators?id=configuration-options)を優先してください。
-- `keyboard.h`
- - 先頭に `#include "quantum.h"` を置きます
- - `LAYOUT` マクロは、該当する場合は標準の定義を使用してください
- - 該当する場合はコミュニティレイアウトマクロ名を使用します (`LAYOUT`/`LAYOUT_all`よりも優先されます)
-- キーマップの `config.h`
- - キーボードから `rules.mk` や `config.h` が重複していないこと
-- `keymaps/default/keymap.c`
- - `QMKBEST`/`QMKURL` が削除されていること
- - `MO(_LOWER)`および `MO(_RAISE)`キーコードまたは同等のものを使用していて、キーマップに両方のキーを押したときに adjust レイヤーがある場合 - キーマップに直接 adjust レイヤーに入るキーコードがない場合(`MO(_ADJUST)`のように)次のように記述します...
- ```
- layer_state_t layer_state_set_user(layer_state_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
- }
- ```
- ...キーマップの `process_record_user()` 内で `layer_on()`、 `update_tri_layer()` を手動で処理する代わりに。
-- default (および via) のキーマップは「素朴」でなければなりません。
- - 他のユーザーが独自のユーザー固有のキーマップを開発するための「クリーンな状態」として使用するための最低限のもの。
- - これらのキーマップでは標準のレイアウトが推奨されます(可能な場合)
- - デフォルトのキーマップは VIA を有効にするべきではありません -- VIA の統合ドキュメント類には `via` という名前のキーマップが必要です。
-- PR の提出者は、同じ PR に機能を紹介する個人的な(または豪華な)キーマップを持たせることができますが、「デフォルト」のキーマップに埋め込むべきではありません
-- PR の提出者はまた、既存の商用キーボードへ QMK を移植する場合、その商用製品の既存の機能を反映する「製造業者に一致する」キーマップを持つことができます
-- PR に VIA の json ファイルを含めないでください。これらは QMK ファームウェアで使われないため QMK リポジトリに属しません -- それらは [VIA のキーボードリポジトリ](https://github.com/the-via/keyboards)に属します。
-
-
-さらに、ChibiOS に固有で:
-- 既存の ChibiOS ボード定義を使用することを**強く**推奨します。
- - 多くの場合、同等の Nucleo ボードは、同じファミリの異なるフラッシュサイズまたはわずかに異なるモデルで使用できます。
- - 例:STM32L082KZ の場合、STM32L073RZ に類似しているため、rules.mkで `BOARD = ST_NUCLEO64_L073RZ` を使用できます。
- - QMK は ChibiOS のアップグレード時のメンテナンス負担が継続的に発生するため、可能な限りカスタムボード定義を持たないように移行しています。
-- ボードの定義が避けられない場合、`board.c` には標準の `__early_init()` (通常の ChibiOS ボードの定義と同じ) と空の `boardInit()` を実装しなければなりません。
- - Arm/ChibiOS [早期初期化](https:/docs.qmk.fm/#/ja/platformdev_chibios_earlyinit?id=board-init)を参照してください
- - `__early_init()`は、`early_hardware_init_pre()` または `early_hardware_init_post()` で適切に置き換える必要があります
- - `boardInit()` は `board_init()` に移行する必要があります
-
-## コアの PR
-
-- `develop` ブランチをターゲットにする必要があります。これは、その後、breaking change のタイムラインで `master` にマージされます。
-- その他の注意事項 TBD
- - 投稿された変更の幅を考えると、コアはもっと主観的です
-
----
-
-## 注意事項
-
-人々が自分の `master` ブランチを使用する場合、マージ後に以下を投稿します:
-
-```
-For future reference, we recommend against committing to your `master` branch as you've done here, because pull requests from modified `master` branches can make it more difficult to keep your QMK fork updated. It is highly recommended for QMK development – regardless of what is being done or where – to keep your master updated, but **NEVER** commit to it. Instead, do all your changes in a branch (branches are basically free in Git) and issue PRs from your branches when you're developing.
-
-There are instructions on how to keep your fork updated here:
-
-[**Best Practices: Your Fork's Master: Update Often, Commit Never**](https://docs.qmk.fm/#/newbs_git_using_your_master_branch)
-
-[Fixing Your Branch](https://docs.qmk.fm/#/newbs_git_resynchronize_a_branch) will walk you through fixing up your `master` branch moving forward. If you need any help with this just ask.
-
-Thanks for contributing!
-```
-
-## レビュープロセス
-
-一般的に、PR がマージの対象となる前に、意味のある(例えば、コードを検査した)2つ(またはそれ以上)の承認を確認したいと考えています。これらのレビューはコラボレータに限られません -- 時間を割いてくれるコミュニティメンバーは誰でも歓迎(奨励)されます。唯一の違いは、チェックマークが緑にならないことですが、それは問題ありません。
-
-また、PR レビューは自由な時間に行われるものです。それは好意で行われるものなので、私たちはレビューに費やす時間に対して、報酬はうけとっていませんし埋め合わせもありません。そのため、私たちがあなたのプルリクエストに取り掛かるのには時間がかかります。家族や生活のことで PR に手が回らなくなることもあり、そして燃え尽き症候群は深刻な懸念です。QMK ファームウェアリポジトリは、毎月平均200件の PR が開かれ、200件の PR がマージされますので、しばらくお待ちください。
diff --git a/docs/ja/proton_c_conversion.md b/docs/ja/proton_c_conversion.md
deleted file mode 100644
index 8f0c857cbac..00000000000
--- a/docs/ja/proton_c_conversion.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# キーボードを Proton C を使うように変更
-
-
-
-Proton C は Pro Micro の差し替え可能品であるため、簡単に使用することができます。
-このページでは、キーボードを変換するための便利な自動化されたプロセスと、Pro Micro では利用できない Proton C の機能を利用したい場合の手動プロセスについて説明しています。
-
-## 自動で変換
-
-QMK で現在サポートされているキーボードが Pro Micro(または互換ボード)を使用しており、Proton C を使用したい場合は、以下のように make 引数に `CONVERT_TO_PROTON_C=yes` (または `CTPC=yes`) を追加することでファームウェアを生成することができます。
-
- make 40percentclub/mf68:default CTPC=yes
-
-同じ引数をキーマップの `rules.mk` に追加しても同じことができます。
-
-これは、次のように、`#ifdef` を使用してコード内で使用できる `CONVERT_TO_PROTON_C` フラグを公開します。
-
-```c
-#ifdef CONVERT_TO_PROTON_C
- // Proton C code
-#else
- // Pro Micro code
-#endif
-```
-
-`PORTB/DDRB` などが定義されていないというエラーが発生した場合は、ARM と AVR の両方で機能する [GPIO 制御](ja/gpio_control.md) を使用するようにキーボードのコードを変換する必要があります。これは AVR ビルドにまったく影響を与えません。
-
-Proton C には1つのオンボード LED(C13)しかなく、デフォルトでは TXLED(D5) がそれにマップされています。代わりに RXLED(B0) をそれにマッピングしたい場合は、`config.h` に次のように追加してください。
-
- #define CONVERT_TO_PROTON_C_RXLED
-
-## 機能の変換
-
-下記は ARM ボードに実装されているものに基づいたデフォルトです。
-
-| 機能 | 説明 |
-|--------------------------------------|------------------------------------------------------------------------------------|
-| [オーディオ](ja/feature_audio.md) | 有効 |
-| [RGB ライト](ja/feature_rgblight.md) | 無効 |
-| [バックライト](feature_backlight.md) | ARM が自動コンフィギュレーションを提供できるようになるまで、[タスク駆動 PWM](ja/(feature_backlight.md#software-pwm-driver))が強制されます |
-| USB ホスト (例えば USB-USB コンバータ) | 未サポート (USB ホストコードは AVR 固有のもので、現在 ARM ではサポートされていません。 |
-| [分割キーボード](ja/feature_split_keyboard.md) | 部分的 - 有効にする機能に大きく依存します |
-
-## 手動で変換
-
-`CTPC = yes` を指定せずに Proton C をネイティブで使用するには、`rules.mk` の `MCU`行を変更する必要があります:
-
-```
-MCU = STM32F303
-BOARD = QMK_PROTON_C
-```
-
-次の変数が存在する場合は削除します。
-
-* `BOOTLOADER`
-* `EXTRA_FLAGS`
-
-最後に、`config.h`のすべてのピン割り当てを STM32 上の同等のものに変換します。
-
-| Pro Micro 左側| Proton C 左側 | | Proton C 右側 | Pro Micro 右側 |
-|--------------|--------------|-|--------------|---------------|
-| `D3` | `A9` | | 5v | RAW (5v) |
-| `D2` | `A10` | | GND | GND |
-| GND | GND | | FLASH | RESET |
-| GND | GND | | 3.3v | Vcc 1 |
-| `D1` | `B7` | | `A2` | `F4` |
-| `D0` | `B6` | | `A1` | `F5` |
-| `D4` | `B5` | | `A0` | `F6` |
-| `C6` | `B4` | | `B8` | `F7` |
-| `D7` | `B3` | | `B13` | `B1` |
-| `E6` | `B2` | | `B14` | `B3` |
-| `B4` | `B1` | | `B15` | `B2` |
-| `B5` | `B0` | | `B9` | `B6` |
-| `B0` (RX LED) | `C13` 2 | | `C13` 2 | `D5` (TX LED) |
-
-また、Proton C の拡張部分にあるいくつかの新しいピンを利用することもできます。
-
-| 左側 | | 右側 |
-|------|-|-------|
-| `A4`3 | | `B10` |
-| `A5`4 | | `B11` |
-| `A6` | | `B12` |
-| `A7` | | `A14`5 (SWCLK) |
-| `A8` | | `A13`5 (SWDIO) |
-| `A15` | | RESET6 |
-
-注釈:
-
-1. Pro Micro の Vcc は 3.3V または 5V にすることができます。
-2. Proton C のオンボード LED は、Pro Micro のように2つはありません、1つだけです。Pro Micro には、RX LED(`D5`) と TX LED(`B0`)があります。
-3. `A4` ピンは、スピーカーと共有されています。
-4. `A5` ピンは、スピーカーと共有されています。
-5. `A13` と `A14` ピンはハードウェアデバッグ (SWD) に使用されます。GPIO にも使えますが、最後に使ってください。
-6. RESET を 3.3V とショート(プルアップ)して MCU をリブートします。これは Pro Micro のようにブートローダモードにはならず、MCU をリセットするだけです。
diff --git a/docs/ja/quantum_keycodes.md b/docs/ja/quantum_keycodes.md
deleted file mode 100644
index 0795520c6e3..00000000000
--- a/docs/ja/quantum_keycodes.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Quantum キーコード
-
-
-
-Quantum キーコードにより、カスタムアクションを定義することなく、基本的なものが提供するものより簡単にキーマップをカスタマイズすることができます。
-
-quantum 内の全てのキーコードは `0x0000` と `0xFFFF` の間の数値です。`keymap.c` の中では、関数やその他の特別な場合があるように見えますが、最終的には C プリプロセッサによってそれらは単一の4バイト整数に変換されます。QMK は標準的なキーコードのために `0x0000` から `0x00FF` を予約しています。これらは、`KC_A`、`KC_1` および `KC_LCTL` のようなキーコードで、USB HID 仕様で定義された基本的なキーです。
-
-このページでは、高度な quantum 機能を実装するために使われる `0x00FF` と `0xFFFF` の間のキーコードを説明します。独自のカスタムキーコードを定義する場合は、それらもこの範囲に配置されます。
-
-## QMK キーコード :id=qmk-keycodes
-
-| キー | エイリアス | 説明 |
-|-----------------|---------|--------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`| 書き込みのために、キーボードを bootloader モードにする |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`| デバッグモードの切り替え |
-|`QK_CLEAR_EEPROM`|`EE_CLR` | キーボードの EEPROM (永続化メモリ) を再初期化する |
diff --git a/docs/ja/ref_functions.md b/docs/ja/ref_functions.md
deleted file mode 100644
index 61e3943edd2..00000000000
--- a/docs/ja/ref_functions.md
+++ /dev/null
@@ -1,124 +0,0 @@
-# キーボードをより良くするための便利なコア関数のリスト
-
-
-
-QMK には、信じられないほど便利な、またはあなたが望んでいた機能を少し追加する、隠された関数がたくさんあります。特定の機能に固有の関数はそれぞれの機能のページにあるため、ここには含まれていません。
-
-## (OLKB) トライレイヤー :id=olkb-tri-layers
-
-目的に応じて、実際に使うことができる別個の関数があります。
-
-### `update_tri_layer(x, y, z)`
-
-最初は `update_tri_layer(x, y, z)` 関数です。この関数はレイヤー `x` と `y` の両方がオンになっているかどうかを調べます。両方ともオンの場合は、レイヤー `z` がオンになります。それ以外の場合、`x` と `y` の両方がオンではない(一方のみがオン、またはどちらもオンでない)場合は、レイヤー `z` をオフにします。
-
-この関数は、この機能を持つ特定のキーを作成したいが、他のレイヤーのキーコードではそうしたくない場合に便利です。
-
-#### 例
-
-```c
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LOWER:
- if (record->event.pressed) {
- layer_on(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- case RAISE:
- if (record->event.pressed) {
- layer_on(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- }
- return true;
-}
-```
-
-### `update_tri_layer_state(state, x, y, z)`
-もう1つの関数は `update_tri_layer_state(state, x, y, z)` です。この関数は [`layer_state_set_*` 関数](ja/custom_quantum_functions.md#layer-change-code)から呼び出されることを意図しています。これは、キーコードを使ってレイヤーを変更するたびに、これがチェックされることを意味します。したがって、`LT(layer, kc)` を使ってレイヤーを変更すると、同じレイヤーチェックが引き起こされます。
-
-このメソッドの注意点は2つあります:
-1. `x` および `y` レイヤーをオンにしないと、`z` レイヤーにアクセスできません。これは、レイヤー `z` のみをアクティブにしようとすると、このコードが実行され、使用前にレイヤー `z` がオフになるからです。
-2. レイヤーは最上位の番号から処理されるので、`z` は `x` や `y` よりも上位のレイヤーでなければなりません。そうでなければアクセスできない場合があります。
-
-#### 例
-
-```c
-layer_state_t layer_state_set_user(layer_state_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-```
-
-あるいは、すぐに値を「返す」必要はありません。複数のトライレイヤーを追加、あるいは追加の効果を追加する場合に便利です。
-
-```c
-layer_state_t layer_state_set_user(layer_state_t state) {
- state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
- state = update_tri_layer_state(state, _RAISE, _SYMB, _SPECIAL);
- return state;
-}
-```
-
-## 永続的なデフォルトレイヤーの設定
-
-デフォルトレイヤーを設定して、キーボードを取り外しても保持されるようにしたいですか?そうであれば、これがそのための関数です。
-
-これを使うには、`set_single_persistent_default_layer(layer)` を使います。レイヤーに名前が定義されている場合は、代わりにそれを使うことができます (_QWERTY、_DVORAK、_COLEMAK など)。
-
-これは、デフォルトレイヤーを設定し、永続設定が更新され、もし [オーディオ](ja/feature_audio.md) がキーボードで有効でデフォルトレイヤーの音が設定されている場合は、曲を再生します。
-
-デフォルトレイヤーの音を設定するには、以下のように `config.h` ファイルに定義する必要があります。
-
-```c
-#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
- SONG(COLEMAK_SOUND), \
- SONG(DVORAK_SOUND) \
- }
-```
-
-
-?> [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) に使用できる多くの定義済みの曲があります。
-
-## キーボードのリセット
-
-使用できる `RESET` quantum キーコードがあります。ただし、キーを個別に押すのではなくマクロの一部としてリセットしたい場合は、そうすることができます。
-
-そのためには、`reset_keyboard()` を関数またはマクロに追加すると、ブートローダがリセットされます。
-
-## EEPROM (永続ストレージ)の消去
-
-オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。EEPROM を強制的にリセットするには、[`EEP_RST` キーコード](ja/quantum_keycodes.md)あるいは[ブートマジック](ja/feature_bootmagic.md)機能を使います。それらのいずれも選択肢にない場合は、カスタムマクロを使って行うことができます。
-
-EEPROM を消去するには、関数またはマクロから `eeconfig_init()` を実行し、ほとんどの設定をデフォルトにリセットします。
-
-## タップランダムキー
-
-ランダムな文字をホストコンピュータに送信する場合は、`tap_random_base64()` 関数を使うことができます。これは[疑似乱数的に](https://en.wikipedia.org/wiki/Pseudorandom_number_generator)0から63の数字を選択し、その選択に基づいてキー押下を送信します。(0–25 は `A`–`Z`、26–51 は `a`–`z`、52–61 は `0`–`9`、62 は `+`、63 は `/`)。
-
-?> 言うまでもないですが、これはランダムに Base64 キーあるいはパスワードを生成する暗号的に安全な方法では _ありません_。
-
-## ソフトウェアタイマー
-
-タイマーを開始し、時間固有のイベントの値を読み取ることができます。以下は例です:
-
-```c
-static uint16_t key_timer;
-key_timer = timer_read();
-
-if (timer_elapsed(key_timer) < 100) {
- // 経過時間が 100ms 未満の場合に何かを行う
-} else {
- // 経過時間が 100ms 以上の場合に何かを行う
-}
-```
diff --git a/docs/ja/reference_configurator_support.md b/docs/ja/reference_configurator_support.md
deleted file mode 100644
index aefd04dd8a9..00000000000
--- a/docs/ja/reference_configurator_support.md
+++ /dev/null
@@ -1,200 +0,0 @@
-# QMK Configurator でのキーボードのサポート
-
-
-
-このページは [QMK Configurator](https://config.qmk.fm/) でキーボードを適切にサポートする方法について説明します。
-
-
-## Configurator がキーボードを理解する方法
-
-Configurator がキーボードをどのように理解するかを理解するには、最初にレイアウトマクロを理解する必要があります。この演習では、17キーのテンキー PCB を想定します。これを `numpad` と呼びます。
-
-```
-|---------------|
-|NLk| / | * | - |
-|---+---+---+---|
-|7 |8 |9 | + |
-|---+---+---| |
-|4 |5 |6 | |
-|---+---+---+---|
-|1 |2 |3 |Ent|
-|-------+---| |
-|0 | . | |
-|---------------|
-```
-
-?> レイアウトマクロの詳細については、[QMK の理解: マトリックススキャン](ja/understanding_qmk.md?id=matrix-scanning) と [QMK の理解: マトリックスから物理レイアウトへのマップ](ja/understanding_qmk.md?id=matrix-to-physical-layout-map) を見てください。
-
-Configurator の API はキーボードの `.h` ファイルを `qmk_firmware/keyboards//.h` から読み取ります。numpad の場合、このファイルは `qmk_firmware/keyboards/numpad/numpad.h` です:
-
-```c
-#pragma once
-
-#define LAYOUT( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, k33, \
- k40, k42 \
- ) { \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, KC_NO }, \
- { k30, k31, k32, k33 }, \
- { k40, KC_NO, k42, KC_NO } \
-}
-```
-
-QMK は `KC_NO` を使って、スイッチマトリックス内のスイッチがない場所を指定します。デバッグが必要な場合に、このセクションを読みやすくするために、`XXX`、`___`、`____` を略記として使うこともあります。通常は `.h` ファイルの先頭近くで定義されます:
-
-```c
-#pragma once
-
-#define XXX KC_NO
-
-#define LAYOUT( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, k33, \
- k40, k42 \
- ) { \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, XXX }, \
- { k30, k31, k32, k33 }, \
- { k40, XXX, k42, XXX } \
-}
-```
-
-!> この使用方法はキーマップマクロと異なります。キーマップマクロはほとんど常に`KC_NO`については`XXXXXXX` (7つの大文字の X) を、`KC_TRNS` については `_______` (7つのアンダースコア)を使います。
-
-!> ユーザの混乱を防ぐために、`KC_NO` を使うことをお勧めします。
-
-レイアウトマクロは、キーボードに17個のキーがあり、4列それぞれが5行に配置されていることを Configurator に伝えます。スイッチの位置は、0から始まる `k` という名前が付けられています。キーマップからキーコードを受け取る上部セクションと、マトリックス内の各キーの位置を指定する下部セクションとが一致する限り、名前自体は実際には問題ではありません。
-
-物理的なキーボードに似た形でキーボードを表示するには、それぞれのキーの物理的な位置とサイズをスイッチマトリックスに結びつけることを Configurator に伝える JSON ファイルを作成する必要があります。
-
-## JSON ファイルのビルド
-
-JSON ファイルをビルドする最も簡単な方法は、[Keyboard Layout Editor](https://www.keyboard-layout-editor.com/) ("KLE") でレイアウトを作成することです。この Raw Data を QMK tool に入れて、Configurator が読み出して使用する JSON ファイルに変換します。KLE は numpad レイアウトをデフォルトで開くため、Getting Started の説明を削除し、残りを使います。
-
-レイアウトが望み通りのものになったら、KLE の Raw Data タブに移動し、内容をコピーします:
-
-```
-["Num Lock","/","*","-"],
-["7\nHome","8\n↑","9\nPgUp",{h:2},"+"],
-["4\n←","5","6\n→"],
-["1\nEnd","2\n↓","3\nPgDn",{h:2},"Enter"],
-[{w:2},"0\nIns",".\nDel"]
-```
-
-このデータを JSON に変換するには、[QMK KLE-JSON Converter](https://qmk.fm/converter/) に移動し、Raw Data を Input フィールド に貼り付け、Convert ボタンをクリックします。しばらくすると、JSON データが Output フィールドに表示されます。内容を新しいテキストドキュメントにコピーし、ドキュメントに `info.json` という名前を付け、`numpad.h` を含む同じフォルダに保存します。
-
-`keyboard_name` オブジェクトを使ってキーボードの名前を設定します。説明のために、各キーのオブジェクトを各行に配置します。これはファイルを人間が読みやすいものにするためのもので、Configurator の機能には影響しません。
-
-```json
-{
- "keyboard_name": "Numpad",
- "url": "",
- "maintainer": "qmk",
- "tags": {
- "form_factor": "numpad"
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"Num Lock", "x":0, "y":0},
- {"label":"/", "x":1, "y":0},
- {"label":"*", "x":2, "y":0},
- {"label":"-", "x":3, "y":0},
- {"label":"7", "x":0, "y":1},
- {"label":"8", "x":1, "y":1},
- {"label":"9", "x":2, "y":1},
- {"label":"+", "x":3, "y":1, "h":2},
- {"label":"4", "x":0, "y":2},
- {"label":"5", "x":1, "y":2},
- {"label":"6", "x":2, "y":2},
- {"label":"1", "x":0, "y":3},
- {"label":"2", "x":1, "y":3},
- {"label":"3", "x":2, "y":3},
- {"label":"Enter", "x":3, "y":3, "h":2},
- {"label":"0", "x":0, "y":4, "w":2},
- {"label":".", "x":2, "y":4}
- ]
- }
- }
-}
-```
-
-`layouts` オブジェクトにはキーボードの物理レイアウトを表すデータが含まれます。このオブジェクトには `LAYOUT` という名前のオブジェクトがあり、このオブジェクト名は `numpad.h` のレイアウトマクロの名前と一致する必要があります。`LAYOUT` オブジェクト自体には `layout` という名前のオブジェクトがあります。このオブジェクトにはキーボードの物理キーごとに 1つの JSON オブジェクトが以下の形式で含まれています:
-
-```
- キーの名前。Configurator では表示されません。
- |
- | キーボードの左端からのキー単位での
- | | キーの X 軸の位置。
- | |
- | | キーボードの上端(奥側)からのキー単位での
- | | | キーの Y 軸位置。
- ↓ ↓ ↓
-{"label":"Num Lock", "x":0, "y":0},
-```
-
-一部のオブジェクトには、それぞれキーの幅と高さを表す `"w"` 属性キーと `"h"` 属性キーがあります。
-
-?> `info.json` ファイルの詳細については、[`info.json` 形式](ja/reference_info_json.md) を参照してください。
-
-
-## Configurator がキーをプログラムする方法
-
-Configurator の API は、指定されたレイアウトマクロと JSON ファイルを使って、特定のキーに関連付けられた各ビジュアルオブジェクトを順番に持つキーボードのビジュアル表現を作成します:
-
-| レイアウトマクロのキー | 使用される JSON オブジェクト |
-:---: | :----
-| k00 | {"label":"Num Lock", "x":0, "y":0} |
-| k01 | {"label":"/", "x":1, "y":0} |
-| k02 | {"label":"*", "x":2, "y":0} |
-| k03 | {"label":"-", "x":3, "y":0} |
-| k10 | {"label":"7", "x":0, "y":1} |
-| k11 | {"label":"8", "x":1, "y":1} |
-| k12 | {"label":"9", "x":2, "y":1} |
-| k13 | {"label":"+", "x":3, "y":1, "h":2} |
-| k20 | {"label":"4", "x":0, "y":2} |
-| k21 | {"label":"5", "x":1, "y":2} |
-| k22 | {"label":"6", "x":2, "y":2} |
-| k30 | {"label":"1", "x":0, "y":3} |
-| k31 | {"label":"2", "x":1, "y":3} |
-| k32 | {"label":"3", "x":2, "y":3} |
-| k33 | {"label":"Enter", "x":3, "y":3, "h":2} |
-| k40 | {"label":"0", "x":0, "y":4, "w":2} |
-| k42 | {"label":".", "x":2, "y":4} |
-
-ユーザが Configurator で左上のキーを選択し、Num Lock を割り当てると、Configurator は最初のキーとして `KC_NUM` を持つキーマップを作成し、同様にキーマップが作成されます。`label` キーは使われません; それらは `info.json` ファイルをデバッグする時に特定のキーを識別するためのユーザの参照のためだけのものです。
-
-
-## 問題と危険
-
-現在のところ、Configurator はキーの回転または ISO Enter などの長方形ではないキーをサポートしません。さらに、"行"から垂直方向にずれているキー、— 顕著な例として [TKC1800](https://github.com/qmk/qmk_firmware/tree/4ac48a61a66206beaf2fdd5f2939d8bbedd0004c/keyboards/tkc1800/) のような1800レイアウト上の矢印キー — は、 `info.json` ファイルの提供者によって調整されていない場合は、KLE-to-JSON コンバータを混乱させます。
-
-### 回避策
-
-#### 長方形ではないキー
-
-ISO Enter キーについては、QMK custom は幅 1.25u、高さ 2u の長方形のキーとして表示し、右端が英数字キーブロックの右端に揃うように配置されます。
-
-
-*QMK Configurator によって描画される標準 ISO レイアウトの60%キーボード。*
-
-#### 垂直方向にずれたキー
-
-垂直方向にずれたキーについては、ずれていないかのように KLE で配置し、変換された JSON ファイルで必要に応じて Y 値を編集します。
-
-
-*矢印キーに適用される垂直方向のずれのない、Keyboard Layout Editor で描画された1800レイアウトのキーボード。*
-
-
-*キーボードの JSON ファイルで矢印キーを垂直方向にずらすために必要な変更を示す、Unix の diff ファイル。*
diff --git a/docs/ja/reference_glossary.md b/docs/ja/reference_glossary.md
deleted file mode 100644
index 06c71961238..00000000000
--- a/docs/ja/reference_glossary.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# QMK 用語集
-
-
-
-## ARM
-Atmel、Cypress、Kinetis、NXP、ST、TI など多くの企業が生産する 32 ビット MCU のライン。
-
-## AVR
-[Atmel](https://www.microchip.com/) が生産する 8 ビット MCU のライン。AVR は TMK がサポートしていた元のプラットフォームでした。
-
-## AZERTY
-標準的な Français (フランス) キーボードレイアウト。キーボードの最初の6つのキーから命名されました。
-
-## バックライト
-キーボードのライトの総称。バックライトが一般的ですが、それだけではなく、キーキャップあるいはスイッチを通して光る LED の配列。
-
-## Bluetooth
-短距離のピアツーピア無線プロトコル。キーボード用のもっとも一般的なワイヤレスプロトコル。
-
-## ブートローダ
-MCU の保護領域に書き込まれる特別なプログラムで、MCU が独自のファームウェアを通常は USB 経由でアップグレードできるようにします。
-
-## ブートマジック
-よくあるキーの交換あるいは無効化など、様々なキーボードの挙動の変更をその場で実行できる機能。
-
-## C
-システムコードに適した低レベルプログラミング言語。QMK のほとんどのコードは C で書かれています。
-
-## Colemak
-人気が出始めている代替キーボードレイアウト。
-
-## コンパイル
-人間が読めるコードを MCU が実行できるマシンコードに変換するプロセス。
-
-## Dvorak
-1930年代に Dr. August Dvorak によって開発された代替キーボードレイアウト。Dvorak Simplified Keyboard の短縮形。
-
-## 動的マクロ
-キーボードに記録されたマクロで、キーボードのプラグを抜くか、コンピュータを再起動すると失われます。
-
-* [動的マクロドキュメント](ja/feature_dynamic_macros.md)
-
-## Eclipse
-多くの C 開発者に人気のある IDE。
-
-* [Eclipse セットアップ手順](ja/other_eclipse.md)
-
-## ファームウェア
-MCU を制御するソフトウェア
-
-## git
-コマンドラインで使用されるバージョン管理ソフトウェア
-
-## GitHub
-QMK プロジェクトのほとんどをホストする Web サイト。git、課題管理、および QMK の実行に役立つその他の機能を統合して提供します。
-
-## ISP
-インシステムプログラミング。外部ハードウェアと JTAG ピンを使って AVR チップをプログラミングする方法。
-
-## hid_listen
-キーボードからデバッグメッセージを受信するためのインタフェース。[QMK Flasher](https://github.com/qmk/qmk_flasher) あるいは [PJRC の hid_listen](https://www.pjrc.com/teensy/hid_listen.html) を使ってこれらのメッセージを見ることができます。
-
-## キーコード
-特定のキーを表す2バイトの数値。`0x00`-`0xFF` は[基本キーコード](ja/keycodes_basic.md)に使われ、`0x100`-`0xFFFF` は [Quantum キーコード](ja/quantum_keycodes.md) に使われます。
-
-## キーダウン
-キーが押された時に発生し、キーが放される前に完了するイベント。
-
-## キーアップ
-キーが放された時に発生するイベント。
-
-## キーマップ
-物理的なキーボードレイアウトにマップされたキーコードの配列。キーの押下およびリリース時に処理されます。
-
-## レイヤー
-1つのキーが複数の目的を果たすために使われる抽象化。最上位のアクティブなレイヤーが優先されます。
-
-## リーダーキー
-リーダーキーに続けて1, 2 あるいは3つのキーをタップすることで、キーの押下あるいは他の quantum 機能をアクティブにする機能。
-
-* [リーダーキードキュメント](ja/feature_leader_key.md)
-
-## LED
-発光ダイオード。キーボードの表示に使われる最も一般的なデバイス。
-
-## Make
-全てのソースファイルをコンパイルするために使われるソフトウェアパッケージ。キーボードファームウェアをコンパイルするために、様々なオプションを指定して `make` を実行します。
-
-## マトリックス
-MCU がより少ないピン数でキー押下を検出できるようにする列と行の配線パターン。マトリックスには多くの場合、NKRO を可能にするためのダイオードが組み込まれています。
-
-## マクロ
-単一のキーのみを押した後で、複数のキー押下イベント (HID レポート) を送信できる機能。
-
-* [マクロドキュメント](ja/feature_macros.md)
-
-## MCU
-マイクロコントロールユニット。キーボードを動かすプロセッサ。
-
-## モディファイア
-別のキーを入力する間押したままにして、そのキーのアクションを変更するキー。例として、Ctrl、Alt および Shift があります。
-(訳注:モディファイヤ、モディファイヤキー、修飾キーなど、訳語が統一されていませんが同じものです)
-
-## マウスキー
-キーボードからマウスカーソルを制御し、クリックできる機能。
-
-* [マウスキードキュメント](ja/feature_mouse_keys.md)
-
-## N キーロールオーバー (NKRO)
-一度に任意の数のキーの押下を送信できるキーボードに当てはまる用語。
-
-## ワンショットモディファイア
-別のキーが放されるまで押されているかのように機能するモディファイア。キーを押している間に mod を押し続けるのではなく、mod を押してからキーを押すことができます。スティッキーキーまたはデッドキーとも呼びます。
-
-## ProMicro
-低コストの AVR 開発ボード。このデバイスのクローンは ebay で非常に安価(5ドル未満)に見つかることがありますが、多くの場合 pro micro の書き込みに苦労します。
-
-## プルリクエスト
-QMK にコードを送信するリクエスト。全てのユーザが個人のキーマップのプルリクエストを送信することを推奨します。
-
-## QWERTY
-標準の英語キーボードレイアウト。多くの場合、他の言語の標準レイアウトへのショートカット。キーボードの最初の6文字から命名されました。
-
-## QWERTZ
-標準的な Deutsche (ドイツ語) キーボードレイアウト。キーボードの最初の6文字から命名されました。
-
-## ロールオーバー
-キーが既に押されている間にキーを押すことを指す用語。似たものに 2KRO、6KRO、NKRO が含まれます。
-
-## スキャンコード
-単一のキーを表す USB 経由の HID レポートの一部として送信される1バイトの数値。これらの値は、[USB-IF](https://www.usb.org/) が発行する [HID Usage Tables](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf) に記載されています。
-
-## スペースカデットシフト
-左または右 shift を1回以上タップすることで、様々なタイプの括弧を入力できる特別な shift キーのセット。
-
-* [スペースカデットシフトドキュメント](ja/feature_space_cadet_shift.md)
-
-## タップ
-キーを押して放す。状況によってはキーダウンイベントとキーアップイベントを区別する必要がありますが、タップは常に両方を一度に指します。
-
-## タップダンス
-押す回数に基づいて、同じキーに複数のキーコードを割り当てることができる機能。
-
-* [タップダンスドキュメント](ja/feature_tap_dance.md)
-
-## Teensy
-手配線での組み立てによく用いられる低コストの AVR 開発ボード。halfkay ブートローダによって書き込みが非常に簡単になるために、数ドル高いにもかかわらず teensy がしばしば選択されます。
-
-## アンダーライト
-キーボードの下側を照らす LED の総称。これらの LED は通常 PCB の底面からキーボードが置かれている表面に向けて照らします。
-
-## ユニコード
-大規模なコンピュータの世界では、ユニコードは任意の言語で文字を表現するためのエンコード方式のセットです。QMK に関しては、様々な OS スキームを使ってスキャンコードの代わりにユニコードコードポイントを送信することを意味します。
-
-* [ユニコードドキュメント](ja/feature_unicode.md)
-
-## 単体テスト
-QMK に対して自動テストを実行するためのフレームワーク。単体テストは、変更が何も壊さないことを確信するのに役立ちます。
-
-* [単体テストドキュメント](ja/unit_testing.md)
-
-## USB
-ユニバーサルシリアルバス。キーボード用の最も一般的な有線インタフェース。
-
-## USB ホスト (あるいは単にホスト)
-USB ホストは、あなたのコンピュータ、またはキーボードが差し込まれているデバイスのことです。
-
-# 探している用語が見つかりませんでしたか?
-
-質問についての [issue を開いて](https://github.com/qmk/qmk_firmware/issues) 、質問した用語についてここに追加することができます。さらに良いのは、定義についてのプルリクエストを開くことです。:)
diff --git a/docs/ja/reference_info_json.md b/docs/ja/reference_info_json.md
deleted file mode 100644
index e6a71adc9df..00000000000
--- a/docs/ja/reference_info_json.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# `info.json`
-
-
-
-このファイルは [QMK API](https://github.com/qmk/qmk_api) によって使われます。このファイルは [QMK Configurator](https://config.qmk.fm/) がキーボードの画像を表示するために必要な情報を含んでいます。ここにメタデータを設定することもできます。
-
-このメタデータを指定するために、`qmk_firmware/keyboards/` の下の全てのレベルで `info.json` を作成することができます。これらのファイルは結合され、より具体的なファイルがそうではないファイルのキーを上書きします。つまり、メタデータ情報を複製する必要はありません。例えば、`qmk_firmware/keyboards/clueboard/info.json` は `manufacturer` および `maintainer` を指定し、`qmk_firmware/keyboards/clueboard/66/info.json` は Clueboard 66% についてのより具体的な情報を指定します。
-
-## `info.json` の形式
-
-`info.json` ファイルは設定可能な以下のキーを持つ JSON 形式の辞書です。全てを設定する必要はなく、キーボードに適用するキーだけを設定します。
-
-* `keyboard_name`
- * キーボードを説明する自由形式のテキスト文字列。
- * 例: `Clueboard 66%`
-* `url`
- * キーボードの製品ページ、[QMK.fm/keyboards](https://qmk.fm/keyboards) のページ、あるいはキーボードに関する情報を説明する他のページの URL。
-* `maintainer`
- * メンテナの GitHub のユーザ名、あるいはコミュニティが管理するキーボードの場合は `qmk`
-* `layouts`
- * 物理的なレイアウト表現。詳細は以下のセクションを見てください。
-
-### レイアウトの形式
-
-`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`。
-
-* `layout`
- * 物理レイアウトを説明するキー辞書のリスト。詳細は次のセクションを見てください。
-
-### キー辞書形式
-
-レイアウトの各キー辞書は、キーの物理プロパティを記述します。 の Raw Code に精通している場合、多くの概念が同じであることが分かります。可能な限り同じキー名とレイアウトの選択を再利用しますが、keyboard-layout-editor とは異なって各キーはステートレスで、前のキーからプロパティを継承しません。
-
-全てのキーの位置と回転は、キーボードの左上と、各キーの左上を基準にして指定されます。
-
-* `x`
- * **必須**: 水平軸でのキーの絶対位置(キー単位)。
-* `y`
- * **必須**: 垂直軸でのキーの絶対位置(キー単位)。
-* `w`
- * キー単位でのキーの幅。`ks` が指定された場合は無視されます。デフォルト: `1`
-* `h`
- * キー単位でのキーの高さ。`ks` が指定された場合は無視されます。デフォルト: `1`
-* `r`
- * キーを回転させる時計回りの角度。
-* `rx`
- * キーを回転させる点の水平軸における絶対位置。デフォルト: `x`
-* `ry`
- * キーを回転させる点の垂直軸における絶対位置。デフォルト: `y`
-* `ks`
- * キー形状: キー単位で頂点を列挙することでポリゴンを定義します。
- * **重要**: これらはキーの左上からの相対位置で、絶対位置ではありません。
- * ISO Enter の例: `[ [0,0], [1.5,0], [1.5,2], [0.25,2], [0.25,1], [0,1], [0,0] ]`
-* `label`
- * マトリックス内のこの位置につける名前。
- * これは通常 PCB 上でこの位置にシルクスクリーン印刷されるものと同じ名前でなければなりません。
-
-## メタデータはどのように公開されますか?
-
-このメタデータは主に2つの方法で使われます:
-
-* Web ベースの configurator が動的に UI を生成できるようにする。
-* 新しい `make keyboard:keymap:qmk` ターゲットをサポートする。これは、このメタデータをファームウェアにバンドルして QMK Toolbox をよりスマートにします。
-
-Configurator の作成者は、JSON API の使用に関する詳細について、[QMK Compiler](https://docs.api.qmk.fm/using-the-api) ドキュメントを参照することができます。
diff --git a/docs/ja/reference_keymap_extras.md b/docs/ja/reference_keymap_extras.md
deleted file mode 100644
index fb9d167ae03..00000000000
--- a/docs/ja/reference_keymap_extras.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# 言語固有のキーコード
-
-
-
-キーボードは多くの言語をサポートすることができます。ただし、それらはキーを押したことで生成される実際の文字を送信しません - 代わりに数字のコードを送信します。USB HID の仕様ではそれらは "usages" と呼ばれますが、キーボードの文脈では「スキャンコード」あるいは「キーコード」と呼ばれることが多いです。
-HID Keyboard/Keypad usage ページでは 256 未満の usage が定義されており、それらの一部は現在のオペレーティングシステムでは機能しません。では、この言語のサポートはどのようにして実現されるのでしょうか?
-
-簡単に言うと、オペレーティングシステムはユーザが設定したキーボードレイアウトに基づいて受け取った usage を適切な文字にマップします。例えば、スウェーデン人がキーボードの `å` という文字が刻印されたキーを押すと、キーボードは *実際には* `[` のキーコードを送信します。
-
-明らかにこれは混乱する可能性があるため、QMK は多くのキーボードレイアウトのために言語固有のキーコードのエイリアスを提供します。これらはそれだけでは何もしません - さらに OS の設定で対応するキーボードレイアウトを設定する必要があります。それらをキーマップのキーキャップラベルと考えてください。
-
-これらを使うには、`keymap.c` で対応する [ヘッダファイル](https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras) を `#include` し、それらで定義されているキーコードを `KC_` プリフィクスの代わりに追加します:
-
-| レイアウト | ヘッダファイル |
-|-----------------------------|----------------------------------|
-| 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 (AFNOR) | `keymap_french_afnor.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` |
-| Hebrew* | `keymap_hebrew.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 (macOS, ISO) | `keymap_portuguese_osx_iso.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` |
-
-言語固有でないものもありますが、QWERTY レイアウトを使っていない場合に役立ちます:
-
-| レイアウト | ヘッダファイル |
-|---------------------|--------------------------|
-| Colemak | `keymap_colemak.h` |
-| Dvorak | `keymap_dvorak.h` |
-| Dvorak (French) | `keymap_dvorak_fr.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 サポート
-
-デフォルトでは、`SEND_STRING()` は US ANSI キーボードレイアウトが設定されたと見なします。別のレイアウトを使っている場合は、キーマップで(上記のように)`#include "sendstring_*.h"` して、ASCII 文字をキーコードにマッピングするために使われるルックアップテーブルを上書きすることができます。
-
-ここで注意すべき重要な点は、`SEND_STRING()` は [ASCII 文字](https://en.wikipedia.org/wiki/ASCII#Character_set) でのみ機能するということです。これは、ユニコード文字を含む文字列を渡すことができないことを意味します - 残念ながら、これには希望のレイアウトに存在する可能性のあるアクセント付き文字が含まれています。
-多くのレイアウトでは、Grave または Tilde などの特定の文字を[デッドキー](https://en.wikipedia.org/wiki/Dead_key)としてのみ使えるようにしています。そのため、デッドキーが次の文字と潜在的に結合されることを防ぐためには、送信したい文字列の中のデッドキーのすぐ後にスペースを追加する必要があります。
-ラテン語由来のアルファベットを使わない(例えば、ギリシャ語やロシア語のような)他のレイアウトには、Sendstring ヘッダーがありません。従って ASCII 文字セットのほとんどを入力する方法がありません。これらは上記で `*` でマークされています。
diff --git a/docs/ja/serial_driver.md b/docs/ja/serial_driver.md
deleted file mode 100644
index 72071f4f7ed..00000000000
--- a/docs/ja/serial_driver.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# 'シリアル' ドライバ
-
-
-
-このドライバは[分割キーボード](ja/feature_split_keyboard.md) 機能に使います。
-
-?> この文章でのシリアルは、UART/USART/RS485/RS232 規格の実装ではなく、**一度に1ビットの情報を送信するもの**として読まれるべきです。
-
-このカテゴリの全てのドライバには以下の特徴があります:
-* 1本の線上でデータと信号を提供
-* シングルマスタ、シングルスレーブに限定
-
-## サポートされるドライバの種類
-
-| | AVR | ARM |
-|-------------------|--------------------|--------------------|
-| bit bang | :heavy_check_mark: | :heavy_check_mark: |
-| USART Half-duplex | | :heavy_check_mark: |
-
-## ドライバ設定
-
-### Bitbang
-デフォルトのドライバ。設定がない場合はこのドライバが想定されます。設定するには、以下を rules.mk に追加します:
-
-```make
-SERIAL_DRIVER = bitbang
-```
-
-config.h を介してドライバを設定します:
-```c
-#define SOFT_SERIAL_PIN D0 // または D1, D2, D3, E6
-#define SELECT_SOFT_SERIAL_SPEED 1 // または 0, 2, 3, 4, 5
- // 0: 約 189kbps (実験目的のみ)
- // 1: 約 137kbps (デフォルト)
- // 2: 約 75kbps
- // 3: 約 39kbps
- // 4: 約 26kbps
- // 5: 約 20kbps
-```
-
-#### ARM
-
-!> bitbang ドライバは bitbang WS2812 ドライバと接続の問題があります
-
-上記の一般的なオプションに加えて、halconf.h で `PAL_USE_CALLBACKS` 機能もオンにする必要があります。
-
-### USART Half-duplex
-通信が USART ハードウェアデバイスに送信される STM32 ボードが対象です。これにより高速で正確なタイミングを提供できることが利点です。このドライバの `SOFT_SERIAL_PIN` は、設定された USART TX ピンです。**TX ピンに適切なプルアップ抵抗が必要です**。設定するには、以下を rules.mk に追加します:
-
-```make
-SERIAL_DRIVER = usart
-```
-
-config.h を介してハードウェアを設定します:
-```c
-#define SOFT_SERIAL_PIN B6 // USART TX ピン
-#define SELECT_SOFT_SERIAL_SPEED 1 // または 0, 2, 3, 4, 5
- // 0: 約 460800 ボー
- // 1: 約 230400 ボー (デフォルト)
- // 2: 約 115200 ボー
- // 3: 約 57600 ボー
- // 4: 約 38400 ボー
- // 5: 約 19200 ボー
-#define SERIAL_USART_DRIVER SD1 // TX ピンの USART ドライバ。デフォルトは SD1
-#define SERIAL_USART_TX_PAL_MODE 7 // 「代替機能」 ピン。MCU の適切な値については、それぞれのデータシートを見てください。デフォルトは 7
-```
-
-また、ChibiOS `SERIAL` 機能を有効にする必要があります:
-* キーボードの halconf.h: `#define HAL_USE_SERIAL TRUE`
-* キーボードの mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (ここで、'n' は MCU で選択した USART のペリフェラル番号と一致)
-
-必要な構成は、`UART` 周辺機器ではなく、`SERIAL` 周辺機器であることに注意してください。
diff --git a/docs/ja/support.md b/docs/ja/support.md
deleted file mode 100644
index 01c2d41d19c..00000000000
--- a/docs/ja/support.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# 助けを得る
-
-
-
-QMK に関して助けを得るための多くのリソースがあります。
-
-コミュニティスペースに参加する前に[行動規範](https://qmk.fm/coc/)を読んでください。
-
-## リアルタイムチャット
-
-何かについて助けが必要な場合は、迅速なサポートを受けるための最良の場所は、[Discord Server](https://discord.gg/Uq7gcHh) です。通常は誰かがオンラインで、非常に助けになる多くの人がいます。
-
-## OLKB Subreddit
-
-公式の QMK フォーラムは [reddit.com](https://reddit.com) の [/r/olkb](https://reddit.com/r/olkb) です。
-
-## GitHub Issues
-
-[GitHub で issue](https://github.com/qmk/qmk_firmware/issues) を開くことができます。issue は長期的な議論あるいはデバッグを必要とする場合は、特に便利です。
diff --git a/docs/ja/syllabus.md b/docs/ja/syllabus.md
deleted file mode 100644
index 9209cb49e08..00000000000
--- a/docs/ja/syllabus.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# QMK シラバス
-
-
-
-このページは最初に基本を紹介し、そして、QMK に習熟するために必要な全ての概念を理解するように導くことで、QMK の知識を構築するのに役立ちます。
-
-# 初級トピック
-
-他に何も読んでいない場合は、このセクションのドキュメントを読んでください。[QMK 初心者ガイド](ja/newbs.md)を読み終わると、基本的なキーマップを作成し、それをコンパイルし、キーボードに書き込みできるようになっているはずです。残りのドキュメントはこれらの基本的な知識を具体的に肉付けします。
-
-* **QMK Tools の使い方を学ぶ**
- * [QMK 初心者ガイド](ja/newbs.md)
- * [CLI](ja/cli.md)
- * [Git](ja/newbs_git_best_practices.md)
-* **キーマップについて学ぶ**
- * [レイヤー](ja/feature_layers.md)
- * [キーコード](ja/keycodes.md)
- * 使用できるキーコードの完全なリスト。中級または上級トピックにある知識が必要な場合もあることに注意してください。
-* **IDE の設定** - オプション
- * [Eclipse](ja/other_eclipse.md)
- * [VS Code](ja/other_vscode.md)
-
-# 中級トピック
-
-これらのトピックでは、QMK がサポートする幾つかの機能について掘り下げます。これらのドキュメントを全て読む必要はありませんが、これらの一部をスキップすると、上級トピックのセクションの一部のドキュメントが意味をなさなくなるかもしれません。
-
-* **機能の設定方法を学ぶ**
-
- * [オーディオ](ja/feature_audio.md)
- * 電飾
- * [バックライト](ja/feature_backlight.md)
- * [LED マトリックス](ja/feature_led_matrix.md)
- * [RGB ライト](ja/feature_rgblight.md)
- * [RGB マトリックス](ja/feature_rgb_matrix.md)
- * [タップホールド設定](ja/tap_hold.md)
-* **キーマップについてさらに学ぶ**
- * [キーマップ](ja/keymap.md)
- * [カスタム関数とキーコード](ja/custom_quantum_functions.md)
- * マクロ
- * [動的マクロ](ja/feature_dynamic_macros.md)
- * [コンパイル済みのマクロ](ja/feature_macros.md)
- * [タップダンス](ja/feature_tap_dance.md)
- * [コンボ](ja/feature_combo.md)
- * [ユーザスペース](ja/feature_userspace.md)
- * [キーオーバーライド](ja/feature_key_overrides.md)
-
-# 上級トピック
-
-以下の全ては多くの基礎知識を必要とします。高度な機能を使ってキーマップを作成できることに加えて、`config.h` と `rules.mk` の両方を使ってキーボードのオプションを設定することに慣れている必要があります。
-
-* **QMK 内のキーボードの保守**
- * [キーボードの手配線](ja/hand_wire.md)
- * [キーボードガイドライン](ja/hardware_keyboard_guidelines.md)
- * [info.json リファレンス](ja/reference_info_json.md)
- * [デバウンス API](ja/feature_debounce_type.md)
-* **高度な機能**
- * [ユニコード](ja/feature_unicode.md)
- * [API](ja/api_overview.md)
- * [ブートマジックライト](ja/feature_bootmagic.md)
-* **ハードウェア**
- * [キーボードがどのように動作するか](ja/how_keyboards_work.md)
- * [キーボードマトリックスの仕組み](ja/how_a_matrix_works.md)
- * [分割キーボード](ja/feature_split_keyboard.md)
- * [速記](ja/feature_stenography.md)
- * [ポインティングデバイス](ja/feature_pointing_device.md)
-* **コア開発**
- * [コーディング規約](ja/coding_conventions_c.md)
- * [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
- * [カスタムマトリックス](ja/custom_matrix.md)
- * [QMK を理解する](ja/understanding_qmk.md)
-* **CLI 開発**
- * [コーディング規約](ja/coding_conventions_python.md)
- * [CLI 開発の概要](ja/cli_development.md)
diff --git a/docs/ja/tap_hold.md b/docs/ja/tap_hold.md
deleted file mode 100644
index c9d94d07ce2..00000000000
--- a/docs/ja/tap_hold.md
+++ /dev/null
@@ -1,167 +0,0 @@
-# タップホールド設定オプション
-
-
-
-タップホールドオプションは素晴らしいものですが、問題が無いわけではありません。デフォルト設定を適切なものにしようとしましたが、一部の人にとってまだ問題を引き起こすかもしれません。
-
-次のオプションによりタップホールドキーの挙動を変更することができます。
-
-## タッピング時間
-
-以下の機能の全ての核心は、タッピング時間の設定です。これにより、何をタップとし、何をホールドとするかが決まります。これが自然に感じられるぴったりのタイミングは、キーボードごと、スイッチごと、あるいはキーごとに異ることもありえます。
-
-`config.h` に以下の設定を追加することで、この時間を全体的に設定することができます:
-
-```c
-#define TAPPING_TERM 200
-```
-
-この設定はミリ秒で定義され、デフォルトは 200ms です。これは大多数の人にとっての適切な平均値です。
-
-この機能をより細かく制御するために、以下を `config.h` に追加することができます:
-```c
-#define TAPPING_TERM_PER_KEY
-```
-
-そして、以下の関数をキーマップに追加します:
-
-```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;
- }
-}
-```
-
-
-## 許容ホールド
-
-[PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/) 以降、新しい `config.h` オプションがあります:
-
-```c
-#define PERMISSIVE_HOLD
-```
-
-これは高速なタイピストや高い `TAPPING_TERM` 設定に対して、タップとホールドキー(モッドタップのような)の動作を向上させます。
-
-モッドタップキーを押し、他のキーをタップ(押して放す)して、モッドタップキーを放すという動作の全てをタッピング時間内に行うと、両方のキーのタッピング機能が出力されます。
-
-例えば:
-
-- `SFT_T(KC_A)` を押す
-- `KC_X` を押す
-- `KC_X` を放す
-- `SFT_T(KC_A)` を放す
-
-通常、これら全てを `TAPPING_TERM` (デフォルト: 200ms) 内で行うと、ファームウェアとホストシステムによって `ax` として登録されます。許容ホールドを有効にすると、別のキーがタップされた場合にモッドタップキーを修飾キーと見なすように処理を変更し、 `X` (`SHIFT`+`x`) と登録されます。
-
-この機能をより細かく制御するために、以下を `config.h` に追加することができます:
-
-```c
-#define PERMISSIVE_HOLD_PER_KEY
-```
-
-そして、以下の関数をキーマップに追加します:
-
-```c
-bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LT(1, KC_BSPC):
- return true;
- default:
- return false;
- }
-}
-```
-
-## タッピング強制ホールド
-
-`タッピング強制ホールド` を有効にするには、以下を `config.h` に追加します:
-
-```c
-#define TAPPING_FORCE_HOLD
-```
-
-タップの後でユーザがキーをホールドすると、ホールド機能がアクティブになるのではなく、デフォルトでタッピング機能が繰り返されます。これにより、デュアルロールキーのタッピング機能を自動繰り返しする機能を維持することができます。`TAPPING_FORCE_HOLD` は、デュアルロールキーをタップした後ホールドした場合、ユーザがホールド機能をアクティブにする機能を削除します。
-
-例:
-
-- `SFT_T(KC_A)` を押す
-- `SFT_T(KC_A)` を放す
-- `SFT_T(KC_A)` を押す
-- タッピング時間が終了するまで待ちます...
-- `SFT_T(KC_A)` を放す
-
-デフォルトの設定では、最初に放したときに `a` が送信され、2回目の押下で `a` が送信され、コンピュータに自動リピート機能を作動させることができます。
-
-`TAPPING_FORCE_HOLD` を使うと、2回目の押下は Shift として解釈され、それをタップして使った後ですぐに修飾キーとして使うことができます。
-
-!> `TAPPING_FORCE_HOLD` はタッピングトグル(`TT` レイヤーキーコード、ワンショットタップトグルなど)を使うものをすべて破壊します。
-
-この機能をより細かく制御するために、以下を `config.h` に追加することができます:
-
-```c
-#define TAPPING_FORCE_HOLD_PER_KEY
-```
-
-そして、以下の関数をキーマップに追加します:
-
-```c
-bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LT(1, KC_BSPC):
- return true;
- default:
- return false;
- }
-}
-```
-
-## レトロタッピング
-
-`レトロタッピング`を有効にするには、以下を `config.h` に追加してください:
-
-```c
-#define RETRO_TAPPING
-```
-
-他のキーを押さずにデュアルファンクションキーを押して放しても何も起こりません。レトロタッピングを有効にすると、他のキーを押さずにキーを放すと、元のキーコードがタッピング時間外であっても送信されます。
-
-例えば、他のキーを押すことなく `LT(2, KC_SPACE)` を押したり放したりしても何も起こりません。これを有効にすると、代わりに `KC_SPACE` を送信します。
-
-この機能をより細かく制御するために、以下を `config.h` に追加することができます:
-
-```c
-#define RETRO_TAPPING_PER_KEY
-```
-
-そして、以下の関数をキーマップに追加します:
-
-```c
-bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LT(2, KC_SPACE):
- return true;
- default:
- return false;
- }
-}
-```
-
-## キー別の関数にキーレコードを含めるのはなぜですか?
-
-「キー別」の関数全てにキーレコードを含んでいることに気付いたかもしれません。そしてなぜそうしたのか不思議に思っているかもしれません。
-
-まぁ、それは単純に本当にカスタマイズのためです。ただし、具体的には、それはキーボードの配線方法によって異なります。例えば、各行が実際にキーボードのマトリックスの1行を使っている場合、キーコード全体をチェックする代わりに、`if (record->event.key.row == 3)` を使うほうが簡単かもしれません。これは、ホームキー行でタップホールドタイプのキーを使っている人にとって特に便利です。そのため、通常のタイピングを妨げないように微調整することができるのではないでしょうか。
-
-## `*_kb` や `*_user` 関数が無いのはなぜですか?
-
-QMK にある他の多くの関数とは異なり、quantum あるいはキーボードレベルの関数を持つ必要はありません (または理由さえありません)。ここではユーザレベルの関数だけが有用なため、そのようにマークする必要はありません。
diff --git a/docs/ja/translating.md b/docs/ja/translating.md
deleted file mode 100644
index f7a273308a6..00000000000
--- a/docs/ja/translating.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# QMK ドキュメントを翻訳する
-
-
-
-ルートフォルダ (`docs/`) にある全てのファイルは英語でなければなりません - 他の全ての言語は、ISO 639-1 言語コードと、それに続く`-`と関連する国コードのサブフォルダにある必要があります。[一般的なもののリストはここで見つかります](https://www.andiamo.co.uk/resources/iso-language-codes/)。このフォルダが存在しない場合、作成することができます。翻訳された各ファイルは英語バージョンと同じ名前でなければなりません。そうすることで、正常にフォールバックできます。
-
-`_summary.md` ファイルはこのフォルダの中に存在し、各ファイルへのリンクのリスト、翻訳された名前、言語フォルダに続くリンクが含まれている必要があります。
-
-```markdown
- * [QMK简介](zh-cn/getting_started_introduction.md)
-```
-
-他の docs ページへの全てのリンクにも、言語のフォルダが前に付いている必要があります。もしリンクがページの特定の部分(例えば、特定の見出し)への場合、以下のように見出しに英語の ID を使う必要があります:
-
-```markdown
-[建立你的环境](zh-cn/newbs-getting-started.md#set-up-your-environment)
-
-## 建立你的环境 :id=set-up-your-environment
-```
-
-新しい言語の翻訳が完了したら、以下のファイルも修正する必要があります:
-
-* [`docs/_langs.md`](https://github.com/qmk/qmk_firmware/blob/master/docs/_langs.md)
-各行は、[GitHub emoji shortcode](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md#country-flag) の形式で国フラグと、それに続く言語で表される名前を含む必要があります。
-
- ```markdown
- - [:cn: 中文](/zh-cn/)
- ```
-
-* [`docs/index.html`](https://github.com/qmk/qmk_firmware/blob/master/docs/index.html)
-`placeholder` と `noData` の両方のオブジェクトは、文字列で言語フォルダの辞書エントリが必要です:
-
- ```js
- '/zh-cn/': '没有结果!',
- ```
-
- サイドバーの「QMK ファームウェア」の見出しリンクを設定するために、`nameLink` オブジェクトも以下のように追加される必要があります:
-
- ```js
- '/zh-cn/': '/#/zh-cn/',
- ```
-
- また、`fallbackLanguages` リストに言語フォルダを追加して、404 ではなく英語に適切にフォールバックするようにしてください:
-
- ```js
- fallbackLanguages: [
- // ...
- 'zh-cn',
- // ...
- ],
- ```
-
-## 翻訳のプレビュー
-
-ドキュメントのローカルインスタンスをセットアップする方法については、[ドキュメントのプレビュー](ja/contributing.md#previewing-the-documentation)を見てください - 右上の "Translations" メニューから新しい言語を選択することができるはずです。
-
-作業に満足したら、遠慮なくプルリクエストを開いてください!
diff --git a/docs/ja/understanding_qmk.md b/docs/ja/understanding_qmk.md
deleted file mode 100644
index 0e8c99e6929..00000000000
--- a/docs/ja/understanding_qmk.md
+++ /dev/null
@@ -1,190 +0,0 @@
-# QMK のコードの理解
-
-
-
-このドキュメントでは、QMK ファームウェアがどのように機能するかを非常に高いレベルから説明しようとしています。基本的なプログラミングの概念を理解していることを前提としていますが、(実例を示す必要がある場合を除き) C に精通していることを前提にはしていません。以下のドキュメントの基本的な知識があることを前提としています。
-
-* [入門](ja/getting_started_introduction.md)
-* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
-* [FAQ](ja/faq_general.md)
-
-## スタートアップ
-
-QMK は他のコンピュータプログラムと何ら変わりないと考えることができます。開始され、タスクを実行し、そして終了します。プログラムのエントリーポイントは、他の C プログラムと同様に、`main()` 関数です。ただし、QMK を初めて触る人は、`main()` 関数が複数の場所に現れるため、混乱するかもしれません。また、どれを見ればよいか分かりにくいかもしれません。
-
-複数ある理由は、QMK は様々なプラットフォームをサポートするからです。最も一般的なプラットフォームは `lufa` です。これは atmega32u4 のような AVR プロセッサ上で実行されます。また、`chibios` および `vusb` もサポートします。
-
-ここでは AVR プロセッサに焦点を当てます。これは `lufa` プラットフォームを使います。`main()` 関数は [tmk_core/protocol/lufa/lufa.c](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/protocol/lufa/lufa.c#L1028) にあります。関数にざっと目を通すと、(ホストへの USB も含めて)設定された全てのハードウェアが初期化され、プログラムのコア部分が [`while(1)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/protocol/lufa/lufa.c#L1069) で開始されることが分かります。これが[メインループ](#the-main-loop)です。
-
-## メインループ
-
-コードのこの部分は、同じ命令セットを永久にループ処理するため、「メインループ」と呼ばれます。ここはキーボードに必要なことを実行させる関数を QMK が呼び出す場所です。一見、多くの機能を持つように見えるかもしれませんが、大抵の場合、コードは `#define` によって無効にされます。
-
-```
- keyboard_task();
-```
-
-ここで、全てのキーボードの固有の機能が実行されます。`keyboard_task()` のソースコードは [tmk_core/common/keyboard.c](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/keyboard.c#L216) にあり、マトリックスの変化を検知し、LED の状態をオンオフする責任があります。
-
-`keyboard_task()` に以下を処理するコードがあります:
-
-* [マトリックスのスキャン](#matrix-scanning)
-* マウスの処理
-* シリアルリンク
-* ビジュアライザ
-* キーボードの状態の LED (Caps Lock, Num Lock, Scroll Lock)
-
-#### マトリックスのスキャン
-
-マトリックスのスキャンはキーボードファームウェアのコアの機能です。これは今どのキーが押されているかを検知するプロセスであり、キーボードはこの機能を1秒間に何度も何度も実行します。ファームウェアの CPU 時間の 99% はマトリックスのスキャンに費やされていると言っても過言ではありません。
-
-実際のマトリックスの検知には様々な方法がありますが、それはこのドキュメントの対象外です。マトリックスのスキャンをブラックボックスとして扱っても問題ありません。マトリックスの現在の状態を求めると、以下のようなデータ構造を取得します:
-
-
-```
-{
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0}
-}
-```
-
-これは 4行x5列のテンキー(訳注: 5行x4列の間違いと思われます)のマトリックスを表す直接的な表現のデータ構造です。キーが押されると、マトリックス内のそのキーの位置が、 `0` ではなく `1` として返されます。
-
-マトリックスのスキャンは1秒間に何度も実行されます。正確なレートは様々ですが、知覚できるような遅延を避けるために、秒間に少なくとも10回実行します。
-
-##### マトリックスから物理的なレイアウトへのマップ
-
-キーボード上の各スイッチの状態が分かると、それをキーコードへマップする必要があります。QMK ではキーコードへのマップは C マクロを使うことで行われ、C マクロにより物理的なレイアウトの定義はキーコードの定義から分離されています。(訳注:「キーコードの定義」は「キーコードのマトリクス配列による定義」と思われる)
-
-キーボードレベルで、キーボードのマトリックスを物理キーにマップする C マクロ (一般的には、`LAYOUT()` という名前)を定義します。マトリックスにスイッチがない場所がある場合、このマクロを使って KC_NO を事前に埋め込むことができ、キーマップの定義を扱いやすくすることができます。以下は、テンキー用の `LAYOUT()` マクロです:
-
-```c
-#define LAYOUT( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, k33, \
- k40, k42 \
-) { \
- { k00, k01, k02, k03, }, \
- { k10, k11, k12, k13, }, \
- { k20, k21, k22, KC_NO, }, \
- { k30, k31, k32, k33, }, \
- { k40, KC_NO, k42, KC_NO } \
-}
-```
-
-`LAYOUT()` マクロの2つ目のブロックが、上記のマトリックススキャン配列とどのように一致しているかに注目してください。このマクロはマトリックスのスキャン配列をキーコードにマップするものです。ただし、17キーのテンキーを見ると、マトリックスにはスイッチが置けるが、キーが大きいために実際にはスイッチが無い箇所が3つあることが分かります。これらのスペースに `KC_NO` を設定したので、キーマップ定義には必要ありません。
-
-このマクロを使って、少し変わったマトリックスのレイアウト、例えば [Clueboard rev 2](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/66/rev2/rev2.h) を扱うこともできます。その説明はこのドキュメントの範囲外です。
-
-##### キーコードの割り当て
-
-キーマップレべルでは、上記の `LAYOUT()` マクロを使って、物理的な場所からマトリックスの場所にマッピングします。以下のようになります:
-
-```
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT(
- KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, \
- KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT)
-}
-```
-
-これら全ての引数が、前のセクションの `LAYOUT()` マクロの前半とどのように一致しているかについて注目してください。このようにして、キーコードを取得して、それを前述のマトリックススキャンにマップします。
-
-##### 状態変更の検知
-
-上記のマトリックススキャンはある時点のマトリックスの状態を伝えますが、コンピュータは変更のみを知りたいだけで、現在の状態を気にしません。QMK は最後のマトリックススキャンの結果を格納し、このマトリックスから結果を比較して、いつキーが押されたか放されたかを決定します。
-
-例を見てみましょう。キーボードスキャンループの途中に移動して、前のスキャンが以下のようになっていることがわかったとします:
-
-```
-{
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0}
-}
-```
-
-現在のスキャンが完了すると、以下のように見えるとします:
-
-```
-{
- {1,0,0,0},
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0},
- {0,0,0,0}
-}
-```
-
-キーマップと比較すると、押されたキーが KC_NUM であることが分かります。ここから、`process_record` 関数群を呼び出します。
-
-
-
-##### Process Record
-
-`process_record()` 関数自体は一見簡単に見えますが、その内部は QMK の様々なレベルで機能を上書きするためのゲートウェイが隠されています。キーボード/キーマップレベルの機能について調べる必要があるときは、以下に列挙した一連のイベントを手引帳として使います。`rules.mk` またはほかの場所で設定されたオプションに応じて、最終的なファームウェアに以下の関数のサブセットのみが含まれます。
-
-* [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172)
- * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
- * [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
- * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
- * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
- * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
- * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
- * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
- * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
- * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
- * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
- * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
- * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
- * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
- * [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397)
- * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
- * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します:
- * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
- * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
- * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
- * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
- * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
- * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
- * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
- * [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
-
-この一連のイベントの中の任意のステップで (`process_record_kb()` のような)関数は `false` を返して、以降の処理を停止することができます。
-
-この呼び出しの後で、`post_process_record()` が呼ばれます。これはキーコードが通常処理された後に実行する必要がある追加のクリーンアップを処理するために使うことができます。
-
-* [`void post_process_record(keyrecord_t *record)`]()
- * [`void post_process_record_quantum(keyrecord_t *record)`]()
- * [このレコードをキーコードにマップする]()
- * [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
- * [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
- * [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
-
-
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 9d722216a93..9107ca5eb88 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -1,12 +1,12 @@
# Keycodes Overview
-When defining a [keymap](keymap.md) each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.
+When defining a [keymap](keymap) each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.
This is a reference only. Each group of keys links to the page documenting their functionality in more detail.
-## Basic Keycodes :id=basic-keycodes
+## Basic Keycodes {#basic-keycodes}
-See also: [Basic Keycodes](keycodes_basic.md)
+See also: [Basic Keycodes](keycodes_basic)
|Key |Aliases |Description |Windows |macOS |Linux1|
|------------------------|-------------------------------|---------------------------------------|-------------|-------------|-----------------|
@@ -219,9 +219,9 @@ See also: [Basic Keycodes](keycodes_basic.md)
5. Skips the entire track in iTunes when tapped, seeks within the current track when held.
6. WMP does not recognize the Rewind key, but both alter playback speed in VLC.
-## Quantum Keycodes :id=quantum-keycodes
+## Quantum Keycodes {#quantum-keycodes}
-See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
+See also: [Quantum Keycodes](quantum_keycodes#qmk-keycodes)
|Key |Aliases |Description |
|-----------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -231,9 +231,9 @@ See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held. Puts keyboard into bootloader mode if shift & control are held |
|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
-## Audio Keys :id=audio-keys
+## Audio Keys {#audio-keys}
-See also: [Audio](feature_audio.md)
+See also: [Audio](features/audio)
|Key |Aliases |Description |
|-------------------------|---------|-------------------------------------------|
@@ -253,9 +253,9 @@ See also: [Audio](feature_audio.md)
|`QK_AUDIO_VOICE_NEXT` |`AU_NEXT`|Cycles through the audio voices |
|`QK_AUDIO_VOICE_PREVIOUS`|`AU_PREV`|Cycles through the audio voices in reverse |
-## Auto Shift :id=auto-shift
+## Auto Shift {#auto-shift}
-See also: [Auto Shift](feature_auto_shift.md)
+See also: [Auto Shift](features/auto_shift)
|Key |Aliases |Description |
|----------------------|---------|--------------------------------------------|
@@ -266,9 +266,9 @@ See also: [Auto Shift](feature_auto_shift.md)
|`QK_AUTO_SHIFT_OFF` |`AS_OFF` |Turns off the Auto Shift Function |
|`QK_AUTO_SHIFT_TOGGLE`|`AS_TOGG`|Toggles the state of the Auto Shift feature |
-## Autocorrect :id=autocorrect
+## Autocorrect {#autocorrect}
-See also: [Autocorrect](feature_autocorrect.md)
+See also: [Autocorrect](features/autocorrect)
|Key |Aliases |Description |
|-----------------------|---------|----------------------------------------------|
@@ -276,9 +276,9 @@ See also: [Autocorrect](feature_autocorrect.md)
|`QK_AUTOCORRECT_OFF` |`AC_OFF` |Turns off the Autocorrect feature. |
|`QK_AUTOCORRECT_TOGGLE`|`AC_TOGG`|Toggles the status of the Autocorrect feature.|
-## Backlighting :id=backlighting
+## Backlighting {#backlighting}
-See also: [Backlighting](feature_backlight.md)
+See also: [Backlighting](features/backlight)
| Key | Aliases | Description |
|---------------------------------|-----------|-------------------------------------|
@@ -290,27 +290,27 @@ See also: [Backlighting](feature_backlight.md)
| `QK_BACKLIGHT_DOWN` | `BL_DOWN` | Decrease the backlight level |
| `QK_BACKLIGHT_TOGGLE_BREATHING` | `BL_BRTG` | Toggle backlight breathing |
-## Bluetooth :id=bluetooth
+## Bluetooth {#bluetooth}
-See also: [Bluetooth](feature_bluetooth.md)
+See also: [Bluetooth](features/bluetooth)
-|Key |Aliases |Description |
-|---------------------|---------|----------------------------------------------|
-|`QK_OUTPUT_AUTO` |`OU_AUTO`|Automatically switch between USB and Bluetooth|
-|`QK_OUTPUT_USB` |`OU_USB` |USB only |
-|`QK_OUTPUT_BLUETOOTH`|`OU_BT` |Bluetooth only |
+| Key | Aliases | Description |
+|-----------------------|----------------------|------------------------------------------------|
+| `QK_OUTPUT_NEXT` | `OU_NEXT`, `OU_AUTO` | Automatically switch between USB and Bluetooth |
+| `QK_OUTPUT_USB` | `OU_USB` | USB only |
+| `QK_OUTPUT_BLUETOOTH` | `OU_BT` | Bluetooth only |
-## Caps Word :id=caps-word
+## Caps Word {#caps-word}
-See also: [Caps Word](feature_caps_word.md)
+See also: [Caps Word](features/caps_word)
|Key |Aliases |Description |
|---------------------|---------|------------------------------|
|`QK_CAPS_WORD_TOGGLE`|`CW_TOGG`|Toggles Caps Word |
-## Dynamic Macros :id=dynamic-macros
+## Dynamic Macros {#dynamic-macros}
-See also: [Dynamic Macros](feature_dynamic_macros.md)
+See also: [Dynamic Macros](features/dynamic_macros)
|Key |Aliases |Description |
|---------------------------------|---------|--------------------------------------------------|
@@ -320,17 +320,17 @@ See also: [Dynamic Macros](feature_dynamic_macros.md)
|`QK_DYNAMIC_MACRO_PLAY_2` |`DM_PLY2`|Replay Macro 2 |
|`QK_DYNAMIC_MACRO_RECORD_STOP` |`DM_RSTP`|Finish the macro that is currently being recorded.|
-## Grave Escape :id=grave-escape
+## Grave Escape {#grave-escape}
-See also: [Grave Escape](feature_grave_esc.md)
+See also: [Grave Escape](features/grave_esc)
|Key |Aliases |Description |
|-----------------|---------|------------------------------------------------------------------|
|`QK_GRAVE_ESCAPE`|`QK_GESC`|Escape when pressed, `
when Shift or GUI are held|
-## Joystick :id=joystick
+## Joystick {#joystick}
-See also: [Joystick](feature_joystick.md)
+See also: [Joystick](features/joystick)
|Key |Aliases|Description|
|-----------------------|-------|-----------|
@@ -367,40 +367,40 @@ See also: [Joystick](feature_joystick.md)
|`QK_JOYSTICK_BUTTON_30`|`JS_30`|Button 30 |
|`QK_JOYSTICK_BUTTON_31`|`JS_31`|Button 31 |
-## Key Lock :id=key-lock
+## Key Lock {#key-lock}
-See also: [Key Lock](feature_key_lock.md)
+See also: [Key Lock](features/key_lock)
|Key |Description |
|---------|--------------------------------------------------------------|
|`QK_LOCK`|Hold down the next key pressed, until the key is pressed again|
-## Layer Switching :id=layer-switching
+## Layer Switching {#layer-switching}
-See also: [Layer Switching](feature_layers.md#switching-and-toggling-layers)
+See also: [Layer Switching](feature_layers#switching-and-toggling-layers)
|Key |Description |
|----------------|----------------------------------------------------------------------------------|
|`DF(layer)` |Set the base (default) layer |
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
-|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](one_shot_keys.md) for details. |
-|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](mod_tap.md). Example Implementation: `LM(LAYER_1, MOD_LALT)`|
+|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](one_shot_keys) for details. |
+|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](mod_tap). Example Implementation: `LM(LAYER_1, MOD_LALT)`|
|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped |
|`TG(layer)` |Toggle `layer` on or off |
|`TO(layer)` |Turns on `layer` and turns off all other layers, except the default layer |
|`TT(layer)` |Normally acts like MO unless it's tapped multiple times, which toggles `layer` on |
-## Leader Key :id=leader-key
+## Leader Key {#leader-key}
-See also: [Leader Key](feature_leader_key.md)
+See also: [Leader Key](features/leader_key)
|Key |Description |
|---------|------------------------|
|`QK_LEAD`|Begins a leader sequence|
-## LED Matrix :id=led-matrix
+## LED Matrix {#led-matrix}
-See also: [LED Matrix](feature_led_matrix.md)
+See also: [LED Matrix](features/led_matrix)
|Key |Aliases |Description |
|-------------------------------|---------|-----------------------------------|
@@ -414,9 +414,9 @@ See also: [LED Matrix](feature_led_matrix.md)
|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
-## Magic Keycodes :id=magic-keycodes
+## Magic Keycodes {#magic-keycodes}
-See also: [Magic Keycodes](keycodes_magic.md)
+See also: [Magic Keycodes](keycodes_magic)
|Key |Aliases |Description |
|-------------------------------------|---------|--------------------------------------------------------------------------|
@@ -456,9 +456,9 @@ See also: [Magic Keycodes](keycodes_magic.md)
|`QK_MAGIC_EE_HANDS_LEFT` |`EH_LEFT`|Set the master half of a split keyboard as the left hand (for `EE_HANDS`) |
|`QK_MAGIC_EE_HANDS_RIGHT` |`EH_RGHT`|Set the master half of a split keyboard as the right hand (for `EE_HANDS`)|
-## MIDI :id=midi
+## MIDI {#midi}
-See also: [MIDI](feature_midi.md)
+See also: [MIDI](features/midi)
|Key |Aliases |Description |
|-------------------------------|------------------|---------------------------------|
@@ -607,32 +607,35 @@ See also: [MIDI](feature_midi.md)
|`QK_MIDI_PITCH_BEND_DOWN` |`MI_BNDD` |Bend pitch down |
|`QK_MIDI_PITCH_BEND_UP` |`MI_BNDU` |Bend pitch up |
-## Mouse Keys :id=mouse-keys
+## Mouse Keys {#mouse-keys}
-See also: [Mouse Keys](feature_mouse_keys.md)
+See also: [Mouse Keys](features/mouse_keys)
-|Key |Aliases |Description |
-|----------------|---------|---------------------------|
-|`KC_MS_UP` |`KC_MS_U`|Mouse Cursor Up |
-|`KC_MS_DOWN` |`KC_MS_D`|Mouse Cursor Down |
-|`KC_MS_LEFT` |`KC_MS_L`|Mouse Cursor Left |
-|`KC_MS_RIGHT` |`KC_MS_R`|Mouse Cursor Right |
-|`KC_MS_BTN1` |`KC_BTN1`|Mouse Button 1 |
-|`KC_MS_BTN2` |`KC_BTN2`|Mouse Button 2 |
-|`KC_MS_BTN3` |`KC_BTN3`|Mouse Button 3 |
-|`KC_MS_BTN4` |`KC_BTN4`|Mouse Button 4 |
-|`KC_MS_BTN5` |`KC_BTN5`|Mouse Button 5 |
-|`KC_MS_WH_UP` |`KC_WH_U`|Mouse Wheel Up |
-|`KC_MS_WH_DOWN` |`KC_WH_D`|Mouse Wheel Down |
-|`KC_MS_WH_LEFT` |`KC_WH_L`|Mouse Wheel Left |
-|`KC_MS_WH_RIGHT`|`KC_WH_R`|Mouse Wheel Right |
-|`KC_MS_ACCEL0` |`KC_ACL0`|Set mouse acceleration to 0|
-|`KC_MS_ACCEL1` |`KC_ACL1`|Set mouse acceleration to 1|
-|`KC_MS_ACCEL2` |`KC_ACL2`|Set mouse acceleration to 2|
+|Key |Aliases |Description |
+|-------------------------|---------|---------------------------|
+|`QK_MOUSE_CURSOR_UP` |`MS_UP` |Mouse cursor up |
+|`QK_MOUSE_CURSOR_DOWN` |`MS_DOWN`|Mouse cursor down |
+|`QK_MOUSE_CURSOR_LEFT` |`MS_LEFT`|Mouse cursor left |
+|`QK_MOUSE_CURSOR_RIGHT` |`MS_RGHT`|Mouse cursor right |
+|`QK_MOUSE_BUTTON_1` |`MS_BTN1`|Mouse button 1 |
+|`QK_MOUSE_BUTTON_2` |`MS_BTN2`|Mouse button 2 |
+|`QK_MOUSE_BUTTON_3` |`MS_BTN3`|Mouse button 3 |
+|`QK_MOUSE_BUTTON_4` |`MS_BTN4`|Mouse button 4 |
+|`QK_MOUSE_BUTTON_5` |`MS_BTN5`|Mouse button 5 |
+|`QK_MOUSE_BUTTON_6` |`MS_BTN6`|Mouse button 6 |
+|`QK_MOUSE_BUTTON_7` |`MS_BTN7`|Mouse button 7 |
+|`QK_MOUSE_BUTTON_8` |`MS_BTN8`|Mouse button 8 |
+|`QK_MOUSE_WHEEL_UP` |`MS_WHLU`|Mouse wheel up |
+|`QK_MOUSE_WHEEL_DOWN` |`MS_WHLD`|Mouse wheel down |
+|`QK_MOUSE_WHEEL_LEFT` |`MS_WHLL`|Mouse wheel left |
+|`QK_MOUSE_WHEEL_RIGHT` |`MS_WHLR`|Mouse wheel right |
+|`QK_MOUSE_ACCELERATION_0`|`MS_ACL0`|Set mouse acceleration to 0|
+|`QK_MOUSE_ACCELERATION_1`|`MS_ACL1`|Set mouse acceleration to 1|
+|`QK_MOUSE_ACCELERATION_2`|`MS_ACL2`|Set mouse acceleration to 2|
-## Modifiers :id=modifiers
+## Modifiers {#modifiers}
-See also: [Modifier Keys](feature_advanced_keycodes.md#modifier-keys)
+See also: [Modifier Keys](feature_advanced_keycodes#modifier-keys)
|Key |Aliases |Description |
|----------|----------------------------------|------------------------------------------------------|
@@ -658,9 +661,9 @@ See also: [Modifier Keys](feature_advanced_keycodes.md#modifier-keys)
|`KC_MEH` | |Left Control, Shift and Alt |
|`KC_HYPR` | |Left Control, Shift, Alt and GUI |
-## Mod-Tap Keys :id=mod-tap-keys
+## Mod-Tap Keys {#mod-tap-keys}
-See also: [Mod-Tap](mod_tap.md)
+See also: [Mod-Tap](mod_tap)
|Key |Aliases |Description |
|-------------|-----------------------------------------------------------------|--------------------------------------------------------------|
@@ -687,7 +690,7 @@ See also: [Mod-Tap](mod_tap.md)
|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped |
|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
-## Tapping Term Keys :id=tapping-term-keys
+## Tapping Term Keys {#tapping-term-keys}
See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term)
@@ -697,34 +700,37 @@ See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term)
|`QK_DYNAMIC_TAPPING_TERM_UP` |`DT_UP` | Increases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) |
|`QK_DYNAMIC_TAPPING_TERM_DOWN` |`DT_DOWN`| Decreases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) |
-## RGB Lighting :id=rgb-lighting
+## RGB Lighting {#rgb-lighting}
-See also: [RGB Lighting](feature_rgblight.md)
+See also: [RGB Lighting](features/rgblight)
-|Key |Aliases |Description |
-|-------------------|----------|--------------------------------------------------------------------|
-|`RGB_TOG` | |Toggle RGB lighting on or off |
-|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
-|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
-|`RGB_HUI` | |Increase hue, decrease hue when Shift is held |
-|`RGB_HUD` | |Decrease hue, increase hue when Shift is held |
-|`RGB_SAI` | |Increase saturation, decrease saturation when Shift is held |
-|`RGB_SAD` | |Decrease saturation, increase saturation when Shift is held |
-|`RGB_VAI` | |Increase value (brightness), decrease value when Shift is held |
-|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
-|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
-|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
-|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
-|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
-|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
-|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
-|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
-|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
-|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red,Green,Blue test animation mode |
+|Key |Aliases |Description |
+|------------------------------|----------|---------------------------------------------------------------------|
+|`QK_UNDERGLOW_TOGGLE` |`UG_TOGG` |Toggle RGB lighting on or off |
+|`QK_UNDERGLOW_MODE_NEXT` |`UG_NEXT` |Cycle through modes, reverse direction when Shift is held |
+|`QK_UNDERGLOW_MODE_PREVIOUS` |`UG_PREV` |Cycle through modes in reverse, forward direction when Shift is held |
+|`QK_UNDERGLOW_HUE_UP` |`UG_HUEU` |Increase hue, decrease hue when Shift is held |
+|`QK_UNDERGLOW_HUE_DOWN` |`UG_HUED` |Decrease hue, increase hue when Shift is held |
+|`QK_UNDERGLOW_SATURATION_UP` |`UG_SATU` |Increase saturation, decrease saturation when Shift is held |
+|`QK_UNDERGLOW_SATURATION_DOWN`|`UG_SATD` |Decrease saturation, increase saturation when Shift is held |
+|`QK_UNDERGLOW_VALUE_UP` |`UG_VALU` |Increase value (brightness), decrease value when Shift is held |
+|`QK_UNDERGLOW_VALUE_DOWN` |`UG_VALD` |Decrease value (brightness), increase value when Shift is held |
+|`QK_UNDERGLOW_SPEED_UP` |`UG_SPDU` |Increase effect speed (brightness), decrease speed when Shift is held|
+|`QK_UNDERGLOW_SPEED_DOWN` |`UG_SPDD` |Decrease effect speed (brightness), increase speed when Shift is held|
+|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode (deprecated) |
+|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode (deprecated) |
+|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode (deprecated) |
+|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode (deprecated) |
+|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode (deprecated) |
+|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode (deprecated) |
+|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode (deprecated) |
+|`RGB_MODE_GRADIENT` |`RGB_M_G` |Static gradient animation mode (deprecated) |
+|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode (deprecated) |
+|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode (deprecated) |
-## RGB Matrix Lighting :id=rgb-matrix-lighting
+## RGB Matrix Lighting {#rgb-matrix-lighting}
-See also: [RGB Matrix Lighting](feature_rgb_matrix.md)
+See also: [RGB Matrix Lighting](features/rgb_matrix)
|Key |Aliases |Description |
|-------------------|----------|--------------------------------------------------------------------------------------|
@@ -740,9 +746,9 @@ See also: [RGB Matrix Lighting](feature_rgb_matrix.md)
|`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held|
|`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held|
-## US ANSI Shifted Symbols :id=us-ansi-shifted-symbols
+## US ANSI Shifted Symbols {#us-ansi-shifted-symbols}
-See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted.md)
+See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted)
|Key |Aliases |Description|
|------------------------|-------------------|-----------|
@@ -768,9 +774,9 @@ See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted.md)
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
-## One Shot Keys :id=one-shot-keys
+## One Shot Keys {#one-shot-keys}
-See also: [One Shot Keys](one_shot_keys.md)
+See also: [One Shot Keys](one_shot_keys)
|Key |Aliases |Description |
|--------------------|---------|----------------------------------|
@@ -780,9 +786,9 @@ See also: [One Shot Keys](one_shot_keys.md)
|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on |
|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off |
-## Programmable Button Support :id=programmable-button
+## Programmable Button Support {#programmable-button}
-See also: [Programmable Button](feature_programmable_button.md)
+See also: [Programmable Button](features/programmable_button)
|Key |Aliases|Description |
|---------------------------|-------|----------------------|
@@ -819,18 +825,18 @@ See also: [Programmable Button](feature_programmable_button.md)
|`QK_PROGRAMMABLE_BUTTON_31`|`PB_31`|Programmable button 31|
|`QK_PROGRAMMABLE_BUTTON_32`|`PB_32`|Programmable button 32|
-## Repeat Key :id=repeat-key
+## Repeat Key {#repeat-key}
-See also: [Repeat Key](feature_repeat_key.md)
+See also: [Repeat Key](features/repeat_key)
|Keycode |Aliases |Description |
|-----------------------|---------|-------------------------------------|
|`QK_REPEAT_KEY` |`QK_REP` |Repeat the last pressed key |
|`QK_ALT_REPEAT_KEY` |`QK_AREP`|Perform alternate of the last key |
-## Space Cadet :id=space-cadet
+## Space Cadet {#space-cadet}
-See also: [Space Cadet](feature_space_cadet.md)
+See also: [Space Cadet](features/space_cadet)
|Key |Aliases |Description |
|----------------------------------------------|---------|----------------------------------------|
@@ -842,9 +848,9 @@ See also: [Space Cadet](feature_space_cadet.md)
|`QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE` |`SC_RAPC`|Right Alt when held, `)` when tapped |
|`QK_SPACE_CADET_RIGHT_SHIFT_ENTER` |`SC_SENT`|Right Shift when held, Enter when tapped|
-## Swap Hands :id=swap-hands
+## Swap Hands {#swap-hands}
-See also: [Swap Hands](feature_swap_hands.md)
+See also: [Swap Hands](features/swap_hands)
|Key |Aliases |Description |
|-----------------------------|---------|----------------------------------------------------|
@@ -857,9 +863,9 @@ See also: [Swap Hands](feature_swap_hands.md)
|`QK_SWAP_HANDS_TAP_TOGGLE` |`SH_TT` |Momentary swap when held, toggle when tapped |
|`QK_SWAP_HANDS_ONE_SHOT` |`SH_OS` |Turn on hand swap while held or until next key press|
-## Unicode Support :id=unicode-support
+## Unicode Support {#unicode-support}
-See also: [Unicode Support](feature_unicode.md)
+See also: [Unicode Support](features/unicode)
|Key |Aliases |Description |
|----------------------------|---------|----------------------------------------------------------------|
diff --git a/docs/keycodes_basic.md b/docs/keycodes_basic.md
index c95accd79ed..6ff422f89b1 100644
--- a/docs/keycodes_basic.md
+++ b/docs/keycodes_basic.md
@@ -191,7 +191,9 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
These keycodes are not part of the Keyboard/Keypad usage page. The `SYSTEM_` keycodes are found in the Generic Desktop page, and the rest are located in the Consumer page.
-?> Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes `KC_MEDIA_FAST_FORWARD`, `KC_MEDIA_REWIND`, `KC_MEDIA_NEXT_TRACK` and `KC_MEDIA_PREV_TRACK` skip within the current track when held, but skip the entire track when tapped.
+::: tip
+Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes `KC_MEDIA_FAST_FORWARD`, `KC_MEDIA_REWIND`, `KC_MEDIA_NEXT_TRACK` and `KC_MEDIA_PREV_TRACK` skip within the current track when held, but skip the entire track when tapped.
+:::
|Key |Aliases |Description |
|-----------------------|---------|--------------------|
diff --git a/docs/keycodes_magic.md b/docs/keycodes_magic.md
index 84706123456..746af5b5e45 100644
--- a/docs/keycodes_magic.md
+++ b/docs/keycodes_magic.md
@@ -1,4 +1,4 @@
-# Magic Keycodes :id=magic-keycodes
+# Magic Keycodes {#magic-keycodes}
**Magic Keycodes** are prefixed with `MAGIC_`, and allow you to access the functionality of the deprecated Bootmagic feature *after* your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode.
diff --git a/docs/keymap.md b/docs/keymap.md
index b9c5da6be70..864d3e14f4f 100644
--- a/docs/keymap.md
+++ b/docs/keymap.md
@@ -3,31 +3,32 @@
QMK keymaps are defined inside a C source file. The data structure is an array of arrays. The outer array is a list of layer arrays while the inner layer array is a list of keys. Most keyboards define a `LAYOUT()` macro to help you create this array of arrays.
-## Keymap and Layers :id=keymap-and-layers
+## Keymap and Layers {#keymap-and-layers}
In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most.
For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**.
Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
- Keymap: 32 Layers Layer: action code matrix
- ----------------- ---------------------
- stack of layers array_of_action_code[row][column]
- ____________ precedence _______________________
- / / | high / ESC / F1 / F2 / F3 ....
- 31 /___________// | /-----/-----/-----/-----
- 30 /___________// | / TAB / Q / W / E ....
- 29 /___________/ | /-----/-----/-----/-----
- : _:_:_:_:_:__ | : /LCtrl/ A / S / D ....
- : / : : : : : / | : / : : : :
- 2 /___________// | 2 `--------------------------
- 1 /___________// | 1 `--------------------------
- 0 /___________/ V low 0 `--------------------------
-
+```
+Keymap: 32 Layers Layer: action code matrix
+----------------- ---------------------
+stack of layers array_of_action_code[row][column]
+ ____________ precedence _______________________
+ / / | high / ESC / F1 / F2 / F3 ....
+ 31 /___________// | /-----/-----/-----/-----
+ 30 /___________// | / TAB / Q / W / E ....
+ 29 /___________/ | /-----/-----/-----/-----
+ : _:_:_:_:_:__ | : /LCtrl/ A / S / D ....
+ : / : : : : : / | : / : : : :
+ 2 /___________// | 2 `--------------------------
+ 1 /___________// | 1 `--------------------------
+ 0 /___________/ V low 0 `--------------------------
+```
Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
-### Keymap Layer Status :id=keymap-layer-status
+### Keymap Layer Status {#keymap-layer-status}
The state of the Keymap layer is determined by two 32 bit parameters:
@@ -36,50 +37,54 @@ The state of the Keymap layer is determined by two 32 bit parameters:
Keymap layer '0' is usually the `default_layer`, with other layers initially off after booting up the firmware, although this can configured differently in `config.h`. It is useful to change `default_layer` when you completely switch a key layout, for example, if you want to switch to Colemak instead of Qwerty.
- Initial state of Keymap Change base layout
- ----------------------- ------------------
+```
+Initial state of Keymap Change base layout
+----------------------- ------------------
- 31 31
- 30 30
- 29 29
- : :
- : : ____________
- 2 ____________ 2 / /
- 1 / / ,->1 /___________/
- ,->0 /___________/ | 0
- | |
- `--- default_layer = 0 `--- default_layer = 1
- layer_state = 0x00000001 layer_state = 0x00000002
+ 31 31
+ 30 30
+ 29 29
+ : :
+ : : ____________
+ 2 ____________ 2 / /
+ 1 / / ,->1 /___________/
+,->0 /___________/ | 0
+| |
+`--- default_layer = 0 `--- default_layer = 1
+ layer_state = 0x00000001 layer_state = 0x00000002
+```
On the other hand, you can change `layer_state` to overlay the base layer with other layers for features such as navigation keys, function keys (F1-F12), media keys, and/or special actions.
- Overlay feature layer
- --------------------- bit|status
- ____________ ---+------
- 31 / / 31 | 0
- 30 /___________// -----> 30 | 1
- 29 /___________/ -----> 29 | 1
- : : | :
- : ____________ : | :
- 2 / / 2 | 0
- ,->1 /___________/ -----> 1 | 1
- | 0 0 | 0
- | +
- `--- default_layer = 1 |
- layer_state = 0x60000002 <-'
-
-
+```
+Overlay feature layer
+--------------------- bit|status
+ ____________ ---+------
+ 31 / / 31 | 0
+ 30 /___________// -----> 30 | 1
+ 29 /___________/ -----> 29 | 1
+ : : | :
+ : ____________ : | :
+ 2 / / 2 | 0
+,->1 /___________/ -----> 1 | 1
+| 0 0 | 0
+| +
+`--- default_layer = 1 |
+ layer_state = 0x60000002 <-'
+```
### Layer Precedence and Transparency
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.
+```
+ ____________
+ / / <--- 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`
@@ -101,27 +106,29 @@ There are 2 main sections of a `keymap.c` file you'll want to concern yourself w
At the top of the file you'll find this:
- #include QMK_KEYBOARD_H
+```c
+#include QMK_KEYBOARD_H
- // Helpful defines
- #define GRAVE_MODS (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
+// Helpful defines
+#define GRAVE_MODS (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * You can use _______ in place for KC_TRNS (transparent) *
- * Or you can use XXXXXXX for KC_NO (NOOP) *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * You can use _______ in place for KC_TRNS (transparent) *
+ * Or you can use XXXXXXX for KC_NO (NOOP) *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- // Each layer gets a name for readability.
- // The underscores don't mean anything - you can
- // have a layer called STUFF or any other name.
- // Layer names don't all need to be of the same
- // length, and you can also skip them entirely
- // and just use numbers.
- enum layer_names {
- _BL,
- _FL,
- _CL,
- };
+// Each layer gets a name for readability.
+// The underscores don't mean anything - you can
+// have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same
+// length, and you can also skip them entirely
+// and just use numbers.
+enum layer_names {
+ _BL,
+ _FL,
+ _CL,
+};
+```
These are some handy definitions we can use when building our keymap and our custom function. The `GRAVE_MODS` definition will be used later in our custom function, and the following `_BL`, `_FL`, and `_CL` defines make it easier to refer to each of our layers.
@@ -131,13 +138,17 @@ Note: You may also find some older keymap files may also have a define(s) for `_
The main part of this file is the `keymaps[]` definition. This is where you list your layers and the contents of those layers. This part of the file begins with this definition:
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+```c
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+```
After this you'll find the layer definitions. Typically you'll have one or more "base layers" (such as QWERTY, Dvorak, or Colemak) and then you'll layer on top of that one or more "function" layers. Due to the way layers are processed you can't overlay a "lower" layer on top of a "higher" layer.
`keymaps[][MATRIX_ROWS][MATRIX_COLS]` in QMK holds the 16 bit action code (sometimes referred as the quantum keycode) in it. For the keycode representing typical keys, its high byte is 0 and its low byte is the USB HID usage ID for keyboard.
-> TMK from which QMK was forked uses `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` instead and holds the 8 bit keycode.
+::: info
+TMK from which QMK was forked uses `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` instead and holds the 8 bit keycode.
+:::
#### Base Layer
@@ -185,7 +196,7 @@ Some interesting things to note:
This should have given you a basic overview for creating your own keymap. For more details see the following resources:
-* [Keycodes](keycodes.md)
-* [Keymap FAQ](faq_keymap.md)
+* [Keycodes](keycodes)
+* [Keymap FAQ](faq_keymap)
We are actively working to improve these docs. If you have suggestions for how they could be made better please [file an issue](https://github.com/qmk/qmk_firmware/issues/new)!
diff --git a/docs/mod_tap.md b/docs/mod_tap.md
index 8b953d76b48..37c2ba3473b 100644
--- a/docs/mod_tap.md
+++ b/docs/mod_tap.md
@@ -53,13 +53,13 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations
## Caveats
-Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.
+Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.
-Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
+Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](features/tap_dance#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them.
To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
-It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
+It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options#behaviors-that-can-be-configured).
## Intercepting Mod-Taps
@@ -132,4 +132,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
## Other Resources
-See the [Tap-Hold Configuration Options](tap_hold.md) for additional flags that tweak Mod-Tap behavior.
+See the [Tap-Hold Configuration Options](tap_hold) for additional flags that tweak Mod-Tap behavior.
diff --git a/docs/newbs.md b/docs/newbs.md
index b4d14947946..64593cbad12 100644
--- a/docs/newbs.md
+++ b/docs/newbs.md
@@ -6,19 +6,20 @@ QMK tries to put a lot of power into your hands by making easy things easy, and
Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](https://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do.
-?> **Is This Guide For Me?**
-If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead.
+::: tip Is This Guide For Me?
+If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator) instead.
+:::
## Overview
This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. There are 3 main sections to this guide:
-1. [Setup Your Environment](newbs_getting_started.md)
-2. [Building Your First Firmware](newbs_building_firmware.md)
-3. [Flashing Firmware](newbs_flashing.md)
+1. [Setup Your Environment](newbs_getting_started)
+2. [Building Your First Firmware](newbs_building_firmware)
+3. [Flashing Firmware](newbs_flashing)
-This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md).
+This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](support).
## Additional Resources
-Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Syllabus](syllabus.md) and [Learning Resources](newbs_learn_more_resources.md) pages.
+Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Syllabus](syllabus) and [Learning Resources](newbs_learn_more_resources) pages.
diff --git a/docs/newbs_building_firmware.md b/docs/newbs_building_firmware.md
index de9217e9f0b..f3afd6a8968 100644
--- a/docs/newbs_building_firmware.md
+++ b/docs/newbs_building_firmware.md
@@ -8,27 +8,39 @@ You can configure your build environment to set the defaults and make working wi
Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the `qmk config` command. For example, to set your default keyboard to `clueboard/66/rev4`:
- qmk config user.keyboard=clueboard/66/rev4
+```sh
+qmk config user.keyboard=clueboard/66/rev4
+```
-?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev4`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
+::: tip
+The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev4`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
+:::
You can also set your default keymap name. Most people use their GitHub username like the keymap name from the previous steps:
- qmk config user.keymap=
+```sh
+qmk config user.keymap=
+```
## Create a New Keymap
To create your own keymap you'll want to create a copy of the `default` keymap. If you configured your build environment in the last step you can do that easily with the QMK CLI:
- qmk new-keymap
+```sh
+qmk new-keymap
+```
If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard name:
- qmk new-keymap -kb
+```sh
+qmk new-keymap -kb
+```
Look at the output from that command, you should see something like this:
- Ψ Created a new keymap called in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/.
+```
+Ψ Created a new keymap called in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/.
+```
This is the location of your new `keymap.c` file.
@@ -36,32 +48,42 @@ This is the location of your new `keymap.c` file.
Open your `keymap.c` file in your text editor. Inside this file you'll find the structure that controls how your keyboard behaves. At the top of `keymap.c` there may be some defines and enums that make the keymap easier to read. Farther down you'll find a line that looks like this:
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+```c
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+```
This line indicates where the list of Layers begins. Below that you'll find lines containing `LAYOUT`, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a particular layer.
-!> When editing your keymap file be careful not to add or remove any commas. If you do, you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.
+::: warning
+When editing your keymap file be careful not to add or remove any commas. If you do, you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.
+:::
## Customize The Layout To Your Liking
How to complete this step is entirely up to you. Make the one change that's been bugging you, or completely rework everything. You can remove layers if you don't need all of them, or add layers up to a total of 32. There are a lot of features in QMK, explore the sidebar to the left under "Using QMK" to see the full list. To get you started here are a few of the easier to use features:
-* [Basic Keycodes](keycodes_basic.md)
-* [Quantum Keycodes](quantum_keycodes.md)
-* [Grave/Escape](feature_grave_esc.md)
-* [Mouse keys](feature_mouse_keys.md)
+* [Basic Keycodes](keycodes_basic)
+* [Quantum Keycodes](quantum_keycodes)
+* [Grave/Escape](features/grave_esc)
+* [Mouse keys](features/mouse_keys)
-?> While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.
+::: tip
+While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.
+:::
-## Build Your Firmware :id=build-your-firmware
+## Build Your Firmware {#build-your-firmware}
When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the compile command:
- qmk compile
+```sh
+qmk compile
+```
If you did not configure defaults for your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
- qmk compile -kb -km