aboutsummaryrefslogtreecommitdiff
path: root/docs/ja
diff options
context:
space:
mode:
authorAkshay <[email protected]>2022-04-10 12:13:40 +0100
committerAkshay <[email protected]>2022-04-10 12:13:40 +0100
commitdc90387ce7d8ba7b607d9c48540bf6d8b560f14d (patch)
tree4ccb8fa5886b66fa9d480edef74236c27f035e16 /docs/ja
Diffstat (limited to 'docs/ja')
-rw-r--r--docs/ja/README.md47
-rw-r--r--docs/ja/_summary.md182
-rw-r--r--docs/ja/adc_driver.md155
-rw-r--r--docs/ja/api_development_environment.md8
-rw-r--r--docs/ja/api_development_overview.md49
-rw-r--r--docs/ja/api_docs.md73
-rw-r--r--docs/ja/api_overview.md20
-rw-r--r--docs/ja/arm_debugging.md92
-rw-r--r--docs/ja/breaking_changes.md120
-rw-r--r--docs/ja/breaking_changes_instructions.md51
-rw-r--r--docs/ja/cli.md43
-rw-r--r--docs/ja/cli_commands.md296
-rw-r--r--docs/ja/cli_configuration.md126
-rw-r--r--docs/ja/cli_development.md223
-rw-r--r--docs/ja/coding_conventions_c.md63
-rw-r--r--docs/ja/coding_conventions_python.md331
-rw-r--r--docs/ja/compatible_microcontrollers.md54
-rw-r--r--docs/ja/config_options.md421
-rw-r--r--docs/ja/configurator_step_by_step.md67
-rw-r--r--docs/ja/configurator_troubleshooting.md32
-rw-r--r--docs/ja/contributing.md173
-rw-r--r--docs/ja/custom_matrix.md114
-rw-r--r--docs/ja/custom_quantum_functions.md403
-rw-r--r--docs/ja/data_driven_config.md123
-rw-r--r--docs/ja/documentation_best_practices.md69
-rw-r--r--docs/ja/documentation_templates.md45
-rw-r--r--docs/ja/driver_installation_zadig.md53
-rw-r--r--docs/ja/faq_build.md73
-rw-r--r--docs/ja/faq_debug.md131
-rw-r--r--docs/ja/faq_general.md58
-rw-r--r--docs/ja/faq_keymap.md160
-rw-r--r--docs/ja/faq_misc.md103
-rw-r--r--docs/ja/feature_advanced_keycodes.md185
-rw-r--r--docs/ja/feature_audio.md322
-rw-r--r--docs/ja/feature_auto_shift.md135
-rw-r--r--docs/ja/feature_backlight.md225
-rw-r--r--docs/ja/feature_bluetooth.md49
-rw-r--r--docs/ja/feature_bootmagic.md182
-rw-r--r--docs/ja/feature_combo.md108
-rw-r--r--docs/ja/feature_command.md56
-rw-r--r--docs/ja/feature_debounce_type.md128
-rw-r--r--docs/ja/feature_dip_switch.md115
-rw-r--r--docs/ja/feature_dynamic_macros.md71
-rw-r--r--docs/ja/feature_encoders.md85
-rw-r--r--docs/ja/feature_grave_esc.md37
-rw-r--r--docs/ja/feature_haptic_feedback.md173
-rw-r--r--docs/ja/feature_hd44780.md62
-rw-r--r--docs/ja/feature_key_lock.md27
-rw-r--r--docs/ja/feature_layers.md97
-rw-r--r--docs/ja/feature_layouts.md114
-rw-r--r--docs/ja/feature_leader_key.md164
-rw-r--r--docs/ja/feature_led_indicators.md119
-rw-r--r--docs/ja/feature_led_matrix.md96
-rw-r--r--docs/ja/feature_macros.md303
-rw-r--r--docs/ja/feature_mouse_keys.md147
-rw-r--r--docs/ja/feature_pointing_device.md58
-rw-r--r--docs/ja/feature_ps2_mouse.md286
-rw-r--r--docs/ja/feature_rawhid.md74
-rw-r--r--docs/ja/feature_split_keyboard.md251
-rw-r--r--docs/ja/feature_stenography.md135
-rw-r--r--docs/ja/feature_swap_hands.md36
-rw-r--r--docs/ja/feature_tap_dance.md533
-rw-r--r--docs/ja/feature_terminal.md112
-rw-r--r--docs/ja/feature_thermal_printer.md15
-rw-r--r--docs/ja/feature_unicode.md277
-rw-r--r--docs/ja/feature_userspace.md260
-rw-r--r--docs/ja/feature_velocikey.md34
-rw-r--r--docs/ja/feature_wpm.md24
-rw-r--r--docs/ja/flashing.md247
-rw-r--r--docs/ja/flashing_bootloadhid.md75
-rw-r--r--docs/ja/getting_started_docker.md60
-rw-r--r--docs/ja/getting_started_github.md69
-rw-r--r--docs/ja/getting_started_introduction.md65
-rw-r--r--docs/ja/getting_started_make_guide.md161
-rw-r--r--docs/ja/getting_started_vagrant.md61
-rw-r--r--docs/ja/hardware_avr.md190
-rw-r--r--docs/ja/hardware_drivers.md41
-rw-r--r--docs/ja/hardware_keyboard_guidelines.md239
-rw-r--r--docs/ja/how_a_matrix_works.md104
-rw-r--r--docs/ja/how_keyboards_work.md74
-rw-r--r--docs/ja/i2c_driver.md135
-rw-r--r--docs/ja/internals_defines.md78
-rw-r--r--docs/ja/internals_gpio_control.md47
-rw-r--r--docs/ja/internals_input_callback_reg.md173
-rw-r--r--docs/ja/internals_midi_device.md148
-rw-r--r--docs/ja/internals_midi_device_setup_process.md36
-rw-r--r--docs/ja/internals_midi_util.md59
-rw-r--r--docs/ja/internals_send_functions.md246
-rw-r--r--docs/ja/internals_sysex_tools.md66
-rw-r--r--docs/ja/isp_flashing_guide.md294
-rw-r--r--docs/ja/ja_doc_status.sh34
-rw-r--r--docs/ja/keycodes.md574
-rw-r--r--docs/ja/keycodes_basic.md261
-rw-r--r--docs/ja/keycodes_us_ansi_shifted.md41
-rw-r--r--docs/ja/keymap.md187
-rw-r--r--docs/ja/mod_tap.md71
-rw-r--r--docs/ja/newbs.md40
-rw-r--r--docs/ja/newbs_building_firmware.md81
-rw-r--r--docs/ja/newbs_building_firmware_configurator.md20
-rw-r--r--docs/ja/newbs_flashing.md133
-rw-r--r--docs/ja/newbs_getting_started.md210
-rw-r--r--docs/ja/newbs_git_best_practices.md24
-rw-r--r--docs/ja/newbs_git_resolving_merge_conflicts.md94
-rw-r--r--docs/ja/newbs_git_resynchronize_a_branch.md88
-rw-r--r--docs/ja/newbs_git_using_your_master_branch.md101
-rw-r--r--docs/ja/newbs_learn_more_resources.md63
-rw-r--r--docs/ja/newbs_testing_debugging.md15
-rw-r--r--docs/ja/one_shot_keys.md110
-rw-r--r--docs/ja/other_eclipse.md89
-rw-r--r--docs/ja/other_vscode.md121
-rw-r--r--docs/ja/pr_checklist.md145
-rw-r--r--docs/ja/proton_c_conversion.md98
-rw-r--r--docs/ja/quantum_keycodes.md20
-rw-r--r--docs/ja/ref_functions.md124
-rw-r--r--docs/ja/reference_configurator_support.md200
-rw-r--r--docs/ja/reference_glossary.md173
-rw-r--r--docs/ja/reference_info_json.md68
-rw-r--r--docs/ja/reference_keymap_extras.md89
-rw-r--r--docs/ja/serial_driver.md75
-rw-r--r--docs/ja/support.md22
-rw-r--r--docs/ja/syllabus.md76
-rw-r--r--docs/ja/tap_hold.md214
-rw-r--r--docs/ja/translating.md60
-rw-r--r--docs/ja/understanding_qmk.md191
124 files changed, 15633 insertions, 0 deletions
diff --git a/docs/ja/README.md b/docs/ja/README.md
new file mode 100644
index 000000000..aefacbc41
--- /dev/null
+++ b/docs/ja/README.md
@@ -0,0 +1,47 @@
1# Quantum Mechanical Keyboard Firmware
2
3<!---
4 original document: 0.8.58:docs/README.md
5 git diff 0.8.58 HEAD -- docs/README.md | cat
6-->
7
8[![現在のバージョン](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
9[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
10[![ドキュメントの状態](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
11[![GitHub 貢献者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
12[![GitHub フォーク](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
13
14## QMK ファームウェアとは何でしょうか?
15
16QMK (*Quantum Mechanical Keyboard*)は、コンピュータ入力デバイスの開発を中心としたオープンソースコミュニティです。コミュニティには、キーボード、マウス、MIDI デバイスなど、全ての種類の入力デバイスが含まれます。協力者の中心グループは、[QMK ファームウェア](https://github.com/qmk/qmk_firmware)、[QMK Configurator](https://config.qmk.fm)、[QMK ツールボックス](https://github.com/qmk/qmk_toolbox)、[qmk.fm](https://qmk.fm)、そして、このドキュメントを、あなたのようなコミュニティメンバーの助けを借りて保守しています。
17
18## 始めましょう
19
20QMK は初めてですか?始めるには2つの方法があります:
21
22* 基本: [QMK Configurator](https://config.qmk.fm)
23 * ドロップダウンからあなたのキーボードを選択し、キーボードをプログラムします。
24 * 見ることができる [紹介ビデオ](https://www.youtube.com/watch?v=-imgglzDMdY) があります。
25 * 読むことができる概要 [ドキュメント](ja/newbs_building_firmware_configurator.md) があります。
26* 発展: [ソースを使用します](ja/newbs.md)
27 * より強力ですが、使うのはより困難です。
28
29## 自分用にアレンジします
30
31QMK には、探求すべき多くの[機能](ja/features.md)と、深く知るためのリファレンスドキュメントがたくさんあります。ほとんどの機能は[キーマップ](ja/keymap.md)を変更し、[キーコード](ja/keycodes.md)を変更することで活用されます。
32
33## 手助けが必要ですか?
34
35[サポートページ](ja/support.md) をチェックして、QMK の使い方について手助けを得る方法を確認してください。
36
37## 貢献する
38
39QMK コミュニティに貢献する方法はたくさんあります。始める最も簡単な方法は、それを使って友人に QMK という単語を広めることです。
40
41* フォーラムやチャットルームで人々を支援します:
42 * [/r/olkb](https://www.reddit.com/r/olkb/)
43 * [Discord サーバ](https://discord.gg/Uq7gcHh)
44* 下にある「Edit This Page」をクリックしてドキュメントに貢献します
45* [ドキュメントをあなたの言語に翻訳します](ja/translating.md)
46* [バグを報告します](https://github.com/qmk/qmk_firmware/issues/new/choose)
47* [プルリクエストを開きます](ja/contributing.md)
diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md
new file mode 100644
index 000000000..b90480041
--- /dev/null
+++ b/docs/ja/_summary.md
@@ -0,0 +1,182 @@
1* チュートリアル
2 * [入門](ja/newbs.md)
3 * [セットアップ](ja/newbs_getting_started.md)
4 * [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
5 * [ファームウェアのフラッシュ](ja/newbs_flashing.md)
6 * [手助けを得る/サポート](ja/support.md)
7 * [他のリソース](ja/newbs_learn_more_resources.md)
8 * [シラバス](ja/syllabus.md)
9
10* FAQ
11 * [一般的な FAQ](ja/faq_general.md)
12 * [QMK のビルド/コンパイル](ja/faq_build.md)
13 * [QMK のデバッグ](ja/faq_debug.md)
14 * [QMK のトラブルシューティング](ja/faq_misc.md)
15 * [キーマップ FAQ](ja/faq_keymap.md)
16 * [用語](ja/reference_glossary.md)
17
18* Configurator
19 * [概要](ja/newbs_building_firmware_configurator.md)
20 * [ステップ・バイ・ステップ](ja/configurator_step_by_step.md)
21 * [トラブルシューティング](ja/configurator_troubleshooting.md)
22 * QMK API
23 * [概要](ja/api_overview.md)
24 * [API ドキュメント](ja/api_docs.md)
25 * [キーボードサポート](ja/reference_configurator_support.md)
26 * [デフォルトキーマップの追加](ja/configurator_default_keymaps.md)
27
28* CLI
29 * [概要](ja/cli.md)
30 * [設定](ja/cli_configuration.md)
31 * [コマンド](ja/cli_commands.md)
32 * [Tab 補完](ja/cli_tab_complete.md)
33
34* QMK を使う
35 * ガイド
36 * [機能のカスタマイズ](ja/custom_quantum_functions.md)
37 * [Zadig を使ったドライバのインストール](ja/driver_installation_zadig.md)
38 * [キーマップの概要](ja/keymap.md)
39 * 開発環境
40 * [Docker のガイド](ja/getting_started_docker.md)
41 * [Vagrant のガイド](ja/getting_started_vagrant.md)
42 * 書き込み
43 * [書き込み](ja/flashing.md)
44 * [ATmega32A の書き込み (ps2avrgb)](ja/flashing_bootloadhid.md)
45 * IDE
46 * [QMK での Eclipse の使用](ja/other_eclipse.md)
47 * [QMK での VSCode の使用](ja/other_vscode.md)
48 * Git のベストプラクティス
49 * [入門](ja/newbs_git_best_practices.md)
50 * [フォーク](ja/newbs_git_using_your_master_branch.md)
51 * [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
52 * [ブランチの修正](ja/newbs_git_resynchronize_a_branch.md)
53 * キーボードを作る
54 * [Hand Wiring ガイド](ja/hand_wire.md)
55 * [ISP 書き込みガイド](ja/isp_flashing_guide.md)
56
57 * 単純なキーコード
58 * [完全なリスト](ja/keycodes.md)
59 * [基本的なキーコード](ja/keycodes_basic.md)
60 * [言語固有のキーコード](ja/reference_keymap_extras.md)
61 * [修飾キー](ja/feature_advanced_keycodes.md)
62 * [Quantum キーコード](ja/quantum_keycodes.md)
63
64 * 高度なキーコード
65 * [コマンド](ja/feature_command.md)
66 * [動的マクロ](ja/feature_dynamic_macros.md)
67 * [グレイブ エスケープ](ja/feature_grave_esc.md)
68 * [リーダーキー](ja/feature_leader_key.md)
69 * [モッドタップ](ja/mod_tap.md)
70 * [マクロ](ja/feature_macros.md)
71 * [マウスキー](ja/feature_mouse_keys.md)
72 * [Space Cadet Shift](ja/feature_space_cadet.md)
73 * [US ANSI シフトキー](ja/keycodes_us_ansi_shifted.md)
74
75 * ソフトウェア機能
76 * [自動シフト](ja/feature_auto_shift.md)
77 * [コンボ](ja/feature_combo.md)
78 * [デバウンス API](ja/feature_debounce_type.md)
79 * [キーロック](ja/feature_key_lock.md)
80 * [レイヤー](ja/feature_layers.md)
81 * [ワンショットキー](ja/one_shot_keys.md)
82 * [ポインティング デバイス](ja/feature_pointing_device.md)
83 * [ロー HID](ja/feature_rawhid.md)
84 * [シーケンサー](ja/feature_sequencer.md)
85 * [スワップハンド](ja/feature_swap_hands.md)
86 * [タップダンス](ja/feature_tap_dance.md)
87 * [タップホールド設定](ja/tap_hold.md)
88 * [ターミナル](ja/feature_terminal.md)
89 * [ユニコード](ja/feature_unicode.md)
90 * [ユーザスペース](ja/feature_userspace.md)
91 * [WPM 計算](ja/feature_wpm.md)
92
93 * ハードウェア機能
94 * 表示
95 * [HD44780 LCD コントローラ](ja/feature_hd44780.md)
96 * [OLED ドライバ](ja/feature_oled_driver.md)
97 * 電飾
98 * [バックライト](ja/feature_backlight.md)
99 * [LED マトリックス](ja/feature_led_matrix.md)
100 * [RGB ライト](ja/feature_rgblight.md)
101 * [RGB マトリックス](ja/feature_rgb_matrix.md)
102 * [オーディオ](ja/feature_audio.md)
103 * [Bluetooth](ja/feature_bluetooth.md)
104 * [ブートマジック](ja/feature_bootmagic.md)
105 * [カスタムマトリックス](ja/custom_matrix.md)
106 * [DIP スイッチ](ja/feature_dip_switch.md)
107 * [エンコーダ](ja/feature_encoders.md)
108 * [触覚フィードバック](ja/feature_haptic_feedback.md)
109 * [ジョイスティック](ja/feature_joystick.md)
110 * [LED インジケータ](ja/feature_led_indicators.md)
111 * [Proton C 変換](ja/proton_c_conversion.md)
112 * [PS/2 マウス](ja/feature_ps2_mouse.md)
113 * [分割キーボード](ja/feature_split_keyboard.md)
114 * [速記](ja/feature_stenography.md)
115 * [感熱式プリンタ](ja/feature_thermal_printer.md)
116 * [Velocikey](ja/feature_velocikey.md)
117
118* QMK の開発
119 * [PR チェックリスト](ja/pr_checklist.md)
120 * 互換性を破る変更/Breaking changes
121 * [概要](ja/breaking_changes.md)
122 * [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
123 * [最近の変更履歴](ChangeLog/20210227.md "QMK v0.12.0 - 2021 Feb 27")
124 * [過去の互換性を破る変更](ja/breaking_changes_history.md)
125
126 * C 開発
127 * [ARM デバッグ ガイド](ja/arm_debugging.md)
128 * [AVR プロセッサ](ja/hardware_avr.md)
129 * [コーディング規約](ja/coding_conventions_c.md)
130 * [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
131 * [ドライバ](ja/hardware_drivers.md)
132 * [ADC ドライバ](ja/adc_driver.md)
133 * [オーディオドライバ](ja/audio_driver.md)
134 * [I2C ドライバ](ja/i2c_driver.md)
135 * [SPI ドライバ](ja/spi_driver.md)
136 * [WS2812 ドライバ](ja/ws2812_driver.md)
137 * [EEPROM ドライバ](ja/eeprom_driver.md)
138 * [シリアル ドライバ](ja/serial_driver.md)
139 * [UART ドライバ](ja/uart_driver.md)
140 * [GPIO 制御](ja/internals_gpio_control.md)
141 * [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
142
143 * Python 開発
144 * [コーディング規約](ja/coding_conventions_python.md)
145 * [QMK CLI 開発](ja/cli_development.md)
146
147 * Configurator 開発
148 * QMK API
149 * [開発環境](ja/api_development_environment.md)
150 * [アーキテクチャの概要](ja/api_development_overview.md)
151
152 * ハードウェアプラットフォーム開発
153 * Arm/ChibiOS
154 * [MCU の選択](ja/platformdev_selecting_arm_mcu.md)
155 * [早期初期化](ja/platformdev_chibios_earlyinit.md)
156
157 * QMK Reference
158 * [QMK への貢献](ja/contributing.md)
159 * [QMK ドキュメントの翻訳](ja/translating.md)
160 * [設定オプション](ja/config_options.md)
161 * [データ駆動型コンフィギュレーション](ja/data_driven_config.md)
162 * [Make ドキュメント](ja/getting_started_make_guide.md)
163 * [ドキュメント ベストプラクティス](ja/documentation_best_practices.md)
164 * [ドキュメント テンプレート](ja/documentation_templates.md)
165 * [コミュニティレイアウト](ja/feature_layouts.md)
166 * [ユニットテスト](ja/unit_testing.md)
167 * [便利な関数](ja/ref_functions.md)
168 * [info.json 形式](ja/reference_info_json.md)
169
170 * より深く知るために
171 * [キーボードがどのように動作するか](ja/how_keyboards_work.md)
172 * [マトリックスがどのように動作するか](ja/how_a_matrix_works.md)
173 * [QMK を理解する](ja/understanding_qmk.md)
174
175 * QMK の内部詳細(作成中)
176 * [定義](ja/internals_defines.md)
177 * [入力コールバック登録](ja/internals_input_callback_reg.md)
178 * [Midi デバイス](ja/internals_midi_device.md)
179 * [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
180 * [Midi ユーティリティ](ja/internals_midi_util.md)
181 * [Midi 送信関数](ja/internals_send_functions.md)
182 * [Sysex Tools](ja/internals_sysex_tools.md)
diff --git a/docs/ja/adc_driver.md b/docs/ja/adc_driver.md
new file mode 100644
index 000000000..0a531c8db
--- /dev/null
+++ b/docs/ja/adc_driver.md
@@ -0,0 +1,155 @@
1# ADC ドライバ
2
3<!---
4 original document: 0.10.52:docs/adc_driver.md
5 git diff 0.10.52 HEAD -- docs/adc_driver.md | cat
6-->
7
8QMK は対応している MCU のアナログ・デジタルコンバータ(ADC) を使用し、特定のピンの電圧を計測することができます。この機能はデジタル出力の[ロータリーエンコーダ](ja/feature_encoders.md)などではなく、アナログ計測が必要な可変抵抗器を使用したボリュームコントロールや Bluetooth キーボードのバッテリー残量表示などの実装に役立ちます。
9
10このドライバは現在 AVR と一部の ARM デバイスをサポートしています。返される値は 0V と VCC (通常 AVR の場合は 5V または 3.3V、ARM の場合は 3.3V)の間でマッピングされた 10ビットの整数 (0-1023) ですが、ARM の場合、もしもより精度が必要であれば `#define` を使うと操作をより柔軟に制御できます。
11
12## 使い方
13
14このドライバを使うには、`rules.mk` に以下を追加します:
15
16```make
17SRC += analog.c
18```
19
20そして、コードの先頭に以下の include を置きます:
21
22```c
23#include "analog.h"
24```
25
26## チャンネル
27
28### AVR
29
30|Channel|AT90USB64/128|ATmega16/32U4|ATmega32A|ATmega328/P|
31|-------|-------------|-------------|---------|-----------|
32|0 |`F0` |`F0` |`A0` |`C0` |
33|1 |`F1` |`F1` |`A1` |`C1` |
34|2 |`F2` | |`A2` |`C2` |
35|3 |`F3` | |`A3` |`C3` |
36|4 |`F4` |`F4` |`A4` |`C4` |
37|5 |`F5` |`F5` |`A5` |`C5` |
38|6 |`F6` |`F6` |`A6` |* |
39|7 |`F7` |`F7` |`A7` |* |
40|8 | |`D4` | | |
41|9 | |`D6` | | |
42|10 | |`D7` | | |
43|11 | |`B4` | | |
44|12 | |`B5` | | |
45|13 | |`B6` | | |
46
47<sup>\* ATmega328/P には余分な2つの ADC チャンネルがありますが、DIP ピンアウトには存在せず、GPIO ピンとは共有されません。これらに直接アクセスするために、`adc_read()` を使えます。
48
49### ARM
50
51これらのピンの一部は同じチャンネルを使って ADC 上でダブルアップされることに注意してください。これは、これらのピンがどちらかの ADC に使われる可能性があるからです。
52
53また、F0 と F3 は異なるナンバリングスキーマを使うことに注意してください。F0 には1つの ADC があり、チャンネルは0から始まるインデックスですが、F3 には4つの ADC があり、チャンネルは1から始まるインデックスです。これは、F0 が ADC の `ADCv1` 実装を使用するのに対し、F3 が `ADCv3` 実装を使用するためです。
54
55|ADC|Channel|STM32F0xx|STM32F3xx|
56|---|-------|---------|---------|
57|1 |0 |`A0` | |
58|1 |1 |`A1` |`A0` |
59|1 |2 |`A2` |`A1` |
60|1 |3 |`A3` |`A2` |
61|1 |4 |`A4` |`A3` |
62|1 |5 |`A5` |`F4` |
63|1 |6 |`A6` |`C0` |
64|1 |7 |`A7` |`C1` |
65|1 |8 |`B0` |`C2` |
66|1 |9 |`B1` |`C3` |
67|1 |10 |`C0` |`F2` |
68|1 |11 |`C1` | |
69|1 |12 |`C2` | |
70|1 |13 |`C3` | |
71|1 |14 |`C4` | |
72|1 |15 |`C5` | |
73|1 |16 | | |
74|2 |1 | |`A4` |
75|2 |2 | |`A5` |
76|2 |3 | |`A6` |
77|2 |4 | |`A7` |
78|2 |5 | |`C4` |
79|2 |6 | |`C0` |
80|2 |7 | |`C1` |
81|2 |8 | |`C2` |
82|2 |9 | |`C3` |
83|2 |10 | |`F2` |
84|2 |11 | |`C5` |
85|2 |12 | |`B2` |
86|2 |13 | | |
87|2 |14 | | |
88|2 |15 | | |
89|2 |16 | | |
90|3 |1 | |`B1` |
91|3 |2 | |`E9` |
92|3 |3 | |`E13` |
93|3 |4 | | |
94|3 |5 | | |
95|3 |6 | |`E8` |
96|3 |7 | |`D10` |
97|3 |8 | |`D11` |
98|3 |9 | |`D12` |
99|3 |10 | |`D13` |
100|3 |11 | |`D14` |
101|3 |12 | |`B0` |
102|3 |13 | |`E7` |
103|3 |14 | |`E10` |
104|3 |15 | |`E11` |
105|3 |16 | |`E12` |
106|4 |1 | |`E14` |
107|4 |2 | |`B12` |
108|4 |3 | |`B13` |
109|4 |4 | |`B14` |
110|4 |5 | |`B15` |
111|4 |6 | |`E8` |
112|4 |7 | |`D10` |
113|4 |8 | |`D11` |
114|4 |9 | |`D12` |
115|4 |10 | |`D13` |
116|4 |11 | |`D14` |
117|4 |12 | |`D8` |
118|4 |13 | |`D9` |
119|4 |14 | | |
120|4 |15 | | |
121|4 |16 | | |
122
123## 関数
124
125### AVR
126
127|関数 |説明 |
128|----------------------------|------------------------------------------------------------------------------------------------------------------------------------|
129|`analogReference(mode)` |アナログの電圧リファレンスソースを設定する。`ADC_REF_EXTERNAL`、`ADC_REF_POWER`、`ADC_REF_INTERNAL` のいずれかでなければなりません。|
130|`analogReadPin(pin)` |指定されたピンから値を読み取ります。例えば、ATmega32U4 の ADC6 の場合 `F6`。 |
131|`pinToMux(pin)` |指定されたピンを mux 値に変換します。サポートされていないピンが指定された場合、"0V (GND)" の mux 値を返します。 |
132|`adc_read(mux)` |指定された mux に従って ADC から値を読み取ります。詳細は、MCU のデータシートを見てください。 |
133
134### ARM
135
136|関数 |説明 |
137|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
138|`analogReadPin(pin)` |指定されたピンから値を読み取ります。STM32F0 では チャンネル 0 の `A0`、STM32F3 ではチャンネル 1 の ADC1。ピンを複数の ADC に使える場合は、この関数のために番号の小さい ADC が選択されることに注意してください。例えば、`C0` は、ADC2 にも使える場合、ADC1 のチャンネル 6 になります。 |
139|`analogReadPinAdc(pin, adc)`|指定されたピンと ADC から値を読み取ります。例えば、`C0, 1` は、ADC1 ではなく ADC2 のチャンネル 6 から読み取ります。この関数では、ADC はインデックス 0 から始まることに注意してください。 |
140|`pinToMux(pin)` |指定されたピンをチャンネルと ADC の組み合わせに変換します。サポートされていないピンが指定された場合、"0V (GND)" の mux 値を返します。 |
141|`adc_read(mux)` |指定されたピンと ADC の組み合わせに応じて ADC から値を読み取ります。詳細は、MCU のデータシートを見てください。 |
142
143## 設定
144
145## ARM
146
147ADC の ARM 実装には、独自のキーボードとキーマップでオーバーライドして動作方法を変更できる幾つかの追加オプションがあります。利用可能なオプションの詳細については、特定のマイクロコントローラについて ChibiOS の対応する `hal_adc_lld.h` を調べてください。
148
149|`#define` |型 |既定値 |説明 |
150|---------------------|------|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
151|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |`true` の場合、この実装は循環バッファを使います。 |
152|`ADC_NUM_CHANNELS` |`int` |`1` |ADC 動作の一部としてスキャンされるチャンネル数を設定します。現在の実装は `1` のみをサポートします。 |
153|`ADC_BUFFER_DEPTH` |`int` |`2` |各結果の深さを設定します。デフォルトでは12ビットの結果しか取得できないため、これを2バイトに設定して1つの値を含めることができます。8ビット以下の結果を選択した場合は、これを 1 に設定できます。 |
154|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |ADC のサンプリングレートを設定します。デフォルトでは、最も速い設定に設定されています。 |
155|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_12BIT`|結果の分解能。デフォルトでは12ビットを選択しますが、12、10、8、6ビットを選択できます。 |
diff --git a/docs/ja/api_development_environment.md b/docs/ja/api_development_environment.md
new file mode 100644
index 000000000..8dce1ba2f
--- /dev/null
+++ b/docs/ja/api_development_environment.md
@@ -0,0 +1,8 @@
1# 開発環境のセットアップ
2
3<!---
4 original document: 0.9.50:docs/api_development_environment.md
5 git diff 0.9.50 HEAD -- docs/api_development_environment.md | cat
6-->
7
8開発環境をセットアップするには、[qmk_web_stack](https://github.com/qmk/qmk_web_stack) に行ってください。
diff --git a/docs/ja/api_development_overview.md b/docs/ja/api_development_overview.md
new file mode 100644
index 000000000..0612507b4
--- /dev/null
+++ b/docs/ja/api_development_overview.md
@@ -0,0 +1,49 @@
1# QMK コンパイラ開発ガイド
2
3<!---
4 original document: 0.9.50:docs/api_development_overview.md
5 git diff 0.9.50 HEAD -- docs/api_development_overview.md | cat
6-->
7
8このページでは、開発者に QMK コンパイラを紹介しようと思います。コードを読まなければならないような核心となる詳細に立ち入って調べることはしません。ここで得られるものは、コードを読んで理解を深めるためのフレームワークです。
9
10# 概要
11
12QMK Compile API は、いくつかの可動部分からできています:
13
14![構造図](https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg)
15
16API クライアントは API サービスと排他的にやりとりをします。ここでジョブをサブミットし、状態を調べ、結果をダウンロードします。API サービスはコンパイルジョブを [Redis Queue](https://python-rq.org) に挿入し、それらのジョブの結果について RQ と S3 の両方を調べます。
17
18ワーカーは RQ から新しいコンパイルジョブを取り出し、ソースとバイナリを S3 互換のストレージエンジンにアップロードします。
19
20# ワーカー
21
22QMK コンパイラワーカーは実際のビルド作業に責任を持ちます。ワーカーは RQ からジョブを取り出し、ジョブを完了するためにいくつかの事を行います:
23
24* 新しい qmk_firmware のチェックアウトを作成する
25* 指定されたレイヤーとキーボードメタデータを使って `keymap.c` をビルドする
26* ファームウェアをビルドする
27* ソースのコピーを zip 形式で圧縮する
28* ファームウェア、ソースの zip ファイル、メタデータファイルを S3 にアップロードする
29* ジョブの状態を RQ に送信する
30
31# API サービス
32
33API サービスは比較的単純な Flask アプリケーションです。理解しておくべきことが幾つかあります。
34
35## @app.route('/v1/compile', methods=['POST'])
36
37これは API の主なエントリーポイントです。クライアントとのやりとりはここから開始されます。クライアントはキーボードを表す JSON ドキュメントを POST し、API はコンパイルジョブをサブミットする前にいくらかの(とても)基本的な検証を行います。
38
39## @app.route('/v1/compile/&lt;string:job_id&gt;', methods=['GET'])
40
41これは最もよく呼ばれるエンドポイントです。ジョブの詳細が redis から利用可能であればそれを取り出し、そうでなければ S3 からキャッシュされたジョブの詳細を取り出します。
42
43## @app.route('/v1/compile/&lt;string:job_id&gt;/download', methods=['GET'])
44
45このメソッドによりユーザはコンパイルされたファームウェアファイルをダウンロードすることができます。
46
47## @app.route('/v1/compile/&lt;string:job_id&gt;/source', methods=['GET'])
48
49このメソッドによりユーザはファームウェアのソースをダウンロードすることができます。
diff --git a/docs/ja/api_docs.md b/docs/ja/api_docs.md
new file mode 100644
index 000000000..34ed50c49
--- /dev/null
+++ b/docs/ja/api_docs.md
@@ -0,0 +1,73 @@
1# QMK API
2
3<!---
4 original document: 0.13.15:docs/api_docs.md
5 git diff 0.13.15 HEAD -- docs/api_docs.md | cat
6-->
7
8このページは QMK API の使い方を説明します。もしあなたがアプリケーション開発者であれば、全ての [QMK](https://qmk.fm) キーボードのファームウェアをコンパイルするために、この API を使うことができます。
9
10## 概要
11
12このサービスは、カスタムキーマップをコンパイルするための非同期 API です。API に 何らかの JSON を POST し、定期的に状態をチェックし、ファームウェアのコンパイルが完了していれば、結果のファームウェアと(もし希望すれば)そのファームウェアのソースコードをダウンロードすることができます。
13
14#### JSON ペイロードの例:
15
16```json
17{
18 "keyboard": "clueboard/66/rev2",
19 "keymap": "my_awesome_keymap",
20 "layout": "LAYOUT_all",
21 "layers": [
22 ["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
23 ["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
24 ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
25 ]
26}
27```
28
29ご覧のとおり、ペイロードにはファームウェアを作成および生成するために必要なキーボードの全ての側面を記述します。各レイヤーは QMK キーコードの1つのリストで、キーボードの `LAYOUT` マクロと同じ長さです。もしキーボードが複数の `LAYOUT` マクロをサポートする場合、どのマクロを使うかを指定することができます。
30
31## コンパイルジョブのサブミット
32
33キーマップをファームウェアにコンパイルするには、単純に JSON を `/v1/compile` エンドポイントに POST します。以下の例では、JSON ペイロードを `json_data` という名前のファイルに配置しています。
34
35```
36$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" https://api.qmk.fm/v1/compile
37{
38 "enqueued": true,
39 "job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
40}
41```
42
43## 状態のチェック
44
45キーマップをサブミットした後で、簡単な HTTP GET 呼び出しを使って状態をチェックすることができます:
46
47```
48$ curl https://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
49{
50 "created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
51 "enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
52 "id": "f5f9b992-73b4-479b-8236-df1deb37c163",
53 "status": "running",
54 "result": null
55}
56```
57
58これは、ジョブをキューに入れることに成功し、現在実行中であることを示しています。5つの状態がありえます:
59
60* **failed**: なんらかの理由でコンパイルサービスが失敗しました。
61* **finished**: コンパイルが完了し、結果を見るには `result` をチェックする必要があります。
62* **queued**: キーマップはコンパイルサーバが利用可能になるのを待っています。
63* **running**: コンパイルが進行中で、まもなく完了するはずです。
64* **unknown**: 深刻なエラーが発生し、[バグを報告](https://github.com/qmk/qmk_compiler/issues)する必要があります。
65
66## 完了した結果を検証
67
68コンパイルジョブが完了したら、`result` キーをチェックします。このキーの値は幾つかの情報を含むハッシュです:
69
70* `firmware_binary_url`: 書き込み可能なファームウェアの URL のリスト
71* `firmware_keymap_url`: `keymap.c` の URL のリスト
72* `firmware_source_url`: ファームウェアの完全なソースコードの URL のリスト
73* `output`: このコンパイルジョブの stdout と stderr。エラーはここで見つけることができます。
diff --git a/docs/ja/api_overview.md b/docs/ja/api_overview.md
new file mode 100644
index 000000000..e563bdd10
--- /dev/null
+++ b/docs/ja/api_overview.md
@@ -0,0 +1,20 @@
1# QMK API
2
3<!---
4 original document: 0.13.15:docs/api_overview.md
5 git diff 0.13.15 HEAD -- docs/api_overview.md | cat
6-->
7
8QMK API は、Web と GUI ツールが [QMK](https://qmk.fm/) によってサポートされるキーボード用の任意のキーマップをコンパイルするために使うことができる、非同期 API を提供します。標準のキーマップテンプレートは、C コードのサポートを必要としない全ての QMK キーコードをサポートします。キーボードのメンテナは独自のカスタムテンプレートを提供して、より多くの機能を実現することができます。
9
10## アプリケーション開発者
11
12もしあなたがアプリケーションでこの API を使うことに興味があるアプリケーション開発者であれば、[API の使用](ja/api_docs.md) に行くべきです。
13
14## キーボードのメンテナ
15
16もし QMK Compiler API でのあなたのキーボードのサポートを強化したい場合は、[キーボードサポート](ja/reference_configurator_support.md) の節に行くべきです。
17
18## バックエンド開発者
19
20もし API 自体に取り組むことに興味がある場合は、[開発環境](ja/api_development_environment.md)のセットアップから始め、それから [API のハッキング](ja/api_development_overview.md) を調べるべきです。
diff --git a/docs/ja/arm_debugging.md b/docs/ja/arm_debugging.md
new file mode 100644
index 000000000..afb5c4e0e
--- /dev/null
+++ b/docs/ja/arm_debugging.md
@@ -0,0 +1,92 @@
1# Eclipse を使った ARM デバッグ
2
3<!---
4 original document: 0.8.58:docs/arm_debugging.md
5 git diff 0.8.58 HEAD -- docs/arm_debugging.md | cat
6-->
7
8このページでは、SWD アダプタとオープンソース/フリーツールを使って ARM MCU をデバッグするためのセットアップ方法について説明します。このガイドでは、GNU MCU Eclipse IDE for C/C++ Developers および OpenOCD を必要な依存関係と一緒にインストールします。
9
10このガイドは上級者向けであり、あなたのマシンで、MAKE フローを使って、ARM 互換キーボードをコンパイルできることを前提にしています。
11
12## ソフトウェアのインストール
13
14ここでの主な目的は MCU Eclipse IDE を正しくマシンにインストールすることです。必要な手順は[この](https://gnu-mcu-eclipse.github.io/install/)インストールガイドから派生しています。
15
16### xPack マネージャ
17
18このツールはソフトウェアパッケージマネージャであり、必要な依存関係を取得するために使われます。
19
20XPM は Node.js を使って実行されるため、[ここ](https://nodejs.org/en/)から取得してください。インストール後に、ターミナルを開き `npm -v` と入力します。バージョン番号が返ってくるとインストールは成功です。
21
22XPM のインストール手順は[ここ](https://www.npmjs.com/package/xpm)で見つけることができ、OS 固有のものです。ターミナルに `xpm --version` と入力すると、ソフトウェアのバージョンが返ってくるはずです。
23
24### ARM ツールチェーン
25
26XPM を使うと、ARM ツールチェーンをとても簡単にインストールできます。`xpm install --global @xpack-dev-tools/arm-none-eabi-gcc` とコマンドを入力します。
27
28### Windows ビルドツール
29
30Windows を使っている場合は、これをインストールする必要があります!
31
32`xpm install --global @gnu-mcu-eclipse/windows-build-tools`
33
34### プログラマ/デバッガドライバ
35
36プログラマのドライバをインストールします。このチュートリアルはほとんどどこでも入手できる ST-Link v2 を使って作成されました。
37ST-Link を持っている場合は、ドライバは[ここ](https://www.st.com/en/development-tools/stsw-link009.html)で見つけることができます。そうでない場合はツールの製造元にお問い合わせください。
38
39### OpenOCD
40
41この依存関係により、SWD は GDB からアクセスでき、デバッグに不可欠です。`xpm install --global @xpack-dev-tools/openocd` を実行します。
42
43### Java
44
45Java は Eclipse で必要とされるため、[ここ](https://www.oracle.com/technetwork/java/javase/downloads/index.html)からダウンロードしてください。
46
47### GNU MCU Eclipse IDE
48
49最後に IDE をインストールする番です。[ここ](https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases/)のリリースページから最新バージョンを取得します。
50
51## Eclipse の設定
52
53ダウンロードした Eclipse IDE を開きます。QMK ディレクトリをインポートするために、File -> Import -> C/C++ -> Existing Code as Makefile Project を選択します。Next を選択し、Browse を使用して QMK フォルダを選択します。tool-chain リストから ARM Cross GCC を選択し、Finish を選択します。
54
55これで、左側に QMK フォルダが表示されます。右クリックして、Properties を選択します。左側で MCU を展開し、ARM Toolchains Paths を選択します。xPack を押して OK を押します。OpenOCD Path で同じことを繰り返し、Windows の場合は、Build Tools Path でも同じことを繰り返します。Apply and Close を選択します。
56
57ここで、必要な MCU パッケージをインストールします。Window -> Perspective -> Open Perspective -> Other... -> Packs を選択して、Packs perspective に移動します。Packs タブの横にある黄色のリフレッシュ記号を選択します。これは様々な場所から MCU の定義を要求するため、時間が掛かります。一部のリンクが失敗した場合は、おそらく Ignore を選択できます。
58
59これが終了すると、ビルドやデバッグする MCU を見つけることができるはずです。この例では、STM32F3 シリーズの MCU を使います。左側で、STMicroelectronics -> STM32F3 Series を選択します。中央のウィンドウに、pack が表示されます。右クリックし、Install を選択します。それが終了したら、Window -> Perspective -> Open Perspective -> Other... -> C/C++ を選択してデフォルトのパースペクティブに戻ることができます。
60
61Eclipse に QMK をビルドしようとするデバイスを教える必要があります。QMK フォルダを右クリック -> Properties -> C/C++ Build -> Settings を選択します。Devices タブを選択し、Devices の下から MCU の適切な種類を選択します。私の例では、STM32F303CC です。
62
63この間に、Build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。Build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
64
65## ビルド
66
67全て正しくセットアップできていれば、ハンマーボタンを押すとファームウェアがビルドされ、.bin ファイルが出力されるはずです。
68
69## デバッグ
70
71### デバッガの接続
72
73ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCU を完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
74
75注意: SWCLK と SWDIO ピンがキーボードのマトリックスで使われていないことを確認してください。もし使われている場合は、一時的に他のピンに切り替えることができます。
76
77### デバッガの設定
78
79QMK フォルダを右クリックし、Debug As -> Debug Configurations... を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは `stm32f3discovery.cfg` と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
80
81注意: 私の場合、この設定スクリプトはリセット操作を無効にするために編集が必要です。スクリプトの場所は、通常はパス `openocd/version/.content/scripts/board` の下の実際の実行可能フィールドの中で見つかります。ここで、私は `reset_config srst_only` を `reset_config none` に編集しました。
82
83Apply and Close を選択します。
84
85### デバッガの実行
86
87キーボードをリセットしてください。
88
89虫アイコンをクリックし、もし全てうまく行けば Debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止し、Play ボタンが押されるのを待ちます。全てのデバッガのほとんどの機能は Arm MCU で動作しますが、正確な詳細については Google があなたのお友達です!
90
91
92ハッピーデバッギング!
diff --git a/docs/ja/breaking_changes.md b/docs/ja/breaking_changes.md
new file mode 100644
index 000000000..35f583789
--- /dev/null
+++ b/docs/ja/breaking_changes.md
@@ -0,0 +1,120 @@
1# Breaking changes/互換性を破る変更
2
3<!---
4 grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
5 original document: 0.10.33:docs/breaking_changes.md
6 git diff 0.10.33 HEAD -- docs/breaking_changes.md | cat
7-->
8
9このドキュメントは QMK の互換性を破る変更(Breaking change) のプロセスについて説明します。
10互換性を破る変更とは、互換性がなかったり潜在的な危険が生じるように QMK の動作を変える変更を指します。
11ユーザが QMK ツリーを更新しても自分のキーマップが壊れない事を確信できるように、これらの変更を制限します。(訳注:以後、原文のまま Breaking change を用語として使用します。)
12
13Breaking change ピリオドとは、危険な変更、または予想外の変更を QMK へ行なう PR をマージする時のことです。
14付随するテスト期間があるため、問題が起きることはまれか、有りえないと確信しています。
15
16## 過去の Breaking change には何が含まれますか?
17
18* [2020年8月29日](ja/ChangeLog/20200829.md)
19* [2020年5月30日](ja/ChangeLog/20200530.md)
20* [2020年2月29日](ja/ChangeLog/20200229.md)
21* [2019年8月30日](ja/ChangeLog/20190830.md)
22
23## 次の Breaking change はいつですか?
24
25次の Breaking change は2020年11月28日に予定されています。
26
27### 重要な日付
28
29* [x] 2020年 8月29日 - `develop` が作成されました。毎週リベースされます。
30* [ ] 2020年10月31日 - `develop` は新しいPRを取り込みません。
31* [ ] 2020年10月31日 - テスターの募集。
32* [ ] 2020年11月26日 - `master`がロックされ、PR はマージされません。
33* [ ] 2020年11月28日 - `develop` を `master` にマージします。
34* [ ] 2020年11月28日 - `master` のロックが解除されます。PR を再びマージすることができます。
35
36## どのような変更が含まれますか?
37
38最新の Breaking change 候補を見るには、[`breaking_change` ラベル](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr)を参照してください。
39現在から `develop` が閉じられるまでの間に新しい変更が追加される可能性があり、そのラベルが適用された PR はマージされることは保証されていません。
40
41このラウンドに、あなたの Breaking change を含めたい場合は、`breaking_change` ラベルを持つ PR を作成し、`develop` が閉じる前に承認してもらう必要があります。
42`develop` が閉じた後は、新しい Breaking change は受け付けられません。
43
44受け入れの基準:
45
46* PR が完了し、マージの準備ができている
47* PR が ChangeLog を持つ
48
49# チェックリスト
50
51ここでは、Breaking change プロセスを実行する時に使用する様々なプロセスについて説明します。
52
53## `master` から `develop` をリベースします
54
55これは `develop` が開いている間、毎週金曜日に実行されます。
56
57プロセス:
58
59```
60cd qmk_firmware
61git checkout master
62git pull --ff-only
63git checkout develop
64git rebase master
65git push --force
66```
67
68## `develop` ブランチの作成
69
70以前の `develop` ブランチがマージされた直後に、これが発生します。
71
72* `qmk_firmware` git commands
73 * [ ] `git checkout master`
74 * [ ] `git pull --ff-only`
75 * [ ] `git checkout -b develop`
76 * [ ] Edit `readme.md`
77 * [ ] これがテストブランチであることを上部に大きな通知で追加します。
78 * [ ] このドキュメントへのリンクを含めます
79 * [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
80 * [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
81 * [ ] `git tag <next_version>` # ブレーキング ポイント タグがバージョンの増分を混乱させないようにします
82 * [ ] `git push origin develop`
83 * [ ] `git push --tags`
84
85## マージの 4 週間前
86
87* `develop` は新しい PR に対して閉じられ、現在の PR の修正のみがマージされる可能性があります。
88* テスターの呼び出しを投稿します
89 * [ ] Discord
90 * [ ] GitHub PR
91 * [ ] https://reddit.com/r/olkb
92
93## マージの 1 週間前
94
95* master が < 2 日前> から <マージの日> まで閉じられることを発表します
96 * [ ] Discord
97 * [ ] GitHub PR
98 * [ ] https://reddit.com/r/olkb
99
100## マージの 2 日前
101
102* master が 2 日間閉じられることを発表します
103 * [ ] Discord
104 * [ ] GitHub PR
105 * [ ] https://reddit.com/r/olkb
106
107## マージの日
108
109* `qmk_firmware` git commands
110 * [ ] `git checkout develop`
111 * [ ] `git pull --ff-only`
112 * [ ] `git rebase origin/master`
113 * [ ] Edit `readme.md`
114 * [ ] `develop` についてのメモを削除
115 * [ ] ChangeLog を 1 つのファイルにまとめます。
116 * [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
117 * [ ] `git push origin develop`
118* GitHub Actions
119 * [ ] `develop`の PR を作成します
120 * [ ] `develop` PR をマージします
diff --git a/docs/ja/breaking_changes_instructions.md b/docs/ja/breaking_changes_instructions.md
new file mode 100644
index 000000000..69d17d73c
--- /dev/null
+++ b/docs/ja/breaking_changes_instructions.md
@@ -0,0 +1,51 @@
1# breaking changes/互換性を破る変更: プルリクエストにフラグが付けられた
2
3<!---
4 grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
5 original document: 0.9.0:docs/breaking_changes_instructions.md
6 git diff 0.9.0 HEAD -- docs/breaking_changes_instructions.md | cat
7-->
8
9QMK のメンバーがあなたのプルリクエストに返信し、あなたの提出したものは Breaking change (互換性を破る変更) であると述べている場合があります。メンバーの判断では、あなたが提案した変更は QMK やその利用者にとってより大きな影響を持つと考えられます。
10
11プルリクエストにフラグが立てられる原因となるものには、以下のようなものがあります:
12
13- **ユーザーのキーマップに対する編集**
14 ユーザーが自分のキーマップを QMK に提出した後、しばらくしてさらに更新してプルリクエストを開いたところ、それが `qmk/qmk_firmware` リポジトリで編集されていたためにマージできなかったことに気づくことがあるかもしれません。すべてのユーザーが Git や GitHub を使いこなせるわけではないので、ユーザー自身で問題を修正できないことに気づくかもしれません。
15- **期待される動作の変更**
16 QMK の動作を変更すると、既存の QMK 機能への変更を組み込んだ新しいファームウェアをフラッシュした場合、ユーザはハードウェアまたは QMK が壊れていると考え、希望する動作を復元する手段がないことに気付くことがあります。
17- **ユーザーのアクションを必要とする変更**
18 変更には、ツールチェインを更新したり、Git で何らかのアクションを取るなど、ユーザーがアクションを行う必要がある場合もあります。
19- **精査が必要な変更**
20 時には、投稿がプロジェクトとしての QMK に影響を与えることもあります。これは、著作権やライセンスの問題、コーディング規約、大規模な機能のオーバーホール、コミュニティによるより広範なテストを必要とする「リスクの高い」変更、あるいは全く別のものである可能性があります。
21- **エンドユーザーとのコミュニケーションを必要とする変更**
22 これには、将来の非推奨化への警告、時代遅れの慣習、その他伝えなければならないが上記のカテゴリのどれかに当てはまらないものが含まれます。
23
24## 何をすればいいのか?
25
26提出したものが Breaking change だと判断された場合、手続きをスムーズに進めるためにできることがいくつかあります。
27
28### PR を分割することを検討する
29
30あなたがコアコードを投稿していて、それが Breaking change プロセスを経る必要がある唯一の理由が、あなたの変更に合わせてキーマップを更新していることである場合、古いキーマップが機能し続けるような方法であなたの機能を投稿できるかどうかを検討してください。
31そののち、Breaking change プロセスを経て古いコードを削除する別の PR を提出してください。
32
33### ChangeLog エントリの提供
34
35Breaking change プロセスを経て提出する際には、変更ログのエントリを含めることを我々は要請します。
36エントリーは、あなたのプルリクエストが行う変更の短い要約としてください &ndash; [ここの各セクションは changelog として開始されました](ja/ChangeLog/20190830.md "n.b. This should link to the 2019 Aug 30 Breaking Changes doc - @noroadsleft")。
37
38変更ログは `docs/ChangeLog/YYYYMMDD/PR####.md` に置いてください。
39ここで、`YYYYMMDD` は QMK の breaking change ブランチ &ndash; 通常は `develop` という名称 &ndash; が `master` ブランチにマージされる日付、`####` はプルリクエストの番号です。
40
41ユーザー側でのアクションを必要とする場合、あなたの変更ログは、どのようなアクションを取らなければならないかをユーザーに指示するか、そのようなアクションを指示する場所にリンクする必要があります。
42
43### 変更点を文書化する
44
45提出物の目的を理解し、それが必要とする可能性のある意味合いやアクションを理解することで、レビュープロセスをより簡単にすることができます。この目的のためには変更履歴で十分かもしれませんが、より広範囲の変更を行う場合には、変更履歴には不向きな詳細レベルが必要になるかもしれません。
46
47あなたのプルリクエストにコメントしたり、質問やコメント、変更要求に対応したりすることは、非常にありがたいことです。
48
49### 助けを求める
50
51あなたの提出物にフラグが立ったことで、あなたはびっくりしてしまったかもしれません。もし、あなた自身が脅されたり、圧倒されたりしていると感じたら、私たちに知らせてください。プルリクエストにコメントするか、[Discord で QMK チームに連絡を取ってください](https://discord.gg/Uq7gcHh)。
diff --git a/docs/ja/cli.md b/docs/ja/cli.md
new file mode 100644
index 000000000..9e8169a84
--- /dev/null
+++ b/docs/ja/cli.md
@@ -0,0 +1,43 @@
1# QMK CLI :id=qmk-cli
2
3<!---
4 original document: 0.9.19:docs/cli.md
5 git diff 0.9.19 HEAD -- docs/cli.md | cat
6-->
7
8## 概要 :id=overview
9
10QMK CLI を使用すると QMK キーボードの構築と作業が簡単になります。QMK ファームウェアの取得とコンパイル、キーマップの作成などのようなタスクを簡素化し合理化するためのコマンドを多く提供します。
11
12### 必要事項 :id=requirements
13
14QMK は Python 3.6 以上を必要とします。我々は必要事項の数を少なくしようとしていますが、[`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt) に列挙されているパッケージもインストールする必要があります。これらは QMK CLI をインストールするときに自動的にインストールされます。
15
16### Homebrew を使ったインストール (macOS、いくつかの Linux) :id=install-using-homebrew
17
18[Homebrew](https://brew.sh) をインストールしている場合は、タップして QMK をインストールすることができます:
19
20```
21brew install qmk/qmk/qmk
22export QMK_HOME='~/qmk_firmware' # オプション、`qmk_firmware` の場所を設定します
23qmk setup # これは `qmk/qmk_firmware` をクローンし、オプションでビルド環境をセットアップします
24```
25
26### pip を使ってインストール :id=install-using-easy_install-or-pip
27
28上で列挙した中にあなたのシステムがない場合は、QMK を手動でインストールすることができます。最初に、python 3.6 (以降)をインストールしていて、pip をインストールしていることを確認してください。次に以下のコマンドを使って QMK をインストールします:
29
30```
31python3 -m pip install qmk
32export QMK_HOME='~/qmk_firmware' # オプション、`qmk_firmware` の場所を設定します
33qmk setup # これは `qmk/qmk_firmware` をクローンし、オプションでビルド環境をセットアップします
34```
35
36### 他のオペレーティングシステムのためのパッケージ :id=packaging-for-other-operating-systems
37
38より多くのオペレーティングシステム用に `qmk` パッケージを作成および保守する人を探しています。OS 用のパッケージを作成する場合は、以下のガイドラインに従ってください:
39
40* これらのガイドラインと矛盾する場合は、OS のベストプラクティスに従ってください
41 * 逸脱する場合は、理由をコメントに文章化してください。
42* virtualenv を使ってインストールしてください
43* 環境変数 `QMK_HOME` を設定して、ファームウェアソースを `~/qmk_firmware` 以外のどこかにチェックアウトするようにユーザに指示してください。
diff --git a/docs/ja/cli_commands.md b/docs/ja/cli_commands.md
new file mode 100644
index 000000000..35937dbbc
--- /dev/null
+++ b/docs/ja/cli_commands.md
@@ -0,0 +1,296 @@
1# QMK CLI コマンド
2
3<!---
4 original document: 0.9.19:docs/cli_command.md
5 git diff 0.9.19 HEAD -- docs/cli_command.md | cat
6-->
7
8# ユーザー用コマンド
9
10## `qmk compile`
11
12このコマンドにより、任意のディレクトリからファームウェアをコンパイルすることができます。<https://config.qmk.fm> からエクスポートした JSON をコンパイルするか、リポジトリ内でキーマップをコンパイルするか、現在の作業ディレクトリでキーボードをコンパイルすることができます。
13
14このコマンドはディレクトリを認識します。キーボードやキーマップのディレクトリにいる場合、自動的に KEYBOARD や KEYMAP を入力します。
15
16**Configurator Exports での使い方**:
17
18```
19qmk compile <configuratorExport.json>
20```
21
22**キーマップでの使い方**:
23
24```
25qmk compile -kb <keyboard_name> -km <keymap_name>
26```
27
28**キーボードディレクトリでの使い方**:
29
30default キーマップのあるキーボードディレクトリ、キーボードのキーマップディレクトリ、`--keymap <keymap_name>` で与えられるキーマップディレクトリにいなければなりません。
31```
32qmk compile
33```
34
35**指定したキーマップをサポートする全てのキーボードをビルドする場合の使い方**:
36
37```
38qmk compile -kb all -km <keymap_name>
39```
40
41**例**:
42```
43$ qmk config compile.keymap=default
44$ cd ~/qmk_firmware/keyboards/planck/rev6
45$ qmk compile
46Ψ Compiling keymap with make planck/rev6:default
47...
48```
49あるいはオプションのキーマップ引数を指定して
50
51```
52$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
53$ qmk compile -km 66_iso
54Ψ Compiling keymap with make clueboard/66/rev4:66_iso
55...
56```
57あるいはキーマップディレクトリで
58
59```
60$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
61$ qmk compile
62Ψ Compiling keymap with make make gh60/satan:colemak
63...
64```
65
66**レイアウトディレクトリでの使い方**:
67
68`qmk_firmware/layouts/` 以下のキーマップディレクトリにいなければなりません。
69```
70qmk compile -kb <keyboard_name>
71```
72
73**例**:
74```
75$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi
76$ qmk compile -kb dz60
77Ψ Compiling keymap with make dz60:mechmerlin-ansi
78...
79```
80
81## `qmk flash`
82
83このコマンドは `qmk compile` に似ていますが、ブートローダを対象にすることもできます。ブートローダはオプションで、デフォルトでは `:flash` に設定されています。
84違うブートローダを指定するには、`-bl <bootloader>` を使ってください。利用可能なブートローダの詳細については、[ファームウェアを書き込む](ja/flashing.md)を見てください。
85
86このコマンドはディレクトリを認識します。キーボードやキーマップのディレクトリにいる場合、自動的に KEYBOARD や KEYMAP を入力します。
87
88**Configurator Exports での使い方**:
89
90```
91qmk flash <configuratorExport.json> -bl <bootloader>
92```
93
94**キーマップでの使い方**:
95
96```
97qmk flash -kb <keyboard_name> -km <keymap_name> -bl <bootloader>
98```
99
100**ブートローダの列挙**
101
102```
103qmk flash -b
104```
105
106## `qmk config`
107
108このコマンドにより QMK の挙動を設定することができます。完全な `qmk config` のドキュメントについては、[CLI 設定](ja/cli_configuration.md)を見てください。
109
110**使用法**:
111
112```
113qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
114```
115
116## `qmk doctor`
117
118このコマンドは環境を調査し、潜在的なビルドあるいは書き込みの問題について警告します。必要に応じてそれらの多くを修正できます。
119
120**使用法**:
121
122```
123qmk doctor [-y] [-n]
124```
125
126**例**:
127
128環境に問題がないか確認し、それらを修正するよう促します:
129
130 qmk doctor
131
132環境を確認し、見つかった問題を自動的に修正します:
133
134 qmk doctor -y
135
136環境を確認し、問題のみをレポートします:
137
138 qmk doctor -n
139
140## `qmk info`
141
142QMK のキーボードやキーマップに関する情報を表示します。キーボードに関する情報を取得したり、レイアウトを表示したり、基礎となるキーマトリックスを表示したり、JSON キーマップをきれいに印刷したりするのに使用できます。
143
144**使用法**:
145
146```
147qmk info [-f FORMAT] [-m] [-l] [-km KEYMAP] [-kb KEYBOARD]
148```
149
150このコマンドはディレクトリを認識します。キーボードやキーマップのディレクトリにいる場合、自動的に KEYBOARD や KEYMAP を入力します。
151
152**例**:
153
154キーボードの基本情報を表示する:
155
156 qmk info -kb planck/rev5
157
158キーボードのマトリクスを表示する:
159
160 qmk info -kb ergodox_ez -m
161
162キーボードの JSON キーマップを表示する:
163
164 qmk info -kb clueboard/california -km default
165
166## `qmk json2c`
167
168QMK Configurator からエクスポートしたものから keymap.c を生成します。
169
170**使用法**:
171
172```
173qmk json2c [-o OUTPUT] filename
174```
175
176## `qmk list-keyboards`
177
178このコマンドは現在 `qmk_firmware` で定義されている全てのキーボードを列挙します。
179
180**使用法**:
181
182```
183qmk list-keyboards
184```
185
186## `qmk list-keymaps`
187
188このコマンドは指定されたキーボード(とリビジョン)の全てのキーマップを列挙します。
189
190このコマンドはディレクトリを認識します。キーボードのディレクトリにいる場合、自動的に KEYBOARD を入力します。
191
192**使用法**:
193
194```
195qmk list-keymaps -kb planck/ez
196```
197
198## `qmk new-keymap`
199
200このコマンドは、キーボードの既存のデフォルトのキーマップに基づいて新しいキーマップを作成します。
201
202このコマンドはディレクトリを認識します。キーボードやキーマップのディレクトリにいる場合、自動的に KEYBOARD や KEYMAP を入力します。
203
204**使用法**:
205
206```
207qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
208```
209
210---
211
212# 開発者用コマンド
213
214## `qmk format-c`
215
216このコマンドは clang-format を使って C コードを整形します。
217
218引数無しで実行すると、変更された全てのコアコードを整形します。デフォルトでは `git diff` で `origin/master` をチェックし、ブランチは `-b <branch_name>` を使って変更できます。
219
220`-a` で全てのコアコードを整形するか、コマンドラインでファイル名を渡して特定のファイルに対して実行します。
221
222**指定したファイルに対する使い方**:
223
224```
225qmk format-c [file1] [file2] [...] [fileN]
226```
227
228**全てのコアファイルに対する使い方**:
229
230```
231qmk format-c -a
232```
233
234**origin/master で変更されたファイルのみに対する使い方**:
235
236```
237qmk format-c
238```
239
240**branch_name で変更されたファイルのみに対する使い方**:
241
242```
243qmk format-c -b branch_name
244```
245
246## `qmk docs`
247
248このコマンドは、ドキュメントを参照または改善するために使うことができるローカル HTTP サーバを起動します。デフォルトのポートは 8936 です。
249
250**使用法**:
251
252```
253qmk docs [-p PORT]
254```
255
256## `qmk kle2json`
257
258このコマンドにより、生の KLE データから QMK Configurator の JSON へ変換することができます。絶対パスあるいは現在のディレクトリ内のファイル名のいずれかを受け取ります。デフォルトでは、`info.json` が既に存在している場合は上書きしません。上書きするには、`-f` あるいは `--force` フラグを使ってください。
259
260**使用法**:
261
262```
263qmk kle2json [-f] <filename>
264```
265
266**例**:
267
268```
269$ qmk kle2json kle.txt
270☒ File info.json already exists, use -f or --force to overwrite.
271```
272
273```
274$ qmk kle2json -f kle.txt -f
275Ψ Wrote out to info.json
276```
277
278## `qmk format-py`
279
280このコマンドは `qmk_firmware` 内の python コードを整形します。
281
282**使用法**:
283
284```
285qmk format-py
286```
287
288## `qmk pytest`
289
290このコマンドは python のテストスィートを実行します。python コードに変更を加えた場合、これの実行が成功することを確認する必要があります。
291
292**使用法**:
293
294```
295qmk pytest
296```
diff --git a/docs/ja/cli_configuration.md b/docs/ja/cli_configuration.md
new file mode 100644
index 000000000..6ed791b47
--- /dev/null
+++ b/docs/ja/cli_configuration.md
@@ -0,0 +1,126 @@
1# QMK CLI 設定
2
3<!---
4 original document: 0.9.0:docs/cli_configuration.md
5 git diff 0.9.0 HEAD -- docs/cli_configuration.md | cat
6-->
7
8このドキュメントは `qmk config` がどのように動作するかを説明します。
9
10# はじめに
11
12QMK CLI の設定はキーバリューシステムです。各キーはピリオドで区切られたサブコマンドと引数名で構成されます。これにより、設定キーと設定された引数の間で簡単かつ直接的な変換が可能になります。
13
14## 簡単な例
15
16例として、`qmk compile --keyboard clueboard/66/rev4 --keymap default` コマンドを見てみましょう。
17
18設定から読み取ることができる2つのコマンドライン引数があります:
19
20* `compile.keyboard`
21* `compile.keymap`
22
23これらを設定してみましょう:
24
25```
26$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
27compile.keyboard: None -> clueboard/66/rev4
28compile.keymap: None -> default
29Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
30```
31
32これで、毎回キーボードとキーマップを設定することなく、`qmk compile` を実行することができます。
33
34## ユーザデフォルトの設定
35
36複数のコマンド間で設定を共有したい場合があります。例えば、いくつかのコマンドは引数 `--keyboard` を受け取ります。全てのコマンドでこの値を設定する代わりに、その引数を受け取る全てのコマンドで使われるユーザ値を設定することができます。
37
38例:
39
40```
41$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
42user.keyboard: None -> clueboard/66/rev4
43user.keymap: None -> default
44Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
45```
46
47# CLI ドキュメント (`qmk config`)
48
49`qmk config` コマンドは基礎となる設定とやり取りするために使われます。引数無しで実行すると、現在の設定を表示します。引数が指定された場合、それらは設定トークンと見なされます。設定トークンは以下の形式の空白を含まない文字列です:
50
51 <subcommand|general|default>[.<key>][=<value>]
52
53## 設定値の設定
54
55設定キーに等号 (=) を入れることで、設定値を設定することができます。キーは常に完全な `<section>.<key>` 形式である必要があります。
56
57例:
58
59```
60$ qmk config default.keymap=default
61default.keymap: None -> default
62Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
63```
64
65## 設定値の読み込み
66
67設定全体、単一のキー、あるいはセクション全体の設定値を読み取ることができます。1つ以上の値を表示するために複数のキーを指定することができます。
68
69### 全体の構成例
70
71 qmk config
72
73### セクション全体の例
74
75 qmk config compile
76
77### 単一キーの例 :id=single-key-example
78
79 qmk config compile.keyboard
80
81### 複数キーの例
82
83 qmk config user compile.keyboard compile.keymap
84
85## 設定値の削除
86
87設定値を特別な文字列 `None` に設定することで、設定値を削除することができます。
88
89例:
90
91```
92$ qmk config default.keymap=None
93default.keymap: default -> None
94Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
95```
96
97## 複数の操作
98
99複数の読み込みおよび書き込み操作を1つのコマンドに組み合わせることができます。それらは順番に実行および表示されます:
100
101```
102$ qmk config compile default.keymap=default compile.keymap=None
103compile.keymap=skully
104compile.keyboard=clueboard/66_hotswap/gen1
105default.keymap: None -> default
106compile.keymap: skully -> None
107Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
108```
109
110# ユーザ設定オプション
111
112| キー | デフォルト値 | 説明 |
113|-----|---------------|-------------|
114| user.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
115| user.keymap | None | キーマップ名 (例: `default`) |
116| user.name | None | ユーザの GitHub のユーザ名。 |
117
118# 全ての設定オプション
119
120| キー | デフォルト値 | 説明 |
121|-----|---------------|-------------|
122| compile.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
123| compile.keymap | None | キーマップ名 (例: `default`) |
124| hello.name | None | 実行時の挨拶の名前 |
125| new_keyboard.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
126| new_keyboard.keymap | None | キーマップ名 (例: `default`) |
diff --git a/docs/ja/cli_development.md b/docs/ja/cli_development.md
new file mode 100644
index 000000000..28cdd91c1
--- /dev/null
+++ b/docs/ja/cli_development.md
@@ -0,0 +1,223 @@
1# QMK CLI 開発
2
3<!---
4 original document: 0.9.19:docs/cli_development.md
5 git diff 0.9.19 HEAD -- docs/cli_development.md | cat
6-->
7
8このドキュメントは、新しい `qmk` サブコマンドを書きたい開発者に役立つ情報が含まれています。
9
10# 概要
11
12QMK CLI は git で有名になったサブコマンドパターンを使って動作します。メインの `qmk` スクリプトは単に環境をセットアップし、実行する正しいエントリポイントを選択するためにあります。各サブコマンドは、何らかのアクションを実行しシェルのリターンコード、または None を返すエントリーポイント (`@cli.subcommand()` で修飾されます)を備えた自己完結型のモジュールです。
13
14## 開発者モード:
15
16キーボードを保守、あるいは QMK に貢献したい場合は、CLI の「開発者」モードを有効にすることができます:
17
18`qmk config user.developer=True`
19
20これにより利用可能な全てのサブコマンドが表示されます。
21**注意:** 追加で必要なものをインストールする必要があります:
22```bash
23python3 -m pip install -r requirements-dev.txt
24```
25
26# サブコマンド
27
28[MILC](https://github.com/clueboard/milc) は、`qmk` が引数の解析、設定、ログ、およびほかの多くの機能を処理するために使用する CLI フレームワークです。グルーコードを書くために時間を無駄にすることなく、ツールの作成に集中できます。
29
30ローカル CLI 内のサブコマンドは、常に `qmk_firmware/lib/python/qmk/cli` で見つかります。
31
32サブコマンドの例を見てみましょう。これは `lib/python/qmk/cli/hello.py` です:
33
34```python
35"""QMK Python Hello World
36
37This is an example QMK CLI script.
38"""
39from milc import cli
40
41
42@cli.argument('-n', '--name', default='World', help='Name to greet.')
43@cli.subcommand('QMK Hello World.')
44def hello(cli):
45 """Log a friendly greeting.
46 """
47 cli.log.info('Hello, %s!', cli.config.hello.name)
48```
49
50最初に `milc` から `cli` をインポートします。これが、ユーザとやり取りをし、スクリプトの挙動を制御する方法です。`@cli.argument()` を使って、コマンドラインフラグ `--name` を定義します。これは、ユーザが設定できる `hello.name` (そして対応する `user.name`) という名前の設定変数も作成し、引数を指定する必要が無くなります。`cli.subcommand()` デコレータは、この関数をサブコマンドとして指定します。サブコマンドの名前は関数の名前から取られます。
51
52関数の中に入ると、典型的な "Hello, World!" プログラムが見つかります。`cli.log` を使って、基礎となる [ロガーオブジェクト](https://docs.python.org/3.6/library/logging.html#logger-objects) にアクセスし、その挙動はユーザが制御できます。またユーザが指定した名前の値に `cli.config.hello.name` でアクセスします。`cli.config.hello.name` の値は、ユーザが指定した `--name` 引数を調べることで決定されます。指定されていない場合、`qmk.ini` 設定ファイルの中の値が使われ、どちらも指定されていない場合は `cli.argument()` デコレータで指定されたデフォルトが代用されます。
53
54# ユーザとの対話処理
55
56MILC と QMK CLI にはユーザとやり取りするための幾つかの便利なツールがあります。これらの標準ツールを使うと、テキストに色を付けて対話し易くし、ユーザはその情報をいつどのように表示および保存するかを制御することができます。
57
58## テキストの表示
59
60サブコマンド内でテキストを出力するための2つの主な方法があります- `cli.log` と `cli.echo()`。それらは似た方法で動作しますが、ほとんどの一般的な目的の出力には `cli.log.info()` を使うことをお勧めします。
61
62特別なトークンを使用してテキストを色付けし、プログラムの出力を理解しやすくすることができます。以下の[テキストの色付け](#colorizing-text)を見てください。
63
64これらの両方の方法は python の [printf 形式の文字列書式化](https://docs.python.org/3.6/library/stdtypes.html#old-string-formatting) を使った組み込みの文字列書式化をサポートします。テキスト文字列内で`%s` と `%d` のようなトークンを使い、引数で値を渡すことができます。例として、上記の Hello、World プログラムを見てください。
65
66書式演算子 (`%`) を直接使わないでください、常に引数で値を渡します。
67
68### ログ (`cli.log`)
69
70`cli.log` オブジェクトは[ロガーオブジェクト](https://docs.python.org/3.6/library/logging.html#logger-objects)へのアクセスを与えます。ログ出力を設定し、ユーザに各ログレベルの素敵な絵文字(またはターミナルが unicode をサポートしない場合はログレベル名)を表示します。このようにして、ユーザは何か問題が発生した時に最も重要なメッセージを一目で確認することができます。
71
72デフォルトのログレベルは `INFO` です。ユーザが `qmk -v <subcommand>` を実行すると、デフォルトのログレベルは `DEBUG` に設定されます。
73
74| 関数 | 絵文字 |
75|----------|-------|
76| cli.log.critical | `{bg_red}{fg_white}¬_¬{style_reset_all}` |
77| cli.log.error | `{fg_red}☒{style_reset_all}` |
78| cli.log.warning | `{fg_yellow}⚠{style_reset_all}` |
79| cli.log.info | `{fg_blue}Ψ{style_reset_all}` |
80| cli.log.debug | `{fg_cyan}☐{style_reset_all}` |
81| cli.log.notset | `{style_reset_all}¯\\_(o_o)_/¯` |
82
83### 出力 (`cli.echo`)
84
85場合によっては単にログシステムの外部でテキストを出力する必要があります。これは、固定データを出力したり、ログに記録してはいけない何かを書きだす場合に適しています。ほとんどの場合、`cli.echo` よりも `cli.log.info()` を選ぶべきです。
86
87### テキストの色付け
88
89テキスト内に色トークンを含めることで、テキストの出力を色付けすることができます。情報を伝えるためではなく、強調するために色を使います。ユーザは色を無効にできることを覚えておいてください。色を無効にした場合でもサブコマンドは引き続き使えるようにしてください。
90
91背景色を設定するのは、あなたがやっていることに不可欠ではない限り、通常は避けるべきです。ユーザは、ターミナルの色に関しては多くの好みを持つため、あなたは黒と白のどちらの背景に対してもうまく機能する色を選択する必要があることを覚えておいてください。
92
93'fg' という接頭辞の付いた色は、前景(テキスト)色に影響します。'bg' という接頭辞の付いた色は、背景色に影響します。
94
95| 色 | 背景 | 拡張背景 | 前景 | 拡張前景 |
96|-------|------------|---------------------|------------|--------------------|
97| 黒 | {bg_black} | {bg_lightblack_ex} | {fg_black} | {fg_lightblack_ex} |
98| 青 | {bg_blue} | {bg_lightblue_ex} | {fg_blue} | {fg_lightblue_ex} |
99| シアン | {bg_cyan} | {bg_lightcyan_ex} | {fg_cyan} | {fg_lightcyan_ex} |
100| 緑 | {bg_green} | {bg_lightgreen_ex} | {fg_green} | {fg_lightgreen_ex} |
101| マゼンタ | {bg_magenta} | {bg_lightmagenta_ex} | {fg_magenta} | {fg_lightmagenta_ex} |
102| 赤 | {bg_red} | {bg_lightred_ex} | {fg_red} | {fg_lightred_ex} |
103| 白 | {bg_white} | {bg_lightwhite_ex} | {fg_white} | {fg_lightwhite_ex} |
104| 黄 | {bg_yellow} | {bg_lightyellow_ex} | {fg_yellow} | {fg_lightyellow_ex} |
105
106ANSI 出力の挙動を変更するために使うことができる制御シーケンスもあります。
107
108| 制御シーケンス | 説明 |
109|-------------------|-------------|
110| {style_bright} | テキストを明るくする |
111| {style_dim} | テキストを暗くする |
112| {style_normal} | テキストを通常にする (`{style_bright}` または `{style_dim}` のどちらでもない) |
113| {style_reset_all} | 全てのテキストの属性をデフォルトに再設定する(これは自動的に全ての文字列の最後に自動的に追加されます。) |
114| {bg_reset} | 背景色をユーザのデフォルトに再設定します。 |
115| {fg_reset} | 背景色をユーザのデフォルトに再設定します。 |
116
117# 引数と設定
118
119QMK は引数の解析と設定の詳細をあなたの代わりに処理します。新しい引数を追加すると、サブコマンドの名前と引数の長い名前に基づいて設定ツリーに自動的に組み込まれます。属性形式のアクセス (`cli.config.<subcommand>.<argument>`) あるいは辞書形式のアクセス (`cli.config['<subcommand>']['<argument>']`) を使って、`cli.config` 内のこの設定にアクセスすることができます。
120
121内部では、QMK は [設定ファイルのパーサ](https://docs.python.org/3/library/configparser.html) を使って設定を格納します。これにより、人間が編集可能な方法で設定を表す簡単で分かり易い方法を提供します。この設定へのアクセスをラップして、設定ファイルのパーサーが通常持たない幾つかの機能を提供しています。
122
123## 設定値の読み込み
124
125通常期待される全ての方法で `cli.config` とやり取りすることができます。例えば、`qmk compile` コマンドは `cli.config.compile.keyboard` からキーボード名を取得します。値がコマンドライン、環境変数あるいは設定ファイルからきたものであるかどうかを知る必要はありません。
126
127繰り返しもサポートされます:
128
129```
130for section in cli.config:
131 for key in cli.config[section]:
132 cli.log.info('%s.%s: %s', section, key, cli.config[section][key])
133```
134
135## 設定値の設定
136
137通常の方法で設定値を設定することができます。
138
139辞書形式:
140
141```
142cli.config['<section>']['<key>'] = <value>
143```
144
145属性形式:
146
147```
148cli.config.<section>.<key> = <value>
149```
150
151## 設定値の削除
152
153通常の方法で設定値を削除することができます。
154
155辞書形式:
156
157```
158del(cli.config['<section>']['<key>'])
159```
160
161属性形式:
162
163```
164del(cli.config.<section>.<key>)
165```
166
167## 設定ファイルの書き方
168
169設定は変更しても書き出されません。ほとんどのコマンドでこれをする必要はありません。ユーザに `qmk config` を使って設定を慎重に変更させることをお勧めします。
170
171設定を書き出すために `cli.save_config()` を使うことができます。
172
173## 設定からの引数の除外
174
175一部の引数は設定ファイルに反映すべきではありません。これらは引数を作成する時に `arg_only=True` を追加することで除外することができます。
176
177例:
178
179```
180@cli.argument('-o', '--output', arg_only=True, help='File to write to')
181@cli.argument('filename', arg_only=True, help='Configurator JSON file')
182@cli.subcommand('Create a keymap.c from a QMK Configurator export.')
183def json_keymap(cli):
184 pass
185```
186
187`cli.args` を使ってのみこれらの引数にアクセスすることができます。例えば:
188
189```
190cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.output)
191```
192
193# テスト、リントおよびフォーマット
194
195nose2、flake8 および yapf を使ってコードをテスト、リントおよびフォーマットします。これらのテストを実行するために `pytest` と `format-py` サブコマンドを使うことができます。
196
197### テストとリント
198
199 qmk pytest
200
201### フォーマット
202
203 qmk format-py
204
205## フォーマットの詳細
206
207[yapf](https://github.com/google/yapf) を使ってコードを自動的にフォーマットします。フォーマットの設定は `setup.cfg` の `[yapf]` セクションにあります。
208
209?> ヒント- 多くのエディタは yapf をプラグインとして使って、入力したコードを自動的にフォーマットすることができます。
210
211## テストの詳細
212
213テストは `lib/python/qmk/tests/` にあります。このディレクトリに単体テストと統合テストの両方があります。コードの単体テストと統合テストの両方を書いてほしいですが、一方のみ書く場合は統合テストを優先してください。
214
215PR にテストの包括的なセットが含まれない場合は、次のようなコメントをコードに追加して、他の人が手助けできるようにしてください:
216
217 # TODO(unassigned/<your_github_username>): Write <unit|integration> tests
218
219[nose2](https://nose2.readthedocs.io/en/latest/getting_started.html) を使ってテストを実行します。テスト関数でできることの詳細については、nose2 のドキュメントを参照してください。
220
221## リントの詳細
222
223flake8 を使ってコードをリントします。PR を開く前に、コードは flake8 をパスしなければなりません。これは `qmk pytest` を実行するときにチェックされ、PR を登録したときに CI によってチェックされます。
diff --git a/docs/ja/coding_conventions_c.md b/docs/ja/coding_conventions_c.md
new file mode 100644
index 000000000..c3d2de734
--- /dev/null
+++ b/docs/ja/coding_conventions_c.md
@@ -0,0 +1,63 @@
1# コーディング規約 (C)
2
3<!---
4 original document: 0.13.15:docs/coding_conventions_c.md
5 git diff 0.13.15 HEAD -- docs/coding_conventions_c.md | cat
6-->
7
8私たちのスタイルのほとんどはかなり理解しやすいですが、現時点では完全に一貫しているわけではありません。変更箇所周辺のコードのスタイルと一致させる必要がありますが、そのコードに一貫性が無い場合や不明瞭な場合は以下のガイドラインに従ってください:
9
10* 4つのスペース (ソフトタブ) を使ってインデントします。
11* 修正版 One True Brace Style を使います。
12 * 開き括弧: ブロックを開始する文と同じ行の最後
13 * 閉じ括弧: ブロックを開始した文と同じ字下げ
14 * Else If: 行の先頭に閉じ括弧を置き、次の開き括弧を同じ行の最後に置きます。
15 * 省略可能な括弧: 常に括弧を付け加えます。
16 * 良い: if (condition) { return false; }
17 * 悪い: if (condition) return false;
18* C 形式のコメントの使用を推奨します: `/* */`
19 * コメントを機能を説明するストーリーと考えて下さい。
20 * 特定の決定がなされた理由を充分なコメントで説明してください。
21 * 分かり切ったコメントは書かないでください。
22 * 分かり切ったコメントであるか確信できない場合は、コメントを含めてください。
23* 一般的に、行を折り返さないで、必要なだけ長くすることができます。行を折り返すことを選択した場合は、76列を超えて折り返さないでください。
24* 古い形式のインクルードガード (`#ifndef THIS_FILE_H`、`#define THIS_FILE_H`、...、`#endif`) ではなく、ヘッダファイルの先頭で `#pragma once` を使います。
25* プリプロセッサ if の両方の形式を受け付けます: `#ifdef DEFINED` と `#if defined(DEFINED)`
26 * どちらがいいかわからない場合は、`#if defined(DEFINED)` 形式を使ってください。
27 * 複数の条件 `#if` に移行する場合を除き、既存のコードを別のスタイルに変更しないでください。
28* プリプロセッサディレクティブをインデントする方法(あるいはするかどうか)を決定する時は、以下の事に留意してください:
29 * 一貫性よりも読みやすさが重要です。
30 * ファイルの既存のスタイルに従ってください。ファイルのスタイルが混在している場合は、修正しようとしているセクションに適したスタイルに従ってください。
31 * インデントする時は、ハッシュを行の先頭に置き、`#` と `if` の間に空白を追加します。`#` の後ろに4つスペースを入れて開始します。
32 * 周りの C コードのインデントレベルに従うか、プリプロセッサのディレクティブに独自のインデントレベルを設定することができます。コードの意図を最もよく伝えるスタイルを選択してください。
33
34わかりやすいように例を示します:
35
36```c
37/* Enums for foo */
38enum foo_state {
39 FOO_BAR,
40 FOO_BAZ,
41};
42
43/* Returns a value */
44int foo(void) {
45 if (some_condition) {
46 return FOO_BAR;
47 } else {
48 return -1;
49 }
50}
51```
52
53# clang-format を使った自動整形
54
55[Clang-format](https://clang.llvm.org/docs/ClangFormat.html) は LLVM の一部で、誰もが手動で整形するほど暇ではないため、コードを自動整形することができます。私たちは、上記のコーディング規約のほとんどを適用する設定ファイルを提供しています。空白と改行のみを変更するため、省略可能な括弧は自分で付け加えることを忘れないでください。
56
57Windows で clang-format を入手するには [full LLVM インストーラ](https://llvm.org/builds/)を使い、Ubuntu では `sudo apt install clang-format` を使ってください。
58
59コマンドラインから実行する場合、オプションとして `-style=file` を渡すと、QMK ルートディレクトリ内の .clang-format 設定ファイルを自動的に見つけます。
60
61VSCode を使う場合は、標準の C/C++ プラグインが clang-format をサポートしますが、その他にも [独立した拡張機能](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.ClangFormat) があります。
62
63幾つかのコード (LAYOUT マクロのような)が clang-format によって破壊されるため、これらのファイルで clang-format を実行しないか、整形したくないコードを `// clang-format off` と `// clang-format on` で囲みます。
diff --git a/docs/ja/coding_conventions_python.md b/docs/ja/coding_conventions_python.md
new file mode 100644
index 000000000..d8d4a3150
--- /dev/null
+++ b/docs/ja/coding_conventions_python.md
@@ -0,0 +1,331 @@
1# コーディング規約 (Python)
2
3<!---
4 original document: 0.9.19:docs/coding_conventions_python.md
5 git diff 0.9.19 HEAD -- docs/coding_conventions_python.md | cat
6-->
7
8私たちのスタイルの大部分は PEP8 に従いますが、神経質にならないように幾つかのローカルな変更を加えています。
9
10* サポートされる全てのプラットフォームとの互換性のために、Python 3.6 を対象にしています。
11* 4つのスペース (ソフトタブ) を使ってインデントします
12* 充分なコメントを書くことを推奨します
13 * コメントを機能を説明するストーリーと考えて下さい
14 * 特定の決定がなされた理由を充分なコメントで説明してください。
15 * 分かり切ったコメントは書かないでください
16 * 分かり切ったコメントであるか確信できない場合は、コメントを含めてください。
17* 全ての関数について、役に立つ docstring を必要とします。
18* 一般的に、行を折り返さないで、必要なだけ長くすることができます。行を折り返すことを選択した場合は、76列を超えて折り返さないでください。
19* 私たちの慣習の幾つかは、Python 使いでは無い人にコードベースをより身近にするために、python コミュニティに広まっているものとは競合しています。
20
21# YAPF
22
23コードを整形するために [yapf](https://github.com/google/yapf) を使うことができます。[setup.cfg](setup.cfg) で設定を提供しています。
24
25# インポート
26
27`import ...` や `from ... import ...` をいつ使うかについての厳密なルールはありません。理解しやすさと保守性が究極の目的です。
28
29一般的に、コードを短く理解しやすくするためにモジュールから特定の関数とクラス名をインポートする方が望ましいです。これにより、名前が曖昧になることがあります。代わりにモジュールをインポートするようにします。互換性のあるモジュールをインポートする時を除いて、インポートする時は "as" キーワードを避けるべきです。
30
31インポートは各モジュール1行にする必要があります。標準的な python ルールに従って、インポート文をシステム、サードパーティ、ローカルにグループ化します。
32
33`from foo import *` を使わないでください。代わりにインポートしたいオブジェクトのリストを指定するか、モジュール全体をインポートします。
34
35## インポートの例
36
37良い:
38
39```
40from qmk import effects
41
42effects.echo()
43```
44
45悪い:
46
47```
48from qmk.effects import echo
49
50echo() # echoがどこから来たのかが不明瞭です
51```
52
53良い:
54
55```
56from qmk.keymap import compile_firmware
57
58compile_firmware()
59```
60
61良いですが、上の方がより良いです:
62
63```
64import qmk.keymap
65
66qmk.keymap.compile_firmware()
67```
68
69# 命令文
70
71各行1文としてください。
72
73可能な場合(例えば `if foo: bar`)でも、2つの文を1行にまとめないでください。
74
75# 命名
76
77`module_name`, `package_name`, `ClassName`, `method_name`, `ExceptionName`, `function_name`, `GLOBAL_CONSTANT_NAME`, `global_var_name`, `instance_var_name`, `function_parameter_name`, `local_var_name`.
78
79関数名、変数名 およびファイル名は説明的でなければなりません; 略語を避けます。特に、プロジェクト外の読み手に曖昧あるいは馴染みのない略語を使わず、単語内の文字を削除して略さないでください。
80
81常に .py のファイル名の拡張子を使います。ダッシュを使わないでください。
82
83## 避けるべき名前
84
85* カウンタあるいはイテレータ以外の1文字の名前。try/except 文では例外の識別子として `e` を使うことができます。
86* パッケージ/モジュール名内のダッシュ (`-`)
87* `__double_leading_and_trailing_underscore__` (2つのアンダースコアで始まる名前と終わる名前、Python で予約済み)
88
89# Docstring
90
91docstring の一貫性を維持するために、以下のガイドラインを設定しました。
92
93* マークダウン(Markdown)形式の使用
94* 常に少なくとも1つの改行を含む3つのダブルクォートの docstring を使ってください: `"""\n"""`
95* 最初の行は、関数が行うことの短い (70文字未満) 説明です。
96* docstring が更に必要な場合は、説明と残りの間に空白行を入れます。
97* 開始の3つのダブルクォートと同じインデントレベルでインデント行を始めます
98* 以下で説明する形式を使って全ての関数の引数について記述します
99* Args:、Returns: および Raises: が存在する場合、それらは docstring の最後の3つの要素で、それぞれ空白行で区切られなければなりません。
100
101## 簡単な docstring の例
102
103```
104def my_awesome_function():
105 """1970 Jan 1 00:00 UTC からの秒数を返します。
106 """
107 return int(time.time())
108```
109
110## 複雑な docstring の例
111
112```
113def my_awesome_function():
114 """1970 Jan 1 00:00 UTC からの秒数を返します。
115
116 この関数は常に整数の秒数を返します。
117 """
118 return int(time.time())
119```
120
121## 関数の引数の docstring の例
122
123```
124def my_awesome_function(start=None, offset=0):
125 """1970 Jan 1 00:00 UTC からの秒数を返します。
126
127 この関数は常に整数の秒数を返します。
128
129
130 Args:
131 start
132 1970 Jan 1 00:00 UTC の代わりの開始時間
133
134 offset
135 最初の引数からこの秒数が引かれた答えを返します
136
137 Returns:
138 秒数を表す整数。
139
140 Raises:
141 ValueError
142 `start` あるいは `offset` が正の数ではない場合
143 """
144 if start < 0 or offset < 0:
145 raise ValueError('start and offset must be positive numbers.')
146
147 if not start:
148 start = time.time()
149
150 return int(start - offset)
151```
152
153# 例外
154
155例外は例外的な状況を処理するために使われます。フローの制御のために使われるべきではありません。これは Python の「許しを請う」という規範からの逸脱です。例外をキャッチする場合、異常な状況を処理する必要があります。
156
157何らかの理由で全ての例外のキャッチを使う場合は、cli.log を使って例外とスタックトレースを記録する必要があります。
158
159try/except ブロックをできるだけ短くします。多数の try 文が必要な場合は、コードを再構成する必要があるかもしれません。
160
161# タプル
162
1631項目のタプルを定義する場合、タプルを使用していることが明らかになるように、常に末尾のカンマを含めます。暗黙的な1項目のタプルのアンパックに頼らないでください。明確なリストを使う方が良いです。
164
165これはよく使用される printf 形式の書式文字列を使う場合に、特に重要です。
166
167# リストと辞書
168
169シーケンス形式と末尾のカンマとを区別するように YAPF を設定しました。末尾のカンマが省略されると、YAPF はシーケンスを1つの行として整形します。末尾のカンマがある場合、YAPF はシーケンスを1行1項目で整形します。
170
171一般的に1行が短い定義になるようにすべきです。読みやすさと保守性を向上させるために、後からではなく早めに複数の行を分割してください。
172
173# 括弧
174
175過度な括弧は避けますが、括弧を使ってコードを理解しやすくします。タプルを明示的に返すか、あるいは数式の一部である場合を除き、return 文で括弧を使わないでください。
176
177# 書式文字列
178
179一般的に printf 形式の書式文字列を用います。例:
180
181```
182name = 'World'
183print('Hello, %s!' % (name,))
184```
185
186このスタイルはログモジュールで使われており、私たちはそれを広範囲で利用しており、一貫性を保つために他の場所でも採用しています。これは、私たちの気まぐれな読者の大部分である C プログラマにもおなじみのスタイルです。
187
188付属の CLI モジュールは、パーセント (%) 演算子を使わずにこれらを使うことをサポートしています。詳細は、`cli.echo()` と様々な `cli.log` 関数 (例えば、`cli.log.info()`) を見てください。
189
190# 内包表記とジェネレータ表記
191
192内包表記とジェネレータの自由な使用を推奨しますが、あまりに複雑にしないでください。複雑になる場合は、理解しやすい for ループで代替します。
193
194# ラムダ
195
196使っても問題ありませんが、おそらく避けるべきです。内包表記とジェネレータを使えば、ラムダの必要性は以前ほど強くありません。
197
198# 条件式
199
200変数の割り当てでは問題ありませんが、そうでなければ避けるべきです。
201
202条件式はコードに続く if 文です。例えば:
203
204```
205x = 1 if cond else 2
206```
207
208一般にこれらを関数の引数、シーケンス項目などとして使用することはお勧めできません。見落としやすくなります。
209
210# デフォルト引数
211
212推奨されていますが、値は不変オブジェクトでなければなりません。
213
214デフォルト値に引数リストを指定する場合は、その場で変更できないオブジェクトを指定するように常に注意してください。可変オブジェクトを使うと変更は呼び出しの間で持続しますが、これは通常あなたの望むものではありませんそれがあなたのやろうとしていることであっても、他の人にとっては混乱するもので理解を妨げます。
215
216悪い:
217
218```
219def my_func(foo={}):
220 pass
221```
222
223良い:
224
225```
226def my_func(foo=None):
227 if not foo:
228 foo = {}
229```
230
231# プロパティ
232
233getter および setter 関数の代わりにプロパティを常に使います。
234
235```
236class Foo(object):
237 def __init__(self):
238 self._bar = None
239
240 @property
241 def bar(self):
242 return self._bar
243
244 @bar.setter
245 def bar(self, bar):
246 self._bar = bar
247```
248
249# True/False の評価
250
251一般的に、if 文で等価性を調べるのではなく、暗黙的な True/False 評価を行うべきです。
252
253悪い:
254
255```
256if foo == True:
257 pass
258
259if bar == False:
260 pass
261```
262
263良い:
264
265```
266if foo:
267 pass
268
269if not bar:
270 pass
271```
272
273# デコレータ
274
275適切な時に使ってください。理解に役立つ時を除き、魔法の(ように見える技巧の)使いすぎは避けるようにしてください。
276
277# スレッドとマルチプロセス
278
279避けるべきです。これが必要な場合は、私たちがコードをマージする前に十分な理由を述べる必要があります。
280
281# 強力な機能
282
283Python は非常に柔軟な言語で、独自のメタクラス、バイトコードへのアクセス、実行中コンパイル、動的な継承、オブジェクトの親の変更、インポートハック、リフレクション、システム内部の変更など、多くの素晴らしい機能を提供します。
284
285これらを使わないでください。
286
287パフォーマンスは私たちにとって重要な関心ごとではなく、コードのわかりやすさに関心があります。私たちは、コードベースを1日か2日しかいじっていない人が利用できるようにしたいです。これらの機能は一般的に理解のしやすさを犠牲にするため、より高速あるいはよりコンパクトなコードよりも、容易に理解できるコードの方が望ましいです。
288
289一部の標準ライブラリモジュールはこれらの手法を使っており、これらのモジュールを利用しても問題ありません。ただし、それらを使う時には、読みやすさと理解のしやすさを忘れないでください。
290
291# 型アノテーション付きコード
292
293今のところ型アノテーションシステムを使っていないため、コードにアノテーションをつけないようにしてください。将来的にはこれを再検討する可能性があります。
294
295# 関数の長さ
296
297小さくて焦点のあった関数にしてください。
298
299長い関数が時には適切であることを理解しているので、関数の長さには厳密な制限はありません。関数が約40行を超える場合は、プログラムの構造を損なわずに分割できるかどうかを検討してください。
300
301今のところ長い関数が完全に機能するとしても、数か月でそれを変更する人が新しい挙動を追加するかもしれません。これにより見つけにくいバグが発生するかもしれません。関数を短くかつシンプルにすることで、他の人がコードを読んで修正しやすくします。
302
303幾つかのコードで作業をすると、長く複雑な関数を見つけるかもしれません。既存コードを変更することを怖がらないでください: もし、難しいことが判明したり、エラーがデバッグしづらいとわかったり、いくつかの異なるコンテキストで一部を使いたいような関数を扱っている場合、関数を小さくてより扱いやすい単位に分割することを検討してください。
304
305# FIXME
306
307FIXME をコードに残しても構いません。なぜでしょうか?このコードを文章化しないままにするよりも、少なくとも考え抜く必要がある(あるいは混乱している)コードの一部を文章化するように奨励する方が、このコードを文章化しないままにするよりも良いです。
308
309全ての FIXME は以下のように書式化されるべきです:
310
311```
312FIXME(username): 何々機能が完了したらこのコードを再検討する。
313```
314
315...username はあなたの GitHub のユーザ名です。
316
317# テスト
318
319統合テストと単体テストの組み合わせを使ってコードが可能な限りバグが無いようにします。全てのテストは `lib/python/qmk/tests/` にあります。`qmk pytest` を使って全てのテストを実行することができます。
320
321これを書いている時点では、テストは全く完全なものではありません。現在のテストを見て、テストされていない状況のための新しいテストケースを書くことは、コードベースに精通し、QMK に貢献するという両方の点で素晴らしい方法です。
322
323## 統合テスト
324
325統合テストは `lib/python/qmk/tests/test_cli_commands.py` にあります。ここで実際に CLI コマンドが実行され、全体的な動作が検証されます。[`subprocess`](https://docs.python.org/3.6/library/subprocess.html#module-subprocess) を使って各 CLI コマンドを起動し、正しく動作するかを判断するために出力とリターンコードの組み合わせを使います。
326
327## ユニットテスト
328
329`lib/python/qmk/tests/` 内の他の `test_*.py` ファイルはユニットテストを含みます。`lib/python/qmk/` 内の個々の関数のテストをここに書くことができます。一般的にこれらのファイルはモジュールに基づいて名前を付けられ、ドットはアンダースコアで置き換えられます。
330
331これを書いている時点では、テストのためのモックを作っていません。これを変更する手伝いをしたい場合は、[issue を開く](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) か [Discord の #cli に参加](https://discord.gg/heQPAgy)し、そこで会話を開始してください。
diff --git a/docs/ja/compatible_microcontrollers.md b/docs/ja/compatible_microcontrollers.md
new file mode 100644
index 000000000..23f32bbb6
--- /dev/null
+++ b/docs/ja/compatible_microcontrollers.md
@@ -0,0 +1,54 @@
1# 互換性のあるマイクロコントローラ
2
3<!---
4 original document: 0.14.14:docs/compatible_microcontrollers.md
5 git diff 0.14.14 HEAD -- docs/compatible_microcontrollers.md | cat
6-->
7
8QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR または ARM マイクロコントローラで実行されます - 一般的に 32kB 以上ですが、ほとんどの機能を無効にすると*ほんの* 16kB に詰め込むことができます。
9
10## Atmel AVR
11
12以下は、USB スタックとして [LUFA](https://www.fourwalledcubicle.com/LUFA.php) を使います:
13
14* [ATmega16U2](https://www.microchip.com/wwwproducts/en/ATmega16U2) / [ATmega32U2](https://www.microchip.com/wwwproducts/en/ATmega32U2)
15* [ATmega16U4](https://www.microchip.com/wwwproducts/en/ATmega16U4) / [ATmega32U4](https://www.microchip.com/wwwproducts/en/ATmega32U4)
16* [AT90USB64](https://www.microchip.com/wwwproducts/en/AT90USB646) / [AT90USB128](https://www.microchip.com/wwwproducts/en/AT90USB1286)
17* [AT90USB162](https://www.microchip.com/wwwproducts/en/AT90USB162)
18
19組み込みの USB インターフェースを持たない、いくつかの MCU は代わりに [V-USB](https://www.obdev.at/products/vusb/index.html) を使います:
20
21* [ATmega32A](https://www.microchip.com/wwwproducts/en/ATmega32A)
22* [ATmega328P](https://www.microchip.com/wwwproducts/en/ATmega328P)
23* [ATmega328](https://www.microchip.com/wwwproducts/en/ATmega328)
24
25## ARM
26
27[ChibiOS](https://www.chibios.org) がサポートする USB 付きの ARM チップを使うこともできます。ほとんどのチップには十分な容量のフラッシュメモリがあります。動作するとわかっているのは:
28
29### STMicroelectronics (STM32)
30
31* [STM32F0x2](https://www.st.com/en/microcontrollers-microprocessors/stm32f0x2.html)
32* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
33* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
34* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
35* [STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html)
36* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
37* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
38* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
39* [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html)
40* [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html)
41* [STM32L412](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
42* [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
43* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
44* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
45
46### NXP (Kinetis)
47
48* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
49* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
50* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
51
52## Atmel ATSAM
53
54Atmel の ATSAM マイクロコントローラの一つである、[Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop) で使用されている [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) には限定的なサポートがあります。
diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md
new file mode 100644
index 000000000..fb43d015f
--- /dev/null
+++ b/docs/ja/config_options.md
@@ -0,0 +1,421 @@
1# QMK の設定
2
3<!---
4 original document: 0.13.17:docs/config_options.md
5 git diff 0.13.17 HEAD -- docs/config_options.md | cat
6-->
7
8QMK はほぼ無制限に設定可能です。可能なところはいかなるところでも、やりすぎな程、ユーザーがコードサイズを犠牲にしてでも彼らのキーボードをカスタマイズをすることを許しています。ただし、このレベルの柔軟性により設定が困難になります。
9
10QMK には主に2種類の設定ファイルがあります- `config.h` と `rules.mk`。これらのファイルは QMK の様々なレベルに存在し、同じ種類の全てのファイルは最終的な設定を構築するために組み合わされます。最低の優先度から最高の優先度までのレベルは以下の通りです:
11
12* QMK デフォルト
13* キーボード
14* フォルダ (最大5レべルの深さ)
15* キーマップ
16
17## QMK デフォルト
18
19QMK での全ての利用可能な設定にはデフォルトがあります。その設定がキーボード、フォルダ、あるいはキーマップレべルで設定されない場合、これが使用される設定です。
20
21## キーボード
22
23このレベルにはキーボード全体に適用される設定オプションが含まれています。一部の設定は、リビジョンあるいはほとんどのキーマップで変更されません。他の設定はこのキーボードのデフォルトに過ぎず、フォルダあるいはキーマップによって上書きされる可能性があります。
24
25## フォルダ
26
27一部のキーボードには、異なるハードウェア構成のためのフォルダとサブフォルダがあります。ほとんどのキーボードは深さ1のフォルダのみですが、QMK は最大深さ5のフォルダの構造をサポートします。各フォルダは、最終的な設定に組み込まれる独自の `config.h` と `rules.mk` ファイルを持つことができます。
28
29## キーマップ
30
31このレベルには特定のキーマップのための全てのオプションが含まれています。以前の定義を上書きしたい場合は、`#undef <variable>` を使って定義を解除し、エラー無しで再定義することができます。
32
33# `config.h` ファイル
34
35これは最初に include されるものの 1 つである C ヘッダファイルで、プロジェクト全体(もし含まれる場合)にわたって持続します。多くの変数をここで設定し、他の場所からアクセスすることができます。`config.h` ファイルでは、以下のもの以外の、他の `config.h` ファイルやその他のファイルの include をしないでください:
36
37```c
38#include "config_common.h"
39```
40
41
42## ハードウェアオプション
43* `#define VENDOR_ID 0x1234`
44 * VID を定義します。ほとんどの DIY プロジェクトにおいて、任意のものを定義できます
45* `#define PRODUCT_ID 0x5678`
46 * PID を定義します。ほとんどの DIY プロジェクトでは、任意のものを定義できます
47* `#define DEVICE_VER 0`
48 * デバイスのバージョンを定義します (多くの場合リビジョンに使われます)
49* `#define MANUFACTURER Me`
50 * 一般的に、誰もしくはどのブランドがボードを作成したか
51* `#define PRODUCT Board`
52 * キーボードの名前
53* `#define MATRIX_ROWS 5`
54 * キーボードのマトリックスの行の数
55* `#define MATRIX_COLS 15`
56 * キーボードのマトリックスの列の数
57* `#define MATRIX_ROW_PINS { D0, D5, B5, B6 }`
58 * 行のピン、上から下へ
59* `#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }`
60 * 列のピン、左から右へ
61* `#define MATRIX_IO_DELAY 30`
62 * マトリックスピン状態の変更と値の読み取り間のマイクロ秒単位の遅延
63* `#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }`
64 * 参考として、キーボードで使われていないピン
65* `#define MATRIX_HAS_GHOST`
66 * マトリックスにゴーストがあるか(ありそうにないか)定義します
67* `#define DIODE_DIRECTION COL2ROW`
68 * COL2ROW あるいは ROW2COL - マトリックスがどのように設定されているか。COL2ROW は、スイッチとロウ(行)ラインの間にダイオードが黒い印をロウ(行)ラインに向けて置いてあることを意味します。
69* `#define DIRECT_PINS { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
70 * ロウ(行)ラインとカラム(列)ラインにマップされているピンを左から右に。各スイッチが個別のピンとグラウンドに接続されているマトリックスを定義します。
71* `#define AUDIO_VOICES`
72 * (循環させるために)代替音声を有効にします
73* `#define C4_AUDIO`
74 * ピン C4 のオーディオを有効にします
75 * 非推奨。`#define AUDIO_PIN C4` を使ってください
76* `#define C5_AUDIO`
77 * ピン C5 のオーディオを有効にします
78 * 非推奨。`#define AUDIO_PIN C5` を使ってください
79* `#define C6_AUDIO`
80 * ピン C6 のオーディオを有効にします
81 * 非推奨。`#define AUDIO_PIN C6` を使ってください
82* `#define B5_AUDIO`
83 * ピン B5 のオーディオを有効にします (C ピンの1つとともに B ピンの1つが有効にされている場合、疑似ステレオが有効にされます)
84 * 非推奨。もし `AUDIO_PIN` で `C` ピンを有効にしている場合は、`#define AUDIO_PIN_ALT B5` を使い、そうでなければ `#define AUDIO_PIN B5` を使います。
85* `#define B6_AUDIO`
86 * ピン B6 のオーディオを有効にします (C ピンの1つとともに B ピンの1つが有効にされている場合、疑似ステレオが有効にされます)
87 * 非推奨。もし `AUDIO_PIN` で `C` ピンを有効にしている場合は、`#define AUDIO_PIN_ALT B6` を使い、そうでなければ `#define AUDIO_PIN B6` を使います。
88* `#define B7_AUDIO`
89 * ピン B7 のオーディオを有効にします (C ピンの1つとともに B ピンの1つが有効にされている場合、疑似ステレオが有効にされます)
90 * 非推奨。もし `AUDIO_PIN` で `C` ピンを有効にしている場合は、`#define AUDIO_PIN_ALT B7` を使い、そうでなければ `#define AUDIO_PIN B7` を使います。
91* `#define BACKLIGHT_PIN B7`
92 * バックライトのピン
93* `#define BACKLIGHT_LEVELS 3`
94 * バックライトのレベル数 (off を除いて最大31)
95* `#define BACKLIGHT_BREATHING`
96 * バックライトのブレスを有効にします
97* `#define BREATHING_PERIOD 6`
98 * 1つのバックライトの "ブレス" の長さの秒数
99* `#define DEBOUNCE 5`
100 * ピンの値を読み取る時の遅延 (5がデフォルト)
101* `#define LOCKING_SUPPORT_ENABLE`
102 * メカニカルロックのサポート。キーマップで KC_LCAP、KC_LNUM そして KC_LSCR を使えるようにします
103* `#define LOCKING_RESYNC_ENABLE`
104 * キーボードの LED の状態をスイッチの状態と一致させ続けようとします
105* `#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)`
106 * マジックコマンドの使用を可能にするキーの組み合わせ (デバッグに便利です)
107* `#define USB_MAX_POWER_CONSUMPTION 500`
108 * デバイスの USB 経由の最大電力(mA) を設定します (デフォルト: 500)
109* `#define USB_POLLING_INTERVAL_MS 10`
110 * キーボード、マウス および 共有 (NKRO/メディアキー) インタフェースのための USB ポーリングレートをミリ秒で設定します
111* `#define USB_SUSPEND_WAKEUP_DELAY 200`
112 * ウェイクアップパケットを送信した後で一時停止するミリ秒を設定します
113* `#define F_SCL 100000L`
114 * I2C を使用するキーボードのための I2C クロックレート速度を設定します。デフォルトは `400000L` ですが、`split_common` を使っているキーボードは別でデフォルトは `100000L` です。
115
116## 無効にできる機能
117
118これらのオプションを定義すると、関連する機能が無効になり、コードサイズを節約できます。
119
120* `#define NO_DEBUG`
121 * デバッグを無効にします
122* `#define NO_PRINT`
123 * hid_listen を使った出力やデバッグを無効にします
124* `#define NO_ACTION_LAYER`
125 * レイヤーを無効にします
126* `#define NO_ACTION_TAPPING`
127 * タップダンスと他のタップ機能を無効にします
128* `#define NO_ACTION_ONESHOT`
129 * ワンショットモディファイアを無効にします
130* `#define NO_ACTION_MACRO`
131 * `MACRO()`、`action_get_macro()` _(非推奨)_ を使う古い形式のマクロ処理を無効にします
132* `#define NO_ACTION_FUNCTION`
133 * `fn_actions`、`action_function()` _(非推奨)_ を使う古い形式の関数処理を無効にします
134
135## 有効にできる機能
136
137これらのオプションを定義すると、関連する機能が有効になり、コードサイズが大きくなるかもしれません。
138
139* `#define FORCE_NKRO`
140 * NKRO をデフォルトでオンにする必要があります。これにより EEPROM の設定に関係なく、キーボードの起動時に NKRO が強制的にオンになります。NKRO は引き続きオフにできますが、キーボードを再起動すると再びオンになります。
141* `#define STRICT_LAYER_RELEASE`
142 * キーリリースがどのレイヤーから来たのかを覚えるのではなく、現在のレイヤースタックを使って強制的に評価されるようにします (高度なケースに使われます)
143
144## 設定可能な挙動 :id=behaviors-that-can-be-configured
145
146* `#define TAPPING_TERM 200`
147 * タップがホールドになるまでの時間。500以上に設定された場合、タップ期間中にタップされたキーもホールドになります。(訳注: PERMISSIVE_HOLDも参照)
148* `#define TAPPING_TERM_PER_KEY`
149 * キーごとの `TAPPING_TERM` 設定の処理を有効にします
150* `#define RETRO_TAPPING`
151 * 押下とリリースの間に他のキーによる中断がなければ、TAPPING_TERM の後であってもとにかくタップします
152 * 詳細は [Retro Tapping](ja/tap_hold.md#retro-tapping) を見てください
153* `#define RETRO_TAPPING_PER_KEY`
154 * キーごとの `RETRO_TAPPING` 設定の処理を有効にします
155* `#define TAPPING_TOGGLE 2`
156 * トグルを引き起こす前のタップ数
157* `#define PERMISSIVE_HOLD`
158 * `TAPPING_TERM` にヒットしていなくても、リリースする前に別のキーが押されると、タップとホールドキーがホールドを引き起こします
159 * 詳細は [Permissive Hold](ja/tap_hold.md#permissive-hold) を見てください
160* `#define PERMISSIVE_HOLD_PER_KEY`
161 * キーごとの `PERMISSIVE_HOLD` 設定の処理を有効にします
162* `#define IGNORE_MOD_TAP_INTERRUPT`
163 * 両方のキーに `TAPPING_TERM` を適用することで、ホールド時に他のキーに変換するキーを使ってローリングコンボ (zx) をすることができるようにします
164 * 詳細は [Ignore Mod Tap Interrupt](ja/tap_hold.md#ignore-mod-tap-interrupt) を見てください
165* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
166 * キーごとの `IGNORE_MOD_TAP_INTERRUPT` 設定の処理を有効にします
167* `#define TAPPING_FORCE_HOLD`
168 * タップされた直後に、デュアルロールキーを修飾子として使用できるようにします
169 * [Tapping Force Hold](ja/tap_hold.md#tapping-force-hold)を見てください
170 * タップトグル機能を無効にします (`TT` あるいは One Shot Tap Toggle)
171* `#define TAPPING_FORCE_HOLD_PER_KEY`
172 * キーごとの `TAPPING_FORCE_HOLD` 設定処理を有効にします。
173* `#define LEADER_TIMEOUT 300`
174 * リーダーキーがタイムアウトするまでの時間
175 * タイムアウトする前にシーケンスを終了できない場合は、タイムアウトの設定を増やす必要があるかもしれません。あるいは、`LEADER_PER_KEY_TIMING` オプションを有効にすると良いでしょう。これは各キーがタップされた後でタイムアウトを再設定します。
176* `#define LEADER_PER_KEY_TIMING`
177 * 全体では無く各キーを押すたびに実行されるリーダーキーコードのタイマーを設定します
178* `#define LEADER_KEY_STRICT_KEY_PROCESSING`
179 * Mod-Tap および Layer-Tap キーコードのためのキーコードフィルタリングを無効にします。例えば、これを有効にすると、`KC_A` を使いたい場合は `MT(MOD_CTL, KC_A)` を指定する必要があります。
180* `#define ONESHOT_TIMEOUT 300`
181 * ワンショットがタイムアウトするまでの時間
182* `#define ONESHOT_TAP_TOGGLE 2`
183 * ワンショットトグルが引き起こされるまでのタップ数
184* `#define QMK_KEYS_PER_SCAN 4`
185 * 走査ごとに1つ以上のキーを送信できるようにします。デフォルトでは、走査ごとに `process_record()` 経由で1つのキーイベントのみが送信されます。これはほとんどのタイピングにほとんど影響しませんが、多くのコードを入力しているか、走査レートが最初から遅い場合、キーイベントの処理に多少の遅延が生じる可能性があります。それぞれのプレスとリリースは別のイベントです。スキャン時間が 1ms 程度のキーボードの場合、とても高速なタイピストでさえ、実際にキーボードから数 ms 以上の遅延を発生させるのに必要な 500 キーストロークを1秒間に生成することはないでしょう。しかし、3~4ms の走査時間でコードを入力している場合はどうでしょうか?おそらくこれが必要です。
186* `#define COMBO_COUNT 2`
187 * [コンボ](ja/feature_combo.md)機能で使っているコンボの数にこれを設定します。
188* `#define COMBO_TERM 200`
189 * コンボキーが検出されるまでの時間。定義されていない場合は、デフォルトは `TAPPING_TERM` です。
190* `#define TAP_CODE_DELAY 100`
191 * 適切な登録に問題がある場合(VUSB ボードで珍しくない)、`register_code` と `unregister_code` の間の遅延を設定します。値はミリ秒です。
192* `#define TAP_HOLD_CAPS_DELAY 80`
193 * MacOS で特別な処理が行われるため、`KC_CAPSLOCK` を使う時にタップホールドキー (`LT`, `MT`) に遅延を設定します。この値はミリ秒で、定義されていない場合はデフォルトは80msです。macOS については、これを200以上に設定すると良いでしょう。
194
195## RGB ライト設定 :id=rgb-light-configuration
196
197* `#define RGB_DI_PIN D7`
198 * WS2812 の DI 端子につなぐピン
199* `#define RGBLIGHT_ANIMATIONS`
200 * RGB アニメーションを実行します
201* `#define RGBLIGHT_LAYERS`
202 * オンとオフを切り替えることができる [ライトレイヤー](ja/feature_rgblight.md?id=lighting-layers) を定義できます。現在のキーボードレイヤーまたは Caps Lock 状態を表示するのに最適です。
203* `#define RGBLIGHT_MAX_LAYERS`
204 * デフォルトは8です。もしさらに [ライトレイヤー](ja/feature_rgblight.md?id=lighting-layers) が必要であれば、32まで拡張できます。
205 * メモ: 最大値を大きくするとファームウェアサイズが大きくなり、分割キーボードで同期が遅くなります。
206* `#define RGBLIGHT_LAYER_BLINK`
207 * 指定されたミリ秒の間、ライトレイヤーを [点滅](ja/feature_rgblight.md?id=lighting-layer-blink) する機能を追加します(例えば、アクションを確認するため)。
208* `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF`
209 * 定義されている場合、RGB ライトがオフになっている場合でも [ライトレイヤー](ja/feature_rgblight?id=overriding-rgb-lighting-onoff-status) が表示されます。
210* `#define RGBLED_NUM 12`
211 * LED の数
212* `#define RGBLIGHT_SPLIT`
213 * 分割キーボードの左半分の RGB LED の出力を右半分の RGB LED の入力につなげるかわりに、それぞれの側で個別にコントローラの出力ピンが直接 RGB LED の入力に繋がっているときは、この定義が必要です。
214* `#define RGBLED_SPLIT { 6, 6 }`
215 * 分割キーボードの各半分の `RGB_DI_PIN` に直接配線されている接続されている LED の数
216 * 最初の値は左半分の LED の数を示し、2番目の値は右半分です。
217 * RGBLED_SPLIT が定義されている場合、RGBLIGHT_SPLIT は暗黙的に定義されます。
218* `#define RGBLIGHT_HUE_STEP 12`
219 * 色相の増減時のステップ単位
220* `#define RGBLIGHT_SAT_STEP 25`
221 * 彩度の増減時のステップ単位
222* `#define RGBLIGHT_VAL_STEP 12`
223 * 値(明度)の増減時のステップ単位
224* `#define RGBW`
225 * RGBW LED のサポートを有効にします
226
227## マウスキーオプション
228
229* `#define MOUSEKEY_INTERVAL 20`
230* `#define MOUSEKEY_DELAY 0`
231* `#define MOUSEKEY_TIME_TO_MAX 60`
232* `#define MOUSEKEY_MAX_SPEED 7`
233* `#define MOUSEKEY_WHEEL_DELAY 0`
234
235## 分割キーボードオプション
236
237分割キーボード固有のオプション。あなたの rules.mk に 'SPLIT_KEYBOARD = yes' が有ることを確認してください。
238
239* `SPLIT_TRANSPORT = custom`
240 * 標準の分割通信ルーチンをカスタムのものに置き換えることができます。現在、ARM ベースの分割キーボードはこれを使わなければなりません。
241
242### 左右の設定
243
2441つ覚えておかなければならないことは、USB ポートが接続されている側が常にマスター側であるということです。USB に接続されていない側はスレーブです。
245
246分割キーボードの左右を設定するには、幾つかの異なる方法があります (優先度の順にリストされています):
247
2481. `SPLIT_HAND_PIN` を設定します: 左右を決定するためにピンを読み込みます。ピンが high の場合、それが左側です。low であれば、その半分側が右側であると決定されます。
2492. `EE_HANDS` を設定し、各半分に `eeprom-lefthand.eep`/`eeprom-righthand.eep` を書き込みます
250 * DFU ブートローダを搭載したボードでは、これらの EEPROM ファイルを書き込むために `:dfu-split-left`/`:dfu-split-right` を使うことができます
251 * Caterina ブートローダを搭載したボード (標準的な Pro Micros など)では、`:avrdude-split-left`/`:avrdude-split-right` を使ってください
252 * ARM DFU ブートローダを搭載したボード (Proton C など)では、`:dfu-util-split-left`/`:dfu-util-split-right` を使ってください
2533. `MASTER_RIGHT` を設定します: USB ポートに差し込まれた側はマスター側で右側であると決定されます(デフォルトの逆)
2544. デフォルト: USB ポートに差し込まれている側がマスター側であり、左側であると見なされます。スレーブ側は右側です
255
256#### 左右を定義します
257
258* `#define SPLIT_HAND_PIN B7`
259 * high/low ピンを使って左右を決定します。low = 右手、high = 左手。`B7` を使っているピンに置き換えます。これはオプションで、`SPLIT_HAND_PIN` が未定義のままである場合、EE_HANDS メソッドまたは標準の Let's Splitが使っている MASTER_LEFT / MASTER_RIGHT 定義をまだ使うことができます。
260
261* `#define SPLIT_HAND_MATRIX_GRID <out_pin>,<in_pin>`
262 * 左右はキーマトリックスのキースイッチが存在しない交点を使って決定されます。通常、この交点が短絡している(ローレベル)のときに左側と見なされます。もし `#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT` が定義されている場合は、ローレベルの時に右側と決定されます。
263
264* `#define EE_HANDS` (`SPLIT_HAND_PIN` と `SPLIT_HAND_MATRIX_GRID` が定義されていない場合のみ動作します)
265 * `eeprom-lefthand.eep`/`eeprom-righthand.eep` がそれぞれの半分に書き込まれた後で、EEPROM 内に格納されている左右の設定の値を読み込みます。
266
267* `#define MASTER_RIGHT`
268 * マスター側が右側と定義されます。
269
270### 他のオプション
271
272* `#define USE_I2C`
273 * Serial の代わりに I2C を使う場合 (デフォルトは serial)
274
275* `#define SOFT_SERIAL_PIN D0`
276 * serial を使う場合、これを定義します。`D0` あるいは `D1`,`D2`,`D3`,`E6`。
277
278* `#define MATRIX_ROW_PINS_RIGHT { <row pins> }`
279* `#define MATRIX_COL_PINS_RIGHT { <col pins> }`
280 * 右半分に左半分と異なるピン配置を指定したい場合は、`MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT` を定義することができます。現在のところ、`MATRIX_ROW_PINS` のサイズは `MATRIX_ROW_PINS_RIGHT` と同じでなければならず、列の定義も同様です。
281
282* `#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
283 * 右半分に左半分と異なる直接ピン配置を指定したい場合は、`DIRECT_PINS_RIGHT` を定義することができます。現在のところ、`DIRECT_PINS` のサイズは `DIRECT_PINS_RIGHT` と同じでなければなりません。
284
285* `#define RGBLED_SPLIT { 6, 6 }`
286 * [RGB ライト設定](#rgb-light-configuration)を見てください。
287
288* `#define SELECT_SOFT_SERIAL_SPEED <speed>` (デフォルトの速度は1です)
289 * serial 通信を使う時のプロトコルの速度を設定します。