# QMK CLI 設定

<!---
  original document: 0.9.0:docs/cli_configuration.md
  git diff 0.9.0 HEAD -- docs/cli_configuration.md | cat
-->

このドキュメントは `qmk config` がどのように動作するかを説明します。

# はじめに

QMK CLI の設定はキーバリューシステムです。各キーはピリオドで区切られたサブコマンドと引数名で構成されます。これにより、設定キーと設定された引数の間で簡単かつ直接的な変換が可能になります。

## 簡単な例

例として、`qmk compile --keyboard clueboard/66/rev4 --keymap default` コマンドを見てみましょう。

設定から読み取ることができる2つのコマンドライン引数があります:

* `compile.keyboard`
* `compile.keymap`

これらを設定してみましょう:

```
$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
compile.keyboard: None -> clueboard/66/rev4
compile.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```

これで、毎回キーボードとキーマップを設定することなく、`qmk compile` を実行することができます。

## ユーザデフォルトの設定

複数のコマンド間で設定を共有したい場合があります。例えば、いくつかのコマンドは引数 `--keyboard` を受け取ります。全てのコマンドでこの値を設定する代わりに、その引数を受け取る全てのコマンドで使われるユーザ値を設定することができます。

例:

```
$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
user.keyboard: None -> clueboard/66/rev4
user.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```

# CLI ドキュメント (`qmk config`)

`qmk config` コマンドは基礎となる設定とやり取りするために使われます。引数無しで実行すると、現在の設定を表示します。引数が指定された場合、それらは設定トークンと見なされます。設定トークンは以下の形式の空白を含まない文字列です:

    <subcommand|general|default>[.<key>][=<value>]

## 設定値の設定

設定キーに等号 (=) を入れることで、設定値を設定することができます。キーは常に完全な `<section>.<key>` 形式である必要があります。

例:

```
$ qmk config default.keymap=default
default.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```

## 設定値の読み込み

設定全体、単一のキー、あるいはセクション全体の設定値を読み取ることができます。1つ以上の値を表示するために複数のキーを指定することができます。

### 全体の構成例

    qmk config

### セクション全体の例

    qmk config compile

### 単一キーの例 :id=single-key-example

    qmk config compile.keyboard

### 複数キーの例

    qmk config user compile.keyboard compile.keymap

## 設定値の削除

設定値を特別な文字列 `None` に設定することで、設定値を削除することができます。

例:

```
$ qmk config default.keymap=None
default.keymap: default -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```

## 複数の操作

複数の読み込みおよび書き込み操作を1つのコマンドに組み合わせることができます。それらは順番に実行および表示されます:

```
$ qmk config compile default.keymap=default compile.keymap=None
compile.keymap=skully
compile.keyboard=clueboard/66_hotswap/gen1
default.keymap: None -> default
compile.keymap: skully -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```

# ユーザ設定オプション

| キー | デフォルト値 | 説明 |
|-----|---------------|-------------|
| user.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
| user.keymap | None | キーマップ名 (例: `default`) |
| user.name | None | ユーザの GitHub のユーザ名。 |

# 全ての設定オプション

| キー | デフォルト値 | 説明 |
|-----|---------------|-------------|
| compile.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
| compile.keymap | None | キーマップ名 (例: `default`) |
| hello.name | None | 実行時の挨拶の名前 |
| new_keyboard.keyboard | None | キーボードのパス (例: `clueboard/66/rev4`) |
| new_keyboard.keymap | None | キーマップ名 (例: `default`) |
